import { CacheKey, CacheOptions } from './types.js'; type Listener = (...args: any[]) => unknown; type Unsubscribe = () => void; type Subscribe = (listener: TListener) => Unsubscribe; declare class Subscribable { protected listeners: Set; subscribe: Subscribe; protected notify: () => void; } type ExtractPartial, TExtractor extends Partial> = Extract; declare const hashCacheKey: (key: CacheKey) => string; declare const enum CacheStatus { Idle = "idle", Pending = "pending", Resolved = "resolved", Rejected = "rejected" } type AllStatusCached = { status: CacheStatus.Idle; promiseToSuspend: undefined; cacheKey: TCacheKey; hashedCacheKey: ReturnType; state: { promise: undefined; data: undefined; error: undefined; }; } | { status: CacheStatus.Pending; promiseToSuspend: Promise; cacheKey: TCacheKey; hashedCacheKey: ReturnType; state: { promise: Promise; data: undefined; error: undefined; }; } | { status: CacheStatus.Resolved; promiseToSuspend: Promise; cacheKey: TCacheKey; hashedCacheKey: ReturnType; state: { promise: Promise; data: TData; error: undefined; }; } | { status: CacheStatus.Rejected; promiseToSuspend: Promise; cacheKey: TCacheKey; hashedCacheKey: ReturnType; state: { promise: Promise; data: undefined; error: unknown; }; }; type IdleCached = ExtractPartial, { status: CacheStatus.Idle; }>; type PendingCached = ExtractPartial, { status: CacheStatus.Pending; }>; type ResolvedCached = ExtractPartial, { status: CacheStatus.Resolved; }>; type RejectedCached = ExtractPartial, { status: CacheStatus.Rejected; }>; type Cached = IdleCached | PendingCached | ResolvedCached | RejectedCached; /** * @experimental This is experimental feature. */ declare class Cache extends Subscribable<() => void> { private cache; reset: (options?: Pick, "cacheKey">) => void; remove: (options: Pick, "cacheKey">) => void; clearError: (options?: Pick, "cacheKey">) => void; suspend: ({ cacheKey, cacheFn, }: CacheOptions) => ResolvedCached; getData: (options: Pick, "cacheKey">) => unknown; getError: (options: Pick, "cacheKey">) => unknown; } export { type AllStatusCached, Cache, type Cached, type IdleCached, type PendingCached, type RejectedCached, type ResolvedCached };