import type { Form as FormikForm, FormikContextType } from 'formik';
import React from 'react';
import type { InputProps } from '../Input';
import type { PageFooterProps } from '../PageLayout/PageLayout.types';
import type { Props } from '../_utils/types';
import type { BaseFieldProps, ComponentWithFieldProp, FieldCheckboxComponentProps, FieldCheckboxesComponentProps, FieldCheckboxesValueType, FieldConfig, FieldCurrencyComponentProps, FieldDateComponentProps, FieldDateValueType, FieldGroupSelectComponentProps, FieldGroupSelectValueType, FieldMultiSelectComponentProps, FieldMultiSelectValueType, FieldNumberComponentProps, FieldPillSelectComponentProps, FieldRadioButtonsComponentProps, FieldRichTextComponentProps, FieldSelectComponentProps, FieldTextAreaComponentProps, FieldTextComponentProps, FieldTieredSelectComponentProps, FieldTieredSelectValueType, FormCheckboxesProps, FormCheckboxProps, FormContextAPI, FormCurrencyProps, FormDateProps, FormErrorBannerProps, FormFieldAPI, FormFieldProps, FormFieldValueComponentProps, FormGroupSelectProps, FormMultiSelectProps, FormNumberProps, FormPillSelectProps, FormProps, FormRadioButtonsProps, FormRichTextProps, FormSelectProps, FormTextAreaProps, FormTextProps, FormTieredSelectProps, GroupedOptionsConfig, OptionList, TraditionalBaseFieldProps, ViewFieldProps } from './Form.types';
export declare const FormContext: React.Context<FormContextAPI>;
export declare function useFormContext<Values = any>(): FormikContextType<Values> & FormContextAPI;
export declare function getPrimitiveValue(value: any, getId?: (option: any) => string | number): string | number;
export declare function useField<Value = any>({ disabled: _disabled, error: _error, getId, required: _required, name, validate, view: _view, }?: FieldConfig): FormFieldAPI<Value>;
declare function Form_<Values = any>({ initialValues, onSubmit: _onSubmit, disabled, enableConfirmNavigation, variant, validationSchema, view, ...props }: FormProps<Values>): React.JSX.Element;
declare type FormFormProps = Omit<React.ComponentPropsWithoutRef<typeof FormikForm>, 'placeholder' | 'onPointerEnterCapture' | 'onPointerLeaveCapture'>;
export declare function FormForm({ children, className, onKeyDown, style, ...props }: FormFormProps): React.JSX.Element;
export declare function FormErrorBanner({ item, i18nScope, ...rest }: FormErrorBannerProps & React.HTMLAttributes<HTMLDivElement>): React.JSX.Element | null;
export declare function isFormFieldEmpty(val: any): boolean;
export declare function WXPField<Value, ComponentProps extends FormFieldValueComponentProps<Value>>({ as: AsComponent, children, colStart, colWidth, disabled, description, error, label, name, required, tooltip, validate, view, inlineLabel: singleCheckboxInlineLabel, inlineDescription: singleCheckboxInlineDescription, ...props }: BaseFieldProps<Value, ComponentProps> & Pick<FormCheckboxProps, 'inlineLabel' | 'inlineDescription'> & {
    getId?: OptionList<Value>['getId'];
}): React.JSX.Element;
/** @deprecated The traditional field layout is deprecated */
export declare function TraditionalField<Value, ComponentProps extends FormFieldValueComponentProps<Value>>({ as: AsComponent, children, colWidth, disabled, error, label, name, required, tooltip, validate, view, ...props }: TraditionalBaseFieldProps<Value, ComponentProps> & {
    getId?: OptionList<Value>['getId'];
}): React.JSX.Element;
export declare function Row({ children, ...props }: Props): React.JSX.Element;
export declare function BaseField<Value, ComponentProps extends FormFieldValueComponentProps<Value>>(props: BaseFieldProps<Value, ComponentProps> | TraditionalBaseFieldProps<Value, ComponentProps>): React.JSX.Element;
export declare function makeField<Value, FieldTypeProps extends FormFieldProps<Value>, ComponentProps extends FormFieldValueComponentProps<Value>>(editComponent: ComponentWithFieldProp<Value, ComponentProps>, showComponent: ComponentWithFieldProp<Value, ComponentProps>, options?: {
    emptyState: boolean;
}): (({ children, ...props }: FieldTypeProps) => React.JSX.Element) & {
    Create: (props: ViewFieldProps<Value, FieldTypeProps, ComponentProps>) => React.JSX.Element | null;
    Read: (props: ViewFieldProps<Value, FieldTypeProps, ComponentProps>) => React.JSX.Element | null;
    Update: (props: ViewFieldProps<Value, FieldTypeProps, ComponentProps>) => React.JSX.Element | null;
};
export declare function withDefaultEmptyState<Value, TProps extends FormFieldValueComponentProps>(OutputComponent: ComponentWithFieldProp<Value, TProps>): React.ForwardRefExoticComponent<React.PropsWithoutRef<TProps> & React.RefAttributes<HTMLSpanElement>>;
export declare const TextInput: React.ForwardRefExoticComponent<FieldTextComponentProps<string> & React.RefAttributes<HTMLInputElement>>;
/**
 * @deprecated This component was for `Form` internal usage only.
 * Try using the supported APIs like `Form.Text view="read"` or
 * `Form.Text.Read` which renders this. Or duplicate the source
 * `<span ref={ref} {...props}>{field.input.value}</span>`.
 * @deprecatedSince 12.21.0
 */
