# Hooks Types

# SoftStorage

type SoftStorage<T> = {
  storageModule: IStorageModule<T>;
  helper: IStorageModuleHelper<T>;
  initial: PickNonNullable<T>;
};
  Referenced Types

# CreateStorageBaseOptions

type CreateStorageBaseOptions<T> = {
  type: StorageType;
  storageModuleKey: string;
  protect?: boolean;
  version?: number;
  preVersion?: number;
  initial: PickNonNullable<T>;
};
  Referenced Types

# CreateStorageOptions

type CreateStorageOptions<T> = Omit<CreateStorageBaseOptions<T>, 'type'>;

# StorageItem

type StorageItem<T, K extends keyof T> = {
  get(): T[K];
  set(value: T[K]): void;
  reset(): void;
  exist(): boolean;
};

# StorageInstance

type StorageInstance<T> = Required<{
  [K in keyof T]: StorageItem<T, K>;
}>;

# StorageHelper

type StorageHelper = {
  size: () => number;
  contains: (key: string) => boolean;
  initialize: () => void;
};