import * as i0 from '@angular/core'; import { InjectionToken } from '@angular/core'; import { SdPersistenceSerializer, SdPersistenceIdentityCanonicalizer } from '@sdcorejs/angular/services/persistence'; import { BehaviorSubject, Observable } from 'rxjs'; interface SdStorageOption { type?: 'local' | 'session'; default?: T; args?: Readonly>; namespace?: string; version?: string | number; serializer?: SdPersistenceSerializer; identityCanonicalizer?: SdPersistenceIdentityCanonicalizer; } interface SdStorage { get: () => T | undefined; set: (data: T) => void; setSilent: (data: T) => void; has: () => boolean; remove: () => void; destroy: () => void; subject: BehaviorSubject; observer: Observable; } interface SdStorageWithDefault extends Omit, 'get' | 'subject' | 'observer'> { get: () => T; subject: BehaviorSubject; observer: Observable; } interface ISdStorageConfiguration { key?: (key: string) => string; namespace?: string; version?: string | number; serializer?: SdPersistenceSerializer; identityCanonicalizer?: SdPersistenceIdentityCanonicalizer; } declare const SD_STORAGE_CONFIG: InjectionToken; declare class SdStorageService { #private; constructor(); create(key: string | object, option: SdStorageOption & { default: T; }): SdStorageWithDefault; create(key: string | object, option?: SdStorageOption): SdStorage; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } export { SD_STORAGE_CONFIG, SdStorageService }; export type { ISdStorageConfiguration, SdStorage, SdStorageOption, SdStorageWithDefault };