import * as zustand_middleware from 'zustand/middleware';
import { StateStorage } from 'zustand/middleware';
import * as zustand from 'zustand';

interface LocaleStore {
    locale: string;
    setLocale: (locale: string) => void;
}
interface CreateLocaleStoreOptions {
    defaultLocale: string;
    storageKey?: string;
    storage?: StateStorage;
}
declare function createLocaleStore(options: CreateLocaleStoreOptions): zustand.UseBoundStore<Omit<zustand.StoreApi<LocaleStore>, "setState" | "persist"> & {
    setState(partial: LocaleStore | Partial<LocaleStore> | ((state: LocaleStore) => LocaleStore | Partial<LocaleStore>), replace?: false | undefined): unknown;
    setState(state: LocaleStore | ((state: LocaleStore) => LocaleStore), replace: true): unknown;
    persist: {
        setOptions: (options: Partial<zustand_middleware.PersistOptions<LocaleStore, unknown, unknown>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: LocaleStore) => void) => () => void;
        onFinishHydration: (fn: (state: LocaleStore) => void) => () => void;
        getOptions: () => Partial<zustand_middleware.PersistOptions<LocaleStore, unknown, unknown>>;
    };
}>;
/** Cookie-backed persist storage for hosts that prefer cookie over localStorage. */
declare function createCookieStorage(cookieName: string): StateStorage;

export { type CreateLocaleStoreOptions, type LocaleStore, createCookieStorage, createLocaleStore };
