import { GenericCallback } from "./models.mjs"; //#region src/herald.d.ts declare class Events> { #private; constructor(herald: Herald); /** * Subscribe to an event with a callback * * @param event Event name * @param callback Callback function * @returns Unsubscriber function */ subscribe(event: Event, callback: Map[Event]): Unsubscriber; /** * Unsubscribe from an event with a callback _(or all callbacks, if no callback is provided)_ * * @param event Event name * @param callback Callback function * @returns Unsubscriber function */ unsubscribe(event: Event, callback?: Map[Event]): void; } /** * A _Herald_ is an announcer for named events, allowing emission, subscription, and unsubscription of events */ declare class Herald> { #private; /** * Events interface for subscribing to and unsubscribing from events */ readonly events: Events; constructor(names: (keyof Map)[]); /** * Remove all event subscribers */ clear(): void; /** * Emit an event with parameters * * @param event Event name * @param parameters Event parameters */ emit(event: Event, ...parameters: Parameters): void; /** * Subscribe to an event with a callback * * @param event Event name * @param callback Callback function * @returns Unsubscriber function */ subscribe(event: Event, callback: Map[Event]): Unsubscriber; /** * Unsubscribe from an event with a callback _(or all callbacks, if no callback is provided)_ * * @param event Event name * @param callback Callback function */ unsubscribe(event: Event, callback?: Map[Event]): void; } type Unsubscriber = () => void; /** * Create a _Herald_ for announcing named events * * @param names Event names * @returns _Herald_ instance */ declare function herald>(names: (keyof Events)[]): Herald; //#endregion export { type Events, type Herald, Unsubscriber, herald };