ivr-tester
Version:
An automated testing framework for IVR call flows
16 lines (15 loc) • 799 B
TypeScript
declare type EventMap = Record<string, unknown>;
declare type EventKey<T extends EventMap> = string & keyof T;
declare type EventReceiver<T> = (params: T) => void;
export interface Emitter<T extends EventMap> {
on<K extends EventKey<T>>(eventName: K, fn: EventReceiver<T[K]>): void;
off<K extends EventKey<T>>(eventName: K, fn: EventReceiver<T[K]>): void;
emit<K extends EventKey<T>>(eventName: K, params: T[K]): void;
}
export declare class TypedEmitter<T extends EventMap> implements Emitter<T> {
private readonly emitter;
on<K extends EventKey<T>>(eventName: K, fn: EventReceiver<T[K]>): TypedEmitter<T>;
off<K extends EventKey<T>>(eventName: K, fn: EventReceiver<T[K]>): TypedEmitter<T>;
emit<K extends EventKey<T>>(eventName: K, params: T[K]): boolean;
}
export {};