import type { ElementValueAccessorFn } from '../../../Forms/Accessors/Functions/ElementValueAccessorFn';
import type { FormRestoreReason } from '../../../Forms/FormRestoreReason';
import type { FormRestoreState } from '../../../Forms/FormRestoreState';
import type { FormValue } from '../../../Forms/FormValue';
import type { ElementValidatorFn } from '../../../Forms/Validators/VNext/Abstracts/Interfaces/IElementValidator';
import { CustomFormElement } from '../Abstracts/CustomFormElement';
import { ICustomFormElement } from '../Abstracts/Interfaces/ICustomFormElement';
import type { IFormFieldElementProps } from './IFormFieldElementProps';
declare const FormFieldElement_base: (abstract new (...args: Array<any>) => import("../../../Controls/Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../Behaviors/Labelable").ILabelableProps) & typeof CustomFormElement & import("../../../Controls/Behaviors/Themeable").IThemeableCtor;
/**
 * Form Field - A component that represents a form field with associated label, hints, and validation messages.
 *
 * @description
 * The FormFieldElement component is designed to handle the layout and presentation of form fields in a user-friendly manner.
 * It includes slots for displaying labels, error messages, hints, and additional information.
 * This component integrates with various other elements to provide a complete form field experience.
 *
 * @name Form Field
 * @element mosaik-form-field
 * @category Forms
 *
 * @slot - The default slot for the form field control.
 * @slot actions - Slot for additional information or helper text.
 *
 * @csspart detail - The part representing detailed information or additional text related to the form field.
 * @csspart error - The part representing error messages related to the form field.
 * @csspart hint - The part representing hints or suggestions for the form field.
 * @csspart label - The part representing the label associated with the form field.
 * @csspart root - The root part.
 * @csspart tip - The tip part.
 * @csspart title - The title part.
 *
 * @cssprop {String} --form-field-background-color - The field background color CSS custom property.
 * @cssprop {String} --form-field-font-family - The field font family CSS custom property.
 * @cssprop {String} --form-field-font-letter-spacing - The field font letter spacing CSS custom property.
 * @cssprop {String} --form-field-font-line-height - The field font line height CSS custom property.
 * @cssprop {String} --form-field-font-size - The field font size CSS custom property.
 * @cssprop {String} --form-field-font-text-decoration - The field font text decoration CSS custom property.
 * @cssprop {String} --form-field-font-text-transform - The field font text transform CSS custom property.
 * @cssprop {String} --form-field-font-weight - The field font weight CSS custom property.
 * @cssprop {String} --form-field-gap - The field gap CSS custom property.
 * @cssprop {String} --form-field-padding-bottom - The field padding bottom CSS custom property.
 * @cssprop {String} --form-field-padding-left - The field padding left CSS custom property.
 * @cssprop {String} --form-field-padding-right - The field padding right CSS custom property.
 * @cssprop {String} --form-field-padding-top - The field padding top CSS custom property.
 * @cssprop {String} --form-field-shadow - The field shadow CSS custom property.
 * @cssprop {String} --form-field-shadow-blur - The field shadow blur CSS custom property.
 * @cssprop {String} --form-field-shadow-color - The field shadow color CSS custom property.
 * @cssprop {String} --form-field-shadow-offset-x - The field shadow offset x CSS custom property.
 * @cssprop {String} --form-field-shadow-offset-y - The field shadow offset y CSS custom property.
 * @cssprop {String} --form-field-shadow-spread - The field shadow spread CSS custom property.
 * @cssprop {String} --form-field-transition-duration - The field transition duration CSS custom property.
 * @cssprop {String} --form-field-transition-mode - The field transition mode CSS custom property.
 * @cssprop {String} --form-field-transition-property - The field transition property CSS custom property.
 * @cssprop {String} --form-field-translate - The field translate CSS custom property.
 *
 * @dependency mosaik-error - The Error element.
 * @dependency mosaik-hint - The Hint element.
 * @dependency mosaik-text - The Text element.
 * @dependency mosaik-toggletip - The Toggletip element.
 *
 * @example
 * Basic form field with a text box:
 * ```html
 * <mosaik-form-field label="Username" name="username" hint="Enter your desired username">
 *   <mosaik-textbox></mosaik-textbox>
 * </mosaik-form-field>
 * ```
 *
 * @example
 * Required form field with error message:
 * ```html
 * <mosaik-form-field label="Email" name="email" required hint="We'll never share your email">
 *   <mosaik-textbox></mosaik-textbox>
 * </mosaik-form-field>
 * ```
 *
 * @public
 *
 * @remarks
 * Actual limitations:
 * - The first child of the form field must be the control element.
 */
export declare class FormFieldElement extends FormFieldElement_base implements IFormFieldElementProps, ICustomFormElement {
    private readonly _onChange;
    private readonly _onReset;
    private readonly _onTouched;
    private readonly _validatorInstances;
    private _error;
    private _hint;
    private _info;
    private _required;
    private _validators;
    private _accessor;
    private _validationMessage;
    private _control;
    private _controlValue;
    private _accessorInstance;
    private _invalid;
    private _name;
    private _isTouched;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     * The `is` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `error` property.
     *
     * @public
     * @attr
     */
    get error(): string;
    set error(value: string);
    /**
     * Gets or sets the `hint` property.
     *
     * @public
     * @attr
     */
    get hint(): string;
    set hint(value: string);
    /**
     * Gets or sets the `info` property.
     *
     * @public
     * @attr
     */
    get info(): string;
    set info(value: string);
    /**
     * @public
     * @readonly
     */
    get validators(): Array<ElementValidatorFn>;
    set validators(value: Array<ElementValidatorFn>);
    /**
     * Gets or sets the `accessor` property.
     *
     * @public
     */
    get accessor(): ElementValueAccessorFn<any> | null;
    set accessor(value: ElementValueAccessorFn<any> | null);
    /**
     * Gets or sets the `required` property.
     *
     * @public
     * @attr
     */
    get required(): boolean;
    set required(value: boolean);
    /**
     * Gets or sets the `validationMessage` property.
     *
     * @public
     * @override
     */
    get validationMessage(): string;
    private set validationMessage(value);
    /**
     * Gets or sets the `invalid` property.
     *
     * @public
     * @attr
     */
    get invalid(): boolean;
    private set invalid(value);
    /**
     * Gets or sets the `name` property.
     *
     * @public
     * @attr
     */
    get name(): string;
    set name(value: string);
    /**
     * @public
     * @override
     */
    checkValidity(): boolean;
    /**
     * @public
     * @override
     */
    reportValidity(): boolean;
    /**
     * @public
     */
    formDisabledCallback?(disabled: boolean): void;
    /**
     * @public
     */
    formResetCallback?(): void;
    /**
     * @public
     */
    formStateRestoreCallback?(state: FormRestoreState | null, reason: FormRestoreReason): void;
    /**
     * @public
     * @override
     */
    getFormValue(): FormValue | null;
    /**
     * @protected
     */
    protected onAccessorPropertyChange(prev?: ElementValueAccessorFn, next?: ElementValueAccessorFn): void;
    /**
     * @protected
     */
    protected onValidatorsPropertyChange(prev?: Array<ElementValidatorFn>, next?: Array<ElementValidatorFn>): void;
    /**
     * @protected
     */
    protected onDisabledPropertyChange(_prev?: boolean, next?: boolean): void;
    /**
     * @private
     */
    private invalidate;
}
/**
 * @public
 */
export declare namespace FormFieldElement {
    type Props = IFormFieldElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-form-field': FormFieldElement;
    }
}
export {};
//# sourceMappingURL=FormFieldElement.d.ts.map