import type { Node, ReactFlowInstance, Viewport } from '../xyflow/react.ts';
import { type NodeBounds } from '../utils/transitions';
export type TransitionType = 'drill-in' | 'drill-out' | 'viewport' | 'none';
export interface TransitionState {
    isTransitioning: boolean;
    type: TransitionType;
    startTime: number;
    progress: number;
    fromViewport?: Viewport;
    toViewport?: Viewport;
}
declare class AnimatedViewportManager {
    private reactFlowInstance;
    private currentViewport;
    private transitionState;
    private transitionTimeoutId?;
    private onTransitionStart?;
    private onTransitionUpdate?;
    private onTransitionComplete?;
    setReactFlowInstance(instance: ReactFlowInstance | null): void;
    getReactFlowInstance(): ReactFlowInstance | null;
    setCurrentViewport(viewport: Viewport): void;
    getCurrentViewport(): Viewport;
    getTransitionState(): TransitionState;
    isTransitioning(): boolean;
    setTransitionCallbacks(callbacks: {
        onStart?: (type: TransitionType) => void;
        onUpdate?: (state: TransitionState) => void;
        onComplete?: (type: TransitionType) => void;
    }): void;
    private updateTransitionState;
    private startTransition;
    private completeTransition;
    private clearTransitionTimeout;
    animateToViewport(targetViewport: Viewport, duration?: number, type?: TransitionType): Promise<void>;
    drillIntoNode(node: Node): Promise<void>;
    drillOutToParent(parentViewport: Viewport): Promise<void>;
    setViewportImmediate(viewport: Viewport): void;
    getNodeBounds(nodeId: string): NodeBounds | null;
    cancelTransition(): void;
    destroy(): void;
}
export declare const animatedViewportManager: AnimatedViewportManager;
export {};
//# sourceMappingURL=animatedViewportManager.d.ts.map