import type { AnimationClip, AnimationMixerSnapshot } from "@aura3d/animation";
import type { RenderDeviceDiagnostics, RenderItem, RenderSource, CameraLike } from "@aura3d/rendering";
import type { RenderableAsset, RenderableScene, CreateRenderableSceneOptions, LoadRenderableAssetOptions } from "@aura3d/assets";
import type { ProductAsset, ProductAssetLoadOptions, ProductRenderScene } from "@aura3d/product-studio";
export type A3DWorkflowKind = "asset-viewer" | "product-configurator" | "material-studio" | "scene-showcase" | "interactive-scene" | "animation-lab" | "comparison";
export interface A3DWorkflowDiagnostics {
    readonly workflow: A3DWorkflowKind;
    readonly warnings: readonly string[];
    readonly featureChecklist: readonly string[];
    readonly asset?: {
        readonly kind: string;
        readonly meshCount: number;
        readonly materialCount: number;
        readonly textureCount: number;
    };
    readonly renderDiagnostics?: RenderDeviceDiagnostics;
}
export interface A3DWorkflowResult {
    readonly kind: A3DWorkflowKind;
    readonly source: RenderSource;
    readonly camera?: CameraLike;
    readonly renderItems?: readonly RenderItem[];
    readonly diagnostics: A3DWorkflowDiagnostics;
    dispose(): void;
}
export interface AssetViewerWorkflowOptions extends CreateRenderableSceneOptions, LoadRenderableAssetOptions {
    readonly url: string;
}
export interface AssetViewerWorkflowResult extends A3DWorkflowResult {
    readonly kind: "asset-viewer";
    readonly asset: RenderableAsset;
    readonly scene: RenderableScene;
}
export interface ProductConfiguratorWorkflowOptions {
    readonly asset: ProductAssetLoadOptions;
    readonly materialMode?: "asset" | "clay" | "matte" | "metal-check" | "contrast";
    readonly lighting?: "catalog-softbox" | "inspection-bay" | "hero-contrast";
    readonly camera?: "front-three-quarter" | "side-profile" | "top-detail" | "macro-detail";
    readonly viewport?: {
        readonly width: number;
        readonly height: number;
    };
}
export interface ProductConfiguratorWorkflowResult extends A3DWorkflowResult {
    readonly kind: "product-configurator";
    readonly asset: ProductAsset;
    readonly scene: ProductRenderScene;
}
export interface MaterialStudioWorkflowOptions {
    readonly mode?: "comparison" | "metals" | "transparent";
}
export interface MaterialStudioWorkflowResult extends A3DWorkflowResult {
    readonly kind: "material-studio";
}
export interface SceneShowcaseWorkflowOptions {
    readonly preset?: "studio" | "gallery" | "dramatic";
}
export interface SceneShowcaseWorkflowResult extends A3DWorkflowResult {
    readonly kind: "scene-showcase";
}
export interface InteractiveSceneWorkflowOptions {
    readonly preset?: "orbiting-products" | "input-ready";
}
export interface InteractiveSceneWorkflowResult extends A3DWorkflowResult {
    readonly kind: "interactive-scene";
    update(timeSeconds: number): RenderSource;
}
export interface AnimationLabWorkflowOptions {
    readonly clip?: "idle" | "walk" | "run";
    readonly speed?: number;
}
export interface AnimationLabWorkflowResult extends A3DWorkflowResult {
    readonly kind: "animation-lab";
    readonly clips: readonly AnimationClip[];
    readonly mixer: AnimationMixerSnapshot;
    update(timeSeconds: number): RenderSource;
}
export interface ComparisonWorkflowOptions {
    readonly focus?: "setup" | "rendering" | "migration";
}
export interface ComparisonWorkflowResult extends A3DWorkflowResult {
    readonly kind: "comparison";
    readonly comparison: {
        readonly focus: "setup" | "rendering" | "migration";
        readonly a3dSteps: readonly string[];
        readonly threeJsSteps: readonly string[];
        readonly migrationNotes: readonly string[];
    };
}
//# sourceMappingURL=WorkflowTypes.d.ts.map