/**
 * Navigable History
 *
 * Provides keyboard-navigable command history:
 * - Up/Down arrow navigation
 * - Search through history
 * - Persistent storage
 * - Session-aware history
 */
export interface HistoryEntry {
    command: string;
    timestamp: Date;
    sessionId?: string;
    success?: boolean;
    duration?: number;
}
export interface NavigableHistoryOptions {
    /** Maximum entries to keep */
    maxEntries?: number;
    /** Path to history file */
    historyPath?: string;
    /** Enable persistence */
    persist?: boolean;
    /** Session ID for filtering */
    sessionId?: string;
    /** Deduplicate consecutive entries */
    deduplicate?: boolean;
}
/**
 * Navigable History Manager
 */
export declare class NavigableHistory {
    private entries;
    private currentIndex;
    private tempEntry;
    private options;
    private searchMode;
    private searchQuery;
    private searchResults;
    private searchResultIndex;
    constructor(options?: NavigableHistoryOptions);
    /**
     * Add entry to history
     */
    add(command: string, metadata?: Partial<Omit<HistoryEntry, 'command' | 'timestamp'>>): void;
    /**
     * Navigate to previous entry (up arrow)
     */
    previous(currentInput: string): string | null;
    /**
     * Navigate to next entry (down arrow)
     */
    next(): string | null;
    /**
     * Start search mode
     */
    startSearch(): void;
    /**
     * Update search query
     */
    updateSearch(query: string): HistoryEntry[];
    /**
     * Get current search result
     */
    getCurrentSearchResult(): HistoryEntry | null;
    /**
     * Navigate to next search result
     */
    nextSearchResult(): HistoryEntry | null;
    /**
     * Navigate to previous search result
     */
    previousSearchResult(): HistoryEntry | null;
    /**
     * End search mode
     */
    endSearch(): void;
    /**
     * Check if in search mode
     */
    isSearching(): boolean;
    /**
     * Get search info for display
     */
    getSearchInfo(): {
        query: string;
        current: number;
        total: number;
    };
    /**
     * Reset navigation position
     */
    resetNavigation(): void;
    /**
     * Get all entries
     */
    getAll(): HistoryEntry[];
    /**
     * Get recent entries
     */
    getRecent(count?: number): HistoryEntry[];
    /**
     * Get entries for current session
     */
    getSessionHistory(): HistoryEntry[];
    /**
     * Get unique commands (deduplicated)
     */
    getUniqueCommands(): string[];
    /**
     * Get frequently used commands
     */
    getFrequent(limit?: number): Array<{
        command: string;
        count: number;
    }>;
    /**
     * Clear history
     */
    clear(): void;
    /**
     * Clear old entries
     */
    clearOlderThan(days: number): number;
    /**
     * Get entry count
     */
    get length(): number;
    /**
     * Get current navigation position
     */
    get position(): number;
    /**
     * Check if at beginning of history
     */
    isAtStart(): boolean;
    /**
     * Check if at end of history
     */
    isAtEnd(): boolean;
    /**
     * Format history for display
     */
    format(limit?: number): string;
    /**
     * Load history from file
     */
    private load;
    /**
     * Save history to file
     */
    private save;
    /**
     * Export history
     */
    export(): string;
    /**
     * Import history
     */
    import(json: string, merge?: boolean): boolean;
}
/**
 * Get or create navigable history instance
 */
export declare function getNavigableHistory(options?: NavigableHistoryOptions): NavigableHistory;
export default NavigableHistory;
