import { ConstructorOf, SubjectMessage, SubjectMessageHandler, SubjectMessageOptions } from './messages'; import { MeshBackend } from './mesh'; export declare const PSEUDO_MESSAGE_NS: string; export declare const PSEUDO_MESSAGE_BEFORE: string; export declare const PSEUDO_MESSAGE_AFTER: string; export interface Subject { before(handler: SubjectMessageHandler): Subject; on(name: (string | ConstructorOf), handler: SubjectMessageHandler): Subject; after(handler: SubjectMessageHandler): Subject; broadcast(message: SubjectMessage, options?: SubjectMessageOptions): Promise; send(message: any, options?: SubjectMessageOptions): Promise; send(partitionKey: string, message: SubjectMessage, options?: SubjectMessageOptions): Promise; awaitRegistration(): Promise; unbind(): Promise; } export declare class SubjectBase implements Subject { private readonly subjectName; private readonly meshPrivate; constructor(subjectName: string, meshPrivate: MeshBackend); before(handler: SubjectMessageHandler): Subject; on(name: string | ConstructorOf, handler: SubjectMessageHandler): Subject; after(handler: SubjectMessageHandler): Subject; broadcast(message: SubjectMessage, options?: SubjectMessageOptions): Promise; send(message: SubjectMessage, options?: SubjectMessageOptions): Promise; send(partitionKey: string, message: SubjectMessage, options?: SubjectMessageOptions): Promise; awaitRegistration(): Promise; unbind(): Promise; }