import Agile from "../agile"; import { StateKey } from "../state"; export declare type DefaultEventPayload = { [key: string]: any; }; export declare type EventCallbackFunction = (payload?: PayloadType) => void; export declare type EventKey = string | number; export interface EventConfig { key?: EventKey; enabled?: boolean; maxUses?: number; delay?: number; } export default class Event { agileInstance: () => Agile; config: EventConfig; _key?: StateKey; callbacks: Set>; uses: number; private currentTimeout; private queue; enabled: boolean; payload: PayloadType; constructor(agileInstance: Agile, config?: EventConfig); set key(value: StateKey | undefined); get key(): StateKey | undefined; /** * Register Callback Function */ on(callback: EventCallbackFunction): () => void; /** * Run all callback Functions */ trigger(payload?: PayloadType): this; /** * Disables the Event */ disable(): this; /** * Enables the Event */ enable(): this; /** * Resets the Event */ reset(): this; /** * @internal * Unsubs a callback */ private unsub; /** * @internal * Call event instantly */ private normalTrigger; /** * @internal * Call event after config.delay */ private delayedTrigger; }