///
import { EventEmitter } from 'events';
interface ExpiringMapOptions {
/** Default is unlimited */
maxCapacity?: number;
/**
* Whether return expired value on `get()`. Default is `false`.
*
* Expired entries will not be auto cleared if it's set to `true`.
*/
getExpiredValue?: boolean;
/**
* Whether update timestamp (prolong expire time) on `get()`. Default is `false`.
*
* Iterator functions (including `entries`, `keys`, `values`) will never update timestamp.
*/
updateTimestampOnGet?: boolean;
}
declare class ExpiringMap extends EventEmitter {
private readonly ttl;
private readonly map;
private begin?;
private end?;
private readonly options;
constructor(ttl: number, options?: ExpiringMapOptions);
set(key: K, value: V): V;
/**
*
* @deprecated deprecated since version 10.1.5, this interface still return true when a item is expired
*/
has(key: K): boolean;
get(key: K): V | undefined;
getOrSet(key: K, defaultValue: V): V;
delete(key: K): boolean;
clear(): void;
readonly size: number;
/**
* Clear all expired entries.
* @time default to now
* @return true if any entry being deleted
*/
clearExpired(time?: number): boolean;
/** Expired entries are included */
[Symbol.iterator](): Iterator<[K, V]>;
/** Expired entries are included */
entries(): Iterable<[K, V]>;
/** Expired entries are included */
keys(): Iterable;
/** Expired entries are included */
values(): Iterable;
private _deleteOldestNode;
private _entries;
private _keys;
private _values;
private _newNode;
private _updateNodeTime;
private _eraseNode;
}
export { ExpiringMapOptions, ExpiringMap, };