import { Op } from "../op/op.js";
import { Signal } from "./signal.js";
import { OpSignal } from "./op_signal.js";
import { Collector, Lean, ReactorCore, Responder } from "../reactor/types.js";
export declare class SignalTower implements ReactorCore {
    #private;
    signal<V>(value: V): Signal<V>;
    computed<V>(fun: () => V): Signal<V>;
    computedAsync<X, V>(collector: () => X, responder: (x: X) => Promise<V>): Promise<Signal<V>>;
    op<V>(op?: Op.For<V>): OpSignal<V>;
    load<V>(fn: () => Promise<V>): OpSignal<V>;
    many<S extends {
        [key: string]: any;
    }>(states: S): { [P in keyof S]: Signal<S[P]>; };
    reaction<P>(collector: Collector<P>, responder?: Responder<P>): () => void;
    lean(actor: () => void): Lean;
    get wait(): Promise<void>;
}
