export declare type ArgumentTypes = T extends (...args: infer U) => infer R ? U : never; export declare type ReplaceReturnType = (...a: ArgumentTypes) => TNewReturn; export declare type WithBoolReturn = ReplaceReturnType; export declare type WithVoidReturn = ReplaceReturnType; export interface SignalBinding { detach(): boolean; dispose(): void; } export declare class Signal void)> { private _head; private _tail; private _filter; handlers(): SignalBinding[]; hasAny(): boolean; has(node: SignalBinding): boolean; dispatch(...args: ArgumentTypes): boolean; add(fn: WithVoidReturn, thisArg?: any): SignalBinding; once(fn: WithVoidReturn, thisArg?: any): SignalBinding; detach(node_: SignalBinding): this; detachAll(): this; filter(filter: WithBoolReturn): void; proxy(...signals: Signal[]): this; private _addSignalBinding; }