export declare enum RhamtEventType {
    STARTING = 0,
    STARTING_ERROR = 1,
    STARTED = 2,
    STOPPED = 3,
    MESSAGE = 4
}
export interface RhamtEvent {
    type: RhamtEventType;
    data: any;
}
export declare namespace rhamtEvents {
    interface Listener<T> {
        (event: T): any;
    }
    interface Disposable {
        dispose(): void;
    }
    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;
    }
}
