import { type ReadKeyFunction, type ReadMultipleKeysFunction } from '../key'; import { type DecisionFunctionFactory } from '../value/decision'; /** * Decision function factory that is configured with search string values. */ export type SearchStringDecisionFunctionFactory = DecisionFunctionFactory; /** * Filters values by the input filter text. */ export type SearchStringFilterFunction = (filterText: string, values: T[]) => T[]; /** * Configuration for creating a {@link SearchStringFilterFunction}. * * @template T - The type of values being filtered. */ export interface SearchStringFilterConfig { /** * Reads the search value(s) from the input item to compare against the filter text. */ readStrings: ReadKeyFunction | ReadMultipleKeysFunction; /** * Optional decision function factory for matching logic. * * Defaults to {@link caseInsensitiveFilterByIndexOfDecisionFactory} if not defined. */ decisionFactory?: SearchStringDecisionFunctionFactory; } /** * Input for creating a {@link SearchStringFilterFunction}. Can be a read function directly or a full config object. * * @template T - The type of values being filtered. */ export type SearchStringFilterFunctionConfigInput = ReadKeyFunction | ReadMultipleKeysFunction | SearchStringFilterConfig; /** * Creates a {@link SearchStringFilterFunction} that filters values based on whether their string representation matches the filter text. * * @param config - A read function or full configuration specifying how to extract and match search strings. * @returns A function that filters an array of values by a search/filter text string. */ export declare function searchStringFilterFunction(config: SearchStringFilterFunctionConfigInput): SearchStringFilterFunction; /** * Default {@link SearchStringDecisionFunctionFactory} that performs case-insensitive substring matching using `indexOf`. * * @param filterText - The search term to match against. * @returns A decision function that returns `true` if the input string contains the filter text (case-insensitive). */ export declare const caseInsensitiveFilterByIndexOfDecisionFactory: SearchStringDecisionFunctionFactory;