export interface StorageDriver { get(key: string): Promise; set(key: string, value: unknown): Promise; remove(key: string): Promise; keys(): Promise; clear(): Promise; } export type StorageEventName = | 'before-set' | 'after-set' | 'before-remove' | 'after-remove' | 'clear'; export interface StorageEventPayload { key: K; value?: V[K] | null; } export type StorageEventListener = ( payload: StorageEventPayload ) => void; export interface ScopedKey { get(): Promise; set(value: V[K]): Promise; assign(val: Partial): Promise; rm(): Promise; remove(): Promise; clear(): Promise; }