/**
 * Vim Search System
 *
 * Implements vim-style search with / and ? commands.
 *
 * @since v1.58.0
 */
import type { SearchDirection, SearchState, VimConfig } from './vim-types.js';
/**
 * Create initial search state
 */
export declare function createInitialSearchState(): SearchState;
/**
 * Vim Search Engine
 */
export declare class VimSearchEngine {
    private state;
    private config;
    private items;
    private onSearchChange?;
    constructor(config?: Partial<VimConfig>, onSearchChange?: (state: SearchState) => void);
    /**
     * Get current search state
     */
    getState(): SearchState;
    /**
     * Set items to search
     */
    setItems(items: string[]): void;
    /**
     * Start a new search
     */
    startSearch(direction: SearchDirection): void;
    /**
     * Update search query
     */
    updateQuery(query: string): void;
    /**
     * Append character to query
     */
    appendToQuery(char: string): void;
    /**
     * Remove last character from query
     */
    backspace(): void;
    /**
     * Execute the search and update results
     */
    executeSearch(): void;
    /**
     * Prepare query based on settings
     */
    private prepareQuery;
    /**
     * Check if an item matches the query
     */
    private matchItem;
    /**
     * Confirm search (press Enter)
     */
    confirmSearch(): number | null;
    /**
     * Cancel search (press Escape)
     */
    cancelSearch(): void;
    /**
     * Go to next search result (n)
     */
    nextResult(): number | null;
    /**
     * Go to previous search result (N)
     */
    prevResult(): number | null;
    /**
     * Search for word under cursor (*)
     */
    searchWordUnderCursor(word: string): number | null;
    /**
     * Search for word under cursor backward (#)
     */
    searchWordUnderCursorBackward(word: string): number | null;
    /**
     * Toggle case sensitivity
     */
    toggleCaseSensitive(): void;
    /**
     * Toggle regex mode
     */
    toggleRegex(): void;
    /**
     * Get current result index in the list
     */
    getCurrentResultIndex(): number | null;
    /**
     * Get result count info
     */
    getResultInfo(): {
        current: number;
        total: number;
    } | null;
    /**
     * Check if a specific index is a search result
     */
    isSearchResult(index: number): boolean;
    /**
     * Check if a specific index is the current search result
     */
    isCurrentResult(index: number): boolean;
    /**
     * Find result closest to a given index
     */
    findClosestResult(index: number, direction?: SearchDirection): number | null;
    /**
     * Repeat last search
     */
    repeatSearch(): number | null;
    /**
     * Repeat last search in reverse
     */
    repeatSearchReverse(): number | null;
    /**
     * Reset search state
     */
    reset(): void;
    /**
     * Notify listeners of state change
     */
    private notifyChange;
}
/**
 * Create a vim search engine instance
 */
export declare function createVimSearchEngine(config?: Partial<VimConfig>, onSearchChange?: (state: SearchState) => void): VimSearchEngine;
/**
 * Format search status for display
 */
export declare function formatSearchStatus(state: SearchState): string;
/**
 * Format search result count for display
 */
export declare function formatResultCount(state: SearchState): string;
//# sourceMappingURL=vim-search.d.ts.map