import { Derivable, DerivableAtom, ReactorOptions, State } from '@politie/sherlock';
export type StateObject<V> = {
    value: V;
    errored: false;
    resolved: true;
} | {
    error: any;
    errored: true;
    resolved: true;
} | {
    errored: false;
    resolved: false;
};
export declare function getStateObject<V>(from: Derivable<V>): StateObject<V>;
export declare function toStateObject<V>(state: State<V>): StateObject<V>;
export declare function fromStateObject<V>(state: StateObject<V>): State<V>;
export declare function materialize<V>(derivable: Derivable<V>): Derivable<StateObject<V>>;
export declare function dematerialize<V>(derivable: Derivable<StateObject<V>>): Derivable<V>;
export declare function setStateObject<V>(to: DerivableAtom<V>, state: StateObject<V>): void;
export declare function syncState<V>(from: Derivable<V>, to: DerivableAtom<V>, opts?: Partial<ReactorOptions<StateObject<V>>>): () => void;
export declare function copyState<V>(from: Derivable<V>, to: DerivableAtom<V>): void;
