@bigmi/client
Version:
Reactive primitives for Bitcoin apps.
35 lines (34 loc) • 1.53 kB
TypeScript
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