import { Point } from "../../util/misc";
import { CameraEventMap, CameraState, UnSubscribe } from "../../camera-update-publisher";
import { CameraUpdatePublisher } from "../../camera-update-publisher";
import { Boundaries } from "../utils/position";
import { ZoomLevelLimits } from "../utils/zoom";
import { RotationLimits } from "../utils/rotation";
import { TransformMatrix } from "../utils/matrix";
/**
 * @description This is the context centric camera.
 *
 * The purpose of this kind of camera is to skip the transformation from view port space to world space when accepting user input.
 * This is a work in progress class. This is included in the bundle for experimental purposes. Please do not use it in production.
 *
 * @category wip
 */
export declare class ContextCentricCamera {
    private _contextPosition;
    private _contextRotation;
    private _zoomLevel;
    private _viewPortWidth;
    private _viewPortHeight;
    private _observer;
    private _boundaries;
    private _zoomBoundaries;
    private _rotationBoundaries;
    constructor(position?: Point, rotation?: number, zoomLevel?: number, viewPortWidth?: number, viewPortHeight?: number, observer?: CameraUpdatePublisher, boundaries?: Boundaries, zoomLevelBoundaries?: ZoomLevelLimits, rotationBoundaries?: RotationLimits);
    get position(): Point;
    get contextTransform(): {
        position: Point;
        rotation: number;
        zoomLevel: number;
    };
    setPosition(destination: Point): void;
    setPositionByDelta(delta: Point): void;
    setPositionWithUserInputDelta(delta: Point): void;
    getCameraOriginInWindow(centerInWindow: Point): Point;
    convertFromViewPort2WorldSpace(point: Point): Point;
    setZoomLevel(zoomLevel: number): void;
    setRotation(rotation: number): void;
    get zoomLevel(): number;
    get rotation(): number;
    getTransform(canvasWidth: number, canvasHeight: number, devicePixelRatio: number, alignCoorindate: boolean): TransformMatrix;
    get viewPortWidth(): number;
    get viewPortHeight(): number;
    set viewportWidth(width: number);
    set viewportHeight(height: number);
    get zoomBoundaries(): ZoomLevelLimits;
    get rotationBoundaries(): RotationLimits;
    viewPortDelta2WorldDelta(delta: Point): Point;
    setMinZoomLevel(minZoomLevel: number): boolean;
    setHorizontalBoundaries(min: number, max: number): void;
    setVerticalBoundaries(min: number, max: number): void;
    on<K extends keyof CameraEventMap>(eventName: K, callback: (event: CameraEventMap[K], cameraState: CameraState) => void): UnSubscribe;
    set viewPortWidth(width: number);
    set viewPortHeight(height: number);
}
