import { Camera, Material, OrthographicCamera, PerspectiveCamera, Plane, Scene, WebGLRenderer, WebGLRenderTarget } from 'three';
import { ObjectLayers } from '../../../IViewer.js';
export declare enum ObjectVisibility {
    OPAQUE = "opaque",
    TRANSPARENT = "transparent",
    DEPTH = "depth",
    STENCIL = "stencil"
}
export declare enum ClearFlags {
    COLOR = 256,
    DEPTH = 1024,
    STENCIL = 16384
}
export interface PassOptions {
}
export interface GPass {
    get displayName(): string;
    set outputTarget(value: WebGLRenderTarget);
    get outputTarget(): WebGLRenderTarget | null;
    get enabled(): boolean;
    set enabled(value: boolean);
    set options(value: PassOptions);
    get visibility(): ObjectVisibility | null;
    get overrideMaterial(): Material | null;
    get overrideBatchMaterial(): Material | null;
    get jitter(): boolean;
    get clearColor(): number | undefined;
    get clearAlpha(): number | undefined;
    get clearFlags(): number | undefined;
    setSize?(width: number, height: number): void;
    onBeforeRender?: () => void;
    onAferRender?: () => void;
    update?(camera: PerspectiveCamera | OrthographicCamera | null): void;
    render?(renderer: WebGLRenderer, camera?: PerspectiveCamera | OrthographicCamera | null, scene?: Scene): boolean;
    setClearColor(color: number, alpha: number): void;
    setClearFlags(flags: number): void;
    setClippingPlanes?(planes: Plane[]): void;
    setLayers?(layers: ObjectLayers[]): void;
    setVisibility?(objectVisibility: ObjectVisibility): void;
    setJitter(value: boolean): void;
}
export declare abstract class BaseGPass implements GPass {
    protected _enabled: boolean;
    protected layers: ObjectLayers[] | null;
    protected _enabledLayers: ObjectLayers[];
    protected _objectVisibility: ObjectVisibility | null;
    protected _jitter: boolean;
    protected _options: PassOptions;
    protected _clearColor: number | undefined;
    protected _clearAlpha: number | undefined;
    protected _clearFlags: number | undefined;
    protected _outputTarget: WebGLRenderTarget | null;
    onBeforeRender: (() => void) | undefined;
    onAfterRender: (() => void) | undefined;
    get enabledLayers(): ObjectLayers[];
    get displayName(): string;
    get outputTarget(): WebGLRenderTarget | null;
    set outputTarget(value: WebGLRenderTarget | null);
    get enabled(): boolean;
    set enabled(value: boolean);
    set options(value: PassOptions);
    get visibility(): ObjectVisibility | null;
    get overrideMaterial(): Material | null;
    get overrideBatchMaterial(): Material | null;
    get jitter(): boolean;
    get clearColor(): number | undefined;
    get clearAlpha(): number | undefined;
    get clearFlags(): number | undefined;
    setClearColor(color: number, alpha: number): void;
    setClearFlags(flags: number): void;
    setLayers(layers: ObjectLayers[]): void;
    enableLayer(layer: ObjectLayers, value: boolean): void;
    setVisibility(objectVisibility: ObjectVisibility | null): void;
    setJitter(value: boolean): void;
    protected applyLayers(camera: Camera | null): void;
    protected clear(renderer: WebGLRenderer): void;
    abstract render(renderer: WebGLRenderer, camera?: PerspectiveCamera | OrthographicCamera | null, scene?: Scene): boolean;
    setSize(width: number, height: number): void;
}
export declare abstract class ProgressiveGPass extends BaseGPass {
    protected _frameIndex: number;
    protected _accumulationFrames: number;
    get frameIndex(): number;
    set frameIndex(value: number);
    get accumulationFrames(): number;
    set accumulationFrames(value: number);
    render(renderer: WebGLRenderer, camera?: PerspectiveCamera | OrthographicCamera | null, scene?: Scene): boolean;
}
