import type { AuthoredRuleOverride, NormalizedRule } from '../../domain/models/normalized-rule'; export type OverrideField = 'enabled' | 'severity' | 'blocking'; export interface OverrideRecord { readonly ruleId: string; readonly field: OverrideField; readonly from: string | boolean; readonly to: string | boolean; readonly approvedBy?: string; readonly expiresOn?: string; readonly source: string; } export type OverrideIssueCode = 'OVR-EXPIRED' | 'OVR-UNKNOWN-RULE' | 'OVR-NOT-SELECTED' | 'OVR-NOOP' | 'OVR-INVALID-SEVERITY' | 'OVR-BLOCKING-REMOVED' | 'OVR-UNAPPROVED-DOWNGRADE'; export interface OverrideIssue { readonly code: OverrideIssueCode; readonly ruleId: string; readonly message: string; readonly source: string; } export declare const FATAL_OVERRIDE_CODES: ReadonlySet; export interface OverridesReport { readonly applied: OverrideRecord[]; readonly rejected: OverrideIssue[]; readonly source?: string; } export declare function emptyOverridesReport(): OverridesReport; export interface RuleOverridesDocument { readonly $schema?: string; readonly tenantId: string; readonly version: string; readonly effectiveDate: string; readonly approvedBy: string; readonly rules: Readonly>; } export interface RuleOverridesInput { readonly document: RuleOverridesDocument; readonly source: string; } export interface OverridesOutcome { readonly rules: NormalizedRule[]; readonly disabled: NormalizedRule[]; readonly applied: OverrideRecord[]; readonly rejected: OverrideIssue[]; } export declare function normaliseOverrideSeverity(raw: string): NormalizedRule['severity'] | undefined; export declare function isOverrideExpired(expiresOn: string, now: Date): boolean; export declare function applyRuleOverrides(rules: readonly NormalizedRule[], overrides: RuleOverridesInput | undefined, now: Date, options?: { readonly corpus?: readonly NormalizedRule[]; }): OverridesOutcome;