declare type EventExecute<T> = (arg: T) => void;
export declare class Event<T> {
    private _listeners;
    private _listenerIndex;
    emit: (arg: T) => void;
    removeAllListeners: () => void;
    addListener: (listener: EventExecute<T>) => {
        removeListener: () => void;
    };
    addOneTimeListener: (listener: EventExecute<T>) => {
        removeListener: () => void;
    };
    asPromise: (timeLimit?: number) => Promise<T>;
}
export {};
//# sourceMappingURL=event.d.ts.map