import { Matrix4, OrthographicCamera, PerspectiveCamera, Plane, Vector2, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderTargetOptions } from 'three';
import { GPass } from '../Passes/GPass.js';
import SpeckleRenderer from '../../SpeckleRenderer.js';
export interface BasePipelineOptions {
}
export interface PipelineOptions extends BasePipelineOptions {
    edges?: boolean;
}
export declare const DefaultPipelineOptions: {
    edges: boolean;
};
export declare abstract class Pipeline {
    protected speckleRenderer: SpeckleRenderer;
    protected _options: BasePipelineOptions;
    protected passList: Array<GPass>;
    protected drawingSize: Vector2;
    protected frameProjection: Matrix4;
    protected jitterIndex: number;
    protected jitterOffsets: number[][];
    get options(): BasePipelineOptions;
    set options(value: BasePipelineOptions);
    constructor(renderer: SpeckleRenderer, options?: BasePipelineOptions);
    get passes(): Array<GPass>;
    onBeforePipelineRender(): void;
    onAfterPipelineRender(): void;
    getPass(name: string): GPass[];
    setClippingPlanes(planes: Plane[]): void;
    update(camera: PerspectiveCamera | OrthographicCamera): void;
    reset(): void;
    render(): boolean;
    resize(width: number, height: number): void;
    /**
     * Generate a number in the Halton Sequence at a given index. This is
     * shamelessly stolen from the pseudocode on the Wikipedia page
     *
     * @param base the base to use for the Halton Sequence
     * @param index the index into the sequence
     */
    protected haltonNumber(base: number, index: number): number;
    protected generateHaltonJiters(length: number): number[][];
    static createRenderTarget(options?: WebGLRenderTargetOptions, width?: number, height?: number): WebGLRenderTarget;
    static createMultipleRenderTarget(count: number, options?: WebGLRenderTargetOptions, width?: number, height?: number): WebGLMultipleRenderTargets;
}
