type Factory<T, A extends unknown[]> = (...args: A) => T;
interface VectorOptions<T, A extends unknown[]> {
    initValues?: T[];
    factory?: Factory<T, A>;
}
declare class Vector<T, A extends unknown[] = [T]> extends Array<T> {
    #private;
    constructor({ initValues, factory }?: VectorOptions<T, A>);
    rbegin(): IterableIterator<T>;
    begin(): IterableIterator<T>;
    isEmpty(): boolean;
    clear(): void;
    insertAt(index: number, val: T): number;
    eraseAt(index: number): T | undefined;
    resize(size: number): void;
    pushFront(val: T): number;
    pushBack(val: T): number;
    popFront(): T | undefined;
    popBack(): T | undefined;
    emplaceAt(index: number, ...arg: A): number;
    emplaceFront(...arg: A): number;
    emplaceBack(...arg: A): number;
    assign(count: number, value: T): void;
    assign(values: T[], start?: number, end?: number): void;
    equals(other: Vector<T>, compareFn?: (a: T, b: T) => boolean): boolean;
    get front(): T | undefined;
    set front(val: T);
    get back(): T | undefined;
    set back(val: T);
}

export { Vector };
