import type { GLTFAsset, GLTFRenderResources } from "@aura3d/assets"; import type { CameraLike, CollectedLight, EnvironmentLightingOptions, PerspectiveCameraFrame, RenderDeviceDiagnostics, RenderItem, Renderer, RendererOptions, RendererPostProcessOptions, RendererShadowOptions, RenderSource } from "@aura3d/rendering"; export type ProductAssetId = "camera-kit" | "speaker" | "watch" | (string & {}); export type ProductLightingPreset = "catalog-softbox" | "inspection-bay" | "hero-contrast"; export type ProductCameraPreset = "front-three-quarter" | "side-profile" | "top-detail" | "macro-detail"; export type ProductMaterialModeId = "asset" | "clay" | "matte" | "metal-check" | "contrast"; export interface ProductPartDescriptor { readonly name: string; readonly material: string; readonly shape?: string; } export interface ProductMaterialDescriptor { readonly name: string; readonly metallic: number; readonly roughness: number; readonly alphaMode: "OPAQUE" | "BLEND" | "MASK"; readonly textureSet?: string; } export interface ProductManifest { readonly schema: string; readonly id: ProductAssetId; readonly title: string; readonly category: string; readonly gltf: string; readonly parts: readonly ProductPartDescriptor[]; readonly materials: readonly ProductMaterialDescriptor[]; readonly rejectedInputs?: readonly string[]; readonly requirements?: Readonly>; } export interface ProductAsset { readonly id: ProductAssetId; readonly title: string; readonly category: string; readonly url: string; readonly manifest: ProductManifest; readonly gltf: GLTFAsset; readonly resources: GLTFRenderResources; readonly parts: readonly ProductPartDescriptor[]; readonly materials: readonly ProductMaterialDescriptor[]; } export interface ProductAssetLoadOptions { readonly url: string; readonly manifestUrl?: string; readonly id?: ProductAssetId; readonly title?: string; readonly category?: string; } export interface ProductLightingConfig { readonly preset: ProductLightingPreset; readonly environmentLighting: EnvironmentLightingOptions; readonly postprocess: RendererPostProcessOptions; readonly shadow: RendererShadowOptions; readonly lights: readonly CollectedLight[]; } export interface ProductCameraFrame { readonly preset: ProductCameraPreset; readonly frame: PerspectiveCameraFrame; readonly camera: CameraLike; } export interface ProductCameraOptions { readonly preset?: ProductCameraPreset; readonly viewport?: { readonly width: number; readonly height: number; }; readonly paddingRatio?: number; } export interface ProductMaterialMode { readonly id: ProductMaterialModeId; readonly label: string; readonly description: string; } export interface ProductRenderSceneOptions { readonly lighting?: ProductLightingConfig; readonly camera?: ProductCameraFrame; readonly materialMode?: ProductMaterialMode; readonly floor?: boolean; } export interface ProductRenderScene { readonly asset: ProductAsset; readonly source: RenderSource; readonly camera: CameraLike; readonly cameraFrame: ProductCameraFrame; readonly lighting: ProductLightingConfig; readonly materialMode: ProductMaterialMode; readonly renderItems: readonly RenderItem[]; } export interface ProductDiagnostics { readonly assetId: ProductAssetId; readonly partCount: number; readonly materialCount: number; readonly textureCount: number; readonly meshCount: number; readonly warnings: readonly string[]; readonly renderDiagnostics?: RenderDeviceDiagnostics; } export interface ProductSceneManifest { readonly schema: "a3d-product-studio-scene"; readonly assetId: ProductAssetId; readonly title: string; readonly partCount: number; readonly materialCount: number; readonly materialMode: ProductMaterialModeId; readonly lightingPreset: ProductLightingPreset; readonly cameraPreset: ProductCameraPreset; readonly generatedAt: string; } export interface ProductExportResult { readonly mimeType: "image/png"; readonly dataUrl: string; readonly byteLength: number; readonly manifest: ProductSceneManifest; } export interface ProductStudioOptions extends RendererOptions { readonly canvas?: HTMLCanvasElement | OffscreenCanvas; readonly width?: number; readonly height?: number; } export interface ProductStudio { readonly renderer: Renderer; render(scene: ProductRenderScene): RenderDeviceDiagnostics; resize(width: number, height: number): void; setLighting(preset: ProductLightingPreset): ProductLightingConfig; setCamera(asset: ProductAsset, preset: ProductCameraPreset, viewport?: { readonly width: number; readonly height: number; }): ProductCameraFrame; setMaterialMode(mode: ProductMaterialModeId): ProductMaterialMode; exportPng(scene: ProductRenderScene): Promise; exportSceneManifest(scene: ProductRenderScene): ProductSceneManifest; dispose(): void; } //# sourceMappingURL=ProductTypes.d.ts.map