export interface DnsRecord { id?: string; type: string; name: string; value: string; priority?: number; ttl?: number; } export interface ProviderCredentials { [key: string]: string | undefined; } export interface ProviderResult { success: boolean; message: string; } export interface CredentialField { name: string; label: string; secret: boolean; } export interface DnsProvider { id: string; name: string; nsPatterns: string[]; credentialFields: CredentialField[]; /** If true, this provider is detection-only and cannot create/delete records via API. */ detectionOnly?: boolean; validateCredentials(creds: ProviderCredentials): string | null; authenticate(creds: ProviderCredentials): Promise; listZones(creds: ProviderCredentials): Promise; listRecords(creds: ProviderCredentials, domain: string): Promise; createRecord(creds: ProviderCredentials, domain: string, record: DnsRecord): Promise; deleteRecord(creds: ProviderCredentials, domain: string, record: DnsRecord): Promise; updateRecord?(creds: ProviderCredentials, domain: string, oldRecord: DnsRecord, newRecord: DnsRecord): Promise; }