import type { Camera } from "../../../Cameras/camera.js";
import { PostProcessRenderPipeline } from "../../../PostProcesses/RenderPipeline/postProcessRenderPipeline.js";
import type { Scene } from "../../../scene.js";
import "../../../PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js";
import "../../../Shaders/chromaticAberration.fragment.js";
import "../../../Shaders/lensHighlights.fragment.js";
import "../../../Shaders/depthOfField.fragment.js";
/**
 * BABYLON.JS Chromatic Aberration GLSL Shader
 * Author: Olivier Guyot
 * Separates very slightly R, G and B colors on the edges of the screen
 * Inspired by Francois Tarlier & Martins Upitis
 */
export declare class LensRenderingPipeline extends PostProcessRenderPipeline {
    /**
     * @ignore
     * The chromatic aberration PostProcess id in the pipeline
     */
    LensChromaticAberrationEffect: string;
    /**
     * @ignore
     * The highlights enhancing PostProcess id in the pipeline
     */
    HighlightsEnhancingEffect: string;
    /**
     * @ignore
     * The depth-of-field PostProcess id in the pipeline
     */
    LensDepthOfFieldEffect: string;
    private _scene;
    private _depthTexture;
    private _grainTexture;
    private _chromaticAberrationPostProcess;
    private _highlightsPostProcess;
    private _depthOfFieldPostProcess;
    private _edgeBlur;
    private _grainAmount;
    private _chromaticAberration;
    private _distortion;
    private _highlightsGain;
    private _highlightsThreshold;
    private _dofDistance;
    private _dofAperture;
    private _dofDarken;
    private _dofPentagon;
    private _blurNoise;
    /**
     * @constructor
     *
     * Effect parameters are as follow:
     * {
     *      chromatic_aberration: number;       // from 0 to x (1 for realism)
     *      edge_blur: number;                  // from 0 to x (1 for realism)
     *      distortion: number;                 // from 0 to x (1 for realism), note that this will effect the pointer position precision
     *      grain_amount: number;               // from 0 to 1
     *      grain_texture: BABYLON.Texture;     // texture to use for grain effect; if unset, use random B&W noise
     *      dof_focus_distance: number;         // depth-of-field: focus distance; unset to disable (disabled by default)
     *      dof_aperture: number;               // depth-of-field: focus blur bias (default: 1)
     *      dof_darken: number;                 // depth-of-field: darken that which is out of focus (from 0 to 1, disabled by default)
     *      dof_pentagon: boolean;              // depth-of-field: makes a pentagon-like "bokeh" effect
     *      dof_gain: number;                   // depth-of-field: highlights gain; unset to disable (disabled by default)
     *      dof_threshold: number;              // depth-of-field: highlights threshold (default: 1)
     *      blur_noise: boolean;                // add a little bit of noise to the blur (default: true)
     * }
     * Note: if an effect parameter is unset, effect is disabled
     *
     * @param name The rendering pipeline name
     * @param parameters - An object containing all parameters (see above)
     * @param scene The scene linked to this pipeline
     * @param ratio The size of the postprocesses (0.5 means that your postprocess will have a width = canvas.width 0.5 and a height = canvas.height 0.5)
     * @param cameras The array of cameras that the rendering pipeline will be attached to
     */
    constructor(name: string, parameters: any, scene: Scene, ratio?: number, cameras?: Camera[]);
    /**
     * Get the class name
     * @returns "LensRenderingPipeline"
     */
    getClassName(): string;
    /**
     * Gets associated scene
     */
    get scene(): Scene;
    /**
     * Gets or sets the edge blur
     */
    get edgeBlur(): number;
    set edgeBlur(value: number);
    /**
     * Gets or sets the grain amount
     */
    get grainAmount(): number;
    set grainAmount(value: number);
    /**
     * Gets or sets the chromatic aberration amount
     */
    get chromaticAberration(): number;
    set chromaticAberration(value: number);
    /**
     * Gets or sets the depth of field aperture
     */
    get dofAperture(): number;
    set dofAperture(value: number);
    /**
     * Gets or sets the edge distortion
     */
    get edgeDistortion(): number;
    set edgeDistortion(value: number);
    /**
     * Gets or sets the depth of field distortion
     */
    get dofDistortion(): number;
    set dofDistortion(value: number);
    /**
     * Gets or sets the darken out of focus amount
     */
    get darkenOutOfFocus(): number;
    set darkenOutOfFocus(value: number);
    /**
     * Gets or sets a boolean indicating if blur noise is enabled
     */
    get blurNoise(): boolean;
    set blurNoise(value: boolean);
    /**
     * Gets or sets a boolean indicating if pentagon bokeh is enabled
     */
    get pentagonBokeh(): boolean;
    set pentagonBokeh(value: boolean);
    /**
     * Gets or sets the highlight grain amount
     */
    get highlightsGain(): number;
    set highlightsGain(value: number);
    /**
     * Gets or sets the highlight threshold
     */
    get highlightsThreshold(): number;
    set highlightsThreshold(value: number);
    /**
     * Sets the amount of blur at the edges
     * @param amount blur amount
     */
    setEdgeBlur(amount: number): void;
    /**
     * Sets edge blur to 0
     */
    disableEdgeBlur(): void;
    /**
     * Sets the amount of grain
     * @param amount Amount of grain
     */
    setGrainAmount(amount: number): void;
    /**
     * Set grain amount to 0
     */
    disableGrain(): void;
    /**
     * Sets the chromatic aberration amount
     * @param amount amount of chromatic aberration
     */
    setChromaticAberration(amount: number): void;
    /**
     * Sets chromatic aberration amount to 0
     */
    disableChromaticAberration(): void;
    /**
     * Sets the EdgeDistortion amount
     * @param amount amount of EdgeDistortion
     */
    setEdgeDistortion(amount: number): void;
    /**
     * Sets edge distortion to 0
     */
    disableEdgeDistortion(): void;
    /**
     * Sets the FocusDistance amount
     * @param amount amount of FocusDistance
     */
    setFocusDistance(amount: number): void;
    /**
     * Disables depth of field
     */
    disableDepthOfField(): void;
    /**
     * Sets the Aperture amount
     * @param amount amount of Aperture
     */
    setAperture(amount: number): void;
    /**
     * Sets the DarkenOutOfFocus amount
     * @param amount amount of DarkenOutOfFocus
     */
    setDarkenOutOfFocus(amount: number): void;
    private _pentagonBokehIsEnabled;
    /**
     * Creates a pentagon bokeh effect
     */
    enablePentagonBokeh(): void;
    /**
     * Disables the pentagon bokeh effect
     */
    disablePentagonBokeh(): void;
    /**
     * Enables noise blur
     */
    enableNoiseBlur(): void;
    /**
     * Disables noise blur
     */
    disableNoiseBlur(): void;
    /**
     * Sets the HighlightsGain amount
     * @param amount amount of HighlightsGain
     */
    setHighlightsGain(amount: number): void;
    /**
     * Sets the HighlightsThreshold amount
     * @param amount amount of HighlightsThreshold
     */
    setHighlightsThreshold(amount: number): void;
    /**
     * Disables highlights
     */
    disableHighlights(): void;
    /**
     * Removes the internal pipeline assets and detaches the pipeline from the scene cameras
     * @param disableDepthRender If the scene's depth rendering should be disabled (default: false)
     */
    dispose(disableDepthRender?: boolean): void;
    private _createChromaticAberrationPostProcess;
    private _createHighlightsPostProcess;
    private _createDepthOfFieldPostProcess;
    private _createGrainTexture;
}
