import { PatternType } from './constants.ts';
export declare function classifyPattern(pattern: string, fixedString: boolean): PatternType;
export declare function isLiteralPattern(pattern: string, fixedString: boolean): boolean;
/**
 * The terms a whole-word search index may narrow a scan on, or null.
 *
 * A newline-joined pattern list (several -e, or the lines of -f) matches a
 * line when any one alternative does, so one search per alternative, unioned,
 * is complete when every alternative is itself a whole-word literal. -x narrows as -w does: a line that is the
 * literal entire is a word match of it. An empty alternative matches every
 * line, which no search can stand in for. Mirrors Python's
 * `whole_word_literals`.
 */
export declare function wholeWordLiterals(pattern: string | null, fixedString: boolean, wholeWord: boolean, lineRegexp?: boolean): string[] | null;
/**
 * The texts a mount's search is asked for, and whether as whole words.
 * Literals under -w or -x are asked as whole words, which a word index can
 * answer; any other pattern is narrowed on the needles one of which every
 * match contains, asked anywhere. Under -i a literal with a non-ASCII letter,
 * or with i, k or s when case folds by Unicode, is left to the scan: a mount
 * may miss Unicode pairs (`ſ` and `s`) or even ASCII pairs (`I` and `i`
 * under a Turkish collation). Mirrors Python's `search_terms`.
 */
export declare function searchTerms(pattern: string | null, needles: string[] | null, unicodeFolds: boolean, fixedString: boolean, wholeWord: boolean, lineRegexp: boolean, ignoreCase: boolean): [string[], boolean] | null;
//# sourceMappingURL=grep_pushdown.d.ts.map