// types from @rbxts/lemon-signal export declare type SignalParameters = Parameters< T extends unknown[] ? (...args: T) => never : T extends unknown ? (arg: T) => never : () => never >; export declare type SignalCallback = (...args: SignalParameters) => unknown; export declare type SignalWait = T extends unknown[] ? LuaTuple : T; export declare class Connection { public readonly Connected: boolean; public Destroy(): void; public Disconnect(): void; public Reconnect(): void; } export declare class Signal { public readonly RBXScriptConnection?: RBXScriptConnection; public readonly TotalConnections?: number; public readonly OnConnectionsChanged: Signal; public constructor(trackConnections?: boolean); public static is: (object: O) => boolean; public static wrap: ( signal: RBXScriptSignal, trackConnections?: boolean, ) => Signal>; public Connect(fn: SignalCallback): Connection; public Once(fn: SignalCallback): Connection; public Wait(): SignalWait; public Fire(...args: SignalParameters): void; public DisconnectAll(): void; public Destroy(): void; }