import type { IDnsProviderClient } from './interfaces.js';
import type { TDnsProviderType, TDnsProviderCredentials } from '../../../dist_ts_interfaces/data/dns-provider.js';
/**
 * Instantiate a runtime DNS provider client from a stored DnsProviderDoc.
 *
 * @throws if the provider type is not supported.
 *
 * ## Adding a new provider (e.g. Route53)
 *
 * 1. **Type union** — extend `TDnsProviderType` in
 *    `ts_interfaces/data/dns-provider.ts` (e.g. `'cloudflare' | 'route53'`).
 * 2. **Credentials interface** — add `IRoute53Credentials` and append it to
 *    the `TDnsProviderCredentials` discriminated union.
 * 3. **Descriptor** — append a new entry to `dnsProviderTypeDescriptors` so
 *    the OpsServer UI picks up the new type and renders the right credential
 *    form fields automatically.
 * 4. **Provider class** — create `ts/dns/providers/route53.provider.ts`
 *    implementing `IDnsProviderClient`.
 * 5. **Factory case** — add a new `case 'route53':` below. The
 *    `_exhaustive: never` line will fail to compile until you do.
 * 6. **Index** — re-export the new class from `ts/dns/providers/index.ts`.
 */
export declare function createDnsProvider(type: TDnsProviderType, credentials: TDnsProviderCredentials): IDnsProviderClient;
