UNPKG

@stringsync/vexml

Version:

MusicXML to Vexflow

17 lines (16 loc) 625 B
import { EventListener, AnyEventMap } from './types'; export type Subscription<T extends AnyEventMap, N extends keyof T> = { id: number; name: N; listener: EventListener<T[N]>; }; /** Class that tracks pubsub subscribers. */ export declare class Topic<T extends AnyEventMap> { private id; private subscriptions; hasSubscribers<N extends keyof T>(name: N): boolean; publish<N extends keyof T>(name: N, payload: T[N]): void; subscribe<N extends keyof T>(name: N, listener: EventListener<T[N]>): number; unsubscribe(id: number): Subscription<T, keyof T> | null; unsubscribeAll(): void; }