import { IAnyModelType, IModelType, ISimpleType, ModelProperties } from 'mobx-state-tree';
export declare type ExtractProps<T extends IAnyModelType> = T extends IModelType<infer P, any, any, any> ? P : never;
export declare type ModelPropertyDefinitionsToProperties<T extends IAnyModelType> = {
    [P in keyof ExtractProps<T>]: ExtractProps<T>[P] extends ISimpleType<infer X> ? X : never;
};
export declare const deriveModelFromState: (state: {
    [key: string]: any;
}) => IModelType<any, {
    setValues: (values: import("mobx-state-tree").ModelInstanceTypeProps<any> & import("mobx-state-tree").IStateTreeNode<IModelType<any, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>) => void;
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
export declare const useSingletonEntity: <P extends ModelProperties, O, T extends IModelType<P, O, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, I extends ModelPropertyDefinitionsToProperties<T>>(initialValue: I, endpoint: string) => import("mobx-state-tree").IOptionalIType<IModelType<{
    metadata: IModelType<{
        error: import("mobx-state-tree").IMaybeNull<ISimpleType<string>>;
        isHydrating: import("mobx-state-tree").IOptionalIType<ISimpleType<boolean>, [undefined]>;
        isLoading: import("mobx-state-tree").IOptionalIType<ISimpleType<boolean>, [undefined]>;
        status: import("mobx-state-tree").IOptionalIType<ISimpleType<number>, [undefined]>;
    }, {
        hasHydrated: boolean;
    } & {
        readonly isDirty: boolean;
        readonly hasError: boolean;
    }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
    persistedValue: import("mobx-state-tree").IOptionalIType<IModelType<P, any, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, [undefined]>;
    value: import("mobx-state-tree").IOptionalIType<IModelType<P, any, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, [undefined]>;
}, {
    read: (id?: string | number | undefined) => Promise<any>;
    update: (id?: string | number | undefined) => Promise<any>;
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, [undefined]>;
