import SequentialContainer from 'js-sdsl/dist/esm/container/SequentialContainer/Base';
import { initContainer, IteratorType } from "js-sdsl/dist/esm/container/ContainerBase";
import { RandomIterator } from "js-sdsl/dist/esm/container/SequentialContainer/Base/RandomIterator";
declare class VectorIterator<T> extends RandomIterator<T> {
    container: Vector<T>;
    constructor(node: number, container: Vector<T>, iteratorType?: IteratorType);
    copy(): VectorIterator<T>;
    equals(iter: VectorIterator<T>): boolean;
}
export type { VectorIterator };
declare class Vector<T> extends SequentialContainer<T> {
    /**
     * @param container - Initialize container, must have a forEach function.
     * @param copy - When the container is an array, you can choose to directly operate on the original object of
     *               the array or perform a shallow copy. The default is shallow copy.
     */
    constructor(container?: initContainer<T>, copy?: boolean);
    clear(): void;
    begin(): VectorIterator<T>;
    end(): VectorIterator<T>;
    rBegin(): VectorIterator<T>;
    rEnd(): VectorIterator<T>;
    front(): T | undefined;
    back(): T | undefined;
    getElementByPos(pos: number): T;
    eraseElementByPos(pos: number): number;
    eraseElementByValue(value: T): number;
    eraseElementByIterator(iter: VectorIterator<T>): VectorIterator<T>;
    pushBack(element: T): number;
    popBack(): T | undefined;
    setElementByPos(pos: number, element: T): void;
    insert(pos: number, element: T, num?: number): number;
    find(element: T): VectorIterator<T>;
    reverse(): void;
    unique(): number;
    sort(cmp?: (x: T, y: T) => number): void;
    forEach(callback: (element: T, index: number, vector: Vector<T>) => void): void;
    [Symbol.iterator](): Generator<T, void, undefined>;
}
export default Vector;