import { FieldConfig } from './types';
export type { FieldConfig } from './types';
export declare class Field {
    readonly el: HTMLDivElement;
    private labelEl;
    private labelTextNode;
    private requiredEl;
    private readonly contentEl;
    private readonly hintEl;
    private readonly errorEl;
    private readonly hintId;
    private readonly errorId;
    constructor(config: FieldConfig);
    /** Update the label text */
    setLabel(label: string): void;
    /** Show or hide an error message. Pass null to clear. */
    setError(error: string | null): void;
    /** Show or hide hint text. Pass null to clear. */
    setHint(hint: string | null): void;
    /** Toggle the required indicator */
    setRequired(required: boolean): void;
    /** Returns the content container div for mounting input components */
    getContentEl(): HTMLDivElement;
    /** Returns the hint element ID for aria-describedby linkage */
    getHintId(): string;
    /** Returns the error element ID for aria-describedby linkage */
    getErrorId(): string;
    /**
     * Connect an input element to this field for automatic aria-describedby linkage.
     * Sets up aria-describedby with hint and error IDs.
     * Also updates the label's htmlFor if the input has an ID.
     *
     * @param input The input element to connect (can be HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement, or any element with aria-describedby support)
     */
    connect(input: HTMLElement): void;
    /**
     * Disconnect an input element by removing the aria-describedby attribute.
     */
    disconnect(input: HTMLElement): void;
    /** Remove from the DOM */
    destroy(): void;
    private appendRequiredIndicator;
}
//# sourceMappingURL=index.d.ts.map