///
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 {};