type Result = { value: T; error?: never; } | { value?: never; error: Error; }; export type Resource = { matches: (key: K) => boolean; promise: Promise>; retain: () => () => void; }; export type Task = { promise: Promise; dispose?: () => void | Promise; }; type Options = { areKeysEqual?: (first: K, second: K) => boolean; /** Keep successful data when the cache is scoped to its owning document. */ cacheResolved?: boolean; }; export default class ResourceCache { private options; private entries; constructor(options?: Options); getOrCreate(key: K, load: () => Task): Resource; } export {};