import EventListeningAdapter from "./interfaces/EventListeningAdapter"; import IEventHandler from "./interfaces/EventHandler"; import { EventPriority } from "./EventPriority.js"; import { EventOptionType } from "./GetEventOptions"; export declare class EventRegistry { #private; throwIfNotRegistered(): void; /** * 该事件的便于区分的名字。 */ get eventName(): string; /** * 关联到的事件类。 */ readonly eventClass: TEvent; /** * 指定不扩展此事件的范围。 */ get noExtends(): boolean; set noExtends(v: boolean); /** * 指定此事件使用额外参数在handler前过滤事件。 */ get extraOption(): boolean; set extraOption(v: boolean); /** * 此事件在handler前过滤事件所使用的处理器。 */ get extraOptionResolver(): ExtraOptionResolver | undefined; set extraOptionResolver(v: ExtraOptionResolver | undefined); /** * 此事件的兼容监听器。 */ get listeningAdapter(): EventListeningAdapter | undefined; set listeningAdapter(v: EventListeningAdapter | undefined); get handlers(): IEventHandler[]; handlerslots: Map[]>; get hasRegistered(): boolean; private constructor(); addHandler(handler: IEventHandler, priority: EventPriority): void; removeHandler(handler: IEventHandler, priority: EventPriority): boolean; /** * 注销事件信息。 */ static unregister(eventClass: TEvent | EventRegistry): boolean; /** * 注册事件信息。 */ static register(eventClass: EventRegistry | TEvent, option?: EventRegisterOptions): EventRegistry; /** * 获取一个事件所对应的事件信息对象。 */ static getRegistry(eventClass: TEvent): EventRegistry; static getExtends, TEvent extends Function = T["eventClass"]>(registry: T): EventRegistry[]; } /** * 事件注册所需要的信息。 */ export interface EventRegisterOptions { noExtends?: boolean; extraOption?: boolean; extraOptionResolver?: ExtraOptionResolver; listeningAdapter?: EventListeningAdapter; displayName?: string; } export type ExtraOptionResolver = (event: Prototype, option: EventOptionType>) => boolean; type Prototype = TFunction["prototype"]; export {};