import { Pass } from "postprocessing";
import { Color, DataTexture, OrthographicCamera, PerspectiveCamera, Scene, WebGLRenderTarget, WebGLRenderer } from "three";
export type RenderModeType = "Combined" | "AO" | "No AO" | "Split" | "Split AO";
type PresetsType = "Performance" | "Low" | "Medium" | "High" | "Ultra";
interface IConfiguration {
    aoSamples: number;
    aoRadius: number;
    denoiseSamples: number;
    denoiseRadius: number;
    distanceFalloff: number;
    intensity: number;
    denoiseIterations: number;
    renderMode: number;
    color: Color;
    gammaCorrection: boolean;
    logarithmicDepthBuffer: boolean;
    screenSpaceRadius: boolean;
    halfRes: boolean;
    depthAwareUpsampling: boolean;
    colorMultiply: boolean;
}
declare class N8SSAOPass extends Pass {
    private debugMode;
    scene: Scene;
    camera: PerspectiveCamera | OrthographicCamera;
    lastTime: number;
    private width;
    private height;
    configuration: IConfiguration & ProxyHandler<IConfiguration>;
    private autosetGamma;
    private samples;
    private samplesR;
    private samplesDenoise;
    private copyQuadMaterial;
    private copyQuad;
    private writeTargetInternal;
    private readTargetInternal;
    private outputTargetInternal;
    private depthDownsampleTarget;
    private depthDownsampleQuad;
    private effectShaderQuad;
    private effectCompositerQuad;
    private poissonBlurQuad;
    private depthTexture;
    private bluenoise;
    private r;
    private c;
    constructor(scene: Scene, camera: PerspectiveCamera | OrthographicCamera, width?: number, height?: number);
    private configureHalfResTargets;
    private configureSampleDependentPasses;
    private configureAOPass;
    private configureDenoisePass;
    private configureEffectCompositer;
    private generateHemisphereSamples;
    private generateHemisphereSamplesR;
    private generateDenoiseSamples;
    setSize(width: number, height: number): void;
    setDepthTexture(depthTexture: DataTexture): void;
    render(renderer: WebGLRenderer, inputBuffer: WebGLRenderTarget, outputBuffer: WebGLRenderTarget): void;
    enableDebugMode(): void;
    disableDebugMode(): void;
    setDisplayMode(mode: "Combined" | "AO" | "No AO" | "Split" | "Split AO"): void;
    setQualityMode(mode: PresetsType): void;
}
export { N8SSAOPass };
