import type { CompiledSceneArtifact, SourceConversionReceipt, Vec3 } from './types'; type AxisMapping = (source: Vec3) => Vec3; export type ObjSourcePart = { /** Distinguishes this part's materials from every other part's. */ name: string; obj: Buffer; texture?: { bytes: Buffer; mimeType: 'image/jpeg' | 'image/png'; }; }; export declare function compileObjGlb(input: { sourceName: string; obj: Buffer; localOrigin: Vec3; receipt: SourceConversionReceipt; texture?: { bytes: Buffer; mimeType: 'image/jpeg' | 'image/png'; }; axisMapping?: AxisMapping; }): Promise; /** * Compile one GLB from several source OBJs that share a coordinate space. * * A photogrammetry quadtree stores each refinement level as N sibling meshes, * each with its OWN texture atlas -- level 18 of a Helsinki tile is 16 pieces, * not one. Compiling a single piece throws away fifteen sixteenths of the tile, * so the only way to serve a deeper level as one resource is to carry every * sibling and its texture into the same document. Materials are namespaced per * part, because sibling OBJs reuse the same `usemtl` names against different * atlases and merging them would paint one part with another's texture. */ export declare function compileObjParts(input: { sourceName: string; parts: ObjSourcePart[]; localOrigin: Vec3; receipt: SourceConversionReceipt; axisMapping?: AxisMapping; }): Promise; export {};