/**
 * Options that tune how keywords are matched/extracted.
 * All fields are optional; defaults mirror the "semantic-safe" profile:
 *   minWordLength = 7, requireBoundary = true, skipActionVerbs = true,
 *   skipStopwords = true, caseSensitive = false, customStopwords = [].
 */
export interface KeywordMatchOptions {
    /** Minimum length a candidate word must have to be considered. Default 7. */
    minWordLength?: number;
    /** If true, matching uses word-boundary regex (\b). Default true. */
    requireBoundary?: boolean;
    /** If true, common action verbs (e.g. "commit", "write") are filtered out. Default true. */
    skipActionVerbs?: boolean;
    /** If true, common stopwords (e.g. "the", "version") are filtered out. Default true. */
    skipStopwords?: boolean;
    /** If true, matching is case-sensitive. Default false. */
    caseSensitive?: boolean;
    /** Extra stopwords merged with the built-in list. Read-only. */
    customStopwords?: readonly string[];
}
/**
 * Result of a single keyword match probe against a text body.
 */
export interface MatchResult {
    /** Whether the keyword was found under the active options. */
    matched: boolean;
    /** The keyword that matched (helpful when matching from a list). */
    keyword?: string;
    /** Zero-based index of the first match in the searched text. */
    position?: number;
}
/**
 * Fully-resolved options (all fields required). Produced internally by
 * `resolveOptions` from a partial `KeywordMatchOptions` input. Exposed
 * so engine-level helpers can share a single concrete shape without
 * re-declaring an interface alongside function code.
 */
export interface ResolvedKeywordMatchOptions {
    minWordLength: number;
    requireBoundary: boolean;
    skipActionVerbs: boolean;
    skipStopwords: boolean;
    caseSensitive: boolean;
    customStopwords: readonly string[];
}
//# sourceMappingURL=keyword-matcher.d.ts.map