import { TweenMax } from "gsap";
import * as PIXI from "pixi.js";
import * as SonarUtils from "../utils/sonar";
import { CameraControllerManager } from "./controller";
import { Vector2D } from "../utils/geom";
import { BaseRoom } from "../display/base";
export interface ICameraConfig {
    pov: number;
    dof: number;
    float: boolean;
    maxXOffset: number;
    maxYOffset: number;
    xOffset: number;
    yOffset: number;
}
export declare class Camera extends PIXI.utils.EventEmitter {
    protected _room: BaseRoom;
    protected _viewport: PIXI.Rectangle;
    readonly room: BaseRoom<any>;
    maxZoom: number;
    /**
     * If you change the properties of the Bound then the Sonar will
     * begin to check it for changes.
     */
    readonly viewport: PIXI.Rectangle;
    readonly float: boolean;
    /**
     * Returns PointOfView
     */
    readonly pov: Vector2D;
    readonly dof: number;
    readonly controllers: CameraControllerManager | undefined;
    readonly x: number;
    readonly y: number;
    readonly povFactor: number;
    readonly maxXOffset: number;
    readonly maxYOffset: number;
    readonly xOffset: number;
    readonly yOffset: number;
    protected _dof: number;
    protected _povFactor: number;
    protected _maxXOffset: number;
    protected _maxYOffset: number;
    protected _xOffset: number;
    protected _yOffset: number;
    protected _float: boolean;
    protected _controllers: CameraControllerManager | undefined;
    protected _sonarViewport: SonarUtils.SonarDetector;
    protected _x: number;
    protected _y: number;
    protected _tweenPivot: TweenMax | undefined;
    protected _tweenPOV: TweenMax | undefined;
    protected _cameraPosition: Vector2D;
    protected _pov: Vector2D;
    protected _maxZoom: number;
    constructor(_room: BaseRoom, _viewport: PIXI.Rectangle, config: ICameraConfig);
    destroy(): void;
    /**
     * Normalize and modify the target
     */
    protected normalizeCameraMove(target: Vector2D): boolean;
    protected normalizeCameraPOV(target: Vector2D): void;
    protected _handlerCameraMove: (target: Vector2D) => void;
    protected _handlerCameraPOV: (target: Vector2D) => void;
    protected _handlePivotUpdate: () => void;
    protected _handlePOVUpdate: () => void;
    protected _handlerCameraZoom: (zoom: number) => void;
    protected _handlerCameraRotate: (rotation: number) => void;
    private createControllerManager;
    private removeControllerManager;
}
//# sourceMappingURL=camera.d.ts.map