import { EVENT_TYPE } from './events/constants'; export { EVENT_TYPE as EventType } from './events/constants'; export type EventName = keyof typeof EVENT_TYPE; export type KeyType = number | string | symbol; export type Attributes = Record; export type Timeout = NodeJS.Timeout; export interface MapEntry { createdAt: number; key: K; ttl: number; value: V; } export interface EventData { } export interface AutoRenewedEventData extends EventData { createdAt: number; key: K; previouslyCreatedAt: number; } export interface PutEventData extends EventData { current: MapEntry; previous: MapEntry; } export interface RemovedEventData extends EventData { removed: MapEntry; } export interface RemoveManyEventData extends EventData { removed: Array>; } export interface EventDataTable { AUTO_RENEWED: AutoRenewedEventData; CLEARED: RemoveManyEventData; CLOSING: never; PRUNED: RemoveManyEventData; PUT: PutEventData; REMOVED: RemovedEventData; } export interface SharedEventInfo { data: EventDataTable[E]; date: Date; timestamp: number; type: E; } export interface EventInfo extends SharedEventInfo { attributes: Attributes; id: string; } export type Listener = (event: EventInfo) => void; declare class TimedMap { private _driver; constructor(maxEntryAgeMillis?: number); get entries(): MapEntry[]; get isEmpty(): boolean; get keys(): string[]; get maxEntryAge(): number; set maxEntryAge(maxEntryAgeMillis: number); get size(): number; clear(): void; close(): void; get(key: number): T; get(key: string): T; get(key: symbol): T; getEntry(key: K): MapEntry; has(key: number): boolean; has(key: string): boolean; has(key: symbol): boolean; peak(key: number): T; peak(key: string): T; peak(key: symbol): T; put(key: K, value: T, ttl?: number): MapEntry; remove(key: K): MapEntry; off(type: E, listener: Listener): void; offById(eventId: string): void; on(type: E, listener: Listener, attributes?: Attributes): string; once(type: E, listener: Listener, attributes?: Attributes): string; toString(): string; } export default TimedMap;