import { AniraWasmInstance } from '../factory';
import { BaseWrapper } from './BaseWrapper';
/**
 * Base class shared by every typed vector wrapper.
 */
export declare abstract class VectorBase extends BaseWrapper {
    /** Number of elements in the vector */
    abstract size(): number;
}
/**
 * Wrapper for `std::vector<size_t>`
 */
export declare class VectorSizeT extends VectorBase {
    constructor(wasmInstance: AniraWasmInstance, values?: number[]);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    size(): number;
    push(value: number): void;
    get(index: number): number;
}
/**
 * Wrapper for `std::vector<int64_t>`
 */
export declare class VectorInt64T extends VectorBase {
    constructor(wasmInstance: AniraWasmInstance, values?: bigint[]);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    size(): number;
    push(value: bigint): void;
    get(index: number): bigint;
}
/**
 * Wrapper for `std::vector<float>`
 */
export declare class VectorFloat extends VectorBase {
    constructor(wasmInstance: AniraWasmInstance, values?: number[]);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    size(): number;
    push(value: number): void;
    get(index: number): number;
}
/**
 * Wrapper for `std::vector<unsigned int>`
 */
export declare class VectorUnsignedInt extends VectorBase {
    constructor(wasmInstance: AniraWasmInstance, values?: number[]);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    size(): number;
    push(value: number): void;
    get(index: number): number;
}
/**
 * Wrapper for `std::vector<std::vector<int64_t>>` (a.k.a. `TensorShapeList`)
 *
 * Accepts several convenience forms in the constructor:
 * - `number[][]`  — each inner array is auto-converted to bigint
 * - `bigint[][]`  — used as-is
 * - `(VectorInt64T | number)[]` — existing wrapper objects or raw pointers
 *
 * The C++ side copies each inner vector, so temporaries can be freed
 * independently.
 */
export declare class VectorVectorInt64 extends VectorBase {
    constructor(wasmInstance: AniraWasmInstance, items?: number[][] | bigint[][] | (VectorInt64T | number)[]);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    size(): number;
    push(item: VectorInt64T | number): void;
    /**
     * Get a non-owning pointer to the inner `VectorInt64T` at `index`.
     * The returned pointer is valid only while this vector is alive and not
     * resized.
     */
    get(index: number): number;
}
/**
 * Alias matching the C++ typedef `anira::TensorShapeList`
 * (`std::vector<std::vector<int64_t>>`).
 *
 * Identical to `VectorVectorInt64` — provided for readability
 * when working with tensor shapes.
 */
export declare class TensorShapeList extends VectorVectorInt64 {
}
/**
 * Wrapper for `std::vector<anira::ModelData>`
 *
 * `push` accepts a `BaseWrapper` (e.g. `ModelData`) or a raw pointer.
 */
export declare class VectorModelData extends VectorBase {
    constructor(wasmInstance: AniraWasmInstance, items?: (BaseWrapper | number)[]);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    size(): number;
    push(item: BaseWrapper | number): void;
}
/**
 * Wrapper for `std::vector<anira::TensorShape>`
 *
 * `push` accepts a `BaseWrapper` (e.g. `TensorShape`) or a raw pointer.
 */
export declare class VectorTensorShape extends VectorBase {
    constructor(wasmInstance: AniraWasmInstance, items?: (BaseWrapper | number)[]);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    size(): number;
    push(item: BaseWrapper | number): void;
}
/**
 * Wrapper for `std::vector<anira::RingBuffer>`
 *
 * `push` accepts a `BaseWrapper` (e.g. `RingBuffer`) or a raw pointer.
 */
export declare class VectorRingBuffer extends VectorBase {
    constructor(wasmInstance: AniraWasmInstance, items?: (BaseWrapper | number)[]);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    size(): number;
    push(item: BaseWrapper | number): void;
    /**
     * Get a non-owning pointer to the element at `index`.
     * The returned pointer is valid only while this vector is alive.
     */
    get(index: number): number;
}
/**
 * Wrapper for `std::vector<anira::BufferF>`
 *
 * `push` accepts a `BaseWrapper` (e.g. `BufferF`) or a raw pointer.
 * `get` returns the raw WASM pointer to the element at `index`
 * (a non-owning reference — do **not** free it).
 */
export declare class VectorBufferF extends VectorBase {
    constructor(wasmInstance: AniraWasmInstance, items?: (BaseWrapper | number)[]);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    size(): number;
    push(item: BaseWrapper | number): void;
    /**
     * Get a non-owning pointer to the element at `index`.
     * The returned pointer is valid only while this vector is alive.
     */
    get(index: number): number;
}
//# sourceMappingURL=Vectors.d.ts.map