@plasius/gpu-model-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,506 @@
1
+ /** The only document version accepted by the v1 runtime validator. */
2
+ declare const GPU_MODEL_DOCUMENT_SCHEMA_VERSION: "plasius.gpu-model-document/1";
3
+ /** Canonical basis shared by conversion, processing, and rendering packages. */
4
+ declare const CANONICAL_GPU_MODEL_COORDINATE_SYSTEM: Readonly<{
5
+ readonly unit: "metre";
6
+ readonly upAxis: "y";
7
+ readonly forwardAxis: "-z";
8
+ readonly handedness: "right";
9
+ readonly winding: "counter-clockwise";
10
+ readonly origin: "floor-centred";
11
+ }>;
12
+ /** Fixed defensive ceilings for one canonical v1 document. */
13
+ declare const GPU_MODEL_DOCUMENT_LIMITS: Readonly<{
14
+ readonly roots: 4096;
15
+ readonly nodes: 65536;
16
+ readonly resources: 16384;
17
+ readonly accessors: 262144;
18
+ readonly accessorElements: 16000000;
19
+ readonly meshes: 65536;
20
+ readonly primitives: 262144;
21
+ readonly materials: 65536;
22
+ readonly textures: 65536;
23
+ readonly skeletons: 4096;
24
+ readonly joints: 65536;
25
+ readonly skins: 4096;
26
+ readonly blendShapes: 65536;
27
+ readonly blendShapeDeltas: 262144;
28
+ readonly blendShapeAccessorReferences: 786432;
29
+ readonly animations: 4096;
30
+ readonly analyticGeometry: 4096;
31
+ readonly diagnostics: 4096;
32
+ readonly sceneEdges: 65535;
33
+ readonly primitiveAttributes: 262144;
34
+ readonly skinJoints: 65536;
35
+ readonly weightVertices: 1000000;
36
+ readonly weightInfluences: 8000000;
37
+ readonly animationSamplers: 65536;
38
+ readonly animationChannels: 262144;
39
+ readonly animationValues: 8000000;
40
+ readonly geometryIndexElements: 16000000;
41
+ readonly geometryWorldAccessorInstances: 262144;
42
+ readonly geometryWorldVertices: 16000000;
43
+ readonly identifierLength: 128;
44
+ readonly nameLength: 512;
45
+ readonly diagnosticMessageLength: 2048;
46
+ readonly metadataDepth: 8;
47
+ readonly metadataValues: 4096;
48
+ readonly metadataObjectKeys: 128;
49
+ readonly metadataArrayLength: 512;
50
+ readonly metadataKeyLength: 128;
51
+ readonly metadataStringLength: 2048;
52
+ }>;
53
+ interface GpuModelResourceVerificationLimits {
54
+ readonly maxResourceBytes: number;
55
+ readonly maxAggregateBytes: number;
56
+ readonly maxImageBytes: number;
57
+ readonly maxAggregateImageBytes: number;
58
+ readonly maxImageDimension: number;
59
+ readonly maxImagePixels: number;
60
+ readonly chunkBytes: number;
61
+ readonly timeoutMs: number;
62
+ }
63
+ /** Default verification budgets. Callers may tighten, but never raise, them. */
64
+ declare const GPU_MODEL_RESOURCE_VERIFICATION_LIMITS: Readonly<GpuModelResourceVerificationLimits>;
65
+ /** Stable machine-readable validation failure categories. */
66
+ type GpuModelDocumentErrorCode = "invalid-type" | "invalid-value" | "unknown-key" | "limit-exceeded" | "feature-disabled" | "unsupported-feature" | "duplicate-id" | "missing-reference" | "invalid-reference" | "graph-cycle" | "payload-length-mismatch" | "resource-unverified" | "resource-verification-failed" | "resource-budget-exceeded";
67
+ /** Bounded validation error safe to return across worker boundaries. */
68
+ declare class GpuModelDocumentError extends TypeError {
69
+ readonly code: GpuModelDocumentErrorCode;
70
+ readonly path: string;
71
+ constructor(code: GpuModelDocumentErrorCode, path: string, detail: string);
72
+ }
73
+ /** JSON-compatible value accepted by bounded canonical metadata fields. */
74
+ type GpuModelMetadataValue = null | boolean | number | string | readonly GpuModelMetadataValue[] | {
75
+ readonly [key: string]: GpuModelMetadataValue;
76
+ };
77
+ /** Immutable, safe-keyed source/extension metadata. */
78
+ type GpuModelMetadata = Readonly<Record<string, GpuModelMetadataValue>>;
79
+ type GpuModelSourceMetadata = GpuModelMetadata;
80
+ type GpuModelVec2 = readonly [number, number];
81
+ type GpuModelVec3 = readonly [number, number, number];
82
+ type GpuModelVec4 = readonly [number, number, number, number];
83
+ /** Column-major 4 x 4 affine matrix. */
84
+ type GpuModelMatrix4 = readonly [
85
+ number,
86
+ number,
87
+ number,
88
+ number,
89
+ number,
90
+ number,
91
+ number,
92
+ number,
93
+ number,
94
+ number,
95
+ number,
96
+ number,
97
+ number,
98
+ number,
99
+ number,
100
+ number
101
+ ];
102
+ interface GpuModelTransformTrs {
103
+ readonly translation: GpuModelVec3;
104
+ readonly rotation: GpuModelVec4;
105
+ readonly scale: GpuModelVec3;
106
+ }
107
+ interface GpuModelBounds {
108
+ readonly min: GpuModelVec3;
109
+ readonly max: GpuModelVec3;
110
+ }
111
+ interface GpuModelNode {
112
+ readonly id: string;
113
+ readonly name?: string;
114
+ readonly children: readonly string[];
115
+ readonly meshId?: string;
116
+ readonly skinId?: string;
117
+ readonly localMatrix: GpuModelMatrix4;
118
+ readonly metadata?: GpuModelMetadata;
119
+ }
120
+ type GpuModelResourceKind = "buffer" | "image";
121
+ /** Privately attestable immutable payload. Verification status is never shape-based. */
122
+ interface GpuModelResource {
123
+ readonly id: string;
124
+ readonly kind: GpuModelResourceKind;
125
+ readonly contentHash: string;
126
+ readonly byteLength: number;
127
+ readonly mimeType: string;
128
+ readonly payload: Blob;
129
+ }
130
+ interface GpuModelResourceVerificationContext {
131
+ readonly resourceId: string;
132
+ readonly kind: GpuModelResourceKind;
133
+ readonly declaredMimeType: string;
134
+ readonly byteLength: number;
135
+ readonly signal?: AbortSignal;
136
+ }
137
+ interface GpuModelResourceInspection {
138
+ readonly valid: boolean;
139
+ readonly detectedMimeType: string;
140
+ readonly width?: number;
141
+ readonly height?: number;
142
+ }
143
+ /** Trusted, injected worker boundary for streaming digest and payload inspection. */
144
+ interface GpuModelResourceVerificationPort {
145
+ digestSha256(chunks: AsyncIterable<Uint8Array>, context: GpuModelResourceVerificationContext): Promise<string>;
146
+ inspectResource(chunks: AsyncIterable<Uint8Array>, context: GpuModelResourceVerificationContext): Promise<GpuModelResourceInspection>;
147
+ }
148
+ interface GpuModelResourceVerificationOptions {
149
+ readonly signal?: AbortSignal;
150
+ readonly limits?: Partial<GpuModelResourceVerificationLimits>;
151
+ }
152
+ type GpuModelAccessorComponentType = "i8" | "u8" | "i16" | "u16" | "u32" | "f32";
153
+ type GpuModelAccessorElementType = "scalar" | "vec2" | "vec3" | "vec4" | "mat2" | "mat3" | "mat4";
154
+ interface GpuModelAccessor {
155
+ readonly id: string;
156
+ readonly resourceId: string;
157
+ readonly byteOffset: number;
158
+ readonly byteStride?: number;
159
+ readonly count: number;
160
+ readonly componentType: GpuModelAccessorComponentType;
161
+ readonly elementType: GpuModelAccessorElementType;
162
+ readonly normalized?: boolean;
163
+ readonly min?: readonly number[];
164
+ readonly max?: readonly number[];
165
+ }
166
+ interface GpuModelPrimitiveAttribute {
167
+ readonly semantic: string;
168
+ readonly accessorId: string;
169
+ }
170
+ type GpuModelPrimitiveTopology = "points" | "lines" | "line-strip" | "triangles" | "triangle-strip";
171
+ interface GpuModelPrimitive {
172
+ readonly id: string;
173
+ readonly topology: GpuModelPrimitiveTopology;
174
+ readonly attributes: readonly GpuModelPrimitiveAttribute[];
175
+ readonly indicesAccessorId?: string;
176
+ readonly materialId?: string;
177
+ readonly metadata?: GpuModelMetadata;
178
+ }
179
+ interface GpuModelMesh {
180
+ readonly id: string;
181
+ readonly name?: string;
182
+ readonly primitives: readonly GpuModelPrimitive[];
183
+ readonly metadata?: GpuModelMetadata;
184
+ }
185
+ type GpuModelTextureColorSpace = "srgb" | "linear" | "normal-map" | "data";
186
+ type GpuModelTextureUsage = "base-color" | "metallic-roughness" | "normal" | "occlusion" | "emissive" | "transmission" | "clearcoat" | "clearcoat-roughness" | "clearcoat-normal" | "sheen-color" | "sheen-roughness";
187
+ interface GpuModelTextureTransform {
188
+ readonly offset?: GpuModelVec2;
189
+ readonly rotationRadians?: number;
190
+ readonly scale?: GpuModelVec2;
191
+ }
192
+ interface GpuModelTextureBinding {
193
+ readonly textureId: string;
194
+ readonly samplerId?: string;
195
+ readonly texCoordSet?: number;
196
+ readonly transform?: GpuModelTextureTransform;
197
+ readonly colorSpace: GpuModelTextureColorSpace;
198
+ readonly intendedUsage: GpuModelTextureUsage;
199
+ }
200
+ type GpuModelAlphaMode = "opaque" | "mask" | "blend";
201
+ type GpuModelMaterialWorkflow = "metallic-roughness" | "specular-glossiness" | "unlit" | "custom";
202
+ interface GpuModelMaterialTextures {
203
+ readonly baseColor?: GpuModelTextureBinding;
204
+ readonly metallicRoughness?: GpuModelTextureBinding;
205
+ readonly normal?: GpuModelTextureBinding;
206
+ readonly occlusion?: GpuModelTextureBinding;
207
+ readonly emissive?: GpuModelTextureBinding;
208
+ readonly transmission?: GpuModelTextureBinding;
209
+ readonly clearcoat?: GpuModelTextureBinding;
210
+ readonly clearcoatRoughness?: GpuModelTextureBinding;
211
+ readonly clearcoatNormal?: GpuModelTextureBinding;
212
+ readonly sheenColor?: GpuModelTextureBinding;
213
+ readonly sheenRoughness?: GpuModelTextureBinding;
214
+ }
215
+ interface GpuModelMaterial {
216
+ readonly id: string;
217
+ readonly name?: string;
218
+ readonly workflow: GpuModelMaterialWorkflow;
219
+ readonly alphaMode: GpuModelAlphaMode;
220
+ readonly alphaCutoff?: number;
221
+ readonly doubleSided?: boolean;
222
+ readonly baseColorFactor: GpuModelVec4;
223
+ readonly metallicFactor?: number;
224
+ readonly roughnessFactor?: number;
225
+ readonly emissiveFactor?: GpuModelVec3;
226
+ readonly transmissionFactor?: number;
227
+ readonly clearcoatFactor?: number;
228
+ readonly clearcoatRoughnessFactor?: number;
229
+ readonly sheenColorFactor?: GpuModelVec3;
230
+ readonly sheenRoughnessFactor?: number;
231
+ readonly normalScale?: number;
232
+ readonly occlusionStrength?: number;
233
+ readonly textures: GpuModelMaterialTextures;
234
+ readonly extensions: GpuModelMetadata;
235
+ readonly sourceMetadata: GpuModelSourceMetadata;
236
+ }
237
+ type GpuModelTextureWrap = "repeat" | "mirrored-repeat" | "clamp-to-edge";
238
+ interface GpuModelTextureSampler {
239
+ readonly id: string;
240
+ readonly wrapS?: GpuModelTextureWrap;
241
+ readonly wrapT?: GpuModelTextureWrap;
242
+ readonly minFilter?: string;
243
+ readonly magFilter?: string;
244
+ readonly mipFilter?: "nearest" | "linear";
245
+ }
246
+ type GpuModelTextureEmbeddingPolicy = "inherit-source" | "prefer-embedded" | "prefer-external" | "forbid-embedding";
247
+ /** Texture fidelity node; embedded bytes are addressed through imageResourceId. */
248
+ interface GpuModelTexture {
249
+ readonly id: string;
250
+ readonly fileName?: string;
251
+ readonly relativePath?: string;
252
+ readonly mimeType?: string;
253
+ readonly contentHash: string;
254
+ readonly imageResourceId: string;
255
+ readonly byteLength?: number;
256
+ readonly intendedUsage: readonly GpuModelTextureUsage[];
257
+ readonly colorSpace: GpuModelTextureColorSpace;
258
+ readonly sampler?: GpuModelTextureSampler;
259
+ readonly exportEmbeddingPolicy: GpuModelTextureEmbeddingPolicy;
260
+ readonly sourceMetadata: GpuModelSourceMetadata;
261
+ }
262
+ interface GpuModelSkeleton {
263
+ readonly id: string;
264
+ readonly name?: string;
265
+ readonly jointIds: readonly string[];
266
+ readonly rootJointIds: readonly string[];
267
+ readonly sourceMetadata: GpuModelSourceMetadata;
268
+ }
269
+ interface GpuModelJoint {
270
+ readonly id: string;
271
+ readonly name?: string;
272
+ readonly nodeId: string;
273
+ readonly parentJointId?: string;
274
+ readonly restLocalTransform: GpuModelTransformTrs;
275
+ readonly inverseBindMatrix?: GpuModelMatrix4;
276
+ readonly sourceMetadata: GpuModelSourceMetadata;
277
+ }
278
+ interface GpuModelVertexWeightSet {
279
+ readonly primitiveId: string;
280
+ readonly influencesPerVertex: number;
281
+ readonly joints: readonly (readonly number[])[];
282
+ readonly weights: readonly (readonly number[])[];
283
+ }
284
+ interface GpuModelSkin {
285
+ readonly id: string;
286
+ readonly skeletonId: string;
287
+ readonly jointIds: readonly string[];
288
+ readonly inverseBindMatrices: readonly GpuModelMatrix4[];
289
+ readonly weightSets: readonly GpuModelVertexWeightSet[];
290
+ readonly sourceMetadata: GpuModelSourceMetadata;
291
+ }
292
+ interface GpuModelBlendShapeDelta {
293
+ readonly primitiveId: string;
294
+ readonly positionAccessorId?: string;
295
+ readonly normalAccessorId?: string;
296
+ readonly tangentAccessorId?: string;
297
+ }
298
+ interface GpuModelBlendShape {
299
+ readonly id: string;
300
+ readonly meshId: string;
301
+ readonly name?: string;
302
+ readonly defaultWeight?: number;
303
+ readonly deltas: readonly GpuModelBlendShapeDelta[];
304
+ readonly sourceMetadata: GpuModelSourceMetadata;
305
+ }
306
+ type GpuModelAnimationInterpolation = "step" | "linear" | "cubic-spline";
307
+ interface GpuModelAnimationSampler {
308
+ readonly id: string;
309
+ readonly inputAccessorId: string;
310
+ readonly outputAccessorId: string;
311
+ readonly inputTimesSeconds: readonly number[];
312
+ readonly outputValues: readonly number[];
313
+ readonly interpolation: GpuModelAnimationInterpolation;
314
+ readonly sourceMetadata: GpuModelSourceMetadata;
315
+ }
316
+ type GpuModelAnimationTargetType = "node-translation" | "node-rotation" | "node-scale" | "weights";
317
+ interface GpuModelAnimationChannel {
318
+ readonly id: string;
319
+ readonly samplerId: string;
320
+ readonly targetType: GpuModelAnimationTargetType;
321
+ readonly targetId: string;
322
+ readonly sourceMetadata: GpuModelSourceMetadata;
323
+ }
324
+ interface GpuModelAnimation {
325
+ readonly id: string;
326
+ readonly name?: string;
327
+ readonly durationSeconds: number;
328
+ readonly samplers: readonly GpuModelAnimationSampler[];
329
+ readonly channels: readonly GpuModelAnimationChannel[];
330
+ readonly sourceMetadata: GpuModelSourceMetadata;
331
+ }
332
+ type GpuModelSourceUnit = "metre" | "millimetre" | "centimetre" | "inch" | "foot" | "unitless";
333
+ interface GpuModelAnalyticGeometry {
334
+ readonly id: string;
335
+ readonly kind: "brep-placeholder";
336
+ readonly sourceResourceId: string;
337
+ readonly sourceUnit: GpuModelSourceUnit;
338
+ readonly tessellatedMeshId?: string;
339
+ readonly metadata?: GpuModelMetadata;
340
+ }
341
+ interface GpuModelProvenance {
342
+ readonly sourceFormat: string;
343
+ readonly sourceContentHash: string;
344
+ readonly converterId: string;
345
+ readonly converterVersion: string;
346
+ readonly provider?: string;
347
+ readonly sourceIdentifier?: string;
348
+ readonly metadata?: GpuModelMetadata;
349
+ }
350
+ type GpuModelDiagnosticSeverity = "info" | "warning" | "error";
351
+ interface GpuModelDiagnostic {
352
+ readonly severity: GpuModelDiagnosticSeverity;
353
+ readonly code: string;
354
+ readonly message: string;
355
+ readonly path?: string;
356
+ readonly metadata?: GpuModelMetadata;
357
+ }
358
+ /** Complete immutable renderer-neutral canonical model document v1. */
359
+ interface GpuModelDocument {
360
+ readonly schemaVersion: typeof GPU_MODEL_DOCUMENT_SCHEMA_VERSION;
361
+ readonly coordinateSystem: typeof CANONICAL_GPU_MODEL_COORDINATE_SYSTEM;
362
+ readonly roots: readonly string[];
363
+ readonly nodes: readonly GpuModelNode[];
364
+ readonly resources: readonly GpuModelResource[];
365
+ readonly accessors: readonly GpuModelAccessor[];
366
+ readonly meshes: readonly GpuModelMesh[];
367
+ readonly materials: readonly GpuModelMaterial[];
368
+ readonly textures: readonly GpuModelTexture[];
369
+ readonly skeletons: readonly GpuModelSkeleton[];
370
+ readonly joints: readonly GpuModelJoint[];
371
+ readonly skins: readonly GpuModelSkin[];
372
+ readonly blendShapes: readonly GpuModelBlendShape[];
373
+ readonly animations: readonly GpuModelAnimation[];
374
+ readonly analyticGeometry: readonly GpuModelAnalyticGeometry[];
375
+ readonly bounds: GpuModelBounds;
376
+ readonly provenance: GpuModelProvenance;
377
+ readonly diagnostics: readonly GpuModelDiagnostic[];
378
+ readonly metadata: GpuModelMetadata;
379
+ }
380
+ /** Verifies one bounded resource and returns a privately branded immutable value. */
381
+ declare function verifyGpuModelResource(value: unknown, port: GpuModelResourceVerificationPort, options?: GpuModelResourceVerificationOptions): Promise<GpuModelResource>;
382
+ /**
383
+ * Creates a document only from privately verified resource values. This
384
+ * synchronous factory never hashes or inspects caller-controlled bytes.
385
+ */
386
+ declare function createGpuModelDocument(value: unknown): GpuModelDocument;
387
+ /** Non-narrowing probe for the synchronous, privately verified factory. */
388
+ declare function canCreateGpuModelDocument(value: unknown): boolean;
389
+ /** Only privately branded factory output narrows to GpuModelDocument. */
390
+ declare function isGpuModelDocument(value: unknown): value is GpuModelDocument;
391
+ /**
392
+ * Preflights all resource budgets, verifies every raw resource through the
393
+ * injected streaming port, then performs the complete synchronous contract
394
+ * validation. Structured clones intentionally re-enter verification.
395
+ */
396
+ declare function createAndVerifyGpuModelDocument(value: unknown, port: GpuModelResourceVerificationPort, options?: GpuModelResourceVerificationOptions): Promise<GpuModelDocument>;
397
+ /** Version of the bounded compiler projection used by the ChatGPT PVOX demo. */
398
+ declare const GPU_MODEL_STATIC_DEMO_PROFILE_VERSION: "plasius.gpu-model-static-demo/1";
399
+ /** Remotely evaluated parent gate required before the demo projection may run. */
400
+ declare const GPU_MODEL_STATIC_DEMO_FEATURE_FLAG: "asset.pipeline.pvox-models.enabled";
401
+ /** Fixed-point PVOX coordinate ceiling; callers cannot override or raise it. */
402
+ declare const GPU_MODEL_STATIC_DEMO_MAX_ABSOLUTE_COORDINATE_METRES: 1048576;
403
+ /** Largest axis extent representable between the fixed coordinate endpoints. */
404
+ declare const GPU_MODEL_STATIC_DEMO_MAX_EXTENT_METRES: number;
405
+ /** Largest three-axis diagonal representable inside the fixed coordinate cube. */
406
+ declare const GPU_MODEL_STATIC_DEMO_MAX_DIAGONAL_METRES: number;
407
+ /** Non-raiseable ceilings for the bounded static PVOX demonstration profile. */
408
+ declare const GPU_MODEL_STATIC_DEMO_LIMITS: Readonly<{
409
+ readonly maxTriangles: 200000;
410
+ readonly maxNodes: 4096;
411
+ readonly maxPrimitives: 16384;
412
+ readonly maxMaterials: 4096;
413
+ readonly maxResourceBytes: number;
414
+ readonly maxAggregateResourceBytes: number;
415
+ }>;
416
+ /** Exact spatial promise required from source adapters before demo compilation. */
417
+ declare const GPU_MODEL_STATIC_DEMO_NORMALIZATION_CONTRACT: Readonly<{
418
+ readonly floorPlane: "y=0";
419
+ readonly horizontalCenter: "bounds-centre-xz-at-origin";
420
+ readonly unit: "metre";
421
+ readonly upAxis: "y";
422
+ readonly forwardAxis: "-z";
423
+ readonly handedness: "right";
424
+ readonly winding: "counter-clockwise";
425
+ readonly origin: "floor-centred";
426
+ }>;
427
+ interface GpuModelStaticDemoLimits {
428
+ readonly maxTriangles: number;
429
+ readonly maxNodes: number;
430
+ readonly maxPrimitives: number;
431
+ readonly maxMaterials: number;
432
+ readonly maxResourceBytes: number;
433
+ readonly maxAggregateResourceBytes: number;
434
+ }
435
+ /** Callers pass the remotely evaluated parent gate; local defaults fail closed. */
436
+ interface GpuModelStaticDemoCompilerOptions {
437
+ readonly pvoxModelsEnabled: boolean;
438
+ readonly limits?: Partial<GpuModelStaticDemoLimits>;
439
+ }
440
+ /** URI-free evidence retained by a compiler projection. */
441
+ interface GpuModelStaticDemoSourceEvidence {
442
+ readonly sourceFormat: string;
443
+ readonly sourceContentHash: string;
444
+ readonly converterId: string;
445
+ readonly converterVersion: string;
446
+ readonly provider?: string;
447
+ }
448
+ /** Fixed, texture-free surface properties for one material region. */
449
+ interface GpuModelStaticDemoMaterial {
450
+ readonly sourceMaterialId: string | null;
451
+ readonly sourceMaterialName?: string;
452
+ readonly sourceWorkflow: "metallic-roughness" | "unlit";
453
+ readonly baseColorFactor: GpuModelVec4;
454
+ readonly metallicFactor: number;
455
+ readonly roughnessFactor: number;
456
+ readonly emissiveFactor: GpuModelVec3;
457
+ readonly doubleSided: boolean;
458
+ }
459
+ type GpuModelTriangleVec3 = readonly [GpuModelVec3, GpuModelVec3, GpuModelVec3];
460
+ /** One byte-verified source triangle transformed into canonical world space. */
461
+ interface GpuModelStaticDemoWorldTriangle {
462
+ readonly sourceNodeId: string;
463
+ readonly sourceMeshId: string;
464
+ readonly sourcePrimitiveId: string;
465
+ readonly sourceTriangleIndex: number;
466
+ readonly materialIndex: number;
467
+ readonly positions: GpuModelTriangleVec3;
468
+ readonly normals: GpuModelTriangleVec3;
469
+ readonly bounds: GpuModelBounds;
470
+ }
471
+ /** Immutable, compiler-safe hand-off from model core to the PVOX compiler. */
472
+ interface GpuModelStaticDemoCompilerInput {
473
+ readonly profileVersion: typeof GPU_MODEL_STATIC_DEMO_PROFILE_VERSION;
474
+ readonly canonicalDocumentHash: string;
475
+ readonly coordinateSystem: typeof CANONICAL_GPU_MODEL_COORDINATE_SYSTEM;
476
+ readonly bounds: GpuModelBounds;
477
+ readonly sourceEvidence: GpuModelStaticDemoSourceEvidence;
478
+ readonly materials: readonly GpuModelStaticDemoMaterial[];
479
+ readonly worldTriangles: readonly GpuModelStaticDemoWorldTriangle[];
480
+ }
481
+ /**
482
+ * Encodes the complete verified document deterministically. Resource payloads
483
+ * are represented by their privately verified SHA-256 identities, not copied
484
+ * into the encoding a second time. Object keys are sorted; semantic array order
485
+ * is preserved.
486
+ */
487
+ declare function encodeGpuModelDocumentCanonical(document: GpuModelDocument): Uint8Array;
488
+ /** Computes the lowercase SHA-256 identity of the canonical whole document. */
489
+ declare function hashGpuModelDocumentCanonical(document: GpuModelDocument): Promise<string>;
490
+ /** Proves metre/Y-up/-Z/floor-centred normalization against verified bounds. */
491
+ declare function assertGpuModelStaticDemoNormalization(document: GpuModelDocument): void;
492
+ /**
493
+ * Produces the only compiler input accepted by the bounded ChatGPT-to-PVOX
494
+ * demonstration. This is a strict projection, not a tolerant repair step.
495
+ */
496
+ declare function createGpuModelStaticDemoCompilerInput(document: GpuModelDocument, options: GpuModelStaticDemoCompilerOptions): Promise<GpuModelStaticDemoCompilerInput>;
497
+
498
+ /** Package identity and rollout metadata for the initial repository baseline. */
499
+ declare const packageName: "@plasius/gpu-model-core";
500
+ declare const packageBootstrap: Readonly<{
501
+ readonly packageName: "@plasius/gpu-model-core";
502
+ readonly featureFlag: "gpu.model.conversion.enabled";
503
+ readonly status: "bootstrap";
504
+ }>;
505
+
506
+ export { CANONICAL_GPU_MODEL_COORDINATE_SYSTEM, GPU_MODEL_DOCUMENT_LIMITS, GPU_MODEL_DOCUMENT_SCHEMA_VERSION, GPU_MODEL_RESOURCE_VERIFICATION_LIMITS, GPU_MODEL_STATIC_DEMO_FEATURE_FLAG, GPU_MODEL_STATIC_DEMO_LIMITS, GPU_MODEL_STATIC_DEMO_MAX_ABSOLUTE_COORDINATE_METRES, GPU_MODEL_STATIC_DEMO_MAX_DIAGONAL_METRES, GPU_MODEL_STATIC_DEMO_MAX_EXTENT_METRES, GPU_MODEL_STATIC_DEMO_NORMALIZATION_CONTRACT, GPU_MODEL_STATIC_DEMO_PROFILE_VERSION, type GpuModelAccessor, type GpuModelAccessorComponentType, type GpuModelAccessorElementType, type GpuModelAlphaMode, type GpuModelAnalyticGeometry, type GpuModelAnimation, type GpuModelAnimationChannel, type GpuModelAnimationInterpolation, type GpuModelAnimationSampler, type GpuModelAnimationTargetType, type GpuModelBlendShape, type GpuModelBlendShapeDelta, type GpuModelBounds, type GpuModelDiagnostic, type GpuModelDiagnosticSeverity, type GpuModelDocument, GpuModelDocumentError, type GpuModelDocumentErrorCode, type GpuModelJoint, type GpuModelMaterial, type GpuModelMaterialTextures, type GpuModelMaterialWorkflow, type GpuModelMatrix4, type GpuModelMesh, type GpuModelMetadata, type GpuModelMetadataValue, type GpuModelNode, type GpuModelPrimitive, type GpuModelPrimitiveAttribute, type GpuModelPrimitiveTopology, type GpuModelProvenance, type GpuModelResource, type GpuModelResourceInspection, type GpuModelResourceKind, type GpuModelResourceVerificationContext, type GpuModelResourceVerificationLimits, type GpuModelResourceVerificationOptions, type GpuModelResourceVerificationPort, type GpuModelSkeleton, type GpuModelSkin, type GpuModelSourceMetadata, type GpuModelSourceUnit, type GpuModelStaticDemoCompilerInput, type GpuModelStaticDemoCompilerOptions, type GpuModelStaticDemoLimits, type GpuModelStaticDemoMaterial, type GpuModelStaticDemoSourceEvidence, type GpuModelStaticDemoWorldTriangle, type GpuModelTexture, type GpuModelTextureBinding, type GpuModelTextureColorSpace, type GpuModelTextureEmbeddingPolicy, type GpuModelTextureSampler, type GpuModelTextureTransform, type GpuModelTextureUsage, type GpuModelTextureWrap, type GpuModelTransformTrs, type GpuModelTriangleVec3, type GpuModelVec2, type GpuModelVec3, type GpuModelVec4, type GpuModelVertexWeightSet, assertGpuModelStaticDemoNormalization, canCreateGpuModelDocument, createAndVerifyGpuModelDocument, createGpuModelDocument, createGpuModelStaticDemoCompilerInput, encodeGpuModelDocumentCanonical, hashGpuModelDocumentCanonical, isGpuModelDocument, packageBootstrap, packageName, verifyGpuModelResource };