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.
 *
 * @remarks
 * Actual limitations:
 * - The first child of the form field must be the control element.
 *
 * @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 label - The part representing the label associated with the form field.
 * @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.
 *
 * @cssprop {String} --cell-padding-top - The padding at the top of the cell.
 * @cssprop {String} --cell-padding-right - The padding at the right of the cell.
 * @cssprop {String} --cell-padding-bottom - The padding at the bottom of the cell.
 * @cssprop {String} --cell-padding-left - The padding at the left of the cell.
 * @cssprop {String} --cell-gap - The gap between cells.
 *
 * @dependency {StackElement} - The Stack element for layout management.
 * @dependency {ErrorElement} - The Error element for displaying error messages.
 * @dependency {HintElement} - The Hint element for providing hints to the user.
 * @dependency {TextElement} - The Text element for displaying textual information.
 * @dependency {TextBoxElement} - The Text Box element for user input.
 * @dependency {TooltipElement} - The Tooltip element for additional contextual information.
 *
 * @example
 * ```html
 * <mosaik-form-field>
 *   <label for="username">Username</label>
 *   <text-box-element id="username"></text-box-element>
 *   <hint-element>Enter your desired username</hint-element>
 *   <error-element>Username is required</error-element>
 * </mosaik-form-field>
 * ```
 *
 * @public
 */
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 `{@link is}` property.
     * The `{@link 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