/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import type { Observable } from "#general";
import type { Reactor } from "../Reactor.js";
import type { BehaviorBacking } from "./BehaviorBacking.js";
/**
 * Used by BehaviorBacking to manage reactors and reactions.
 */
export declare class Reactors {
    #private;
    constructor(backing: BehaviorBacking);
    get backing(): BehaviorBacking;
    close(): Promise<void>;
    add<O extends Observable<any[], any>>(observable: O, reactor: Reactor<Parameters<O["emit"]>, ReturnType<O["emit"]>>, options?: Reactor.Options): void;
    remove(selector: Reactor.Selector): Promise<(void | undefined)[]>;
    deleteClosedBacking(backing: ReactorBacking<any, any>): void;
    get resource(): import("../state/managed/Datasource.js").Datasource<import("../index.js").StateType>;
}
/**
 * Implementation of a single reactor.
 */
declare class ReactorBacking<T extends any[], R> {
    #private;
    constructor(reactors: Reactors, observable: Observable<T, R>, reactor: Reactor, { offline, once, lock }: Reactor.Options);
    is(observable?: Observable<unknown[], unknown>, reactor?: Reactor): boolean;
    close(): Promise<void> | undefined;
    toString(): string;
}
export {};
//# sourceMappingURL=Reactors.d.ts.map