import { type TextureMipLevelDescriptor } from "./Texture";
export type EnvironmentColorSpace = "linear" | "srgb";
export type EnvironmentInputEncoding = "rgba8-linear" | "rgba8-srgb" | "rgbe";
export type EnvironmentTextureEncoding = "rgba8-linear" | "rgba8-srgb" | "rgbe";
export type EnvironmentToneMappingOperator = "linear" | "reinhard";
export interface Rgba8EnvironmentMapSource {
    readonly width: number;
    readonly height: number;
    readonly data: Uint8Array | Uint8ClampedArray;
}
export interface RgbeEnvironmentMapSource {
    readonly width: number;
    readonly height: number;
    readonly data: Uint8Array | Uint8ClampedArray;
}
export interface LinearHdrEnvironmentMapSource {
    readonly width: number;
    readonly height: number;
    readonly data: Float32Array | readonly number[];
}
export type EnvironmentMapResourceInput = (Rgba8EnvironmentMapSource & {
    readonly encoding?: "rgba8-linear" | "rgba8-srgb";
}) | (RgbeEnvironmentMapSource & {
    readonly encoding: "rgbe";
}) | (LinearHdrEnvironmentMapSource & {
    readonly encoding: "linear-hdr";
});
export interface EnvironmentMipGenerationOptions {
    readonly levels?: number;
    readonly blurRadius?: number;
}
export interface EnvironmentSpecularPrefilterGenerationOptions extends EnvironmentMipGenerationOptions {
    readonly sampleCount?: number;
}
export interface EnvironmentHdrEncodeOptions {
    readonly exposure?: number;
    readonly toneMapping?: EnvironmentToneMappingOperator;
    readonly outputColorSpace?: EnvironmentColorSpace;
}
export interface DiffuseIrradianceGenerationOptions {
    readonly width?: number;
    readonly height?: number;
    readonly blurRadius?: number;
    readonly sampleCount?: number;
}
export interface EnvironmentResourceSetOptions {
    readonly inputEncoding?: EnvironmentInputEncoding | "linear-hdr";
    readonly textureEncoding?: EnvironmentTextureEncoding;
    readonly outputColorSpace?: EnvironmentColorSpace;
    readonly exposure?: number;
    readonly toneMapping?: EnvironmentToneMappingOperator;
    readonly specularLevels?: number;
    readonly specularBlurRadius?: number;
    readonly irradianceWidth?: number;
    readonly irradianceHeight?: number;
    readonly irradianceBlurRadius?: number;
    readonly brdfLutSize?: number;
    readonly brdfLutSampleCount?: number;
}
export interface EnvironmentMapResourceSet {
    readonly base: Rgba8EnvironmentMapSource;
    readonly diffuseIrradiance: Rgba8EnvironmentMapSource;
    readonly specularMipLevels: readonly TextureMipLevelDescriptor[];
    readonly brdfLut: Rgba8EnvironmentMapSource;
    readonly diagnostics: {
        readonly inputEncoding: EnvironmentInputEncoding | "linear-hdr";
        readonly textureEncoding: EnvironmentTextureEncoding;
        readonly outputColorSpace: EnvironmentColorSpace;
        readonly hdrSource: boolean;
        readonly maxLinearValue: number;
        readonly specularMipCount: number;
        readonly diffuseIrradianceSize: readonly [number, number];
        readonly brdfLutSize: readonly [number, number];
    };
}
export interface BrdfLutDescriptor {
    readonly width?: number;
    readonly height?: number;
    readonly sampleCount?: number;
}
export declare function srgbChannelToLinear(value: number): number;
export declare function linearChannelToSrgb(value: number): number;
export declare function decodeRgbeEnvironmentMap(source: RgbeEnvironmentMapSource): LinearHdrEnvironmentMapSource;
export declare function decodeRgba8EnvironmentToLinear(source: Rgba8EnvironmentMapSource, inputColorSpace?: EnvironmentColorSpace): LinearHdrEnvironmentMapSource;
export declare function encodeLinearHdrEnvironmentToRgba8(source: LinearHdrEnvironmentMapSource, options?: EnvironmentHdrEncodeOptions): Rgba8EnvironmentMapSource;
export declare function encodeLinearHdrEnvironmentToRgbe(source: LinearHdrEnvironmentMapSource): RgbeEnvironmentMapSource;
export declare function encodeLinearHdrEnvironmentToRgba16f(source: LinearHdrEnvironmentMapSource): TextureMipLevelDescriptor;
export declare function generateRgba8EnvironmentMipLevels(source: Rgba8EnvironmentMapSource, options?: EnvironmentMipGenerationOptions): readonly TextureMipLevelDescriptor[];
export declare function generateSpecularPrefilterMipLevels(source: Rgba8EnvironmentMapSource, options?: EnvironmentMipGenerationOptions): readonly TextureMipLevelDescriptor[];
export declare function generateRgbeEnvironmentMipLevels(source: LinearHdrEnvironmentMapSource, options?: EnvironmentMipGenerationOptions): readonly TextureMipLevelDescriptor[];
export declare function generateRgba16fEnvironmentMipLevels(source: LinearHdrEnvironmentMapSource, options?: EnvironmentMipGenerationOptions): readonly TextureMipLevelDescriptor[];
export declare function generateRgba16fSpecularPrefilterMipLevels(source: LinearHdrEnvironmentMapSource, options?: EnvironmentSpecularPrefilterGenerationOptions): readonly TextureMipLevelDescriptor[];
export declare function generateRgba16fDiffuseIrradianceMipLevel(source: LinearHdrEnvironmentMapSource, options?: DiffuseIrradianceGenerationOptions): TextureMipLevelDescriptor;
export declare function generateDiffuseIrradianceRgba8(source: Rgba8EnvironmentMapSource, options?: DiffuseIrradianceGenerationOptions): Rgba8EnvironmentMapSource;
export declare function generateDiffuseIrradianceRgbe(source: LinearHdrEnvironmentMapSource, options?: DiffuseIrradianceGenerationOptions): RgbeEnvironmentMapSource;
export declare function createEnvironmentMapResourceSet(input: EnvironmentMapResourceInput, options?: EnvironmentResourceSetOptions): EnvironmentMapResourceSet;
export declare function generateApproximateBrdfLutPixels(descriptor?: BrdfLutDescriptor): Rgba8EnvironmentMapSource;
//# sourceMappingURL=EnvironmentMapResources.d.ts.map