export interface IFuncUpdater<T> {
    (previousState?: T): T;
}
export interface IFuncStorage {
    (): Storage;
}
export declare type StorageStateResult<T> = [T | undefined, (value?: T | IFuncUpdater<T>) => void];
export declare type StorageStateResultHasDefaultValue<T> = [T, (value?: T | IFuncUpdater<T>) => void];
export declare function createUseStorageState(nullishStorage: Storage | null): {
    <T = undefined>(key: string): StorageStateResult<T>;
    <T_1>(key: string, defaultValue: T_1 | IFuncUpdater<T_1>): StorageStateResultHasDefaultValue<T_1>;
};
