/** Field that can be checked in a lint condition.
 * Note: 'estimatedHours' maps to spec.estimation.devHours,
 *       'priority' maps to spec.difficulty,
 *       'description' and 'acceptanceCriteria' map to spec.title (used as a text proxy).
 */
export type LintField = 'tags' | 'acceptanceCriteria' | 'estimatedHours' | 'priority' | 'description' | 'title';
/** Operator for a lint condition. */
export type LintOperator = 'includes' | 'not-includes' | 'min-length' | 'max-length' | 'any-contains' | 'none-contain' | 'greater-than' | 'less-than' | 'exists' | 'not-exists';
/** A single lint condition that checks a field against a value. */
export interface LintCondition {
    field: LintField;
    operator: LintOperator;
    value?: string | number;
}
/** A lint rule with a name, condition, and severity. */
export interface LintRule {
    id: string;
    name: string;
    description: string;
    /** Optional guard condition — rule only applies when this is true. */
    when?: LintCondition;
    /** Condition that MUST be satisfied. */
    then: LintCondition;
    severity: 'warning' | 'error';
    appliesTo: {
        tags?: string[];
        all?: boolean;
    };
    createdAt: string;
}
/** A single lint violation found during a lint run. */
export interface LintViolation {
    specId: string;
    ruleId: string;
    ruleName: string;
    message: string;
    severity: 'warning' | 'error';
    field: LintField;
}
/** Result of running lint on a project or spec. */
export interface LintRunResult {
    projectPath: string;
    specIds: string[];
    violations: LintViolation[];
    errorCount: number;
    warningCount: number;
    rulesApplied: number;
    passedSpecs: number;
    failedSpecs: number;
}
/** Internal storage shape for lint rules JSON file. */
export interface LintRulesData {
    rules: LintRule[];
    updatedAt: string;
}
export interface DefineLintRuleInput {
    projectPath: string;
    name: string;
    description: string;
    when?: LintCondition;
    then: LintCondition;
    severity: 'warning' | 'error';
    appliesTo: {
        tags?: string[];
        all?: boolean;
    };
}
export interface ListLintRulesInput {
    projectPath: string;
}
export interface RunSpecLintInput {
    projectPath: string;
    specId?: string;
}
export interface DeleteLintRuleInput {
    projectPath: string;
    ruleId: string;
}
//# sourceMappingURL=spec-lint.d.ts.map