import { Nullish } from "builder-util-runtime"; type Handler = (...args: any[]) => Promise | void; export type HandlerType = "system" | "user"; type Handle = { handler: Handler; type: HandlerType; }; export type EventMap = { [key: string]: Handler; }; interface TypedEventEmitter { on(event: E, listener: Events[E] | Nullish, type: HandlerType): this; off(event: E, listener: Events[E] | Nullish): this; emit(event: E, ...args: Parameters): Promise<{ emittedSystem: boolean; emittedUser: boolean; }>; filterListeners(event: E, type: HandlerType): Handle[]; clear(): void; } export declare class AsyncEventEmitter implements TypedEventEmitter { private readonly listeners; private readonly cancellationToken; on(event: E, listener: T[E] | Nullish, type?: HandlerType): this; off(event: E, listener: T[E] | Nullish): this; emit(event: E, ...args: Parameters): Promise<{ emittedSystem: boolean; emittedUser: boolean; }>; filterListeners(event: E, type: HandlerType | undefined): Handle[]; clear(): void; } export {};