import { EventEmitter } from "../../stencil-public-runtime";
import type { FormComponent, RuntimeComponent } from "../../types/components";
import { type CountryData } from "../../utils/country-data";
export declare class AuthheroNode {
    /**
     * The component configuration to render.
     * Follows Auth0 Forms component schema.
     */
    component: FormComponent | RuntimeComponent;
    /**
     * Current value for field components.
     */
    value?: string;
    /**
     * Whether the component is disabled.
     */
    disabled: boolean;
    /**
     * Whether the password field is visible.
     */
    passwordVisible: boolean;
    /**
     * Selected country for TEL input with country selector.
     */
    selectedCountry: CountryData;
    /**
     * Local phone number (without dial code) for TEL input.
     */
    localPhoneNumber: string;
    /**
     * Whether the country dropdown is open.
     */
    countryDropdownOpen: boolean;
    /**
     * Whether the TEL field is currently in email mode (allow_email config).
     * When true, the value is emitted as-is without dial code prefix.
     */
    telEmailMode: boolean;
    /**
     * Emitted when a field value changes.
     */
    fieldChange: EventEmitter<{
        id: string;
        value: string;
    }>;
    /**
     * Emitted when a button is clicked.
     */
    buttonClick: EventEmitter<{
        id: string;
        type: string;
        value?: string;
    }>;
    componentChanged(): void;
    valueChanged(): void;
    componentWillLoad(): void;
    private initCountryFromConfig;
    /**
     * Hydrate localPhoneNumber (and selectedCountry) from the effective value
     * for TEL fields. The full value is stored as `{dialCode}{localNumber}`,
     * e.g. "+15551234567".
     */
    private initTelValue;
    private handleCountryChange;
    /**
     * Try to detect a dial code prefix in the raw input (e.g. "+46", "0046")
     * and update selectedCountry accordingly. Returns the local number portion
     * (after the dial code) if a match was found, or null if no match.
     */
    private detectDialCodeFromInput;
    /**
     * Shared phone-input cleaning logic. Detects dial codes, strips non-phone
     * characters, updates the input value, and emits the full number.
     * @param allowPlus When true, uses a two-pass clean that first keeps '+'
     *   then strips it (for combined tel+email fields). When false, strips '+'
     *   in a single pass (phone-only fields where the picker provides the prefix).
     */
    private processPhoneInput;
    private handlePhoneInput;
    private handleInput;
    private handleKeyDown;
    private handleCheckbox;
    /**
     * Returns the effective value for the field: uses `this.value` if set,
     * otherwise falls back to `config.default_value` (resolved by the server).
     */
    private getEffectiveValue;
    /**
     * Sanitize a string for use in CSS class names and part tokens.
     * Replaces spaces and special characters with hyphens, converts to lowercase.
     */
    private sanitizeForCssToken;
    private handleButtonClick;
    private togglePasswordVisibility;
    /**
     * Get error messages from the component.
     */
    private getErrors;
    /**
     * Render a floating label for a field.
     */
    private renderFloatingLabel;
    /**
     * Render a label for a field (non-floating version for checkboxes etc).
     */
    private renderLabel;
    /**
     * Get the input field class string.
     * Uses string instead of object to avoid hydration mismatch.
     */
    private getInputFieldClass;
    /**
     * Render the eye icon for password visibility toggle.
     */
    private renderPasswordToggle;
    /**
     * Render error messages.
     */
    private renderErrors;
    /**
     * Render hint text.
     */
    private renderHint;
    private renderDivider;
    private renderHtml;
    private renderImage;
    private renderRichText;
    private renderNextButton;
    private renderPreviousButton;
    private renderJumpButton;
    private renderResendButton;
    private renderTextField;
    private renderEmailField;
    private renderPasswordField;
    private renderNumberField;
    private renderTelField;
    private renderUrlField;
    private renderDateField;
    private renderBooleanField;
    private renderLegalField;
    private renderCountryField;
    private renderDropdownField;
    private renderChoiceField;
    private renderSocialField;
    render(): any;
}
