type Listener<T> = (state: T) => void;
type SetStateArg<T> = (T extends (...args: any[]) => any ? never : T) | ((currentState: T) => T);
export interface SimpleStore<T> {
    readonly subscribe: (listener: Listener<T>) => void;
    readonly unsubscribe: (listener: Listener<T>) => void;
    readonly getStore: () => T;
    readonly setStore: (arg: SetStateArg<T>) => T;
}
export declare const createSimpleStore: <T extends object>(initialStore: T) => SimpleStore<T>;
declare function useSimpleStore<T extends object>(store: SimpleStore<T>, selector?: undefined, eqFn?: undefined): [T, SimpleStore<T>['setStore']];
declare function useSimpleStore<T extends object, U = T>(store: SimpleStore<T>, selector: (store: T) => U, eqFn?: (prev: U, next: U) => boolean): [U, SimpleStore<T>['setStore']];
export default useSimpleStore;
//# sourceMappingURL=useSimpleStore.d.ts.map