import type { IEmailDnsRecordIntent, TDnsRecordStatus, } from '../../ts_interfaces/data/email-domain.js'; /** Project one durable reconciliation intent into the operator-facing DNS status. */ export function projectMailDnsIntentStatus( intent: IEmailDnsRecordIntent | undefined, ): TDnsRecordStatus { if (!intent) return 'unchecked'; if ( intent.verificationOutcome === 'duplicate' || intent.verificationOutcome === 'conflict' || intent.verificationOutcome === 'invalid' || intent.status === 'conflict' || intent.status === 'failed' ) return 'invalid'; if (intent.verificationOutcome === 'missing') return 'missing'; if (intent.verificationOutcome === 'valid' && intent.status === 'valid') return 'valid'; return 'unchecked'; } /** Aggregate matching intents with deterministic operator-facing precedence. */ export function projectMailDnsIntentAggregateStatus( intents: IEmailDnsRecordIntent[], predicate: (intent: IEmailDnsRecordIntent) => boolean, ): TDnsRecordStatus { const selected = intents.filter(predicate); if (selected.length === 0) return 'unchecked'; const statuses = selected.map(projectMailDnsIntentStatus); if (statuses.includes('invalid')) return 'invalid'; if (statuses.includes('missing')) return 'missing'; if (statuses.includes('unchecked')) return 'unchecked'; return 'valid'; }