type Updater<T> = (prev: T) => T;
type Middleware<T> = (prev: T, next: T) => void;
interface StoreOptions<T> {
    name?: string;
    persist?: boolean;
    devtools?: boolean;
    middlewares?: Middleware<T>[];
}
declare function createStore<T>(initialValue: T, options?: StoreOptions<T>): () => [T, (updater: Updater<T>) => void];
declare global {
    interface Window {
        __STATELY_DEVTOOLS__?: (payload: {
            name?: string;
            state: unknown;
        }) => void;
    }
}

export { createStore };
