export type ConstructorOf = new (...args: any[]) => T; export interface HttpMessageHeader { headers: { [key: string]: string | string[] | undefined; }; url: string; publicUrl: string; params: { [key: string]: string; }; query: { [key: string]: string; }; } export interface SubjectMessage { [key: string]: any; } export interface SubjectMessageOptions { timeout?: number; wait?: boolean; keepSignals?: boolean; additionalHeaderData?: any; } export interface SubjectMessageHeader { uid: string; subject: string; name: string; partitionKey?: string; http?: HttpMessageHeader; } export interface SubjectMessageEnvelope { header: SubjectMessageHeader; message: SubjectMessage; } export type SubjectMessageHandler = (data?: T, header?: SubjectMessageHeader) => any;