import type { ClipVisualTransform } from '../models/types';
import { type PreviewFrameSize, type PreviewRect } from './previewTransformMath';
export interface PreviewTransformOverlayState {
    clipId: string;
    transform: ClipVisualTransform;
    frameSize: PreviewFrameSize;
    baseRect: PreviewRect;
    displayRect: PreviewRect;
}
interface PreviewTransformOverlayCallbacks {
    onPreviewTransformChange?: (clipId: string, transform: ClipVisualTransform | null) => void;
    onPreviewTransformCommit?: (clipId: string, transform: ClipVisualTransform) => void;
}
export declare class PreviewTransformOverlay {
    private frameElement;
    private overlayElement;
    private boxElement;
    private readonly handleElements;
    private readonly handlePointerDownHandlers;
    private state;
    private interaction;
    private readonly callbacks;
    private readonly boundPointerMove;
    private readonly boundPointerUp;
    private readonly boundVisibilityChange;
    private readonly boundWindowBlur;
    constructor(callbacks?: PreviewTransformOverlayCallbacks);
    attach(frameElement: HTMLElement): void;
    detach(): void;
    sync(state: PreviewTransformOverlayState | null): void;
    private createHandle;
    private readonly handleMovePointerDown;
    private getHandlePointerDown;
    private bindDocumentListeners;
    private unbindDocumentListeners;
    private handleDocumentPointerMove;
    private finishInteraction;
    private render;
    private positionHandle;
    private toLocalPoint;
    private getFrameBounds;
    private getDocument;
    private setGlobalCursor;
}
export {};
