import { DeesElement, type TemplateResult } from '@design.estate/dees-element'; import * as interfaces from '../../../dist_ts_interfaces/index.js'; declare global { interface HTMLElementTagNameMap { 'dns-provider-form': DnsProviderForm; } } /** * Reactive credential form for a DNS provider. Renders the type picker * and the credential fields for the currently-selected type. * * Provider-agnostic — driven entirely by `dnsProviderTypeDescriptors` from * `ts_interfaces/data/dns-provider.ts`. Adding a new provider type means * appending one entry to the descriptors array; this form picks it up * automatically. * * Usage: * * const formEl = document.createElement('dns-provider-form'); * formEl.providerName = 'My provider'; * // ... pass element into a DeesModal as content ... * // on submit: * const data = formEl.collectData(); * // → { name, type, credentials } * * In edit mode, set `lockType = true` so the user cannot change provider * type after creation (credentials shapes don't transfer between types). */ export declare class DnsProviderForm extends DeesElement { /** Pre-populated provider name. */ accessor providerName: string; /** * Currently selected provider type. Initialized to the first user-creatable * descriptor; caller can override before mounting (e.g. for edit dialogs). * The built-in 'dcrouter' pseudo-provider is excluded from the picker — * operators cannot create another one. */ accessor selectedType: interfaces.data.TDnsProviderType; /** When true, hide the type picker — used in edit dialogs. */ accessor lockType: boolean; /** * Help text shown above credentials. Useful for edit dialogs to indicate * that fields can be left blank to keep current values. */ accessor credentialsHint: string; /** Internal map of credential field values, keyed by the descriptor's `key`. */ accessor credentialValues: Record; static styles: import("@design.estate/dees-element").CSSResult[]; render(): TemplateResult; /** * Read the form values and assemble the create/update payload. * Returns the typed credentials object built from the descriptor's keys. */ collectData(): Promise<{ name: string; type: interfaces.data.TDnsProviderType; credentials: interfaces.data.TDnsProviderCredentials; credentialsTouched: boolean; } | null>; }