import * as react_jsx_runtime from 'react/jsx-runtime';
import { ReactNode, HTMLAttributes } from 'react';
import { BagFunction } from '../../utils/bagFunctions.js';
import { LabelProps } from '../user-action/Label.js';

type ErrorShowBehaviour = 'always' | 'whenTouched';
type FormElementWrapperBag = {
    'touched': boolean;
    'onTouched': (isTouched?: boolean) => void;
    'invalid': boolean;
    'required': boolean;
    'disabled': boolean;
    'aria-describedby': string;
    'aria-labelby': string;
    'id': string;
};
type FormElementWrapperProps = {
    children: BagFunction<FormElementWrapperBag>;
    id?: string;
    required?: boolean;
    disabled?: boolean;
    isTouched?: boolean;
    label?: ReactNode;
    labelProps?: Omit<LabelProps, 'children'>;
    errorShowBehaviour?: ErrorShowBehaviour;
    error?: ReactNode;
    errorProps?: Omit<HTMLAttributes<HTMLParagraphElement>, 'children'>;
    description?: ReactNode;
    descriptionProps?: Omit<HTMLAttributes<HTMLParagraphElement>, 'children'>;
    containerClassName?: string;
};
declare const FormElementWrapper: ({ children, id, required, disabled, isTouched: initialIsTouched, label, labelProps, errorShowBehaviour, error, errorProps, description, descriptionProps, containerClassName, }: FormElementWrapperProps) => react_jsx_runtime.JSX.Element;

export { FormElementWrapper, type FormElementWrapperProps };
