import { Derivable, SettableDerivable, Unwrappable } from '@politie/sherlock';
export interface MapImplementation<K, V> {
    set(key: K, value: V): void;
    delete(key: K): void;
    get(key: K): V | undefined;
}
export interface DerivableCacheOptions<K, V> {
    derivableFactory(key: K): Derivable<V>;
    mapFactory?(): MapImplementation<K, Derivable<V>>;
    delayedEviction?: boolean;
}
export type DerivableCache<K, V> = (key: Unwrappable<K>) => SettableDerivable<V>;
export declare function derivableCache<K, V>(opts: DerivableCacheOptions<K, V>): DerivableCache<K, V>;
