import type { Tag } from '../../types/common'; import type { ParsedResponse } from '../../types/protocol'; import type { CommandQueue } from './command-queue'; export type UntaggedHandler = (response: ParsedResponse) => Promise | void; export type ResponseRouterOptions = { readonly commandQueue: CommandQueue; readonly onUntagged?: (command: string, response: ParsedResponse) => Promise | void; readonly onPlusTag?: (response: ParsedResponse) => Promise | void; }; export type TaggedResponseHandler = { readonly untagged?: Readonly>; readonly onPlusTag?: (response: ParsedResponse) => Promise | void; }; export type RouteResult = { readonly handled: boolean; readonly tag?: Tag; readonly status?: 'OK' | 'NO' | 'BAD' | 'BYE' | 'PREAUTH'; }; export declare class ResponseRouter implements AsyncDisposable { private readonly commandQueue; private readonly globalUntaggedHandler?; private readonly globalPlusTagHandler?; private readonly taggedHandlers; private currentPlusTagHandler?; private disposed; constructor(options: ResponseRouterOptions); get isDisposed(): boolean; registerHandler(tag: Tag, handler: TaggedResponseHandler): void; unregisterHandler(tag: Tag): void; route(response: ParsedResponse): Promise; dispose(): void; [Symbol.asyncDispose](): Promise; private handlePlusTag; private handleUntagged; private handleTagged; } export declare const createResponseRouter: (options: ResponseRouterOptions) => ResponseRouter; //# sourceMappingURL=response-router.d.ts.map