import { EventEmitter } from '../../stencil-public-runtime';
import { Point, Vector3 } from '@vertexvis/geometry';
import { StreamApi } from '@vertexvis/stream-api';
import { ReceivedFrame } from '../..';
import { CursorManager } from '../cursors';
import { OrthographicCamera } from '../scenes';
import { DepthBuffer, Viewport } from '../types';
import { InteractionApi, InteractionConfigProvider, SceneProvider } from './interactionApi';
import { TapEventDetails } from './tapEventDetails';
export declare class InteractionApiOrthographic extends InteractionApi<OrthographicCamera> {
    private orthographicZoomData?;
    constructor(stream: StreamApi, cursors: CursorManager, getConfig: InteractionConfigProvider, getScene: SceneProvider, getFrame: () => ReceivedFrame | undefined, getViewport: () => Viewport, tapEmitter: EventEmitter<TapEventDetails>, doubleTapEmitter: EventEmitter<TapEventDetails>, longPressEmitter: EventEmitter<TapEventDetails>, interactionStartedEmitter: EventEmitter<void>, interactionFinishedEmitter: EventEmitter<void>);
    /**
     * Returns a 3D point in world space for the given 2D point in viewport space.
     *
     * @param point A point in 2D viewport space to transform.
     * @returns A 3D point in world space.
     */
    getWorldPointFromViewport(point: Point.Point): Promise<Vector3.Vector3 | undefined>;
    /**
     * Performs a pan operation of the scene's camera, and requests a new image
     * for the updated scene.
     *
     * @param delta A position delta `{x, y}` in the 2D coordinate space of the
     *  viewer.
     */
    panCameraByDelta(delta: Point.Point): Promise<void>;
    /**
     * Moves the camera's position and look at to the given screen coordinate.
     *
     * If the screen coordinate intersects with an object, the camera will track
     * the hit point so the mouse position is always under the mouse.
     *
     * If the screen coordinate doesn't intersect with an object, then ???.
     *
     * @param screenPt A point in screen coordinates.
     */
    panCameraToScreenPoint(screenPt: Point.Point): Promise<void>;
    zoomCameraToPoint(point: Point.Point, delta: number): Promise<void>;
    /**
     * Performs a rotate operation of the scene around the camera's look at point,
     * and requests a new image for the updated scene.
     *
     * @param delta A position delta `{x, y}` in the 2D coordinate space of the
     *  viewer.
     */
    rotateCamera(delta: Point.Point): Promise<void>;
    protected getWorldPoint(point: Point.Point, depthBuffer: DepthBuffer, fallbackPoint: Vector3.Vector3): Vector3.Vector3;
}
