import { type MeshBinContractError } from '@forgeax/engine-pack/mesh-bin-contract'; import { type MeshAsset, type Result, type VertexAttributeMap } from '@forgeax/engine-types'; import { deriveVertexLayoutProjection } from './vertex-attribute-layout.js'; type MeshPayloadIn = { readonly [Key in keyof MeshAsset]?: MeshAsset[Key] | undefined; } & { readonly vertexCount?: number; }; export type MeshBinEncodeError = MeshBinContractError | { readonly code: 'mesh-bin-payload-invalid'; readonly subject: 'mesh-bin'; readonly sourceKey: string; readonly expected: string; readonly actual: string; readonly recovery: string; }; interface PreparedMeshData { readonly projection: ReturnType; readonly attributes: VertexAttributeMap; readonly vertexCount: number; readonly vertexBytes: number; readonly indexCount: number; readonly indexWidth: 0 | 2 | 4; readonly indexBytes: number; readonly indices: MeshAsset['indices'] | undefined; readonly streams: readonly Float32Array[]; readonly morphBytes: number; readonly metadata: Record; } /** Canonical mesh validation shared by file encoding and runtime preparation. */ export declare function prepareMeshData(payload: MeshPayloadIn, sourceKey: string, refs?: readonly string[]): Result; /** Encode canonical v5 bytes; published v4 assets remain readable. */ export declare function packMeshBin(payload: MeshPayloadIn, sourceKey: string, refs?: readonly string[]): Result; export {}; //# sourceMappingURL=mesh-data.d.ts.map