/**
 * Cloudflare DNS Provider
 * API documentation: https://developers.cloudflare.com/api/resources/dns/subresources/records/
 */
import type { CreateRecordResult, DeleteRecordResult, DnsProvider, DnsRecord, DnsRecordType, ListRecordsResult } from './types';
export declare class CloudflareProvider implements DnsProvider {
    readonly name = "cloudflare";
    private apiToken;
    private zoneCache;
    constructor(apiToken: string);
    /**
     * Make an authenticated API request to Cloudflare
     */
    private request;
    /**
     * Get the root domain from a full domain name
     * e.g., "api.example.com" -> "example.com"
     */
    private getRootDomain;
    /**
     * Get Zone ID for a domain (with caching)
     */
    private getZoneId;
    /**
     * Get the full record name
     * Cloudflare stores records with full domain names
     */
    private getFullRecordName;
    /**
     * Convert DnsRecord to Cloudflare record format
     */
    private toCloudflareRecord;
    /**
     * Convert Cloudflare record to DnsRecordResult format
     */
    private fromCloudflareRecord;
    createRecord(domain: string, record: DnsRecord): Promise<CreateRecordResult>;
    upsertRecord(domain: string, record: DnsRecord): Promise<CreateRecordResult>;
    deleteRecord(domain: string, record: DnsRecord): Promise<DeleteRecordResult>;
    listRecords(domain: string, type?: DnsRecordType): Promise<ListRecordsResult>;
    canManageDomain(domain: string): Promise<boolean>;
    /**
     * List all domains (zones) managed by this Cloudflare account
     */
    listDomains(): Promise<string[]>;
    /**
     * Get zone details (Cloudflare-specific)
     */
    getZoneDetails(domain: string): Promise<{
        id: string;
        name: string;
        status: string;
        nameServers: string[];
        paused: boolean;
    } | null>;
    /**
     * Purge cache for a domain (Cloudflare-specific)
     */
    purgeCache(domain: string, options?: {
        purgeEverything?: boolean;
        files?: string[];
        tags?: string[];
        hosts?: string[];
    }): Promise<boolean>;
    /**
     * Get proxy status for a record (Cloudflare-specific)
     * Returns whether a record is proxied through Cloudflare
     */
    getRecordProxyStatus(domain: string, record: DnsRecord): Promise<boolean | null>;
    /**
     * Update proxy status for a record (Cloudflare-specific)
     */
    setRecordProxyStatus(domain: string, record: DnsRecord, proxied: boolean): Promise<boolean>;
}
