/**
 * Vim Marks System
 *
 * Implements vim-style marks and jump list for position history.
 *
 * @since v1.58.0
 */
import type { MarkState } from './vim-types.js';
/**
 * Create initial mark state
 */
export declare function createInitialMarkState(): MarkState;
/**
 * Vim Marks Engine
 */
export declare class VimMarksEngine {
    private state;
    private onMarkChange?;
    constructor(onMarkChange?: (state: MarkState) => void);
    /**
     * Get current mark state
     */
    getState(): MarkState;
    /**
     * Set a mark at a position
     */
    setMark(mark: string, position: number): void;
    /**
     * Get a mark position
     */
    getMark(mark: string): number | null;
    /**
     * Delete a mark
     */
    deleteMark(mark: string): boolean;
    /**
     * Delete all marks
     */
    deleteAllMarks(): void;
    /**
     * Delete marks in range
     */
    deleteMarksInRange(start: string, end: string): void;
    /**
     * Get all marks
     */
    getAllMarks(): Array<{
        mark: string;
        position: number;
    }>;
    /**
     * Check if a mark exists
     */
    hasMark(mark: string): boolean;
    /**
     * Save previous position (for '' and `` jumps)
     */
    savePreviousPosition(position: number): void;
    /**
     * Get previous position
     */
    getPreviousPosition(): number | null;
    /**
     * Add position to jump list
     */
    addToJumpList(position: number): void;
    /**
     * Jump back in jump list (Ctrl+o)
     */
    jumpBack(): number | null;
    /**
     * Jump forward in jump list (Ctrl+i)
     */
    jumpForward(): number | null;
    /**
     * Get current position in jump list
     */
    getJumpListPosition(): {
        current: number;
        total: number;
    } | null;
    /**
     * Get jump list entries
     */
    getJumpList(): Array<{
        index: number;
        position: number;
        current: boolean;
    }>;
    /**
     * Clear jump list
     */
    clearJumpList(): void;
    /**
     * Jump to specific index in jump list
     */
    jumpToIndex(index: number): number | null;
    /**
     * Get marks for a specific type (local or global)
     */
    getMarksByType(type: 'local' | 'global'): Array<{
        mark: string;
        position: number;
    }>;
    /**
     * Find closest mark to a position
     */
    findClosestMark(position: number): {
        mark: string;
        position: number;
    } | null;
    /**
     * Reset marks state
     */
    reset(): void;
    /**
     * Export marks for persistence
     */
    export(): {
        marks: Record<string, number>;
        jumpList: number[];
    };
    /**
     * Import marks from persistence
     */
    import(data: {
        marks?: Record<string, number>;
        jumpList?: number[];
    }): void;
    /**
     * Notify listeners of state change
     */
    private notifyChange;
}
/**
 * Create a vim marks engine instance
 */
export declare function createVimMarksEngine(onMarkChange?: (state: MarkState) => void): VimMarksEngine;
/**
 * Format marks for display
 */
export declare function formatMarks(marks: Array<{
    mark: string;
    position: number;
}>): string[];
/**
 * Format jump list for display
 */
export declare function formatJumpList(jumpList: Array<{
    index: number;
    position: number;
    current: boolean;
}>): string[];
//# sourceMappingURL=vim-marks.d.ts.map