import type { Five, SubscribeEventMap } from '@realsee/five';
import Hammer from 'hammerjs';
import * as THREE from 'three';
import { Subscribe } from '@realsee/five';
interface MagnifierEvent extends SubscribeEventMap {
    wantsPanGesture: (event: (typeof Hammer)['Input']) => boolean;
}
/** 放大镜配置参数 */
export interface MagnifierParameter {
    width?: number;
    height?: number;
    scale?: number;
    /** 允许拖动放大镜 */
    dragEnabled?: boolean;
    /** renderWithPoint 时，是否应该自动更新放大镜的位置 */
    autoFixPCPosition?: boolean;
    /** 放大镜初始位置应该设置在容器的哪个位置 */
    initialPosition?: {
        left: string;
        top: string;
    };
}
export declare class Magnifier {
    width: number;
    height: number;
    containerDom?: Element;
    hooks: Subscribe<MagnifierEvent>;
    canvas: HTMLCanvasElement;
    private five;
    private scale;
    private config;
    private offset;
    private context;
    private renderCenter;
    private hammer?;
    private state;
    constructor(five: Five, options: MagnifierParameter);
    getCurrentState(): {
        enabled: boolean;
    };
    dispose(): void;
    show(): this;
    hide(): this;
    enable(): this;
    disable(): this;
    /** 把放大镜放到某一个容器中 */
    appendTo(element: Element): this;
    /** 清除放大镜渲染内容 */
    clear(): this;
    /** 放大传入点位周围的内容 */
    renderWithPoint(point: THREE.Vector3): void;
    private autoFixPCPosition;
    private render;
    private initStyle;
    private onPan;
    private onPanEnd;
}
export {};
