export interface EventInterface { emit: (arg: T) => void; removeAllListeners: () => void; add: (callback: (args: T) => void) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; once: (callback: (arg: T) => void) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; asPromise: (timeLimit?: number) => Promise; watch: (callback: (arg: T) => boolean | undefined | null, timeLimit?: number) => Promise; } interface PrivateEventInterface extends EventInterface { asPromise: (timeLimit?: number, disposer?: PrivateEventDisposerInterface) => Promise; watch: (callback: (arg: T) => boolean | undefined | null, timeLimit?: number, disposer?: PrivateEventDisposerInterface) => Promise; } export declare class Event implements PrivateEventInterface { private _onSetListener; private _stack; private _eventIndex; /**@internal */ constructor(_onSetListener?: () => void); /**@internal */ emit: (arg: T) => void; /**@internal */ removeAllListeners: () => void; /**@internal */ pipe: (event: Event) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; /** * イベントが起きた時に実行する関数を登録する。 * 戻り値として関数の登録を解除する関数が帰ってくる */ add: (callback: (args: T) => void) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; /**イベントが起きた時に一度だけ実行される関数を登録する */ once: (callback: (arg: T) => void) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; /** * イベントが起きた時に Promise が resolve される * @param timeLimit ms */ asPromise: (timeLimit?: number, disposer?: PrivateEventDisposerInterface) => Promise; /** * イベントが起きた時に実行される boolean を返す関数を登録する。 * 登録した関数が true を返した時に Promise が resolve される * */ watch: (callback: (arg: T) => boolean | undefined | null, timeLimit?: number, disposer?: PrivateEventDisposerInterface) => Promise; /**@internal */ get length(): number; } /**@internal */ export declare class Events { events: Event[]; make(): Event; dispose(): void; } /**@internal */ export interface EventDisposerInterface { push: (disposer: () => void) => void; dispose: () => void; } interface PrivateEventDisposerInterface extends EventDisposerInterface { remove: (disposer: () => void) => void; } /**@internal */ export declare class EventDisposer implements PrivateEventDisposerInterface { private _disposer; push(disposer: () => void): void; remove(disposer: () => void): void; dispose(): void; } export {}; //# sourceMappingURL=event.d.ts.map