UNPKG

@bigmi/client

Version:

Reactive primitives for Bitcoin apps.

35 lines (34 loc) 1.53 kB
import { EventEmitter } from "eventemitter3"; //#region src/factories/createEmitter.d.ts type EventMap = Record<string, object | never>; type EventKey<eventMap extends EventMap> = string & keyof eventMap; type EventFn<parameters extends unknown[] = any[]> = (...parameters: parameters) => void; type EventData<eventMap extends EventMap, eventName extends keyof eventMap> = (eventMap[eventName] extends [never] ? unknown : eventMap[eventName]) & { uid: string; }; declare class Emitter<eventMap extends EventMap> { uid: string; _emitter: EventEmitter; constructor(uid: string); on<key extends EventKey<eventMap>>(eventName: key, fn: EventFn<eventMap[key] extends [never] ? [{ uid: string; }] : [data: eventMap[key] & { uid: string; }]>): void; once<key extends EventKey<eventMap>>(eventName: key, fn: EventFn<eventMap[key] extends [never] ? [{ uid: string; }] : [data: eventMap[key] & { uid: string; }]>): void; off<key extends EventKey<eventMap>>(eventName: key, fn: EventFn<eventMap[key] extends [never] ? [{ uid: string; }] : [data: eventMap[key] & { uid: string; }]>): void; emit<key extends EventKey<eventMap>>(eventName: key, ...params: eventMap[key] extends [never] ? [] : [data: eventMap[key]]): void; listenerCount<key extends EventKey<eventMap>>(eventName: key): number; } declare function createEmitter<eventMap extends EventMap>(uid: string): Emitter<eventMap>; //#endregion export { Emitter, EventData, createEmitter }; //# sourceMappingURL=createEmitter.d.ts.map