import { type CameraFrameBounds } from "../../../rendering/src/CameraFraming";
import type { EnvironmentLightingOptions, RenderItem } from "../../../rendering/src/ForwardPass";
import type { CollectedLight } from "../../../rendering/src/LightCollector";
import type { CameraLike, RenderSource, RendererPostProcessOptions, RendererShadowOptions } from "../../../rendering/src/Renderer";
import { type ContactShadowPassDiagnostics } from "../../../rendering/src/production-runtime/passes/ContactShadowPass";
import { type ProductionEnvironmentLightingResources, type ProductionPbrHdrPipeline, type ProductionToneMappingOperator } from "../../../rendering/src/production-runtime/PBRHDRPipeline";
import { type ProductionGLTFRenderPipeline } from "../../../assets/src/asset-corpus/ProductionGLTFRenderPipeline";
import type { GLTFMaterialRenderStateOverride, GLTFRendererInputOptions } from "../../../assets/src/GLTFRenderResources";
export interface A3DViewport {
    readonly width: number;
    readonly height: number;
}
export type A3DVec3 = readonly [number, number, number];
export interface A3DStudioLightingOptions {
    readonly preset?: "product" | "inspection" | "softbox";
    readonly intensityScale?: number;
    readonly shadows?: boolean;
}
export interface A3DGroundedStageOptions {
    readonly labelPrefix?: string;
    readonly floorColor?: readonly [number, number, number, number];
    readonly backdropColor?: readonly [number, number, number, number];
    readonly floorRoughness?: number;
    readonly backdropRoughness?: number;
    readonly floorMetallic?: number;
    readonly minWidth?: number;
    readonly minHeight?: number;
    readonly minDepth?: number;
    readonly widthScale?: number;
    readonly heightScale?: number;
    readonly depthScale?: number;
    readonly depthPadding?: number;
    readonly floorOffset?: number;
    readonly floorThickness?: number;
    readonly backdropWidthScale?: number;
    readonly backdropHeightScale?: number;
    readonly backdropDepthOffsetScale?: number;
    readonly backdropThickness?: number;
    readonly contactShadows?: boolean;
    readonly background?: boolean;
    readonly shadowLightDirection?: A3DVec3;
}
export interface A3DGroundedStageSettings {
    readonly backgroundBlur?: number;
    readonly backgroundVisible?: boolean;
}
export interface A3DGroundedStageDiagnostics {
    readonly labelPrefix: string;
    readonly floorY: number;
    readonly floorItemCount: number;
    readonly backgroundItemCount: number;
    readonly contactShadow?: ContactShadowPassDiagnostics;
}
export interface A3DGroundedStage {
    readonly groundingItems: readonly RenderItem[];
    readonly backgroundItems: readonly RenderItem[];
    readonly floorY: number;
    readonly diagnostics: A3DGroundedStageDiagnostics;
    update(settings?: A3DGroundedStageSettings): void;
    renderItems(options?: {
        readonly shadows?: boolean;
        readonly backgroundVisible?: boolean;
    }): readonly RenderItem[];
    dispose(): void;
}
export interface A3DProductViewerCameraDiagnostics {
    readonly preset: "product-hero" | "asset-inspection" | "material-inspection";
    readonly yawRadians: number;
    readonly pitchRadians: number;
    readonly paddingRatio: number;
    readonly cameraPosition: readonly [number, number, number];
    readonly targetOffset: readonly [number, number, number];
    readonly zoom: number;
}
export interface A3DCameraFrameOptions {
    readonly bounds: CameraFrameBounds;
    readonly viewport: A3DViewport;
    readonly preset?: A3DProductViewerCameraDiagnostics["preset"];
    readonly target?: A3DVec3;
    readonly yawRadians?: number;
    readonly pitchRadians?: number;
    readonly zoom?: number;
    readonly paddingRatio?: number;
}
export interface A3DCameraFrame {
    readonly camera: CameraLike;
    readonly diagnostics: A3DProductViewerCameraDiagnostics;
}
export interface A3DGltfSceneOptions {
    readonly url: string;
    readonly assetId?: string;
    readonly assetName?: string;
    readonly materialVariant?: string;
    readonly sceneIndex?: number;
    readonly sceneName?: string;
    readonly materialRenderStateOverrides?: readonly GLTFMaterialRenderStateOverride[];
    readonly viewport?: A3DViewport;
    readonly rendererInput?: GLTFRendererInputOptions;
}
export interface A3DGltfRendererInputOptions {
    readonly viewport: A3DViewport;
    readonly environment?: A3DHdrEnvironment;
    readonly environmentLighting?: EnvironmentLightingOptions;
    readonly renderItems?: Iterable<RenderItem>;
    readonly collectedLights?: Iterable<CollectedLight>;
    readonly shadow?: RendererShadowOptions | boolean;
    readonly postprocess?: RendererPostProcessOptions | boolean;
}
export declare class A3DGltfScene {
    private readonly pipeline;
    constructor(pipeline: ProductionGLTFRenderPipeline);
    get asset(): import("@aura3d/assets").GLTFAsset;
    get resources(): import("@aura3d/assets").GLTFRenderResources;
    get metadata(): import("@aura3d/assets").ProductionGLTFRenderMetadata;
    createRendererInput(options: A3DGltfRendererInputOptions): {
        readonly source: RenderSource;
        readonly camera: CameraLike;
        readonly bounds: CameraFrameBounds;
    };
    dispose(): void;
}
export interface A3DHdrEnvironmentOptions {
    readonly url: string;
    readonly id?: string;
    readonly label?: string;
    readonly data?: ArrayBuffer | Uint8Array;
    readonly quality?: "interactive" | "production";
    readonly intensity?: number;
    readonly backgroundIntensity?: number;
    readonly rotation?: number;
    readonly toneMapping?: {
        readonly operator?: ProductionToneMappingOperator;
        readonly exposure?: number;
        readonly whitePoint?: number;
    };
}
export declare class A3DHdrEnvironment {
    readonly id: string;
    readonly label: string;
    readonly url: string;
    readonly pipeline: ProductionPbrHdrPipeline;
    readonly lighting: ProductionEnvironmentLightingResources;
    constructor(options: {
        readonly id: string;
        readonly label: string;
        readonly url: string;
        readonly pipeline: ProductionPbrHdrPipeline;
        readonly lighting: ProductionEnvironmentLightingResources;
    });
    get environmentLighting(): EnvironmentLightingOptions;
    dispose(): void;
}
export declare function loadGltfScene(input: string | A3DGltfSceneOptions): Promise<A3DGltfScene>;
export declare function loadHdrEnvironment(input: string | A3DHdrEnvironmentOptions): Promise<A3DHdrEnvironment>;
export declare function createStudioLighting(options?: A3DStudioLightingOptions): readonly CollectedLight[];
export declare function createGroundedStage(bounds: CameraFrameBounds, options?: A3DGroundedStageOptions): A3DGroundedStage;
export declare function createCameraFrame(options: A3DCameraFrameOptions): A3DCameraFrame;
//# sourceMappingURL=FlagshipFoundation.d.ts.map