import { type EnvironmentMapResourceSet } from "./EnvironmentMapResources";
import { type PostProcessColorSpace, type ToneMappingOperator } from "./PostProcessPass";
import type { EnvironmentLightingOptions } from "./ForwardPass";
export type ExternalParityRenderPresetFeature = "color-management" | "tone-mapping" | "exposure" | "pbr" | "bounded-pbr" | "environment-reflections" | "directional-shadows" | "contact-shadows" | "postprocess-bloom" | "postprocess-fxaa" | "depth-textures" | "lod" | "gpu-timing" | "hdr";
export interface ExternalParityRenderPresetFeatureStatus {
    readonly feature: ExternalParityRenderPresetFeature;
    readonly state: "active" | "blocked" | "unsupported";
    readonly evidence?: string;
    readonly reason?: string;
}
export interface ExternalParityRenderPresetEvidence {
    readonly presetId: "aura3d-external-parity-visual-quality-preset";
    readonly presetVersion: 1;
    readonly exampleId: string;
    readonly screenshotPath: string;
    readonly colorManagement: {
        readonly inputColorSpace: PostProcessColorSpace;
        readonly outputColorSpace: PostProcessColorSpace;
        readonly toneMapper: ToneMappingOperator | "bounded-direct";
        readonly exposure: number;
        readonly whitePoint: number;
    };
    readonly activeFeatures: readonly ExternalParityRenderPresetFeature[];
    readonly blockedFeatures: readonly ExternalParityRenderPresetFeatureStatus[];
    readonly features: readonly ExternalParityRenderPresetFeatureStatus[];
}
export type ExternalParityEnvironmentPreset = "studio" | "softbox" | "inspection" | "daylight" | "exhibit" | "evening" | "gameplay";
export interface ExternalParityEnvironmentLightingBundle {
    readonly presetId: "aura3d-external-parity-visual-quality-preset";
    readonly manifestPath: "fixtures/environment-corpus/manifest.json";
    readonly preset: ExternalParityEnvironmentPreset;
    readonly lighting: EnvironmentLightingOptions;
    readonly resources: EnvironmentMapResourceSet["diagnostics"] & {
        readonly environmentTextureLabel: string;
        readonly brdfLutTextureLabel: string;
        readonly sourceWidth: number;
        readonly sourceHeight: number;
        readonly resourceSet: "generated-local-linear-hdr-environment";
        readonly validation: {
            readonly environmentTexture: boolean;
            readonly brdfLutTexture: boolean;
            readonly specularMipLevels: boolean;
            readonly diffuseIrradiance: boolean;
        };
    };
}
export interface ExternalParityLdrPostprocessSummary {
    readonly source: "webgl2-backbuffer-readback";
    readonly path: "ExternalParityRenderPreset.toneMapPixels.bloomPixels.fxaaPixels";
    readonly width: number;
    readonly height: number;
    readonly inputNonDarkPixels: number;
    readonly outputNonDarkPixels: number;
    readonly inputColorBuckets: number;
    readonly outputColorBuckets: number;
    readonly toneMapper: ToneMappingOperator;
    readonly exposure: number;
    readonly whitePoint: number;
    readonly inputColorSpace: PostProcessColorSpace;
    readonly outputColorSpace: PostProcessColorSpace;
    readonly colorCalibrationMonotonic: boolean;
    readonly bloomBrightPixelCount: number;
    readonly bloomBrightEnergy: number;
    readonly bloomMaxNeighborBoost: number;
    readonly fxaaEdgePixels: number;
    readonly changedPixels: number;
}
export interface ExternalParityDirectionalShadowEvidence {
    readonly mode: "bounded-directional-shadow-map" | "renderer-owned-directional-shadow-map";
    readonly presetId: "aura3d-external-parity-visual-quality-preset";
    readonly exampleId: string;
    readonly cascadeCount: number;
    readonly mapSize: number;
    readonly bias: number;
    readonly pcfSamples: number;
    readonly lightDirection: readonly [number, number, number];
    readonly casterCount: number;
    readonly receiverCount: number;
    readonly stableTexelSnapping: true;
    readonly visibleReceiverDarkening: boolean;
    readonly productionShadowSamplingClaimed: boolean;
    readonly knownLimit: "directional-shadow-map-fit-and-visible-receiver-evidence-without-production-forward-shadow-sampling" | "renderer-owned-forward-shadow-map-sampling-evidence";
}
export interface ExternalParityReadbackDevice {
    readPixels(x: number, y: number, width: number, height: number): Uint8Array;
}
export interface ExternalParityRenderPresetEvidenceOptions {
    readonly exampleId: string;
    readonly screenshotPath: string;
    readonly toneMapper?: ExternalParityRenderPresetEvidence["colorManagement"]["toneMapper"];
    readonly inputColorSpace?: PostProcessColorSpace;
    readonly outputColorSpace?: PostProcessColorSpace;
    readonly exposure?: number;
    readonly whitePoint?: number;
    readonly features: readonly ExternalParityRenderPresetFeatureStatus[];
}
export declare function createExternalParityEnvironmentLighting(preset: ExternalParityEnvironmentPreset): ExternalParityEnvironmentLightingBundle;
export declare function createExternalParityGeneratedHdrEnvironmentMapSource(preset: ExternalParityEnvironmentPreset, width?: number, height?: number): {
    readonly width: number;
    readonly height: number;
    readonly data: Float32Array;
};
export declare function createExternalParityGeneratedEnvironmentMapSource(preset: ExternalParityEnvironmentPreset, width?: number, height?: number): {
    readonly width: number;
    readonly height: number;
    readonly data: Uint8Array;
};
export declare function createExternalParityFlagshipRenderPresetEvidence(options: {
    readonly exampleId: string;
    readonly screenshotPath: string;
    readonly exposure?: number;
    readonly whitePoint?: number;
    readonly productionPbrEvidence?: boolean;
    readonly directionalShadowEvidence?: boolean;
    readonly productionShadowSamplingEvidence?: boolean;
    readonly postprocessEvidence?: boolean;
    readonly depthTextureEvidence?: boolean;
    readonly hdrRenderTargetEvidence?: boolean;
    readonly lodEvidence?: boolean;
}): ExternalParityRenderPresetEvidence;
export declare function createExternalParityDirectionalShadowEvidence(options: {
    readonly exampleId: string;
    readonly casterCount: number;
    readonly receiverCount: number;
    readonly visibleReceiverDarkening: boolean;
    readonly cascadeCount?: number;
    readonly mapSize?: number;
    readonly bias?: number;
    readonly pcfSamples?: number;
    readonly lightDirection?: readonly [number, number, number];
    readonly productionShadowSamplingClaimed?: boolean;
}): ExternalParityDirectionalShadowEvidence;
export declare function sampleExternalParityLdrPostprocessReadback(options: {
    readonly device: ExternalParityReadbackDevice;
    readonly framebufferWidth: number;
    readonly framebufferHeight: number;
    readonly exposure?: number;
    readonly whitePoint?: number;
    readonly toneMapper?: ToneMappingOperator;
    readonly inputColorSpace?: PostProcessColorSpace;
    readonly outputColorSpace?: PostProcessColorSpace;
    readonly maxWidth?: number;
    readonly maxHeight?: number;
}): ExternalParityLdrPostprocessSummary;
export declare function createExternalParityRenderPresetEvidence(options: ExternalParityRenderPresetEvidenceOptions): ExternalParityRenderPresetEvidence;
export declare function externalParityActiveFeature(feature: ExternalParityRenderPresetFeature, evidence: string): ExternalParityRenderPresetFeatureStatus;
export declare function externalParityBlockedFeature(feature: ExternalParityRenderPresetFeature, reason: string): ExternalParityRenderPresetFeatureStatus;
export declare function externalParityUnsupportedFeature(feature: ExternalParityRenderPresetFeature, reason: string): ExternalParityRenderPresetFeatureStatus;
//# sourceMappingURL=ExternalParityRenderPreset.d.ts.map