import { AtomChange } from "../../../change/index.ts";
import { DetachedValue } from "../../../detached/index.ts";
import type { AtomImpl } from "../../implementation.ts";
export declare const externalSymbol: unique symbol;
export declare abstract class AtomInternal<Value> {
    #private;
    constructor(atom: AtomImpl<Value>, _value: Value);
    get external(): AtomImpl<Value>;
    create(value: any, parent: any): any;
    abstract set(value: Value | DetachedValue): AtomChange;
    abstract get value(): Value;
    detached(): boolean;
    try(): Value | AtomImpl<Value>;
    withhold(): void;
    unleash(): void;
    childUpdate(changes: AtomChange, _key: keyof Value): AtomChange;
    discriminate(discriminator: any): {
        [x: number]: AtomImpl<Value>;
        discriminator: any;
    };
}
//# sourceMappingURL=index.d.ts.map