import EventEmitter from 'eventemitter3';
import * as Y from 'yjs';
import { UserManager } from '@netless/forge-room';
import { WhiteboardPermissionFlag } from './WhitePermissions';
interface CameraEvents {
    zoom: (matrix: paper.Matrix) => void;
    userPageChange: (userId: string, pageId: string) => void;
    userViewModeChange: (userId: string, viewMode: string, oldViewMode: string) => void;
}
export declare class Camera extends EventEmitter<CameraEvents> {
    readonly scope: paper.PaperScope;
    private dom;
    private lastTriggerTime;
    private lastDelta;
    private requestUserMap;
    private userManager;
    private observers;
    private whiteboardAttrsMap;
    private paperSize;
    private domSize;
    private hasPermission;
    private gesture;
    private inherentScale;
    private maxScale;
    private initSize;
    private bound;
    private boundTiemoutId;
    enableByMouse: boolean;
    enableByTouch: boolean;
    boundaryColor: string;
    enableBoundaryHighlight: boolean;
    private get inherentMatrix();
    private get translateScale();
    constructor(initSize: paper.Size, maxScale: number, dom: HTMLDivElement, userManager: UserManager, scope: paper.PaperScope, whiteboardAttrsMap: Y.Map<any>, hasPermission: (flag: WhiteboardPermissionFlag) => boolean, requestUserMap: (userId: string) => Y.Map<any>, paperSize: () => [number, number], domSize: () => [number, number]);
    private highlightBound;
    updateInitSize(size: paper.Size): void;
    updateInherentScale(scale: number): void;
    getInherentScale(): number;
    private getActiveMatrix;
    triggerZoom(): void;
    resetViewMatrixToFlow(userId: string): void;
    resetViewMatrixToMain(): void;
    private handleMainCameraChange;
    private handleUserLeave;
    private handleUserJoin;
    private createModel;
    private handleViewMatrixUpdate;
    private validNextMatrix;
    private updateViewMatrix;
    private handleWheel;
    scale(value: number, origin?: 'center' | 'top-left'): void;
    translate(offsetX: number, offsetY: number): void;
    reset(): void;
    dispose(): void;
}
export {};
//# sourceMappingURL=Camera.d.ts.map