/**
 * DNS record validation status for a single email-related record (MX, SPF, DKIM, DMARC).
 */
export type TDnsRecordStatus = 'valid' | 'missing' | 'invalid' | 'unchecked';
/**
 * An email domain managed by dcrouter.
 *
 * Each email domain is linked to an existing dcrouter DNS domain (dcrouter-hosted
 * or provider-managed). The DNS management path is inherited from the linked domain
 * — no separate DNS mode is needed.
 */
export interface IEmailDomain {
    id: string;
    /** Fully qualified email domain name (e.g. 'example.com' or 'mail.example.com'). */
    domain: string;
    /** ID of the linked dcrouter DNS domain — determines how DNS records are managed. */
    linkedDomainId: string;
    /** Optional subdomain prefix (e.g. 'mail' for mail.example.com). Empty/undefined = bare domain. */
    subdomain?: string;
    /** DKIM configuration and key state. */
    dkim: IEmailDomainDkim;
    /** Optional per-domain rate limits. */
    rateLimits?: IEmailDomainRateLimits;
    /** DNS record validation status — populated by validateDns(). */
    dnsStatus: IEmailDomainDnsStatus;
    createdAt: string;
    updatedAt: string;
}
export interface IEmailDomainDkim {
    /** DKIM selector (default: 'default'). */
    selector: string;
    /** RSA key size in bits (default: 2048). */
    keySize: number;
    /** Base64-encoded public key — populated after key generation. */
    publicKey?: string;
    /** Whether automatic key rotation is enabled. */
    rotateKeys: boolean;
    /** Days between key rotations (default: 90). */
    rotationIntervalDays: number;
    /** ISO date of last key rotation. */
    lastRotatedAt?: string;
}
export interface IEmailDomainRateLimits {
    outbound?: {
        messagesPerMinute?: number;
        messagesPerHour?: number;
        messagesPerDay?: number;
    };
    inbound?: {
        messagesPerMinute?: number;
        connectionsPerIp?: number;
        recipientsPerMessage?: number;
    };
}
export interface IEmailDomainDnsStatus {
    mx: TDnsRecordStatus;
    spf: TDnsRecordStatus;
    dkim: TDnsRecordStatus;
    dmarc: TDnsRecordStatus;
    lastCheckedAt?: string;
}
/**
 * A single required DNS record for an email domain — used for display / copy-paste.
 */
export interface IEmailDnsRecord {
    type: 'MX' | 'TXT';
    name: string;
    value: string;
    status: TDnsRecordStatus;
}
