import type { Compute } from '@bigmi/core';
import type { Storage, StorageItemMap } from '../types/storage.js';
export type BaseStorage = {
    getItem(key: string): string | null | undefined | Promise<string | null | undefined>;
    setItem(key: string, value: string): void | Promise<void>;
    removeItem(key: string): void | Promise<void>;
};
export type CreateStorageParameters = {
    deserialize?: (<type>(value: string) => type | unknown) | undefined;
    key?: string | undefined;
    serialize?: (<type>(value: type | any) => string) | undefined;
    storage?: Compute<BaseStorage> | undefined;
};
export declare function createStorage<itemMap extends Record<string, unknown> = Record<string, unknown>, storageItemMap extends StorageItemMap = StorageItemMap & itemMap>(parameters: CreateStorageParameters): Compute<Storage<storageItemMap>>;
export declare const noopStorage: {
    getItem: () => null;
    setItem: () => void;
    removeItem: () => void;
};
export declare function getDefaultStorage(): {
    getItem(key: string): string | null;
    removeItem(key: string): void;
    setItem(key: string, value: string): void;
};
