import type { Atom } from "../atom/definition.ts";
import { AtomImpl } from "../atom/implementation.ts";
import { EnsoUtils as Utils } from "../utils.ts";
import { State } from "./definition.ts";
export { StateImpl as State, StateProxyImpl as StateProxy };
export declare class StateImpl<Value> extends AtomImpl<Value> {
    static prop: string;
    static create<Value>(value: Value, parent?: Atom.Parent.Bare.Ref<"state", any, any>): StateImpl<Value>;
    static proxy(state: any, intoMapper: any, fromMapper: any): StateProxyImpl<unknown>;
    static optional(target: Atom.BareOptionalTarget<"state", StateImpl<unknown>>): StateOptionalImpl<unknown>;
    constructor(value: Value, parent?: Atom.Parent.Bare.Ref<"state", any, any>);
    useMeta<Props extends State.Meta.Props | undefined = undefined>(_props?: Props): State.Meta<Props>;
    clearCache(): void;
}
export declare class StateProxyImpl<Value> extends StateImpl<Value> {
    #private;
    constructor(source: StateImpl<unknown>, into: any, from: any);
    deconstruct(): void;
    connect(source: StateImpl<unknown>): void;
}
export declare class StateOptionalImpl<Value> extends StateImpl<Value> {
    #private;
    constructor(target: Atom.BareOptionalTarget<"state", StateImpl<unknown>>);
    get value(): Value;
    at<Key extends keyof Utils.NonNullish<Value>>(key: Key): any;
    get try(): Atom.BareTry<AtomImpl<Value[keyof Value]>, keyof Value> | undefined | null;
}
//# sourceMappingURL=implementation.d.ts.map