export interface LinkedList { head: LinkedListItem | null; } export interface LinkedListItem { value: T; next: LinkedListItem | null; prev: LinkedListItem | null; } /** * Creates linted list */ export declare function createList(): LinkedList; /** * Creates linked list item */ export declare function createListItem(value: T): LinkedListItem; /** * Prepends given value to linked list */ export declare function listPrependValue(list: LinkedList, value: T): LinkedListItem; /** * Inserts given value after given `ref` item */ export declare function listInsertValueAfter(value: T, ref: LinkedListItem): LinkedListItem; /** * Removes given item from list */ export declare function listRemove(list: LinkedList, item: LinkedListItem): void; /** * Moves list fragment with `start` and `end` bounds right after `ref` item */ export declare function listMoveFragmentAfter(list: LinkedList, start: LinkedListItem, end: LinkedListItem, ref: LinkedListItem): void; /** * Moves list fragment with `start` and `end` to list head */ export declare function listMoveFragmentFirst(list: LinkedList, start: LinkedListItem, end: LinkedListItem): void; /** * Detaches list fragment with `start` and `end` from list */ export declare function listDetachFragment(list: LinkedList, start: LinkedListItem, end: LinkedListItem): void;