import { type A3DCameraFrame, type A3DVec3 } from "./FlagshipFoundation";
import { type CinematicRendererEvidenceFlag, type CinematicRendererEvidenceValidation } from "../../../rendering/src/cinematic/CinematicEvidence";
import { type CurrentRoutesRuntimeMetrics, type CurrentRoutesScreenshot } from "../../../rendering/src/threejs-example-parity/index";
import { listCurrentRoutesFlagshipAssets, resolveCurrentRoutesFlagshipAsset, type CurrentRoutesFlagshipAsset, type CurrentRoutesFlagshipAssetId } from "../../../assets/src/threejs-example-parity/index";
import { listCurrentRoutesEnvironments, resolveCurrentRoutesEnvironment, type CurrentRoutesEnvironmentId, type CurrentRoutesEnvironmentPreset } from "../../../environments/src/threejs-example-parity/index";
export { listCurrentRoutesFlagshipAssets, resolveCurrentRoutesFlagshipAsset, listCurrentRoutesEnvironments, resolveCurrentRoutesEnvironment };
export type { CurrentRoutesEnvironmentId, CurrentRoutesEnvironmentPreset, CurrentRoutesFlagshipAsset, CurrentRoutesFlagshipAssetId, CurrentRoutesRuntimeMetrics, CurrentRoutesScreenshot };
export type CurrentRoutesViewerStatus = "loading" | "ready" | "running" | "error";
export interface CurrentRoutesFlagshipViewerOptions {
    readonly canvas: HTMLCanvasElement;
    readonly width: number;
    readonly height: number;
    readonly origin?: string;
    readonly assetId?: CurrentRoutesFlagshipAssetId;
    readonly environmentId?: CurrentRoutesEnvironmentId;
    readonly cinematicScene?: CurrentRoutesCinematicSceneId;
}
export type CurrentRoutesCinematicSceneId = "rainy-neon-alley";
export interface CurrentRoutesViewerControls {
    readonly yaw: number;
    readonly pitch: number;
    readonly zoom: number;
    readonly target: A3DVec3;
    readonly exposure: number;
    readonly environmentRotation: number;
    readonly backgroundVisible: boolean;
    readonly backgroundBlur: number;
    readonly shadows: boolean;
    readonly roughnessScale: number;
    readonly metallicScale: number;
    readonly clearcoatBoost: number;
}
export interface CurrentRoutesViewerSnapshot {
    readonly status: CurrentRoutesViewerStatus;
    readonly asset: {
        readonly id: CurrentRoutesFlagshipAssetId;
        readonly name: string;
        readonly meshCount: number;
        readonly primitiveCount: number;
        readonly materialCount: number;
        readonly textureCount: number;
        readonly warnings: readonly string[];
    };
    readonly environment: {
        readonly id: CurrentRoutesEnvironmentId;
        readonly label: string;
        readonly exposure: number;
        readonly rotation: number;
    };
    readonly controls: CurrentRoutesViewerControls;
    readonly camera: A3DCameraFrame["diagnostics"];
    readonly metrics: CurrentRoutesRuntimeMetrics;
    readonly loading: {
        readonly assetMs: number;
        readonly environmentMs: number;
        readonly rendererMs: number;
        readonly environmentStatus?: "loading" | "ready" | "error";
    };
    readonly cinematicScene?: CurrentRoutesCinematicSceneEvidence;
    readonly screenshotCount: number;
    readonly error?: string;
}
export interface CurrentRoutesCinematicSceneEvidence {
    readonly id: CurrentRoutesCinematicSceneId;
    readonly rendererOwned: true;
    readonly renderItemCount: number;
    readonly heroPropCount: number;
    readonly environmentGeometryCount: number;
    readonly vfxCount: number;
    readonly practicalLightCount: number;
    readonly flags: readonly CinematicRendererEvidenceFlag[];
    readonly validation: CinematicRendererEvidenceValidation;
    readonly diagnostics: readonly string[];
}
export declare class CurrentRoutesFlagshipViewer {
    private status;
    private viewport;
    private readonly origin;
    private scene;
    private environment;
    private environmentPreset;
    private stage;
    private renderer;
    private materialBaseline;
    private cinematicSceneId;
    private cinematicScene;
    private screenshotCount;
    private cameraFrame;
    private error;
    private environmentLoadSerial;
    private environmentLoadScheduled;
    private controls;
    private constructor();
    private loading;
    static create(options: CurrentRoutesFlagshipViewerOptions): Promise<CurrentRoutesFlagshipViewer>;
    setAsset(id: CurrentRoutesFlagshipAssetId): Promise<void>;
    setEnvironment(id: CurrentRoutesEnvironmentId): Promise<void>;
    orbit(deltaYaw: number, deltaPitch: number): CurrentRoutesViewerControls;
    pan(deltaX: number, deltaY: number): CurrentRoutesViewerControls;
    zoom(scale: number): CurrentRoutesViewerControls;
    resize(width: number, height: number): CurrentRoutesViewerSnapshot;
    updateControls(next: Partial<CurrentRoutesViewerControls>): CurrentRoutesViewerControls;
    renderFrame(): Promise<CurrentRoutesViewerSnapshot>;
    screenshot(): CurrentRoutesScreenshot;
    snapshot(): CurrentRoutesViewerSnapshot;
    dispose(): void;
    private startEnvironmentLoad;
    private scheduleEnvironmentLoad;
    private createCamera;
    private applyMaterialControls;
}
export declare function createCurrentRoutesFlagshipViewer(options: CurrentRoutesFlagshipViewerOptions): Promise<CurrentRoutesFlagshipViewer>;
//# sourceMappingURL=index.d.ts.map