import { $EventOptions, $MutArg, $MutArgEventHandler, $UnknownMutArg } from "../event-base/$types.js"; export interface $EventEmitter { on(eventname: K, handler: $MutArgEventHandler, opts?: $EventOptions): unknown; once(eventname: K, handler: $MutArgEventHandler, opts?: $EventOptions): unknown; off(eventname: K, handler?: $MutArgEventHandler): unknown; emit(eventname: K, ...data: $MutArg): unknown; TYPE: EM; } /** * 混合事件,可以用于动态与静态结合 * 静态确保内部逻辑正确性 * 动态用于生成实例后的拓展方法的正确性 */ export declare type $EventEmitterMix = { on(eventname: K, handler: $MutArgEventHandler, opts?: $EventOptions): unknown; on(eventname: K, handler: $MutArgEventHandler, opts?: $EventOptions): unknown; once(eventname: K, handler: $MutArgEventHandler, opts?: $EventOptions): unknown; once(eventname: K, handler: $MutArgEventHandler, opts?: $EventOptions): unknown; off(eventname: K, handler?: $MutArgEventHandler): unknown; off(eventname: K, handler?: $MutArgEventHandler): unknown; emit(eventname: K, ...data: $MutArg): unknown; emit(eventname: K, ...data: $MutArg): unknown; TYPE: EM1 | EM2; }; export interface $EventMap { [key: string]: $UnknownMutArg; } export declare type $OnceEventOptions = Omit<$EventOptions, "once">; export declare type $EventHanldersMap = { [key in keyof EM]?: Map<$MutArgEventHandler, $EventOptions>; }; declare type _EM_To_Object = { [K in keyof EM]: { eventname: K; args: EM[K]; }; }; declare type _EMObjectList = _EM_To_Object[keyof _EM_To_Object]; export declare type $InnerErrorHanlderArg = _EMObjectList> = [unknown, EMOL]; export declare type $InnerErrorHandler = $MutArgEventHandler<$InnerErrorHanlderArg>; export declare type $InnerAnyHandlerArg = [_EMObjectList]; export declare type $InnerAnyHandler = $MutArgEventHandler<$InnerAnyHandlerArg>; export {};