/**
 * Unified DNS Validator for ACM Certificates
 * Works with any DNS provider (Route53, Porkbun, GoDaddy, etc.)
 */
import type { DnsProvider, DnsProviderConfig } from './types';
export interface ValidationRecord {
    domainName: string;
    recordName: string;
    recordType: string;
    recordValue: string;
}
export interface CertificateValidationResult {
    certificateArn: string;
    validationRecords: ValidationRecord[];
    isNew: boolean;
    status: 'pending' | 'issued' | 'failed';
}
/**
 * Unified DNS Validator
 * Handles ACM certificate validation with any DNS provider
 */
export declare class UnifiedDnsValidator {
    private acm;
    private dnsProvider;
    constructor(dnsProvider: DnsProvider | DnsProviderConfig, acmRegion?: string);
    /**
     * Get the DNS provider being used
     */
    getProvider(): DnsProvider;
    /**
     * Request a certificate and create DNS validation records
     */
    requestAndValidate(params: {
        domainName: string;
        subjectAlternativeNames?: string[];
        waitForValidation?: boolean;
        maxWaitMinutes?: number;
    }): Promise<CertificateValidationResult>;
    /**
     * Create validation records for an existing certificate
     */
    createValidationRecords(params: {
        certificateArn: string;
        domain: string;
    }): Promise<{
        success: boolean;
        records: ValidationRecord[];
        errors: string[];
    }>;
    /**
     * Delete validation records (cleanup after certificate is issued)
     */
    deleteValidationRecords(params: {
        certificateArn: string;
        domain: string;
    }): Promise<{
        success: boolean;
        errors: string[];
    }>;
    /**
     * Find or create a certificate for a domain
     */
    findOrCreateCertificate(params: {
        domainName: string;
        subjectAlternativeNames?: string[];
        waitForValidation?: boolean;
        maxWaitMinutes?: number;
    }): Promise<CertificateValidationResult>;
    /**
     * Request certificate with common SANs (www and wildcard)
     */
    requestCertificateWithCommonSans(params: {
        domainName: string;
        includeWww?: boolean;
        includeWildcard?: boolean;
        additionalSans?: string[];
        waitForValidation?: boolean;
    }): Promise<CertificateValidationResult>;
    /**
     * Wait for validation options to become available
     */
    private waitForValidationOptions;
    /**
     * Get the status of a certificate
     */
    getCertificateStatus(certificateArn: string): Promise<{
        status: string;
        domainValidations: Array<{
            domain: string;
            status: string;
        }>;
    }>;
}
/**
 * Helper function to create a validator with Porkbun
 */
export declare function createPorkbunValidator(apiKey: string, secretKey: string, acmRegion?: string): UnifiedDnsValidator;
/**
 * Helper function to create a validator with GoDaddy
 */
export declare function createGoDaddyValidator(apiKey: string, apiSecret: string, acmRegion?: string, environment?: 'production' | 'ote'): UnifiedDnsValidator;
/**
 * Helper function to create a validator with Route53
 */
export declare function createRoute53Validator(region?: string, hostedZoneId?: string, acmRegion?: string): UnifiedDnsValidator;
