type HandlerOptions = { once?: boolean; }; type RemoveHandler = () => void; type Callback = (event: T) => void; type Detail = { type: T; detail: K[T]; }; type Constructor = new (...args: any[]) => T; export declare function EventEmitterMixin(Base: T): { new (...args: any[]): { _handlers: { [T_1 in keyof Events]?: { callback: Callback; once?: boolean; }[]; }; _regexHandlers: { pattern: RegExp; callback: Callback>; once?: boolean; }[]; on(eventType: RegExp, callback: Callback>, options?: HandlerOptions): RemoveHandler; on(eventType: K, callback: Callback, options?: HandlerOptions): RemoveHandler; off(handle: K | RemoveHandler | RemoveHandler[] | RegExp, callback?: Callback): void; offAny(): void; emit(eventType: K, detail: Events[K]): void; }; } & T; export declare function EventEmitter(): { new (...args: any[]): { _handlers: { [T in keyof Events]?: { callback: Callback; once?: boolean; }[] | undefined; }; _regexHandlers: { pattern: RegExp; callback: Callback>; once?: boolean; }[]; on(eventType: RegExp, callback: Callback>, options?: HandlerOptions): RemoveHandler; on(eventType: K, callback: Callback, options?: HandlerOptions): RemoveHandler; off(handle: RegExp | RemoveHandler | RemoveHandler[] | K, callback?: Callback | undefined): void; offAny(): void; emit(eventType: K, detail: Events[K]): void; }; }; export {};