import { CSpellReporter, CSpellSettings, CacheFormat, CacheStrategy, ReporterConfiguration, RunResult } from "@cspell/cspell-types";
import { GlobMatcher } from "cspell-glob";
//#region src/util/cache/CacheOptions.d.ts
interface CacheOptions {
  /**
  * The version of `cspell` that made the cache entry.
  * Cache entries must match the `major.minor` version.
  */
  version: string;
  /**
  * Store the info about processed files in order to only operate on the changed ones.
  */
  cache?: boolean;
  /**
  * Path to the cache location. Can be a file or a directory.
  * If none specified .cspellcache will be used.
  * The file will be created in the directory where the cspell command is executed.
  */
  cacheLocation?: string;
  /**
  * Strategy to use for detecting changed files, default: metadata
  */
  cacheStrategy?: CacheStrategy;
  /**
  * Resets the cache
  */
  cacheReset?: boolean;
  /**
  * Format of the cache file.
  * - `legacy` - use absolute paths in the cache file
  * - `universal` - use a sharable format.
  * @default 'legacy'
  */
  cacheFormat?: CacheFormat;
}
//#endregion
//#region src/reporters/LintFileResult.d.ts
type FinalizedReporter = Required<CSpellReporter>;
//#endregion
//#region src/options.d.ts
interface LinterOptions extends Omit<BaseOptions, "config">, Omit<CacheOptions, "version">, ReporterConfiguration {
  /**
  * Display verbose information
  */
  verbose?: boolean;
  /**
  * Level of verbosity (higher number = more verbose).
  */
  verboseLevel?: number;
  /**
  * Show extensive output.
  */
  debug?: boolean;
  /**
  * a globs to exclude files from being checked.
  */
  exclude?: string[] | string;
  /**
  * Only report the words, no line numbers or file names.
  */
  wordsOnly?: boolean;
  /**
  * unique errors per file only.
  */
  unique?: boolean;
  /**
  * root directory, defaults to `cwd`
  */
  root?: string;
  /**
  * Determine if files / directories starting with `.` should be part
  * of the glob search.
  * @default false
  */
  dot?: boolean;
  /**
  * Show part of a line where an issue is found.
  * - if true, it will show the default number of characters on either side.
  * - if a number, the number of characters to show on either side of the issue.
  */
  showContext?: boolean | number;
  /**
  * Show suggestions for spelling errors.
  */
  showSuggestions?: boolean;
  /**
  * Enable filtering out files matching globs found in `.gitignore` files.
  */
  gitignore?: boolean;
  /**
  * Stop searching for a `.gitignore`s when a root is reached.
  */
  gitignoreRoot?: string | string[];
  /**
  * List of files that contains the paths to files to be spell checked.
  * The files in the lists will be filtered against the glob patterns.
  * - an entry of `stdin` means to read the file list from **`stdin`**
  * The resulting files are filtered against the `files` globs found in the configuration.
  */
  fileList?: string[] | undefined;
  /**
  * List of file paths to spell check. These can be relative or absolute
  * paths, but not Globs. Relative paths are relative to {@link LinterOptions.root}.
  * The files are combined with the file paths read from {@link LinterOptions.fileList}.
  * These files are filtered against the `files` globs found in the configuration.
  */
  files?: string[] | undefined;
  /**
  * Alias of {@link LinterOptions.files}.
  */
  file?: string[] | undefined;
  /**
  * Use the `files` configuration to filter the files found.
  */
  filterFiles?: boolean | undefined;
  /**
  * Files must be found and processed otherwise it is considered an error.
  */
  mustFindFiles?: boolean;
  /**
  * List of dictionary names to use.
  */
  dictionary?: string[] | undefined;
  /**
  * List of dictionary names to disable.
  */
  disableDictionary?: string[] | undefined;
  /**
  * Stop processing and exit if an issue or error is found.
  */
  failFast?: boolean;
  /**
  * Keep going even if an error is found.
  */
  continueOnError?: boolean;
  /**
  * Optional list of reporters to use, overriding any specified in the
  * configuration.
  */
  reporter?: string[];
  /**
  * Load and parse documents, but do not spell check.
  */
  skipValidation?: boolean;
  /**
  * Path to configuration file.
  */
  config?: string | CSpellConfigFile;
  /**
  * Specify the maximum file size to be checked.
  * The value can include a units suffix: `KB`, `MB`, `B`, `GB`.
  * The numeric value can include a decimal.
  * Example: 1.5MB
  */
  maxFileSize?: string | undefined;
}
interface TraceOptions extends BaseOptions {
  /**
  * Use stdin for the input.
  */
  stdin?: boolean;
  /**
  * Enable the `allowCompoundWords` option.
  */
  allowCompoundWords?: boolean;
  /**
  * Ignore case and accents when searching for words.
  */
  ignoreCase?: boolean;
  /**
  * Show all dictionaries, not just the ones that contain the words or are enabled.
  */
  all?: boolean;
  /**
  * Show only dictionaries that contain the words.
  * If `all` is set, this option is ignored.
  */
  onlyFound?: boolean;
  /**
  * Names of dictionaries to use.
  */
  dictionary?: string[] | undefined;
  /**
  * Configure how to display the dictionary path.
  */
  dictionaryPath?: "hide" | "long" | "short" | "full";
}
interface SuggestionOptions extends BaseOptions {
  /**
  * Strict case and accent checking
  * @default true
  */
  strict?: boolean;
  /**
  * List of dictionaries to use. If specified, only that list of dictionaries will be used.
  */
  dictionaries?: string[] | undefined;
  /**
  * The number of suggestions to make.
  * @default 8
  */
  numSuggestions?: number;
  /**
  * Max number of changes / edits to the word to get to a suggestion matching suggestion.
  * @default 4
  */
  numChanges?: number;
  /**
  * If multiple suggestions have the same edit / change "cost", then included them even if
  * it causes more than `numSuggestions` to be returned.
  * @default true
  */
  includeTies?: boolean;
  /**
  * Use stdin for the input
  */
  useStdin?: boolean | undefined;
  /**
  * Use REPL interface for making suggestions.
  */
  repl?: boolean;
}
interface DictionariesOptions {
  /**
  * Path to configuration file.
  */
  config?: string;
  /**
  * Load the default configuration
  * @default true
  */
  defaultConfiguration?: boolean;
  /**
  * Use color in the output.
  * `true` to force color, `false` to turn off color.
  * `undefined` to use color if the output is a TTY.
  */
  color?: boolean | undefined;
  /**
  * Show enabled:
  * - `true` to show only enabled dictionaries.
  * - `false` to show only disabled dictionaries.
  * - `undefined` to show all dictionaries.
  */
  enabled?: boolean | undefined;
  /**
  * The locale to use when listing dictionaries.
  */
  locale?: string;
  /**
  * The file type to use when listing dictionaries.
  */
  fileType?: string;
  /**
  * show the language locales supported by the dictionary.
  */
  showLocales?: boolean;
  /**
  * show the file types supported by the dictionary.
  */
  showFileTypes?: boolean;
  /**
  * Dhow the location of the dictionary.
  */
  showLocation?: boolean;
  pathFormat?: "hide" | "short" | "long" | "full";
}
interface LegacyOptions {
  local?: string;
}
interface BaseOptions {
  /**
  * Path to configuration file.
  */
  config?: string;
  /**
  * Programming Language ID.
  */
  languageId?: string;
  /**
  * Locale to use.
  */
  locale?: string;
  /**
  * Load the default configuration
  * @default true
  */
  defaultConfiguration?: boolean;
  /**
  * Check In-Document CSpell directives for correctness.
  */
  validateDirectives?: boolean;
  /**
  * Return an exit code if there are issues found.
  * @default true
  */
  exitCode?: boolean;
  /**
  * Execution flags.
  * Used primarily for releasing experimental features.
  * Flags are of the form key:value
  */
  flag?: string[];
  /**
  * Use color in the output.
  * `true` to force color, `false` to turn off color.
  * `undefined` to use color if the output is a TTY.
  */
  color?: boolean | undefined;
}
interface LinterCliOptions extends LinterOptions {
  /**
  * Show legacy output
  */
  legacy?: boolean;
  /**
  * Show summary at the end
  */
  summary?: boolean;
  /**
  * Show issues
  */
  issues?: boolean;
  /**
  * Run in silent mode.
  * @default false
  */
  silent?: boolean;
  /**
  * Show progress
  */
  progress?: boolean;
  /**
  * issues are shown with a relative path to the root or `cwd`
  */
  relative?: boolean;
  /**
  * Files must be found or cli will exit with an error.
  */
  mustFindFiles?: boolean;
  /**
  * Generate a summary report of issues.
  */
  issuesSummaryReport?: boolean;
  /**
  * Generate a summary report of performance.
  */
  showPerfSummary?: boolean;
  /**
  * Set the template to use when reporting issues.
  *
  * The template is a string that can contain the following placeholders:
  * - `$filename` - the file name
  * - `$col` - the column number
  * - `$row` - the row number
  * - `$text` - the word that is misspelled
  * - `$message` - the issues message: "unknown word", "word is misspelled", etc.
  * - `$messageColored` - the issues message with color based upon the message type.
  * - `$uri` - the URI of the file
  * - `$suggestions` - suggestions for the misspelled word (if requested)
  * - `$quickFix` - possible quick fixes for the misspelled word.
  * - `$contextFull` - the full context of the misspelled word.
  * - `$contextLeft` - the context to the left of the misspelled word.
  * - `$contextRight` - the context to the right of the misspelled word.
  *
  * Color is supported using the following template pattern:
  * - `{<style[.style]> <text>}` - where `<style>` is a style name and `<text>` is the text to style.
  *
  * Styles
  * - `bold`, `italic`, `underline`, `strikethrough`, `dim`, `inverse`
  * - `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white`
  *
  * Example:
  * @example "{green $filename}:{yellow $row}:{yellow $col} $message {red $text} $quickFix {dim $suggestions}"
  * @since 8.12.0
  */
  issueTemplate?: string;
  /**
  * Prevents searching for local configuration files
  *
  * When `--no-config-search` is passed on the command line, this will be `true`.
  * If the flag is not passed, it defaults to `false`.
  */
  configSearch?: boolean;
  /**
  * Directory paths at which CSpell should stop searching for configuration files.
  *
  * These are set via one or more `--stop-config-search-at <dir>` CLI options.
  * If no flags are passed, this will be `undefined`.
  */
  stopConfigSearchAt?: string[];
  report?: ReportChoices | undefined;
}
type ReportChoices = "all" | "simple" | "typos" | "flagged";
interface CSpellConfigFile {
  url: URL;
  settings: CSpellSettings;
}
//#endregion
export { SuggestionOptions as a, LinterCliOptions as i, DictionariesOptions as n, TraceOptions as o, LegacyOptions as r, FinalizedReporter as s, BaseOptions as t };
//# sourceMappingURL=options-1v2EW2_1.d.ts.map