import { Logger } from '@elliemae/pui-diagnostics'; import { IScriptingObject, Events } from '@elliemae/pui-scripting-object'; import type { EventListeners, Listener, SubscribeParam, UnsubscribeParam, DispatchEventParam, EventOptions, FilterCriteria } from '@elliemae/microfe-common'; /** * details of an event listener */ type EventListenerDetails = { /** * filter criteria for the event listener */ criteria?: FilterCriteria; /** * event listener */ callback: Listener; /** * subscription id */ token: string; }; /** * parameters for emitting an event */ export type EmitEventParam = { /** * name of the event */ eventName: string; /** * scripting object that owns this event */ scriptingObject: IScriptingObject; /** * event parameters */ eventParams: Record; /** * event listeners */ listeners: EventListenerDetails[]; }; /** * Event Manager */ export declare class EventManager { #private; constructor(logger?: Logger); /** * dispatch an event * @param scriptingObject * @param {DispatchEventParam} param - parameters for dispatching an event */ dispatchEvent: , Params extends Parameters[0]["eventParams"], Options extends EventOptions>(scriptingObject: IScriptingObject, param: DispatchEventParam) => Promise; /** * Subscribe to an event * @param {SubscribeParam} param - parameters for subscribing to an event */ subscribe: >(param: SubscribeParam) => string; /** * Unsubscribe from an event * @param {UnsubscribeParam} param - parameters for unsubscribing from an event */ unsubscribe: >(param: UnsubscribeParam) => void; /** * Unsubscribe from all events */ unsubscribeAll: () => void; } export {};