import { Message } from "../message"; import { Handler } from "../handler"; import { EnvProducer, Guard, MessageSender } from "../types"; import { MessageRegistry } from "../encoding"; export declare abstract class Router { protected readonly envProducer: EnvProducer; protected msgRegistry: MessageRegistry; protected registeredHandler: Map; protected guards: Guard[]; protected port: string; protected _isInitialized: boolean; protected _initWaiter: Promise | undefined; constructor(envProducer: EnvProducer); get isInitialized(): boolean; registerMessage(msgCls: { new (...args: any): Message; } & { type(): string; }): void; addHandler(route: string, handler: Handler): void; addGuard(guard: Guard): void; protected abstract attachHandler(): void; protected abstract detachHandler(): void; listen(port: string, initFn?: () => Promise): Promise; unlisten(): void; protected handleMessage(message: any, sender: MessageSender): Promise; }