import * as Core from "@intelligentgraphics/ig.gfx.core";
import { CameraView } from "@intelligentgraphics/ig.gfx.support";
import { TouchCollection } from "./touchCollection";
import { IPointerBehaviour } from "./behaviours/base";
export declare type PointerEventLike = {
    clientX: number;
    clientY: number;
    pageX: number;
    pageY: number;
    pointerId: number;
    pointerType: "touch" | "mouse" | "pen" | string;
    type: string;
    button: number;
    stopPropagation(): void;
    preventDefault(): void;
};
export declare type ClickInfo = {
    timestamp: number;
    event: PointerEventLike;
    pointerIdentifier: number;
    touch: Core.Touch;
};
export interface ISceneLike {
    getActiveCameraView(): CameraView;
    getActiveOrbitControls(): Core.IOrbittingControl;
}
export interface IPointerHandlerOptions {
    zoomToTarget?: boolean | "orthographic" | "perspective";
}
export declare abstract class PointerHandler<Scene extends ISceneLike = ISceneLike> {
    protected scene: Scene;
    protected options: IPointerHandlerOptions;
    protected activeBehaviour: IPointerBehaviour;
    protected touchCollection: TouchCollection;
    protected clickInfo: ClickInfo;
    constructor(scene: Scene, options: IPointerHandlerOptions);
    pointerDown(event: PointerEventLike): void;
    pointerMove(event: PointerEventLike): any;
    pointerUp(event: PointerEventLike): any;
    pointerOut(event: PointerEventLike): any;
    mouseWheel(event: WheelEvent): void;
    protected abstract detectPointerBehaviour(event: PointerEventLike, touch: Core.Touch): IPointerBehaviour | undefined;
    protected abstract handleClick(pointerDownInfo: ClickInfo): void;
    protected abstract convertEventToTouch(event: PointerEventLike): Core.Touch;
    protected onPointerBehaviourStart(behaviour: IPointerBehaviour): void;
    protected onPointerBehaviourEnd(): void;
    private getCameraName;
}
