import type { Predicate } from '../types/index.js'; import { Loggable } from '../logger/loggable.js'; export type EventHandler = (data?: T) => void | Promise; type Unsubscribe = () => void; export interface IEvent { on(handler: EventHandler): () => void; off(handler: EventHandler): void; } export declare class Event extends Loggable implements IEvent { private _handlers; get isEmpty(): boolean; protected getLoggerName(name: string | undefined): string; /** Clears handlers list */ resetHandlers: () => void; on(handler: EventHandler): Unsubscribe; off(handler: EventHandler): void; trigger(data?: T): void; triggerAsync(data?: T): Promise; expose(): IEvent; private logError; } export declare function oneTimeSubscription(e: IEvent, filter?: Predicate): Promise; export {};