import { ReactNode } from 'react';
import type { FormContextProps, FormErrors, FormValues } from '../Form/types';
import './FormField.less';
export declare const BASE_FORM_FIELD_CLASS_NAME: string;
export type FormFieldApi = {
    getValues: () => Readonly<FormValues> | null | undefined;
    getId: () => string | undefined;
    getName: () => string | undefined;
    getValue: <T>(def?: T) => any | T;
    setValue: (value: any) => void;
    isDisabled: () => boolean;
    getFullDescription: () => ReactNode;
    getRequiredMark: () => ReactNode;
    getErrors: () => FormErrors | undefined;
    getSeparator?: () => ReactNode;
};
export interface FormFieldProps {
    /**
     * Field name.
     * @since 0.0.54
     */
    name?: string;
    /**
     * Field ID.
     * @since 0.0.59
     */
    id?: string;
    /**
     * Field value.
     * @deprecated Use [Form](#!/Form) values.
     * @since 0.0.57
     */
    value?: any;
    /**
     * A callback function, can be executed when the value is changing.
     * @since 0.4.1
     */
    onChange?: (value: any) => void;
    /**
     * Field label.
     * @since 0.0.54
     */
    label?: ReactNode;
    /**
     * Field description.
     * @since 0.0.57
     */
    description?: ReactNode;
    /**
     * Show long descriptions in popover after clicking on "( i )" icon
     * @since 3.14.0
     */
    fullDescription?: ReactNode;
    /**
     * Field errors.
     *  @deprecated Use [Form](#!/Form) errors.
     * @since 0.0.57
     */
    errors?: FormErrors;
    /**
     * Indicates whether field is required.
     * @since 0.0.54
     */
    required?: boolean;
    /**
     * Content of the `FormField`.
     * @since 0.0.54
     */
    children?: ((props: FormFieldApi) => ReactNode) | ReactNode;
    /**
     * If 'true', a field will be multiple. You can also limit the number of fields with a value like { max: 5 }.
     * @since 1.12.0
     */
    multi?: boolean | {
        max: number;
    };
    /**
     * @ignore Disabled state of multiple field.
     */
    disabled?: boolean;
    /**
     * Localization messages
     * @since 1.12.0
     */
    locale?: {
        addMode: ReactNode;
        remove: ReactNode;
    };
    /**
     * Callback which called for all values. If it returns 'true' a pseudo-link 'Add more' will be disabled
     * @ignore
     * @deprecated
     */
    addMoreValidator?: () => void;
    /**
     * A callback function, can be executed when the row is removed.
     * @since 1.12.0
     */
    onRemoveRow?: (index: number) => void;
    /**
     * @ignore
     */
    className?: string;
    /**
     * @ignore
     */
    baseClassName?: string;
    /**
     * @ignore
     */
    form?: FormContextProps;
    /**
     * Vertical or horizontal field view.
     * If it is not defined explicitly, the vertical mode will use from Form or Section components.
     * @since 3.13.0
     */
    vertical?: boolean;
    /**
     * @ignore
     */
    scrollableElement?: HTMLElement | null;
}
/**
 * `FormField` component is used for showing of parameter values in Form or
 * for entering of user data with any form elements.
 *
 * For the most cases the following form elements can be used:
 * * [FormFieldText](#!/FormFieldText) for entering text,
 * * [FormFieldSelect](#!/FormFieldSelect), [FormFieldCheckbox](#!/FormFieldCheckbox),
 * [FormFieldRadioButtons](#!/FormFieldRadioButtons) for selecting options.
 */
declare const FormFieldWrapper: {
    ({ value, errors, required, baseClassName, ...props }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
export default FormFieldWrapper;
