import type { CameraLike, RenderSource } from "@aura3d/rendering";
import { type GLTFAsset, type GLTFDracoDecoder, type GLTFMeshoptDecoder } from "../GLTFLoader";
import { type GLTFImageDecoder, type GLTFRenderResourceOptions, type GLTFRenderResources, type GLTFRendererInputOptions } from "../GLTFRenderResources";
export interface ProductionGLTFRenderPipelineOptions {
    readonly url: string;
    readonly assetId: string;
    readonly assetName?: string;
    readonly imageDecoder?: GLTFImageDecoder;
    readonly dracoDecoder?: GLTFDracoDecoder;
    readonly meshoptDecoder?: GLTFMeshoptDecoder;
    readonly materialVariant?: GLTFRenderResourceOptions["materialVariant"];
    readonly sceneIndex?: GLTFRenderResourceOptions["sceneIndex"];
    readonly sceneName?: GLTFRenderResourceOptions["sceneName"];
    readonly materialRenderStateOverrides?: GLTFRenderResourceOptions["materialRenderStateOverrides"];
    readonly rendererInput?: GLTFRendererInputOptions;
    readonly width?: number;
    readonly height?: number;
}
export interface ProductionGLTFRenderMetadata {
    readonly assetId: string;
    readonly assetName: string;
    readonly assetUri: string;
    readonly meshCount: number;
    readonly primitiveCount: number;
    readonly materialCount: number;
    readonly textureCount: number;
    readonly imageCount: number;
    readonly animationCount: number;
    readonly skinCount: number;
    readonly morphTargetCount: number;
    readonly vertexCount: number;
    readonly indexCount: number;
    readonly textureSlots: readonly string[];
    readonly materialFeatures: readonly string[];
    readonly extensionsUsed: readonly string[];
    readonly extensionsRequired: readonly string[];
    readonly unsupportedExtensions: readonly string[];
    readonly pbrTextureCount: number;
    readonly normalMapCount: number;
    readonly ormTextureCount: number;
    readonly emissiveTextureCount: number;
    readonly materialExtensionCoverage: readonly string[];
    readonly warnings: readonly ProductionGLTFRenderWarning[];
    readonly hasPbr: boolean;
    readonly hasSkinning: boolean;
    readonly hasMorphTargets: boolean;
    readonly hasAnimation: boolean;
}
export interface ProductionGLTFRenderWarning {
    readonly code: string;
    readonly severity: "info" | "warning";
    readonly message: string;
    readonly nextAction: string;
}
export interface ProductionGLTFRenderPipeline {
    readonly asset: GLTFAsset;
    readonly resources: GLTFRenderResources;
    readonly source: RenderSource;
    readonly camera: CameraLike;
    readonly metadata: ProductionGLTFRenderMetadata;
    dispose(): void;
}
export declare function loadProductionGLTFRenderPipeline(options: ProductionGLTFRenderPipelineOptions): Promise<ProductionGLTFRenderPipeline>;
export declare function createProductionGLTFRenderMetadata(asset: GLTFAsset, assetId: string, assetName: string): ProductionGLTFRenderMetadata;
//# sourceMappingURL=ProductionGLTFRenderPipeline.d.ts.map