import { ITypedArrayTupleFactory } from "./i-typed-array-tuple-factory.js";
import { INormalizedDataView } from "./normalized-data-view/i-normalized-data-view.js";
import { ATypedArrayTuple } from "./a-typed-array-tuple.js";
import { TTypedArray } from "./t-typed-array.js";
import type { ENumberIdentifier } from "../../runtime/rtti-interop.js";
import type { EVectorIdentifier, ISharedVectorBindings } from "../../web-assembly/resizable-array/i-shared-vector-bindings.js";
import { IEmscriptenWrapper } from "../../web-assembly/emscripten/i-emscripten-wrapper.js";
import type { IManagedResourceNode } from "../../lifecycle/manged-resources.js";
import { type ITypedArrayTuple } from "../../web-assembly/shared-array/typed-array-tuple.js";
export declare abstract class ATypedTupleFactory<TArray extends ATypedArrayTuple<number, TTypedArray>, TCtorArgs extends number[]> implements ITypedArrayTupleFactory<TArray, TCtorArgs> {
    readonly elementCount: number;
    protected readonly bytesPerElement: number;
    protected dataView: INormalizedDataView;
    readonly numberId: ENumberIdentifier;
    readonly vectorId: EVectorIdentifier;
    readonly byteSize: number;
    protected constructor(elementCount: number, bytesPerElement: number, dataView: INormalizedDataView, numberId: ENumberIdentifier, vectorId: EVectorIdentifier);
    abstract createShared(wrapper: IEmscriptenWrapper<ISharedVectorBindings>, owner: IManagedResourceNode | null): ITypedArrayTuple<TArray>;
    abstract createOne(...args: TCtorArgs): TArray;
    abstract createOneEmpty(): TArray;
    copyFromBuffer(memoryDataView: DataView, pointer: number, writeTo?: TArray, littleEndian?: boolean): TArray;
    copyToBuffer(memoryDataView: DataView, writeFrom: Readonly<TArray>, pointer: number, littleEndian?: boolean): void;
    protected static createSharedVector<TArray extends ATypedArrayTuple<number, TTypedArray>>(wrapper: IEmscriptenWrapper<ISharedVectorBindings>, owner: IManagedResourceNode | null, ctor: new (buffer: ArrayBufferLike, offset: number, byteSize: number) => TArray, bufferFactory: ITypedArrayTupleFactory<ATypedArrayTuple<number, TTypedArray>, number[]>): ITypedArrayTuple<TArray>;
    protected static littleEndian: boolean;
}
//# sourceMappingURL=a-typed-tuple-factory.d.ts.map