type StorageType = 'session' | 'local'; declare const createKey: (prefix: string, key: string, namespace?: string) => string; interface SetToStorageConfig extends Omit, 'fallback'> { value: V; } interface UnsetFromStorageConfig extends Omit, 'fallback'> { } interface GetFromStorageConfig { /** * Ключ по которому можно получить значение из хранилища (имя ключа не полное, оно дополняется неймпспейсом проекта) */ key: string; /** * Тип хранилища */ type: StorageType; /** * дефолтное значение, которое будет использоваться если значения нет в хранилище */ fallback?: V; /** * Доп. делитель в ключ/utils/types'е */ namespace?: string; /** * Доп. делитель */ prefix?: string; } type SetToStorageWrappedConfig = Omit, Extract, keyof BaseConfig>> & Partial, Extract, keyof BaseConfig>>> & Pick>>; type UnsetFromStorageWrappedConfig = Omit> & Partial>> & Pick>; type GetFromStorageWrappedConfig = Omit, Extract, keyof BaseConfig>> & Partial, Extract, keyof BaseConfig>>> & Pick>>; type StorageConfigBase = Partial, 'prefix' | 'type'>>; interface StorageApi { set(config: SetToStorageWrappedConfig): void; unset(config: UnsetFromStorageWrappedConfig): void; get(config: GetFromStorageWrappedConfig): Value | null; } /** * Создает интерфейс для работы с хранилищем (localStorage, sessionStorage) */ declare function createStorage(storageConfig: BaseConfig): StorageApi; export { createKey, createStorage }; export type { GetFromStorageConfig, GetFromStorageWrappedConfig, SetToStorageConfig, SetToStorageWrappedConfig, StorageApi, StorageConfigBase, StorageType, UnsetFromStorageConfig, UnsetFromStorageWrappedConfig };