import { generateRgba16fSpecularPrefilterMipLevels, type EnvironmentMapResourceSet, type LinearHdrEnvironmentMapSource } from "../EnvironmentMapResources";
import type { EnvironmentLightingOptions } from "../ForwardPass";
import { Texture } from "../Texture";
import { type CubemapPMREMResources, type CubemapPMREMShaderContract } from "./environment/PMREMGenerator";
export type ProductionToneMappingOperator = "aces" | "filmic" | "linear" | "reinhard";
export interface ProductionToneMappingPolicy {
    readonly operator: ProductionToneMappingOperator;
    readonly exposure: number;
    readonly whitePoint: number;
    readonly outputColorSpace: "srgb" | "linear";
}
export interface ProductionPbrHdrPipelineOptions {
    readonly id: string;
    readonly label: string;
    readonly intensity?: number;
    readonly backgroundIntensity?: number;
    readonly rotation?: number;
    readonly toneMapping?: Partial<ProductionToneMappingPolicy>;
    readonly specularLevels?: number;
    readonly cubemapFaceSize?: number;
    readonly cubemapMipCount?: number;
    readonly irradianceWidth?: number;
    readonly irradianceHeight?: number;
    readonly brdfLutSize?: number;
    readonly brdfLutSampleCount?: number;
    readonly specularSampleCount?: number;
    readonly cubemapSampleCount?: number;
}
export interface ProductionRadianceHDR {
    readonly width: number;
    readonly height: number;
    readonly rgbe: Uint8Array;
    readonly header: string;
    readonly format: "32-bit_rle_rgbe";
}
export interface ProductionPbrHdrPipeline {
    readonly id: string;
    readonly label: string;
    readonly radiance: ProductionRadianceHDR;
    readonly linear: LinearHdrEnvironmentMapSource;
    readonly resources: EnvironmentMapResourceSet;
    readonly environmentMipLevels: ReturnType<typeof generateRgba16fSpecularPrefilterMipLevels>;
    readonly cubemapPMREM: CubemapPMREMResources;
    readonly cubemapPMREMShaderContract: CubemapPMREMShaderContract;
    readonly toneMapping: ProductionToneMappingPolicy;
    readonly intensity: number;
    readonly backgroundIntensity: number;
    readonly rotation: number;
    readonly diagnostics: {
        readonly realRadianceHdr: boolean;
        readonly environmentTextureEncoding: "rgba8-linear" | "rgba8-srgb" | "rgbe" | "rgba16f-linear";
        readonly environmentTextureFormat: "rgba8" | "rgba16f";
        readonly hdrPixelCount: number;
        readonly maxLinearValue: number;
        readonly diffuseIrradiance: boolean;
        readonly diffuseIrradianceModel: "cosine-weighted-hemisphere";
        readonly specularPrefilter: boolean;
        readonly specularPrefilterModel: "ggx-importance-sampled";
        readonly cubemapPMREM: boolean;
        readonly cubemapPMREMModel: "equirectangular-to-cubemap-ggx-importance-sampled-prefilter";
        readonly cubemapPMREMShaderSampling: "webgl2-sampler-cube";
        readonly cubemapPMREMShaderContract: "webgl2-sampler-cube-split-sum";
        readonly cubemapFaceSize: number;
        readonly cubemapMipCount: number;
        readonly brdfLut: boolean;
        readonly specularMipCount: number;
        readonly textureBytes: number;
    };
}
export interface ProductionEnvironmentLightingResources {
    readonly lighting: EnvironmentLightingOptions;
    readonly environmentTexture: Texture;
    readonly environmentCubeTexture: Texture;
    readonly brdfLutTexture: Texture;
    dispose(): void;
}
export declare function parseProductionRadianceHDR(buffer: ArrayBuffer | Uint8Array): ProductionRadianceHDR;
export declare function createProductionPbrHdrPipelineFromRadiance(buffer: ArrayBuffer | Uint8Array, options: ProductionPbrHdrPipelineOptions): ProductionPbrHdrPipeline;
export declare function createProductionEnvironmentLightingResources(pipeline: ProductionPbrHdrPipeline): ProductionEnvironmentLightingResources;
export declare function createProductionToneMappingPolicy(overrides?: Partial<ProductionToneMappingPolicy>): ProductionToneMappingPolicy;
//# sourceMappingURL=PBRHDRPipeline.d.ts.map