/// import events from 'events'; export declare type Key = string | number | undefined | null; declare type FullEntry = [Key, V]; declare type Entry = V | FullEntry; declare type ItemGenerator = Generator, void>; declare type ValueGenerator = Generator; declare type FullEntryGenerator = Generator, void>; export declare type OnValue = (value?: V, key?: Key, last?: boolean) => boolean | U | void; export declare type MapOnValue = (value?: V, key?: Key, last?: boolean) => U; export interface Item { key: Key; prevKey: Key; nextKey: Key; value: V; } declare type Items = { [key: string]: Item; }; export default class Mapa extends events.EventEmitter { private _firstKey; private _lastKey; private _length; protected _items: Items; constructor(); clear(): void; protected _getItem(key: Key): Item | undefined; protected _throwKeyFalsyError(): void; protected _setItem(key: Key, item: Item): void; protected _deleteItem(key: Key): void; has(key: Key): boolean; private _nullOrUndefined; private _getOrThrow; private _insertBefore; private _insertAfter; private _insert; private _delete; private _update; emitChange(name: string, item: Item): void; set(key: Key, value: V, beforeKey?: Key, afterKey?: Key): void; get(key: Key): V; walkForward(key: Key, fullEntry?: boolean): ItemGenerator; walkBackward(key: Key, fullEntry?: boolean): ItemGenerator; values(startKey?: Key, reverse?: boolean): ValueGenerator; entries(startKey?: Key, reverse?: boolean): FullEntryGenerator; forEach(onValue: OnValue): void; each(onValue: OnValue): void; map(onValue: MapOnValue): U[]; delete(key: Key): Item; length(): number; previousKey(key: Key): Key; previous(key: Key): V; first(): V; firstKey(): Key; hasFirst(): boolean; isEmpty(): boolean; nextKey(key: Key): Key; next(key: Key): V; last(): V; lastKey(): Key; hasLast(): boolean; } export {};