export type RtdStoreSubscriber<Value> = (value: Value) => void;
type SetStateCallback<Value> = (value: Value) => Value;
export interface RtdStore<Value> {
    getState: () => Value;
    setState: (value: Value | SetStateCallback<Value>) => void;
    updateState: (value: Value | SetStateCallback<Value>) => void;
    initialize: (value: Value) => void;
    subscribe: (callback: RtdStoreSubscriber<Value>) => () => void;
}
export type RtdStoreValue<Store extends RtdStore<any>> = ReturnType<Store["getState"]>;
export declare function createStore<Value extends Record<string, any>>(initialState: Value): RtdStore<Value>;
export declare function useStore<Store extends RtdStore<any>>(store: Store): ReturnType<Store["getState"]>;
export {};
