import { PerspectiveCamera, Scene, Vector2, WebGLRenderer } from 'three';
import { Vec2, Vec3 } from '../../sdk';
import { Emitter, Listener } from './EventEmitterContext';
export type PickedObject = {
    emitter: Emitter;
    index: number;
};
export type PickResult = {
    match: PickedObject | null;
    position: Vec3;
    point: Vec2;
};
/**
 * Used internally by the `EventEmitter` component
 * @internal
 */
export declare class PickingHelper {
    private _size;
    private _radius;
    private _pbo;
    private _buffer;
    private _material;
    constructor(options?: {});
    private traverseObject;
    updateListeners: () => void;
    addListener: (listener: Listener) => void;
    getListener: (id: number) => Listener | undefined;
    removeListener: (id: number) => void;
    render(pointer: Vector2, renderer: WebGLRenderer, scene: Scene, camera: PerspectiveCamera): Promise<PickResult>;
    private pick;
    dispose(): void;
}
