import { Plane, Side, WebGLRenderer } from 'three';
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
import Batcher from '../batching/Batcher';
import SpeckleRenderer from '../SpeckleRenderer';
import { DynamicAOPassParams } from './DynamicAOPass';
import { StaticAoPassParams } from './StaticAOPass';
import { RenderType } from './SpecklePass';
export declare enum PipelineOutputType {
    DEPTH_RGBA = 0,
    DEPTH = 1,
    COLOR = 2,
    GEOMETRY_NORMALS = 3,
    RECONSTRUCTED_NORMALS = 4,
    DYNAMIC_AO = 5,
    DYNAMIC_AO_BLURED = 6,
    PROGRESSIVE_AO = 7,
    FINAL = 8
}
export interface PipelineOptions {
    pipelineOutput: PipelineOutputType;
    accumulationFrames: number;
    dynamicAoEnabled: boolean;
    dynamicAoParams: DynamicAOPassParams;
    staticAoEnabled: boolean;
    staticAoParams: StaticAoPassParams;
    depthSide: Side;
}
export declare const DefaultPipelineOptions: PipelineOptions;
export declare class Pipeline {
    private _renderer;
    private _batcher;
    private _pipelineOptions;
    private _needsProgressive;
    private _resetFrame;
    private _composer;
    private depthPass;
    private normalsPass;
    private stencilPass;
    private renderPass;
    private stencilMaskPass;
    private dynamicAoPass;
    private applySaoPass;
    private copyOutputPass;
    private staticAoPass;
    private overlayPass;
    private drawingSize;
    private _renderType;
    private accumulationFrame;
    private onBeforePipelineRender;
    private onAfterPipelineRender;
    set pipelineOptions(options: Partial<PipelineOptions>);
    get pipelineOptions(): PipelineOptions;
    set pipelineOutput(outputType: PipelineOutputType);
    set needsProgressive(value: boolean);
    get needsAccumulation(): boolean;
    get renderType(): RenderType;
    get composer(): EffectComposer;
    constructor(renderer: WebGLRenderer, batcher: Batcher);
    configure(): void;
    private getDefaultPipeline;
    private clearPipeline;
    private setPipeline;
    updateClippingPlanes(planes: Plane[]): void;
    reset(): void;
    update(renderer: SpeckleRenderer): void;
    render(): boolean;
    resize(width: number, height: number): void;
    onStationaryBegin(): void;
    onStationaryEnd(): void;
}
