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<string, string>;
    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>;
}
