import { Duration, Listener } from "./@types"; import { Subscription } from "./subscription.class"; import { Descriptor } from "./subscription.class"; import { AsTuple } from "./types/astuple.type"; export declare class Signal { private _subscriptions; private Clean; Derive(old: Signal): Signal; Copy(): Signal; Clear(): void; Listen(listener: Listener, duration?: Duration): Subscription; Emit(data: T): void; Then(signal: Signal): Connector; Until(signal: Signal): Interruptor; When(condition: (event: T) => boolean): When; Map(map: (event: T) => U): Mapper; Along(signal: Signal, map: (event: T) => U): Synchronizator; } export declare class Tracker extends Signal<[...AsTuple, ...AsTuple]> { private _signal; private _parent; private _actives; private _setups; constructor(_signal: Signal, _parent: Signal); protected TrackSetup(setup: Descriptor): Descriptor; protected TrackActive(active: Descriptor): Descriptor; protected ClearActives(): void; Clear(): void; Dispose(): void; get Signal(): Signal; get Parent(): Signal; } export declare class Synchronizator extends Signal { private _subscription; constructor(signal: Signal, parent: Signal, map: (event: B) => A); Dispose(): void; } export declare class Connector extends Tracker { constructor(signal: Signal, parent: Signal); } export declare class Interruptor extends Tracker { constructor(signal: Signal, parent: Signal); } export declare class When extends Signal { private _subscription; constructor(signal: Signal, condition: (event: T) => boolean); Dispose(): void; } export declare class Mapper extends Signal { private _subscription; constructor(signal: Signal, map: (event: T) => U); Dispose(): void; }