import type { RuleLevelConfig } from './RuleLevelConfig.ts';
/**
 * Configurable clean rule ids (levels can be set in `commands.clean.rules`).
 *
 * Hard safety rules (`clean.inside-root`, `clean.relative-pattern`) are always
 * enforced and cannot be disabled via config.
 */
export type CleanRuleId = 'clean.gitignored-all' | 'clean.gitignored-only';
/**
 * ESLint-style rule map for `xy clean`.
 *
 * @example
 * ```ts
 * rules: {
 *   'clean.gitignored-only': 'error', // default
 *   'clean.gitignored-all': 'off',    // default
 * }
 * ```
 */
export interface CleanRulesConfig {
    [ruleId: string]: RuleLevelConfig | undefined;
    'clean.gitignored-all'?: RuleLevelConfig;
    'clean.gitignored-only'?: RuleLevelConfig;
}
/**
 * Configuration for `xy clean` / `package-clean`.
 *
 * Cascades from root `xy.config.ts` to per-package configs. Array fields
 * (e.g. `patterns`, `include`, `exclude`) are unioned.
 *
 * Hard safety (always on, not configurable):
 * - `clean.inside-root` — patterns must resolve strictly inside the monorepo root
 * - `clean.relative-pattern` — patterns must be non-empty and package-relative
 *
 * Configurable rules (via `rules`):
 * - `clean.gitignored-only` (default: `error`) — only delete gitignored paths
 * - `clean.gitignored-all` (default: `off`) — also delete every gitignored path under the package
 */
export interface CleanConfig {
    /**
     * Exclude — package-relative patterns that are never cleaned, even when
     * matched by `patterns`, builtins, include, or `clean.gitignored-all`.
     * Always includes hard exclusions for `.git` (immutable) and defaults for
     * `node_modules`.
     */
    exclude?: string[];
    /**
     * Include — package-relative patterns that are always cleaned, bypassing
     * `clean.gitignored-only`. Still subject to hard safety and exclude.
     */
    include?: string[];
    /**
     * Additional package-relative glob patterns to clean. These extend the
     * built-in targets (`dist`, `build`) and are subject to
     * `clean.gitignored-only` when that rule is enabled.
     */
    patterns?: string[];
    /** Configurable clean rules. Hard safety rules cannot be toggled here. */
    rules?: CleanRulesConfig;
}
//# sourceMappingURL=CleanConfig.d.ts.map