/**
 * AVL Cosmic Zoom State Machine
 *
 * useReducer-based state machine managing which zoom level is displayed,
 * what is selected, and animation state.
 *
 * Shared by AvlOrbitalsCosmicZoom (2D) and Avl3DViewer (3D). The 3D
 * viewer drills through every level (`application → orbital → trait →
 * transition`); the 2D cosmic view skips the `'orbital'` level after
 * COSMIC-1 (no Orbital-View screen) by dispatching `JUMP_TO_TRAIT_CIRCUIT`
 * to land directly at `'trait'`.
 *
 * @packageDocumentation
 */
export type ZoomLevel = 'application' | 'orbital' | 'trait' | 'transition';
export interface ZoomState {
    level: ZoomLevel;
    selectedOrbital: string | null;
    selectedTrait: string | null;
    selectedTransition: number | null;
    animating: boolean;
    animationDirection: 'in' | 'out';
    animationTarget: {
        x: number;
        y: number;
        scale: number;
    } | null;
}
export type ZoomAction = {
    type: 'ZOOM_INTO_ORBITAL';
    orbital: string;
    targetPosition: {
        x: number;
        y: number;
    };
} | {
    type: 'ZOOM_INTO_TRAIT';
    trait: string;
    targetPosition: {
        x: number;
        y: number;
    };
} | {
    type: 'ZOOM_INTO_TRANSITION';
    transitionIndex: number;
    targetPosition: {
        x: number;
        y: number;
    };
} | {
    type: 'ZOOM_OUT';
} | {
    type: 'ANIMATION_COMPLETE';
} | {
    type: 'RESET';
} | {
    type: 'SWITCH_TRAIT';
    trait: string;
} | {
    type: 'JUMP_TO_TRAIT_CIRCUIT';
    orbital: string;
} | {
    type: 'SELECT_TRAIT';
    trait: string;
};
export declare const initialZoomState: ZoomState;
export declare function zoomReducer(state: ZoomState, action: ZoomAction): ZoomState;
export interface BreadcrumbSegment {
    label: string;
    level: ZoomLevel;
}
export declare function getBreadcrumbs(state: ZoomState): BreadcrumbSegment[];
