/** * Copyright (c) 2024 Khaled Sameer . * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. **/ import { Signal, SignalOptions } from '../core'; /** * Interface for storage providers to get, set and remove persisted values */ export interface StorageProvider { /** Retrieves value by key, returns null if not found */ getItem(key: string): T | null; /** Stores value with given key */ setItem(key: string, value: T): void; /** Removes value with given key */ removeItem(key: string): void; } /** * Uses browser localStorage for persistent storage across sessions * Falls back gracefully when not in browser environment */ export declare class LocalStorageProvider implements StorageProvider { /** * Gets item from localStorage * @param key - Key to retrieve * @returns Stored value or null if not found/not in browser */ getItem(key: string): T | null; /** * Sets item in localStorage * @param key - Key to store under * @param value - Value to store */ setItem(key: string, value: T): void; /** * Removes item from localStorage * @param key - Key to remove */ removeItem(key: string): void; } /** * Uses browser sessionStorage for temporary storage during session * Falls back gracefully when not in browser environment */ export declare class SessionStorageProvider implements StorageProvider { /** * Gets item from sessionStorage * @param key - Key to retrieve * @returns Stored value or null if not found/not in browser */ getItem(key: string): T | null; /** * Sets item in sessionStorage * @param key - Key to store under * @param value - Value to store */ setItem(key: string, value: T): void; /** * Removes item from sessionStorage * @param key - Key to remove */ removeItem(key: string): void; } /** * In-memory storage provider for testing and SSR environments * Data persists only during runtime */ export declare class MemoryStorageProvider implements StorageProvider { /** Map to store key-value pairs in memory */ private store; /** * Gets item from memory store * @param key - Key to retrieve * @returns Stored value or null if not found */ getItem(key: string): T | null; /** * Sets item in memory store * @param key - Key to store under * @param value - Value to store */ setItem(key: string, value: T): void; /** * Removes item from memory store * @param key - Key to remove */ removeItem(key: string): void; } export type PersistedSignalStorage = { storage?: StorageProvider; }; export type PersistedSignalSignalOptions = SignalOptions & PersistedSignalStorage; export declare class Persisted extends Signal { disposed: boolean; private readonly storage; private readonly key; constructor(key: string, initialValue: T, storage: StorageProvider, options?: SignalOptions); get value(): T; set value(newValue: T); update(fn: (current: T) => T): void; dispose(): void; reload(): void; clear(): void; isDisposed(): boolean; } export declare function persisted(key: string, initialValue: T, storage: StorageProvider, options?: SignalOptions): Persisted; //# sourceMappingURL=persisted.d.ts.map