import type { EventBinder, Listener } from '@d-fischer/typed-event-emitter';
import type { IrcClient } from '../IrcClient';
import type { Message, MessageConstructor } from './Message';
export type MessageCollectorEndCallback = (messages: Message[]) => void;
export declare class MessageCollector {
    protected _client: IrcClient;
    protected _originalMessage: Message;
    protected _types: Set<MessageConstructor>;
    protected _messages: Message[];
    protected _promise?: Promise<Message[]>;
    protected _promiseResolve?: MessageCollectorEndCallback;
    protected readonly _endEventHandlers: Map<EventBinder<never>, Listener>;
    constructor(_client: IrcClient, _originalMessage: Message, ...types: MessageConstructor[]);
    untilEvent(eventType: EventBinder<never>): void;
    promise(): Promise<Message[]>;
    collect(message: Message): boolean;
    end(): void;
    private _cleanEndEventHandlers;
    private _cleanEndEventHandler;
}
