import State from './State'; import { StateInitializer, Selector, Patcher, Reducer, SetState, UpdateState } from './types'; type StoreObserver = (key: string, value: unknown) => void; type PersistenceConfig = { saveState: (key: string, state: unknown, isInitialSet: boolean) => void; loadState: (key: string, noState: Empty) => unknown; removeState?: (key: string) => void; clear?: () => void; PERSIST_ENTIRE_STORE?: boolean; }; type StoreInitializer = { [key: string]: unknown; } | (() => { [key: string]: unknown; }); declare class Empty { } export default class Store { private states; private subscribers; private persistentStorage; constructor(storeInitializer?: StoreInitializer); subscribe(observer: StoreObserver): () => void; private onStoreUpdate; persist(config: PersistenceConfig): void; setState(key: string, initialValue: StateInitializer | T, { persist }?: { persist?: boolean; }): void; getState(key: string, config?: { default?: StateInitializer | T; persist?: boolean; }): State; has(key: string): boolean; items(): Array<[key: string, state: unknown, persist: boolean]>; getStateValue(key: string, selector?: any): T | ST; clear(fn?: () => void): void; remove(Statekey: string | string[], fn?: () => void): void; useState(key: string, config?: { default?: StateInitializer | T; persist?: boolean; }): [ state: T, setState: SetState, updateState: UpdateState, stateObject: State ]; useState(key: string, config: { selector: Selector; default?: StateInitializer | T; persist?: boolean; }): [ state: ST, setState: SetState, updateState: UpdateState, stateObject: State ]; useState(key: string, config: { selector: Selector; patcher: Patcher; default?: StateInitializer | T; persist?: boolean; }): [ state: ST, setState: SetState, updateState: UpdateState, stateObject: State ]; useReducer(reducer: Reducer, key: string, config?: { default?: StateInitializer | T; persist?: boolean; }): [ state: T, dispatch: (action: A) => void, stateObject: State ]; useReducer(reducer: Reducer, key: string, config: { selector?: Selector; default?: StateInitializer | T | never; persist?: boolean; }): [ state: ST, dispatch: (action: A) => void, stateObject: State ]; useReducer(reducer: Reducer, key: string, config: { selector?: Selector; patcher?: Patcher; default?: StateInitializer | T | never; persist?: boolean; }): [ state: ST, dispatch: (action: A) => void, stateObject: State ]; } export declare function createStore(storeInitializer?: StoreInitializer): Store; export {};