/** Known domains that can be detected from spec content. */
export type KnownDomain = 'payments' | 'authentication' | 'authorization' | 'file-upload' | 'email' | 'notifications' | 'search' | 'mobile-offline' | 'realtime' | 'background-jobs' | 'api-public' | 'data-export' | 'multi-tenant' | 'gdpr';
/** Internal entry for domain keyword detection (not domain-specific). */
export interface DomainKeywordEntry {
    domain: KnownDomain;
    keywords: string[];
}
/** A single best-practice criterion within a domain. */
export interface DomainBestPractice {
    /** Unique identifier for this criterion (e.g. "payments-idempotency-key") */
    id: string;
    /** Domain this criterion belongs to */
    domain: string;
    /** Short label shown in suggestions */
    label: string;
    /** Full acceptance criterion text to inject */
    criterion: string;
    /** Whether missing this criterion is critical (blocks readiness) */
    critical: boolean;
    /** Keywords that indicate this criterion is already covered */
    coverageKeywords: string[];
}
/** Result of detecting domains in a spec. */
export interface DomainDetectionResult {
    /** Detected domain names */
    domains: string[];
    /** How each domain was detected */
    evidence: Record<string, string[]>;
    /** Combined spec text used for detection */
    analyzedText: string;
}
/** Criteria suggestion output per domain. */
export interface CriteriaSuggestion {
    /** Domain name */
    domain: string;
    /** Criteria that should be added (not yet covered) */
    suggestedCriteria: string[];
    /** Criteria already covered in the spec */
    alreadyCovered: string[];
    /** IDs of the underlying DomainBestPractice records */
    suggestedIds: string[];
    /** Whether any critical criteria are missing */
    hasCriticalGaps: boolean;
}
/** Full suggest_criteria tool response. */
export interface SuggestCriteriaResult {
    specId: string;
    specTitle: string;
    suggestions: CriteriaSuggestion[];
    /** Total number of suggested criteria across all domains */
    totalSuggested: number;
    /** Whether any critical criteria are missing */
    hasCriticalGaps: boolean;
}
/** inject_criteria tool response. */
export interface InjectCriteriaResult {
    specId: string;
    injectedCount: number;
    injectedCriteria: string[];
    updatedFilePath: string;
}
//# sourceMappingURL=domain-criteria.d.ts.map