/**
 * Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { PickingId } from '../../mol-geo/geometry/picking';
import { Renderer } from '../../mol-gl/renderer';
import { Scene } from '../../mol-gl/scene';
import { WebGLContext } from '../../mol-gl/webgl/context';
import { RenderTarget } from '../../mol-gl/webgl/render-target';
import { Vec3 } from '../../mol-math/linear-algebra';
import { Camera, ICamera } from '../camera';
import { StereoCamera } from '../camera/stereo';
import { Viewport } from '../camera/util';
import { Helper } from '../helper/helper';
import { DrawPass } from './draw';
export declare type PickData = {
    id: PickingId;
    position: Vec3;
};
export declare class PickPass {
    private webgl;
    private drawPass;
    readonly pickBaseScale: number;
    readonly objectPickTarget: RenderTarget;
    readonly instancePickTarget: RenderTarget;
    readonly groupPickTarget: RenderTarget;
    readonly depthPickTarget: RenderTarget;
    private pickWidth;
    private pickHeight;
    constructor(webgl: WebGLContext, drawPass: DrawPass, pickBaseScale: number);
    get drawingBufferHeight(): number;
    syncSize(): void;
    private renderVariant;
    render(renderer: Renderer, camera: ICamera, scene: Scene, helper: Helper): void;
}
export declare class PickHelper {
    private webgl;
    private renderer;
    private scene;
    private helper;
    private pickPass;
    readonly pickPadding: number;
    dirty: boolean;
    private objectBuffer;
    private instanceBuffer;
    private groupBuffer;
    private depthBuffer;
    private viewport;
    private pickScale;
    private pickX;
    private pickY;
    private pickWidth;
    private pickHeight;
    private halfPickWidth;
    private spiral;
    private setupBuffers;
    setViewport(x: number, y: number, width: number, height: number): void;
    private syncBuffers;
    private getBufferIdx;
    private getDepth;
    private getId;
    private render;
    private identifyInternal;
    identify(x: number, y: number, camera: Camera | StereoCamera): PickData | undefined;
    constructor(webgl: WebGLContext, renderer: Renderer, scene: Scene, helper: Helper, pickPass: PickPass, viewport: Viewport, pickPadding?: number);
}
