export declare class HeadNode { next: LinkedListNode | TailNode; constructor(); } export declare class TailNode { previous: LinkedListNode | HeadNode; constructor(head: HeadNode); } export declare class LinkedListNode { next: LinkedListNode | TailNode | null; previous: LinkedListNode | HeadNode | null; readonly item: T; constructor(item: T); detachSelf(): void; attachAfter(node: LinkedListNode | HeadNode): void; attachBefore(node: LinkedListNode | TailNode): void; } export declare class LinkedList { head: HeadNode; tail: TailNode; constructor(); add(item: T): LinkedListNode; getItems(): T[]; forEach(callback: (item: T, node: LinkedListNode) => void): void; hasItems(): boolean; getLastItem(): LinkedListNode; }