import type { BloomOptions, ChromaticAberrationOptions, ColorGradeOptions, ContactShadowPostProcessOptions, DepthOfFieldOptions, FXAAOptions, FilmGrainOptions, MotionBlurOptions, OutlineOptions, SSAOOptions, SSROptions, TAAOptions, ToneMappingOptions } from "./PostProcessPass";
export type RendererPostprocessTargetFormat = "rgba8" | "rgba16f" | "rgba32f";
export interface RendererPostprocessPlanOptions {
    readonly toneMapping?: ToneMappingOptions | false;
    readonly colorGrade?: ColorGradeOptions | boolean;
    readonly bloom?: BloomOptions | boolean;
    readonly chromaticAberration?: ChromaticAberrationOptions | boolean;
    readonly filmGrain?: FilmGrainOptions | boolean;
    readonly depthOfField?: DepthOfFieldOptions | false;
    readonly motionBlur?: MotionBlurOptions | false;
    readonly contactShadow?: ContactShadowPostProcessOptions | false;
    readonly ssao?: SSAOOptions | false;
    readonly ssr?: SSROptions | false;
    readonly taa?: TAAOptions | false;
    readonly outline?: OutlineOptions | boolean;
    readonly fxaa?: FXAAOptions | boolean;
}
export type RendererPostProcessPassName = "tone-mapping" | "color-grade" | "bloom" | "chromatic-aberration" | "film-grain" | "depth-of-field" | "motion-blur" | "contact-shadow" | "ssao" | "ssr" | "taa" | "outline" | "fxaa";
export interface RendererPostProcessPassPlan {
    readonly name: RendererPostProcessPassName;
    readonly options: ToneMappingOptions | ColorGradeOptions | BloomOptions | ChromaticAberrationOptions | FilmGrainOptions | DepthOfFieldOptions | MotionBlurOptions | ContactShadowPostProcessOptions | SSAOOptions | SSROptions | TAAOptions | OutlineOptions | FXAAOptions;
}
export type RendererPostprocessExecutionMode = "none" | "renderer-owned-fused-ldr-native" | "renderer-owned-fused-ldr-readback" | "renderer-owned-pass-chain-readback";
export interface RendererPostprocessPlanContext {
    readonly sourceTargetFormat?: RendererPostprocessTargetFormat;
    readonly targetFormat?: RendererPostprocessTargetFormat;
    readonly rendererDepthAvailable?: boolean;
    readonly nativeLdrPostprocess?: boolean;
}
export interface RendererPostprocessPassDiagnostics {
    readonly name: RendererPostProcessPassName;
    readonly rendererOwned: true;
    readonly publicPixelKernel: boolean;
    readonly requiresDepth: boolean;
    readonly hasDepthInput: boolean;
    readonly usesRendererOwnedDepth: boolean;
    readonly requiresVelocity: boolean;
    readonly hasVelocityInput: boolean;
    readonly usesReadback: boolean;
}
export interface RendererPostprocessPlanDiagnostics {
    readonly source: "Renderer.postprocessPlan";
    readonly passCount: number;
    readonly passNames: readonly RendererPostProcessPassName[];
    readonly targetFormat: RendererPostprocessTargetFormat;
    readonly sourceTargetFormat: RendererPostprocessTargetFormat;
    readonly executionMode: RendererPostprocessExecutionMode;
    readonly canFuseLdr: boolean;
    readonly requiresDepthTexture: boolean;
    readonly missingInputs: readonly string[];
    readonly readbackPassNames: readonly RendererPostProcessPassName[];
    readonly rendererOwnedPassNames: readonly RendererPostProcessPassName[];
    readonly clarityWarnings: readonly string[];
    readonly passes: readonly RendererPostprocessPassDiagnostics[];
    readonly claimBoundary: string;
}
export declare function createRendererPostprocessPasses(postprocess: RendererPostprocessPlanOptions): readonly RendererPostProcessPassPlan[];
export declare function createRendererPostprocessPlanDiagnostics(postprocess: RendererPostprocessPlanOptions, context?: RendererPostprocessPlanContext): RendererPostprocessPlanDiagnostics;
//# sourceMappingURL=RendererPostprocessPlan.d.ts.map