import { $EventOptions, $MutArgEventHandler } from "../event-base/$types.js"; import { $EventInOutMap, $InnerAnyInOutHandlerArg, $InOutEventHandler, $InOutSyncEventHandler } from "../event-quene_emitter/$types.js"; import { $PromiseOut } from "../extends-promise-out/$types.js"; import { QueneEventEmitter } from "./index.js"; /** * 将import写法改为BFChainUtil.PromiseOut,因为有引入../extends-promise-out包 * ../extends-promise-out的@types.type.d.ts包含PromiseOut,统一写法 */ export declare type $EventWaitterMap = { [key in keyof EM]?: $PromiseOut; }; export interface $QueneEventEmitter { on(eventname: K, handler: $InOutEventHandler, opts?: $EventOptions): unknown; once(eventname: K, handler: $InOutEventHandler, opts?: Omit<$EventOptions, "once">): unknown; has(eventname: K, handler?: $InOutEventHandler): boolean; off(eventname: K, handler: $InOutEventHandler): boolean; emit(eventname: K, data: EM[K]["in"]): EM[K]["out"] | Promise | undefined; TYPE: EM; } export interface $QueneEventEmitterPro extends QueneEventEmitter { onEmit(commonHanlder: $MutArgEventHandler<$InnerAnyInOutHandlerArg>, opts?: $EventOptions): void; offEmit(commonHanlder: $MutArgEventHandler<$InnerAnyInOutHandlerArg>): boolean; } export interface $SyncQueneEventEmitter extends QueneEventEmitter { on(eventname: K, handler: $InOutSyncEventHandler, opts?: $EventOptions): void; has(eventname: K, handler?: $InOutSyncEventHandler): boolean; off(eventname: K, handler: $InOutSyncEventHandler): boolean; emit(eventname: K, data: EM[K]["in"]): EM[K]["out"] | undefined; } export interface SyncQueneEventEmitterPro extends $QueneEventEmitterPro { on(eventname: K, handler: $InOutSyncEventHandler, opts?: $EventOptions): void; has(eventname: K, handler?: $InOutSyncEventHandler): boolean; off(eventname: K, handler: $InOutSyncEventHandler): boolean; emit(eventname: K, data: EM[K]["in"]): EM[K]["out"] | undefined; }