type EventName = string; type EventFnArgs = any[]; type EmitterContract = Record; export interface EmitterOptions { /** How many event listeners for a particular event before emitting a warning (0 = disabled) * @default 10 **/ maxListeners?: number; } /** * Event Emitter that takes the expected contract as a generic * @example * ```ts * type Contract = { * delivery_success: [DeliverySuccessResponse, Metrics], * delivery_failure: [DeliveryError] * } * new Emitter() * .on('delivery_success', (res, metrics) => ...) * .on('delivery_failure', (err) => ...) * ``` */ export declare class Emitter { maxListeners: number; constructor(options?: EmitterOptions); private callbacks; private warned; private warnIfPossibleMemoryLeak; on(event: EventName, callback: (...args: Contract[EventName]) => void): this; once(event: EventName, callback: (...args: Contract[EventName]) => void): this; off(event: EventName, callback: (...args: Contract[EventName]) => void): this; emit(event: EventName, ...args: Contract[EventName]): this; } export {}; //# sourceMappingURL=emitter.d.ts.map