/**
 * This code is borrowed from Basarat Ali Syed from his Typescript Gitbook.
 * Licensed under Creative Commons https://creativecommons.org/licenses/by/4.0/
 */
export interface Listener<T> {
    (event: T): any;
}
/**
 * This code is borrowed from Basarat Ali Syed from his Typescript Gitbook.
 * Licensed under Creative Commons https://creativecommons.org/licenses/by/4.0/
 */
export interface Disposable {
    dispose(): any;
}
/**
 * This code is borrowed from Basarat Ali Syed from his Typescript Gitbook.
 * Licensed under Creative Commons https://creativecommons.org/licenses/by/4.0/
 *
 * Passes through events as they happen. You will not get events from before you start listening
 */
export declare class TypedEvent<T> {
    private listeners;
    private listenersOncer;
    on: (listener: Listener<T>) => Disposable;
    once: (listener: Listener<T>) => void;
    off: (listener: Listener<T>) => void;
    emit: (event: T) => void;
    pipe: (te: TypedEvent<T>) => Disposable;
}
