/** * Simple double linked list. Compared with array, it has O(1) remove operation. * @constructor * @alias clay.core.LinkedList */ export declare class Entry { value: T; next?: Entry; prev?: Entry; constructor(val: T); } declare class LinkedList { head?: Entry; tail?: Entry; private _length; constructor(); /** * Insert a new value at the tail */ insert(val: T): Entry; /** * Insert a new value at idx * @param idx * @param val */ insertAt(idx: number, val: T): void; insertBeforeEntry(val: T, next: Entry): void; /** * Insert an entry at the tail * @param entry */ insertEntry(entry: Entry): void; /** * Remove entry. * @param entry */ remove(entry: Entry): void; /** * Remove entry at index. * @param idx * @return */ removeAt(idx: number): T | undefined; /** * Get head value * @return {} */ getHead(): T | undefined; /** * Get tail value * @return {} */ getTail(): T | undefined; /** * Get value at idx * @param idx * @return */ getAt(idx: number): T | undefined; /** * @param value */ indexOf(value: T): number; /** * Length of list */ length(): number; /** * If list is empty */ isEmpty(): boolean; /** * @param cb * @param context */ forEach(cb: (value: T, idx: number) => void): void; /** * Clear the list */ clear(): void; } export default LinkedList;