import { EditorView } from '@codemirror/view'; import { DiffType } from 'api-smart-diff'; import { DiffBlockData } from '../../diff-builder/common'; import { ChangeSummary, DiffData, NavigationAPI, NavigationOptions } from '../types'; /** Implementation of the Navigation API */ export declare class NavigationAPIImpl implements NavigationAPI { private beforeView; private afterView; private diffData; private currentBlockIndex; private blockChangeListeners; private visibleBlocksListeners; constructor(beforeView: EditorView | null, afterView: EditorView | null, diffData: DiffData); /** Update views and data */ update(beforeView: EditorView | null, afterView: EditorView | null, diffData: DiffData): void; /** Navigate to a specific block */ goToBlock(blockId: string, options?: NavigationOptions): void; /** Navigate to next change */ goToNextChange(filter?: DiffType[]): DiffBlockData | null; /** Navigate to previous change */ goToPrevChange(filter?: DiffType[]): DiffBlockData | null; /** Navigate to next breaking change */ goToNextBreaking(): DiffBlockData | null; /** Navigate to previous breaking change */ goToPrevBreaking(): DiffBlockData | null; /** Navigate to specific line */ goToLine(line: number, side?: "before" | "after"): void; /** Get all blocks */ getBlocks(): DiffBlockData[]; /** Get blocks with changes (have diff metadata) */ getChangedBlocks(): DiffBlockData[]; /** Get blocks by diff type */ getBlocksByType(types: DiffType[]): DiffBlockData[]; /** Get currently visible blocks */ getVisibleBlocks(): DiffBlockData[]; /** Get currently selected block */ getCurrentBlock(): DiffBlockData | null; /** Find a block by ID */ findBlock(blockId: string): DiffBlockData | null; /** Get summary of changes */ getChangeSummary(): ChangeSummary; /** Subscribe to block changes */ onBlockChange(callback: (block: DiffBlockData | null) => void): () => void; /** Subscribe to visible blocks changes */ onVisibleBlocksChange(callback: (blocks: DiffBlockData[]) => void): () => void; /** Internal: scroll to line in both editors */ private scrollToLine; /** Internal: select a block in both editors */ private selectBlock; /** Internal: notify block change listeners */ private notifyBlockChange; } /** Create navigation API instance */ export declare function createNavigationAPI(beforeView: EditorView | null, afterView: EditorView | null, diffData: DiffData): NavigationAPI;