import type { Viewport } from '../xyflow/react.ts';
export declare const ANIMATION_CONSTANTS: {
    readonly MAX_ZOOM: 3;
    readonly NODE_FOCUS_PADDING: 0.1;
    readonly DEFAULT_CANVAS_WIDTH: 800;
    readonly DEFAULT_CANVAS_HEIGHT: 600;
    readonly TRANSITION_TIMEOUT: 5000;
};
export declare const TRANSITION_CONFIG: {
    readonly drillDuration: 0.4;
    readonly viewportDuration: 0.3;
    readonly easing: {
        readonly drillIn: readonly [0.4, 0, 0.2, 1];
        readonly drillOut: readonly [0.4, 0, 0.2, 1];
        readonly viewport: readonly [0.25, 0.1, 0.25, 1];
    };
};
export interface NodeBounds {
    x: number;
    y: number;
    width: number;
    height: number;
}
export declare function calculateNodeFocusViewport(nodeBounds: NodeBounds, canvasSize: {
    width: number;
    height: number;
}, padding?: number): Viewport;
export declare function animateViewport(fromViewport: Viewport, toViewport: Viewport, duration?: number, onUpdate?: (viewport: Viewport) => void, onComplete?: () => void): Promise<void>;
export declare function animateDrillIn(fromViewport: Viewport, nodeViewport: Viewport, onUpdate?: (viewport: Viewport) => void, onComplete?: () => void): Promise<void>;
export declare function animateDrillOut(fromViewport: Viewport, parentViewport: Viewport, onUpdate?: (viewport: Viewport) => void, onComplete?: () => void): Promise<void>;
export declare function getCanvasSize(containerElement?: HTMLElement | null): {
    width: number;
    height: number;
};
export declare function prefersReducedMotion(): boolean;
//# sourceMappingURL=transitions.d.ts.map