declare global {
    namespace LA {
        type Item<T> = T | undefined

        type Sort = { order?: "asc" | "desc"; attr?: string }
    }
}

declare class LinkedArray<T> extends Array<T> {
    private _index;
    constructor(...items: T[]);
    clean(): void;
    replace(array: Array<T>, index?: number): void;
    first(): LA.Item<T>;
    last(): LA.Item<T>;
    current(): LA.Item<T>;
    move(fromIndex: number, toIndex: number): void;
    swap(index1: number, index2: number): void;
    next(): LA.Item<T>;
    previous(): LA.Item<T>;
    index(): number;
    at(index: number): LA.Item<T>;
    clone(): LinkedArray<T>;
    removeAt(index: number): void;
    sorted({ order, attr }?: LA.Sort): this;
    private getValueByPath;
}

export { LinkedArray };
