/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import type { Option, CompleterFn } from '../commands/schema/types.js';
import type { CommandContext } from '../commands/types.js';
export interface FuzzyFilterOptions {
    enableFuzzy?: boolean;
}
/**
 * Filters completions using either fuzzy matching or exact prefix matching.
 *
 * @param options - The list of options to filter
 * @param query - The search query
 * @param filterOptions - Options controlling the filtering behavior
 * @returns Filtered list of options
 */
export declare function filterCompletions(options: readonly Option[], query: string, filterOptions: FuzzyFilterOptions): readonly Option[];
/**
 * Filters a string array using either fuzzy matching or exact prefix matching.
 *
 * @param items - The list of strings to filter
 * @param query - The search query
 * @param filterOptions - Options controlling the filtering behavior
 * @returns Filtered list of strings
 */
export declare function filterStrings(items: readonly string[], query: string, filterOptions: FuzzyFilterOptions): readonly string[];
/**
 * Gets the fuzzy filtering setting from a CommandContext.
 * Returns true by default if setting is not defined.
 */
export declare function getFuzzyEnabled(ctx: CommandContext): boolean;
/**
 * Higher-order function that wraps a CompleterFn to add fuzzy filtering.
 *
 * The wrapped completer should return ALL items, and this wrapper will handle
 * the filtering based on the user's query and settings.
 *
 * @param baseCompleter - The base completer function that returns all items
 * @returns A wrapped completer that applies fuzzy filtering
 */
export declare function withFuzzyFilter(baseCompleter: CompleterFn): CompleterFn;
