import { PropInfo } from "../froop/types"; export type storage = 'sessionStorage' | 'localStorage'; export type protocols = | storage | 'indexedDB' | 'globalThis' | 'cookie' | 'locationHash' ; export type db = string; export type storeName = string; export type key = string; export type chainedAccessor = string; export type idbUSP = `indexedDB://${db}/${storeName}/${key}`; export type idbUSL = `${idbUSP}?.${chainedAccessor}`; export type storageUSP = `${storage}://${key}`; export type storageUSL = `${storageUSP}?.${chainedAccessor}`; export type USP = | idbUSP | storageUSP ; export type USL = | idbUSP | idbUSL | storageUSP | storageUSL ; export interface ParsedUSL{ protocol: protocols, accessorChain: string, usp: USP, uspParts: Array } export interface WrapperConfig extends PropInfo { USPProp: keyof TProps & string, accessor: string, cache: boolean, maxStaleness: number, //subscribe to window message beVigilant: boolean, } export type USLMapping = {[key: string | number | symbol]: USL} export interface StowArgs { values: any, mapping: USLMapping } export interface SavingContext { USLs: Set } export interface CookieOptions { secure: boolean | undefined, 'max-age': number | undefined, expires: Date | string | undefined, domain: string | undefined, path: string | undefined, }