import { Geometry, type Bounds3 } from "./Geometry";
import type { RenderItem, RenderMaterial } from "./ForwardPass";
import type { RendererPostProcessOptions, RenderSource } from "./Renderer";
export type ProductTurntableDirection = "cw" | "ccw";
export type ProductTurntableLightingPreset = "studio" | "soft" | "inspection" | "dramatic" | "neutral";
export type ProductTurntableCaptureFormat = "png" | "jpeg" | "webp";
export type ProductTurntableBatchTaskKind = "thumbnail" | "screenshot" | "360-spin" | "ar-export";
export interface ProductTurntableFixtureOptions {
    readonly elapsedSeconds?: number;
    readonly interactionCount?: number;
    readonly interactionAgeMs?: number;
    readonly canvasWidth?: number;
    readonly canvasHeight?: number;
    readonly lightingPreset?: ProductTurntableLightingPreset;
    readonly captureRequested?: boolean;
    readonly exportedBytes?: number;
}
export interface ProductTurntableHotspot {
    readonly id: string;
    readonly group: "material" | "controls" | "comfort";
    readonly label: string;
    readonly content: string;
    readonly position: readonly [number, number, number];
    readonly screen: {
        readonly x: number;
        readonly y: number;
        readonly visible: boolean;
        readonly occluded: false;
    };
    readonly visibilityThreshold: number;
}
export interface ProductTurntableLighting {
    readonly source: "origin-master-ecommerce-lighting-preset-manager-adapted";
    readonly presets: readonly ProductTurntableLightingPreset[];
    readonly activePreset: ProductTurntableLightingPreset;
    readonly activeLightCount: number;
    readonly ambientIntensity: number;
    readonly keyIntensity: number;
    readonly fillIntensity: number;
    readonly rimIntensity: number;
    readonly environmentIntensity: number;
    readonly shadowEnabled: boolean;
    readonly shadowSoftness: number;
    readonly transitionSupported: true;
}
export interface ProductTurntableCapturePlan {
    readonly source: "origin-master-ecommerce-capture-batch-export-adapted";
    readonly screenshotFormats: readonly ProductTurntableCaptureFormat[];
    readonly screenshotViews: readonly string[];
    readonly spinFrameCount: number;
    readonly spinDurationSeconds: number;
    readonly batchTasks: readonly ProductTurntableBatchTaskKind[];
    readonly completedBatchTasks: number;
    readonly captureRequested: boolean;
    readonly exportedBytes: number;
    readonly arExportFormats: readonly ["glb"];
    readonly blockedExportClaims: readonly string[];
}
export interface ProductTurntableFixture {
    readonly id: "external-product-turntable-fixture";
    readonly source: "origin-master-ecommerce-turntable-adapted";
    readonly sourceFiles: readonly string[];
    readonly autoRotate: true;
    readonly speedRadiansPerSecond: number;
    readonly direction: ProductTurntableDirection;
    readonly pauseOnInteraction: true;
    readonly resumeDelayMs: number;
    readonly smoothTransition: true;
    readonly transitionDurationSeconds: number;
    readonly currentSpeedRadiansPerSecond: number;
    readonly rotationRadians: number;
    readonly pausedByInteraction: boolean;
    readonly interactionCount: number;
    readonly hotspots: readonly ProductTurntableHotspot[];
    readonly visibleHotspotCount: number;
    readonly lighting: ProductTurntableLighting;
    readonly capture: ProductTurntableCapturePlan;
    readonly manifestHash: string;
    readonly claimBoundary: string;
}
export interface ProductTurntableRenderKitOptions extends ProductTurntableFixtureOptions {
    readonly includeStage?: boolean;
}
export interface ProductTurntableRenderKit {
    readonly fixture: ProductTurntableFixture;
    readonly source: RenderSource;
    readonly renderItems: readonly RenderItem[];
    readonly geometryLibrary: ReadonlyMap<string, Geometry>;
    readonly materialLibrary: ReadonlyMap<string, RenderMaterial>;
    readonly bounds: Bounds3;
    readonly postprocess: RendererPostProcessOptions;
    dispose(): void;
}
export declare function createProductTurntableFixture(options?: ProductTurntableFixtureOptions): ProductTurntableFixture;
export declare function createProductTurntableRenderKit(options?: ProductTurntableRenderKitOptions): ProductTurntableRenderKit;
//# sourceMappingURL=ProductTurntableFixtures.d.ts.map