import { IBusMode } from '../../common/bus'; import { OperationLevel } from '../../common/signature'; import { IDisposable } from 'ts-toolset'; /** 事件配置 */ export interface EventOptions { /** 事件Id */ id: string; /** 事件只执行一次 */ once: boolean; /** 事件级别 */ level: OperationLevel; /** 时间间隔(毫秒) */ interval?: number; /** 作用域 */ scope?: any; } /** 注册监听事件配置 */ export declare type RegisterEventOptions = Partial & { /** 是否覆盖原本的监听事件,若覆盖的事件含有 level==framework 的监听事件,则只覆盖自定义的监听 */ cover: boolean; /** 覆盖指定的事件 */ eventId: string; }>; /** 事件体 */ interface IEvent extends IDisposable { readonly id: string; readonly once: boolean; readonly level: OperationLevel; /** 调用绑定的事件函数 */ invoke(...params: any[]): void; /** 异步调用绑定的事件函数 */ invokeAsync(...params: any[]): Promise; /** 重设事件 */ reset(callback: Function, options?: Partial): void; } /** 事件体 */ declare class Event implements IEvent { private _options; /** 事件执行的逻辑 */ private _callback; /** 上次事件调用的时间,用于防抖判断 */ private _previousInvokeTime; constructor(callback: Function, options: EventOptions); /** 事件Id */ get id(): string; /** 是否只执行一次 */ get once(): boolean; /** 事件级别 */ get level(): OperationLevel; private _debounce; invoke(params: any[]): void; invokeAsync(params: any[]): Promise; reset(callback: Function, options?: Partial): void; dispose(): void; } /** 事件总线 */ export interface IEventBus extends IBusMode { /** 注册监听事件 */ register(eventName: string, callback: Function, options: RegisterEventOptions): IEventBus; /** 取消指定事件监听的回调,指定Id时只删除相应回调 * @description 若监听事件绑定系统事件(level==framework),该监听事件将保留系统事件,移除用户绑定事件 */ unregister(eventName: string, eventId?: string): IEventBus; /** 获取事件 */ get(eventName: string): IEvent[] | undefined; /** 触发事件 */ emit(eventName: string, ...params: any[]): IEventBus; /** 触发异步事件 */ emitAsync(eventName: string, ...params: any[]): void; /** 是否有指定监听事件 */ hasEvent(eventName: string, eventId?: string): boolean; /** 获取一个可用的事件实例 */ getEventInstance(callback: Function, options?: Partial): IEvent; } /** 事件总线 */ export declare class EventBus implements IEventBus { /** 事件工厂 */ private _factory; /** 事件总线存储 */ private _eventStore; /** 移除监听事件 */ private _removeEvent; /** 注册监听事件 */ register(eventName: string, callback: Function, { cover, eventId, ...options }?: RegisterEventOptions): EventBus; /** 取消指定事件监听的回调,指定Id时只删除相应回调 * @description 若监听事件绑定系统事件(level==framework),该监听事件将保留系统事件,移除用户绑定事件 */ unregister(eventName: string, eventId?: string): EventBus; get(eventName: string): Event[] | undefined; emit(eventName: string, ...params: any[]): EventBus; emitAsync(eventName: string, ...params: any[]): Promise; hasEvent(eventName: string, eventId?: string): boolean; getEventInstance(callback: Function, options?: Partial): Event; dispose(): void; } export {};