export declare const TextOutput: React.ForwardRefExoticComponent<FieldTextComponentProps<string> & React.RefAttributes<HTMLSpanElement>>;
export declare const NumberInput: React.ForwardRefExoticComponent<FieldNumberComponentProps<import("../NumberInput/NumberInput.types").InputValue> & React.RefAttributes<HTMLInputElement>>;
export declare const NumberOutput: React.ForwardRefExoticComponent<FieldNumberComponentProps<import("../NumberInput/NumberInput.types").InputValue> & React.RefAttributes<HTMLSpanElement>>;
export declare const CurrencyInput: React.ForwardRefExoticComponent<FieldCurrencyComponentProps<import("../NumberInput/NumberInput.types").InputValue> & React.RefAttributes<HTMLInputElement>>;
export declare const CurrencyOutput: React.ForwardRefExoticComponent<FieldCurrencyComponentProps<import("../NumberInput/NumberInput.types").InputValue> & React.RefAttributes<HTMLSpanElement>>;
export declare const DateInput: React.ForwardRefExoticComponent<FieldDateComponentProps<FieldDateValueType> & React.RefAttributes<HTMLInputElement>>;
export declare const DateOutput: React.ForwardRefExoticComponent<FieldDateComponentProps<FieldDateValueType> & React.RefAttributes<HTMLSpanElement>>;
export declare const CheckboxInput: React.ForwardRefExoticComponent<FieldCheckboxComponentProps<boolean> & React.RefAttributes<HTMLInputElement>>;
export declare const CheckboxOutput: React.ForwardRefExoticComponent<FieldCheckboxComponentProps<boolean> & React.RefAttributes<HTMLSpanElement>>;
export declare const TextAreaInput: React.ForwardRefExoticComponent<FieldTextAreaComponentProps<string> & React.RefAttributes<HTMLTextAreaElement>>;
export declare const TextAreaOutput: React.ForwardRefExoticComponent<FieldTextAreaComponentProps<string> & React.RefAttributes<HTMLSpanElement>>;
export declare const RichTextInput: React.ForwardRefExoticComponent<FieldRichTextComponentProps<string> & React.RefAttributes<HTMLTextAreaElement>>;
export declare const RichTextOutput: React.ForwardRefExoticComponent<FieldRichTextComponentProps<string> & Props & React.RefAttributes<HTMLDivElement>>;
export declare const RadioButtonsInput: React.ForwardRefExoticComponent<FieldRadioButtonsComponentProps<any> & React.RefAttributes<HTMLFieldSetElement>>;
export declare const RadioButtonsOutput: React.ForwardRefExoticComponent<FieldRadioButtonsComponentProps<any> & React.RefAttributes<HTMLSpanElement>>;
export declare const CheckboxesInput: React.ForwardRefExoticComponent<FieldCheckboxesComponentProps<FieldCheckboxesValueType> & React.RefAttributes<HTMLFieldSetElement>>;
export declare const CheckboxesOutput: React.ForwardRefExoticComponent<FieldCheckboxesComponentProps<FieldCheckboxesValueType> & React.RefAttributes<HTMLSpanElement>>;
export declare function useOptions<OptionItem = any, GroupItem = any>({ value, optgroups, options, getLabel, getId, groupGetId, getGroup, comparator, }: GroupedOptionsConfig<OptionItem, GroupItem>): {
    list: any[];
    selected: OptionItem | undefined;
    search: (e: React.ChangeEvent<HTMLInputElement>) => void;
};
export declare const SelectInput: React.ForwardRefExoticComponent<FieldSelectComponentProps<any, any, any> & React.RefAttributes<HTMLDivElement>>;
export declare const SelectOutput: React.ForwardRefExoticComponent<FieldSelectComponentProps<any, any, any> & React.RefAttributes<HTMLSpanElement>>;
export declare const PillSelectInput: React.ForwardRefExoticComponent<FieldPillSelectComponentProps<any> & React.RefAttributes<HTMLDivElement>>;
export declare const PillSelectOutput: React.ForwardRefExoticComponent<FieldPillSelectComponentProps<any> & React.RefAttributes<HTMLSpanElement>>;
export declare const MultiSelectInput: React.ForwardRefExoticComponent<FieldMultiSelectComponentProps<FieldMultiSelectValueType> & React.RefAttributes<HTMLDivElement>>;
export declare const MultiSelectOutput: React.ForwardRefExoticComponent<FieldMultiSelectComponentProps<FieldMultiSelectValueType> & React.RefAttributes<HTMLSpanElement>>;
export declare const GroupSelectInput: React.ForwardRefExoticComponent<FieldGroupSelectComponentProps<FieldGroupSelectValueType> & React.RefAttributes<HTMLDivElement>>;
export declare const GroupSelectOutput: React.ForwardRefExoticComponent<FieldGroupSelectComponentProps<FieldGroupSelectValueType> & React.RefAttributes<HTMLSpanElement>>;
export declare const TieredSelectInput: React.ForwardRefExoticComponent<FieldTieredSelectComponentProps<FieldTieredSelectValueType> & React.RefAttributes<HTMLDivElement>>;
export declare const TieredSelectOutput: React.ForwardRefExoticComponent<FieldTieredSelectComponentProps<FieldTieredSelectValueType> & React.RefAttributes<HTMLSpanElement>>;
export declare const Form: typeof Form_ & {
    Checkboxes: (({ children, ...props }: FormCheckboxesProps<FieldCheckboxesValueType>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<FieldCheckboxesValueType, FormCheckboxesProps<FieldCheckboxesValueType>, FieldCheckboxesComponentProps<FieldCheckboxesValueType>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<FieldCheckboxesValueType, FormCheckboxesProps<FieldCheckboxesValueType>, FieldCheckboxesComponentProps<FieldCheckboxesValueType>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<FieldCheckboxesValueType, FormCheckboxesProps<FieldCheckboxesValueType>, FieldCheckboxesComponentProps<FieldCheckboxesValueType>>) => React.JSX.Element | null;
    };
    Checkbox: (({ children, ...props }: FormCheckboxProps<boolean>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<boolean, FormCheckboxProps<boolean>, FieldCheckboxComponentProps<boolean>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<boolean, FormCheckboxProps<boolean>, FieldCheckboxComponentProps<boolean>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<boolean, FormCheckboxProps<boolean>, FieldCheckboxComponentProps<boolean>>) => React.JSX.Element | null;
    };
    Currency: (({ children, ...props }: FormCurrencyProps<import("../NumberInput/NumberInput.types").InputValue>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<import("../NumberInput/NumberInput.types").InputValue, FormCurrencyProps<import("../NumberInput/NumberInput.types").InputValue>, FieldCurrencyComponentProps<import("../NumberInput/NumberInput.types").InputValue>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<import("../NumberInput/NumberInput.types").InputValue, FormCurrencyProps<import("../NumberInput/NumberInput.types").InputValue>, FieldCurrencyComponentProps<import("../NumberInput/NumberInput.types").InputValue>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<import("../NumberInput/NumberInput.types").InputValue, FormCurrencyProps<import("../NumberInput/NumberInput.types").InputValue>, FieldCurrencyComponentProps<import("../NumberInput/NumberInput.types").InputValue>>) => React.JSX.Element | null;
    };
    DateSelect: (({ children, ...props }: FormDateProps<FieldDateValueType>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<FieldDateValueType, FormDateProps<FieldDateValueType>, FieldDateComponentProps<FieldDateValueType>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<FieldDateValueType, FormDateProps<FieldDateValueType>, FieldDateComponentProps<FieldDateValueType>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<FieldDateValueType, FormDateProps<FieldDateValueType>, FieldDateComponentProps<FieldDateValueType>>) => React.JSX.Element | null;
    };
    ErrorBanner: typeof FormErrorBanner;
    Field: (({ children, ...props }: FormFieldProps<any> & {
        [key: string]: unknown;
    }) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<any, FormFieldProps<any> & {
            [key: string]: unknown;
        }, FormFieldValueComponentProps<any> & InputProps>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<any, FormFieldProps<any> & {
            [key: string]: unknown;
        }, FormFieldValueComponentProps<any> & InputProps>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<any, FormFieldProps<any> & {
            [key: string]: unknown;
        }, FormFieldValueComponentProps<any> & InputProps>) => React.JSX.Element | null;
    };
    /**
     * `Form.Form` is a small wrapper around an HTML `<form>` element that automatically hooks into Formik's `handleSubmit` and `handleReset`.
     * When the `view` is `read`, it renders a `div` tag instead.
     * @see https://formik.org/docs/api/form
     */
    Form: typeof FormForm;
    GroupSelect: (({ children, ...props }: FormGroupSelectProps<FieldGroupSelectValueType>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<FieldGroupSelectValueType, FormGroupSelectProps<FieldGroupSelectValueType>, FieldGroupSelectComponentProps<FieldGroupSelectValueType>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<FieldGroupSelectValueType, FormGroupSelectProps<FieldGroupSelectValueType>, FieldGroupSelectComponentProps<FieldGroupSelectValueType>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<FieldGroupSelectValueType, FormGroupSelectProps<FieldGroupSelectValueType>, FieldGroupSelectComponentProps<FieldGroupSelectValueType>>) => React.JSX.Element | null;
    };
    MultiSelect: (({ children, ...props }: FormMultiSelectProps<FieldMultiSelectValueType>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<FieldMultiSelectValueType, FormMultiSelectProps<FieldMultiSelectValueType>, FieldMultiSelectComponentProps<FieldMultiSelectValueType>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<FieldMultiSelectValueType, FormMultiSelectProps<FieldMultiSelectValueType>, FieldMultiSelectComponentProps<FieldMultiSelectValueType>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<FieldMultiSelectValueType, FormMultiSelectProps<FieldMultiSelectValueType>, FieldMultiSelectComponentProps<FieldMultiSelectValueType>>) => React.JSX.Element | null;
    };
    Number: (({ children, ...props }: FormNumberProps<import("../NumberInput/NumberInput.types").InputValue>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<import("../NumberInput/NumberInput.types").InputValue, FormNumberProps<import("../NumberInput/NumberInput.types").InputValue>, FieldNumberComponentProps<import("../NumberInput/NumberInput.types").InputValue>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<import("../NumberInput/NumberInput.types").InputValue, FormNumberProps<import("../NumberInput/NumberInput.types").InputValue>, FieldNumberComponentProps<import("../NumberInput/NumberInput.types").InputValue>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<import("../NumberInput/NumberInput.types").InputValue, FormNumberProps<import("../NumberInput/NumberInput.types").InputValue>, FieldNumberComponentProps<import("../NumberInput/NumberInput.types").InputValue>>) => React.JSX.Element | null;
    };
    PillSelect: (({ children, ...props }: FormPillSelectProps<any>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<any, FormPillSelectProps<any>, FieldPillSelectComponentProps<any>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<any, FormPillSelectProps<any>, FieldPillSelectComponentProps<any>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<any, FormPillSelectProps<any>, FieldPillSelectComponentProps<any>>) => React.JSX.Element | null;
    };
    RadioButtons: (({ children, ...props }: FormRadioButtonsProps<any>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<any, FormRadioButtonsProps<any>, FieldRadioButtonsComponentProps<any>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<any, FormRadioButtonsProps<any>, FieldRadioButtonsComponentProps<any>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<any, FormRadioButtonsProps<any>, FieldRadioButtonsComponentProps<any>>) => React.JSX.Element | null;
    };
    RichText: (({ children, ...props }: FormRichTextProps<string>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<string, FormRichTextProps<string>, FieldRichTextComponentProps<string>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<string, FormRichTextProps<string>, FieldRichTextComponentProps<string>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<string, FormRichTextProps<string>, FieldRichTextComponentProps<string>>) => React.JSX.Element | null;
    };
    Row: typeof Row;
    Select: (({ children, ...props }: FormSelectProps<any, any, any>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<any, FormSelectProps<any, any, any>, FieldSelectComponentProps<any, any, any>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<any, FormSelectProps<any, any, any>, FieldSelectComponentProps<any, any, any>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<any, FormSelectProps<any, any, any>, FieldSelectComponentProps<any, any, any>>) => React.JSX.Element | null;
    };
    Text: (({ children, ...props }: FormTextProps<string>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<string, FormTextProps<string>, FieldTextComponentProps<string>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<string, FormTextProps<string>, FieldTextComponentProps<string>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<string, FormTextProps<string>, FieldTextComponentProps<string>>) => React.JSX.Element | null;
    };
    TextArea: (({ children, ...props }: FormTextAreaProps<string>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<string, FormTextAreaProps<string>, FieldTextAreaComponentProps<string>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<string, FormTextAreaProps<string>, FieldTextAreaComponentProps<string>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<string, FormTextAreaProps<string>, FieldTextAreaComponentProps<string>>) => React.JSX.Element | null;
    };
    TieredSelect: (({ children, ...props }: FormTieredSelectProps<FieldTieredSelectValueType>) => React.JSX.Element) & {
        Create: (props: ViewFieldProps<FieldTieredSelectValueType, FormTieredSelectProps<FieldTieredSelectValueType>, FieldTieredSelectComponentProps<FieldTieredSelectValueType>>) => React.JSX.Element | null;
        Read: (props: ViewFieldProps<FieldTieredSelectValueType, FormTieredSelectProps<FieldTieredSelectValueType>, FieldTieredSelectComponentProps<FieldTieredSelectValueType>>) => React.JSX.Element | null;
        Update: (props: ViewFieldProps<FieldTieredSelectValueType, FormTieredSelectProps<FieldTieredSelectValueType>, FieldTieredSelectComponentProps<FieldTieredSelectValueType>>) => React.JSX.Element | null;
    };
    SettingsPageFooter: React.ForwardRefExoticComponent<PageFooterProps & React.RefAttributes<HTMLDivElement>>;
};
export {};
