import { Signal } from "../signal.js";
import { Collector } from "../../reactor/types.js";
export type LeanTrack = {
    lean: true;
    actor: () => void;
};
export type NormalTrack<P> = {
    collector: () => P;
    responder: ((payload: P) => void) | void;
};
export type Track<P> = LeanTrack | NormalTrack<P>;
export declare class SignalTracker {
    #private;
    constructor({ all_signals, waiters, }: {
        all_signals: Set<Signal<any>>;
        waiters: Set<Promise<void>>;
    });
    observe<P>(collector: Collector<P>): {
        payload: P;
        recording: Signal<any>[];
    };
    add_listeners<P>(track: Track<P>, recording: Signal<any>[]): void;
    shutdown(): void;
}
