import * as plugins from '../plugins.js';
import type * as authInterfaces from '../data/auth.js';
import type { IEmailDomain, IEmailDnsRecord } from '../data/email-domain.js';
/**
 * List all email domains.
 */
export interface IReq_GetEmailDomains extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetEmailDomains> {
    method: 'getEmailDomains';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
    };
    response: {
        domains: IEmailDomain[];
    };
}
/**
 * Get a single email domain by id.
 */
export interface IReq_GetEmailDomain extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetEmailDomain> {
    method: 'getEmailDomain';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        domain: IEmailDomain | null;
    };
}
/**
 * Create an email domain. Links to an existing dcrouter DNS domain.
 * Generates DKIM keys and computes the required DNS records.
 */
export interface IReq_CreateEmailDomain extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CreateEmailDomain> {
    method: 'createEmailDomain';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        /** ID of the existing dcrouter DNS domain to link to. */
        linkedDomainId: string;
        /** Optional subdomain prefix (e.g. 'mail' for mail.example.com). Leave empty for bare domain. */
        subdomain?: string;
        /** DKIM selector (default: 'default'). */
        dkimSelector?: string;
        /** RSA key size (default: 2048). */
        dkimKeySize?: number;
        /** Enable automatic key rotation (default: false). */
        rotateKeys?: boolean;
        /** Days between rotations (default: 90). */
        rotationIntervalDays?: number;
    };
    response: {
        success: boolean;
        domain?: IEmailDomain;
        message?: string;
    };
}
/**
 * Update an email domain's configuration.
 */
export interface IReq_UpdateEmailDomain extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_UpdateEmailDomain> {
    method: 'updateEmailDomain';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
        rotateKeys?: boolean;
        rotationIntervalDays?: number;
        rateLimits?: IEmailDomain['rateLimits'];
    };
    response: {
        success: boolean;
        message?: string;
    };
}
/**
 * Delete an email domain.
 */
export interface IReq_DeleteEmailDomain extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteEmailDomain> {
    method: 'deleteEmailDomain';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
/**
 * Trigger DNS validation for an email domain.
 * Performs live lookups for MX, SPF, DKIM, and DMARC records.
 */
export interface IReq_ValidateEmailDomain extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ValidateEmailDomain> {
    method: 'validateEmailDomain';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        success: boolean;
        domain?: IEmailDomain;
        records?: IEmailDnsRecord[];
        message?: string;
    };
}
/**
 * Get the required DNS records for an email domain (for display / copy-paste).
 */
export interface IReq_GetEmailDomainDnsRecords extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetEmailDomainDnsRecords> {
    method: 'getEmailDomainDnsRecords';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        records: IEmailDnsRecord[];
    };
}
/**
 * Auto-provision DNS records for an email domain.
 * Creates any missing MX, SPF, DKIM, and DMARC records via the linked
 * domain's DNS path (dcrouter zone or provider API).
 */
export interface IReq_ProvisionEmailDomainDns extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ProvisionEmailDomainDns> {
    method: 'provisionEmailDomainDns';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        success: boolean;
        /** Number of records created. */
        provisioned?: number;
        message?: string;
    };
}
