export class ListNode { /** * @type {this|null} */ next: this | null; /** * @type {this|null} */ prev: this | null; } /** * @template {ListNode} N */ export class List { /** * @type {N | null} */ start: N | null; /** * @type {N | null} */ end: N | null; len: number; toArray(): N[]; /** * @param {function(N):any} f */ forEach(f: (arg0: N) => any): void; /** * @template M * @param {function(N):M} f * @return {Array} */ map(f: (arg0: N) => M): Array; [Symbol.iterator](): Generator; /** * @param {List} other */ [equalityTrait.EqualityTraitSymbol](other: List): boolean; } export function create(): List; export function isEmpty(queue: List): boolean; export function remove(list: List, node: N): N; export function removeNode(list: List, node: N): N; export function insertBetween(queue: List, left: N | null, right: N | null, node: N): void; export function replace(queue: List, node: N, newNode: N): void; export function pushEnd(queue: List, n: N): void; export function pushFront(queue: List, n: N): void; export function popFront(list: List): N | null; export function popEnd(list: List): N | null; export function map(list: List, f: (arg0: N) => M): Array; export function toArray(list: List): N[]; export function forEach(list: List, f: (arg0: N) => any): void; import * as equalityTrait from './trait/equality.js'; //# sourceMappingURL=list.d.ts.map