import { Cloneable } from "../util/interface/Cloneable";
import { AbstractList } from "./AbstractList";
import { Collection, Element } from "./Collection";
import { LinkedList, LinkedListNode } from "./LinkedList";
import { List } from "./List";
/**
 * The Vector class implements a growable array of objects. Like an array, it contains components that can be accessed using an integer index.
 */
export declare class Vector<T> extends AbstractList<T> implements Cloneable {
    protected _list: LinkedList<T>;
    [Symbol.iterator](): IterableIterator<Element<T>>;
    constructor(capacity?: number);
    /**
     * Returns the number of components in this vector
     */
    get size(): number;
    clone(): Vector<T>;
    getNode(index: number): Readonly<LinkedListNode<T> | null>;
    /**
     * @override
     */
    append(value: Element<T>): boolean;
    /**
     *  @override
     */
    appendAll<E extends T>(collection: Collection<E>): boolean;
    /**
     * @override
     */
    clear(): void;
    /**
     * @override
     */
    contains(value: Element<T>): boolean;
    /**
     * @override
     */
    get(index: number): Element<T> | undefined;
    /**
     * @override
     */
    indexOf(value: Element<T>, fromIndex?: number | undefined): number;
    /**
     * @override
     */
    insert(index: number, value: Element<T>): boolean;
    /**
     * @override
     */
    lastIndexOf(value: Element<T>, fromIndex?: number | undefined): number;
    /**
     * @override
     */
    remove(value: Element<T>): boolean;
    /**
     * @override
     */
    removeAll<E extends T>(collection: Collection<E>): boolean;
    /**
     * @override
     */
    removeAt(index: number): Element<T> | undefined;
    /**
     * @override
     */
    removeRange(fromIndex: number, toIndex: number): boolean;
    /**
     * @override
     */
    retainAll<E extends T>(collection: Collection<E>): boolean;
    /**
     * @override
     */
    set(index: number, value: Element<T>): Element<T> | undefined;
    /**
     * @override
     */
    subList(fromIndex: number, toIndex: number): List<T>;
    /**
     * @override
     */
    loadArray<E extends T>(values: Array<Element<T>>): void;
    /**
     * @override
     */
    toArray(): Array<Element<T>>;
    [Symbol.toStringTag]: string;
}
