import { Camera, Plane, Scene, Texture } from 'three';
import { Pass } from 'three/examples/jsm/postprocessing/Pass.js';
import { ObjectLayers } from '../../IViewer';
export declare enum RenderType {
    NORMAL = 0,
    ACCUMULATION = 1
}
export type InputColorTextureUniform = 'tDiffuse';
export type InputDepthTextureUniform = 'tDepth';
export type InputNormalsTextureUniform = 'tNormal';
export type InputColorInterpolateTextureUniform = 'tDiffuseInterp';
export interface SpecklePass {
    onBeforeRender?: () => void;
    onAferRender?: () => void;
    get displayName(): string;
    get outputTexture(): Texture;
    update?(scene: Scene, camera: Camera): any;
    setTexture?(uName: string, texture: Texture): any;
    setParams?(params: unknown): any;
    setClippingPlanes?(planes: Plane[]): any;
    setLayers?(layers: ObjectLayers[]): any;
}
export interface SpeckleProgressivePass extends SpecklePass {
    setFrameIndex(index: number): any;
    setAccumulationFrames(frames: number): any;
    setRenderType?(type: RenderType): any;
}
export declare abstract class BaseSpecklePass extends Pass implements SpecklePass {
    protected layers: ObjectLayers[];
    protected _enabledLayers: ObjectLayers[];
    get enabledLayers(): ObjectLayers[];
    constructor();
    get displayName(): string;
    get outputTexture(): Texture;
    setLayers(layers: ObjectLayers[]): void;
    enableLayer(layer: ObjectLayers, value: boolean): void;
    protected applyLayers(camera: Camera): void;
}
