import { LRUParam, UnregFn } from "./lru-map-set.js"; export interface KeyedIf { onSet(fn: (value: ITEM) => void): UnregFn; onDelete(fn: (value: ITEM) => void): UnregFn; setParam(params: Partial>): void; asyncGet(key: () => Promise): Promise; get(key: K | (() => K)): V; getItem(key: K, ctx?: unknown): ITEM; has(key: K | (() => K)): boolean; delete(key: K): void; values(): ITEM[]; keys(): K[]; forEach(fn: (v: ITEM, idx: number) => void): void; entries(): Iterable<[ITEM, number]>; } export type WritableValue = Omit & { value: T extends { value: infer V; } ? V : unknown; }; export interface KeyedNgOptions { readonly createValue: (keyItem: KeyedNgItem) => V; readonly key2string?: (key: K) => string; readonly ctx?: CTX; readonly resetAfter?: number; readonly lru?: Partial>; } export interface KeyedNgItem { readonly refKey: string; readonly givenKey: K; readonly value: V; readonly ctx: CTX; } export type KeyedNgItemWithoutValue = Omit, "value">; export declare class KeyedNg implements KeyedIf, V, K, CTX> { #private; readonly opts: Required, "lru">>; constructor(opts: KeyedNgOptions); onSet(fn: (value: KeyedNgItem) => void): UnregFn; onDelete(fn: (value: KeyedNgItem) => void): UnregFn; setParam(params: Partial, CTX>>): void; asyncGet(key: () => Promise): Promise; has(keyOfFnKey: K | (() => K)): boolean; delete(key: K): void; keys(): K[]; forEach(fn: (v: KeyedNgItem, idx: number) => void): void; entries(): Iterable<[KeyedNgItem, number]>; getItem(key: K, ctx?: CTX): KeyedNgItem; get(key: K | (() => K), ctx?: CTX): V; values(): KeyedNgItem[]; } //# sourceMappingURL=keyed-ng.d.ts.map