export declare const END: unique symbol;
export declare type SortFn<DataClass> = (a: DataClass, b: DataClass) => boolean;
export declare class ListItem<DataClass> {
    data: DataClass | symbol;
    next: ListItem<DataClass>;
    prev: ListItem<DataClass>;
    constructor(data?: any);
}
export declare class LinkedList<DataClass> {
    protected list: ListItem<DataClass>;
    constructor(...args: DataClass[]);
    isBefore(a: DataClass, b: DataClass): boolean;
    push(...args: DataClass[]): LinkedList<DataClass>;
    pop(): DataClass;
    unshift(...args: DataClass[]): LinkedList<DataClass>;
    shift(): DataClass;
    remove(...items: DataClass[]): void;
    clear(): LinkedList<DataClass>;
    [Symbol.iterator](): IterableIterator<DataClass>;
    reversed(): IterableIterator<DataClass>;
    insert(data: DataClass, isBefore?: SortFn<DataClass>): this;
    sort(isBefore?: SortFn<DataClass>): LinkedList<DataClass>;
    merge(list: LinkedList<DataClass>, isBefore?: SortFn<DataClass>): LinkedList<DataClass>;
}