import type { RenderDevice, RenderDeviceCapability } from "../RenderDevice";
export type CinematicCapabilityStatus = "implemented" | "conditional" | "unsupported";
export type CinematicCapabilityArea = "postprocess" | "camera" | "timeline";
export type CinematicPostProcessEffectId = "bloom" | "fxaa" | "depth-of-field" | "motion-blur" | "ambient-occlusion" | "outline" | "lut" | "film-grain" | "render-layers-aov";
export type CinematicDiagnosticId = CinematicPostProcessEffectId | "cinematic-camera-auto-frame" | "cinematic-camera-shot-timeline";
export interface CinematicCapabilityEntry {
    readonly id: CinematicDiagnosticId;
    readonly label: string;
    readonly area: CinematicCapabilityArea;
    readonly status: CinematicCapabilityStatus;
    readonly implementedPass?: string;
    readonly implementation: string;
    readonly rendererOwned: boolean;
    readonly publicPixelKernel: boolean;
    readonly requiredCapabilities: readonly RenderDeviceCapability[];
    readonly requiredInputs: readonly string[];
    readonly evidence: readonly string[];
    readonly limitations: readonly string[];
}
export interface CinematicDiagnosticsBackendInfo {
    readonly backend?: string;
    readonly capabilities?: readonly RenderDeviceCapability[];
    readonly limitations?: readonly string[];
}
export interface CinematicDiagnosticsReport {
    readonly backend: string;
    readonly capabilities: readonly RenderDeviceCapability[];
    readonly postprocess: readonly CinematicCapabilityEntry[];
    readonly camera: readonly CinematicCapabilityEntry[];
    readonly timeline: readonly CinematicCapabilityEntry[];
    readonly summary: {
        readonly implemented: readonly CinematicDiagnosticId[];
        readonly conditional: readonly CinematicDiagnosticId[];
        readonly unsupported: readonly CinematicDiagnosticId[];
    };
    readonly claimGuidance: readonly string[];
}
export type CinematicPostprocessClarityStatus = "clear" | "watch" | "risk";
export type CinematicPostprocessClaritySeverity = "info" | "warning" | "failure";
export type CinematicPostprocessClarityFindingId = "washed-out-tone" | "noisy-bloom" | "film-grain-noise" | "soft-detail" | "detail-margin" | "conditional-input-missing" | "unsupported-pass-request";
export interface CinematicPostprocessClarityFinding {
    readonly id: CinematicPostprocessClarityFindingId;
    readonly severity: CinematicPostprocessClaritySeverity;
    readonly evidence: string;
    readonly mitigation: string;
}
export interface CinematicPostprocessFrameMetrics {
    readonly averageLuma?: number;
    readonly meanLuma?: number;
    readonly localContrast?: number;
    readonly localContrastRatio?: number;
    readonly detailEdgeDensity?: number;
    readonly edgePixelRatio?: number;
    readonly uniqueColorBuckets?: number;
    readonly colorBuckets?: number;
    readonly foregroundCoverage?: number;
}
export interface CinematicPostprocessPipelineDescriptor {
    readonly passNames?: readonly string[];
    readonly targetFormat?: string;
    readonly toneMapping?: {
        readonly exposure?: number;
        readonly whitePoint?: number;
        readonly gamma?: number;
        readonly operator?: string;
    } | false;
    readonly colorGrade?: {
        readonly contrast?: number;
        readonly saturation?: number;
        readonly vibrance?: number;
        readonly vignette?: number;
        readonly sharpening?: number;
    } | boolean | false;
    readonly bloom?: {
        readonly threshold?: number;
        readonly intensity?: number;
        readonly radius?: number;
    } | boolean | false;
    readonly filmGrain?: {
        readonly intensity?: number;
    } | boolean | false;
    readonly fxaa?: {
        readonly edgeThreshold?: number;
        readonly subpixelBlend?: number;
    } | boolean | false;
    readonly depthOfField?: {
        readonly depth?: unknown;
    } | boolean | false;
    readonly motionBlur?: {
        readonly velocity?: unknown;
    } | boolean | false;
    readonly ssao?: {
        readonly depth?: unknown;
    } | boolean | false;
}
export interface CinematicPostprocessClarityInput {
    readonly pipeline?: CinematicPostprocessPipelineDescriptor;
    readonly frameMetrics?: CinematicPostprocessFrameMetrics;
}
export interface CinematicPostprocessClarityReport {
    readonly status: CinematicPostprocessClarityStatus;
    readonly score: number;
    readonly activePasses: readonly string[];
    readonly findings: readonly CinematicPostprocessClarityFinding[];
    readonly unsupportedRequested: readonly string[];
    readonly conditionalMissingInputs: readonly string[];
    readonly claimGuidance: readonly string[];
}
export declare const CINEMATIC_POSTPROCESS_EFFECT_IDS: readonly CinematicPostProcessEffectId[];
export declare function analyzeCinematicPostprocessClarity(input: CinematicPostprocessClarityInput): CinematicPostprocessClarityReport;
export declare function createCinematicDiagnosticsReport(input?: RenderDevice | CinematicDiagnosticsBackendInfo): CinematicDiagnosticsReport;
//# sourceMappingURL=CinematicDiagnostics.d.ts.map