/**
 * Supported DNS record types.
 */
export type TDnsRecordType = 'A' | 'AAAA' | 'CNAME' | 'MX' | 'TXT' | 'NS' | 'SOA' | 'CAA';
/**
 * Where a DNS record came from.
 *
 * - 'local'  → originated in this dcrouter (created via UI / API)
 * - 'synced' → pulled from an upstream provider (Cloudflare, foreign
 *              dcrouter, …) during a sync operation
 */
export type TDnsRecordSource = 'local' | 'synced';
/**
 * A DNS record. For dcrouter-hosted (authoritative) domains, the record is
 * registered with the embedded smartdns.DnsServer. For provider-managed
 * domains, the record is mirrored from / pushed to the provider API and
 * `providerRecordId` holds the provider's internal record id (for updates
 * and deletes).
 */
export interface IDnsRecord {
    id: string;
    /** ID of the parent IDomain. */
    domainId: string;
    /** Fully qualified record name (e.g. 'www.example.com'). */
    name: string;
    type: TDnsRecordType;
    /**
     * Record value as a string. For MX records, formatted as
     * `<priority> <exchange>` (e.g. `10 mail.example.com`).
     */
    value: string;
    /** TTL in seconds. */
    ttl: number;
    /** Cloudflare-specific: whether the record is proxied through Cloudflare. */
    proxied?: boolean;
    source: TDnsRecordSource;
    /** Provider's internal record id (for updates/deletes). Only set for provider records. */
    providerRecordId?: string;
    createdAt: number;
    updatedAt: number;
    createdBy: string;
}
