export interface IEvent { subscribe(callback: (data: DataType) => void): void; unsubscribe(callback: (data: DataType) => void): void; } export interface INotifier { notify(data: DataType): void; } export declare function produceObserver(): IEvent & INotifier; export declare function once(observer: IEvent, callback: (data: DataType) => void): () => void;