import type { IObjectOf, IRelease, Maybe } from "@thi.ng/api";
import { type TypedArray } from "@thi.ng/api/typedarray";
import { MemPool } from "@thi.ng/malloc/pool";
import type { ReadonlyVec } from "@thi.ng/vectors";
import { type AttribPoolOpts, type AttribSpec } from "./api.js";
export declare class AttribPool implements IRelease {
    attribs: IObjectOf<TypedArray>;
    order: string[];
    specs: IObjectOf<AttribSpec>;
    pool: MemPool;
    addr: number;
    capacity: number;
    byteStride: number;
    maxAttribSize: number;
    resizable: boolean;
    constructor(opts?: AttribPoolOpts);
    bytes(): Uint8Array<ArrayBufferLike>;
    release(releasePool?: boolean): boolean;
    addAttribs(specs: IObjectOf<AttribSpec>, alloc?: boolean): void;
    attribValue<T extends number | TypedArray>(id: string, i: number): Maybe<T>;
    attribValues<T extends number | TypedArray>(id: string): IterableIterator<T>;
    attribArray(id: string): Uint8Array<ArrayBufferLike> | Uint8ClampedArray<ArrayBufferLike> | Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike> | Int8Array<ArrayBufferLike> | Int16Array<ArrayBufferLike> | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | Float64Array<ArrayBufferLike>;
    setAttribValue(id: string, index: number, v: number | ReadonlyVec): this;
    setAttribValues(id: string, vals: ReadonlyVec | ReadonlyVec[], index?: number): void;
    setAttribs(specs: IObjectOf<Partial<{
        data: ReadonlyVec | ReadonlyVec[];
        index: number;
    }>>): void;
    removeAttrib(id: string): false | undefined;
    ensure(newCapacity: number, fill?: boolean): void;
    protected computeStride(specs: IObjectOf<AttribSpec>, inclExisting?: boolean): number[];
    protected validateSpecs(specs: IObjectOf<AttribSpec>, stride?: number): void;
    protected updateOrder(): void;
    protected initDefaults(specs: IObjectOf<AttribSpec>, start?: number, end?: number): void;
    protected setDefaults(specs: IObjectOf<AttribSpec>, start?: number, end?: number): void;
    protected realign(newByteStride: number): void;
}
//# sourceMappingURL=attrib-pool.d.ts.map