import type { IDoublyLinkedListItem } from './IDoublyLinkedList';
import type IDoublyLinkedList from './IDoublyLinkedList';
export default class DoublyLinkedList<T = number> implements IDoublyLinkedList<T> {
    private _head;
    private _tail;
    private _size;
    constructor(...inputs: Readonly<T[]>);
    get data(): IDoublyLinkedListItem<T>[];
    get size(): number;
    /**
     * Complexity: O(1)
     */
    push(element: T): T;
    /**
     * Complexity: O(n/2)
     */
    getFromPosition(position: number): IDoublyLinkedListItem<T> | undefined;
    positionOf(element: T): number | undefined;
    /**
     * Complexity: O(n)
     */
    insertInPosition(element: T, position: number): T | undefined;
    /**
     * Complexity: O(n)
     */
    remove(element: T): T | undefined;
    /**
     * Complexity: O(n)
     */
    removeFromPosition(position: number): T | undefined;
    private _findFasterWayToPosition;
    private [Symbol.toPrimitive];
}
