import { Dimensions, Point } from '@vertexvis/geometry';
import { BasicInteractionHandler } from '@vertexvis/utils';
import { MarkupCenteringBehavior } from '../types';
export interface MarkupInteractionHandlerScalingOptions {
    scale?: number;
    offset?: Point.Point;
    originatingViewport?: Dimensions.Dimensions;
    centeringBehavior?: MarkupCenteringBehavior;
}
export declare abstract class MarkupInteractionHandler implements BasicInteractionHandler {
    protected element?: HTMLElement;
    protected elementBounds?: DOMRect;
    protected scalingOptions: MarkupInteractionHandlerScalingOptions;
    private resizeObserver;
    constructor(scalingOptions?: MarkupInteractionHandlerScalingOptions);
    initialize(element: HTMLElement): void;
    dispose(): void;
    updateScalingOptions(scalingOptions: MarkupInteractionHandlerScalingOptions): void;
    getScalingOptions(): MarkupInteractionHandlerScalingOptions;
    protected acceptInteraction(): void;
    private handlePointerDown;
    private handlePointerMove;
    private handlePointerUp;
    protected abstract computeBoundingRect(): DOMRect;
    protected abstract handleInteractionAttempt(event: PointerEvent): void;
    protected abstract handleInteractionMove(event: PointerEvent): void;
    protected abstract handleInteractionEnd(event: PointerEvent): void;
}
