/// /** @noSelfInFile */ export type EventListener = (...args: T) => void; export declare const enum EventListenerPriority { LOWEST = 0, LOW = 1, MEDIUM = 2, HIGH = 3, HIGHEST = 4 } export declare class Event { protected listeners: EventListener[]; protected priorityByListener: LuaMap, EventListenerPriority>; addListener(listener: EventListener): void; addListener(priority: EventListenerPriority, listener: EventListener): void; protected addListenerInternal(priority: EventListenerPriority, listener: EventListener): boolean; removeListener(listener: EventListener): boolean; static invoke(this: void, event: Event, ...args: T): void; } export declare class InitializingEvent extends Event { #private; private readonly initialize; private readonly deinitialize?; constructor(initialize: (this: void, event: InitializingEvent) => Data, deinitialize?: ((this: void, data: Data) => void) | undefined); protected addListenerInternal(priority: EventListenerPriority, listener: EventListener): boolean; removeListener(callback: EventListener): boolean; destroy(): void; } declare const IgnoreEvent: unique symbol; type IgnoreEvent = typeof IgnoreEvent; export { IgnoreEvent }; export declare class TriggerEvent extends InitializingEvent { constructor(r: (trigger: jtrigger) => void, c: () => LuaMultiReturn); } export type EventParameters = T extends Event ? P : never; export type EventDispatchTable, KeyType extends number = number> = { readonly [key in KeyType]: EventType; }; export type DispatchingEvent

= Event

, S extends Event

= Event

> = T & EventDispatchTable; export declare const createDispatchingEvent: { , S extends Event>>(underlyingEvent: T, extractKey: (...args: EventParameters) => number, ...createEvent: [...(Event extends S ? [(() => S)?] : [() => S])]): DispatchingEvent, T>; }; export declare class DependentInitializingEvent extends InitializingEvent> { constructor(underlyingEvent: Event, priority: EventListenerPriority, collector: (...args: T) => LuaMultiReturn<[false] | [true, ...R]>); } export declare class EventParametersCaptor { private readonly event; private invoked?; private constructor(); getFirstParameters(): LuaMultiReturn<[] | T>; getLastParameters(): LuaMultiReturn<[] | T>; static create(event: Event): EventParametersCaptor; }