import React from 'react';
import PropTypes from 'prop-types';
import { BaseFormAdapter } from '@douyinfe/semi-foundation/lib/es/form/foundation';
import BaseComponent from '../_base/baseComponent';
import Section from './section';
import Label from './label';
import ErrorMessage from './errorMessage';
import FormInputGroup from './group';
import '@douyinfe/semi-foundation/lib/es/form/form.css';
import { BaseFormProps, FormApi } from './interface';
import useForm from './hooks/useForm';
interface BaseFormState {
    formId: string;
}
declare class Form<Values extends Record<string, any> = any> extends BaseComponent<BaseFormProps<Values>, BaseFormState> {
    static propTypes: {
        'aria-label': PropTypes.Requireable<string>;
        onSubmit: PropTypes.Requireable<(...args: any[]) => any>;
        onSubmitFail: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onReset: PropTypes.Requireable<(...args: any[]) => any>;
        onValueChange: PropTypes.Requireable<(...args: any[]) => any>;
        autoScrollToError: PropTypes.Requireable<NonNullable<boolean | object>>;
        allowEmpty: PropTypes.Requireable<boolean>;
        className: PropTypes.Requireable<string>;
        component: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike | ((...args: any[]) => any)>>;
        disabled: PropTypes.Requireable<boolean>;
        extraTextPosition: PropTypes.Requireable<string>;
        getFormApi: PropTypes.Requireable<(...args: any[]) => any>;
        initValues: PropTypes.Requireable<object>;
        validateFields: PropTypes.Requireable<(...args: any[]) => any>;
        validator: PropTypes.Requireable<(...args: any[]) => any>;
        layout: PropTypes.Requireable<string>;
        labelPosition: PropTypes.Requireable<string>;
        labelWidth: PropTypes.Requireable<NonNullable<string | number>>;
        labelAlign: PropTypes.Requireable<string>;
        labelCol: PropTypes.Requireable<object>;
        render: PropTypes.Requireable<(...args: any[]) => any>;
        style: PropTypes.Requireable<object>;
        showValidateIcon: PropTypes.Requireable<boolean>;
        stopValidateWithError: PropTypes.Requireable<boolean>;
        stopPropagation: PropTypes.Requireable<PropTypes.InferProps<{
            submit: PropTypes.Requireable<boolean>;
            reset: PropTypes.Requireable<boolean>;
        }>>;
        id: PropTypes.Requireable<string>;
        wrapperCol: PropTypes.Requireable<object>;
        trigger: PropTypes.Requireable<NonNullable<string | string[]>>;
        form: PropTypes.Requireable<object>;
    };
    static defaultProps: {
        onChange: (...args: any[]) => void;
        onSubmitFail: (...args: any[]) => void;
        onSubmit: (...args: any[]) => void;
        onReset: (...args: any[]) => void;
        onValueChange: (...args: any[]) => void;
        onErrorChange: (...args: any[]) => void;
        layout: string;
        labelPosition: string;
        allowEmpty: boolean;
        autoScrollToError: boolean;
        showValidateIcon: boolean;
    };
    static Input: React.ComponentType<Omit<Omit<import("../input").InputProps, "forwardRef"> & React.RefAttributes<HTMLInputElement>, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static TextArea: React.ComponentType<Omit<Omit<import("../input").TextAreaProps, "forwardRef"> & React.RefAttributes<HTMLTextAreaElement>, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static InputNumber: React.ComponentType<Omit<import("../inputNumber").InputNumberProps & React.RefAttributes<HTMLInputElement>, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static Select: React.ComponentType<Omit<{
        'aria-describedby'?: string;
        'aria-errormessage'?: string;
        'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling";
        'aria-labelledby'?: string;
        'aria-required'?: boolean | "true" | "false";
        id?: string;
        autoFocus?: boolean;
        autoClearSearchValue?: boolean;
        arrowIcon?: React.ReactNode;
        borderless?: boolean;
        clearIcon?: React.ReactNode;
        defaultValue?: any[] | import("../select").BasicSelectValue;
        value?: any[] | import("../select").BasicSelectValue;
        placeholder?: React.ReactNode;
        onChange?: (value: any[] | import("../select").BasicSelectValue) => void;
        multiple?: boolean;
        filter?: boolean | ((inpueValue: string, option: import("../select").OptionProps) => boolean);
        max?: number;
        maxTagCount?: number;
        maxHeight?: string | number;
        style?: React.CSSProperties;
        className?: string;
        size?: import("../select").SelectSize;
        disabled?: boolean;
        emptyContent?: React.ReactNode;
        expandRestTagsOnClick?: boolean;
        onDropdownVisibleChange?: (visible: boolean) => void;
        zIndex?: number;
        position?: "left" | "top" | "right" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver";
        onSearch?: (value: string, event: React.KeyboardEvent<Element> | React.MouseEvent<Element, MouseEvent>) => void;
        dropdownClassName?: string;
        dropdownStyle?: React.CSSProperties;
        dropdownMargin?: number | {
            marginLeft: number;
            marginTop: number;
            marginRight: number;
            marginBottom: number;
        };
        ellipsisTrigger?: boolean;
        outerTopSlot?: React.ReactNode;
        innerTopSlot?: React.ReactNode;
        outerBottomSlot?: React.ReactNode;
        innerBottomSlot?: React.ReactNode;
        optionList?: import("../select").OptionProps[];
        dropdownMatchSelectWidth?: boolean;
        loading?: boolean;
        defaultOpen?: boolean;
        validateStatus?: "default" | "error" | "warning" | "success";
        defaultActiveFirstOption?: boolean;
        onChangeWithObject?: boolean;
        suffix?: React.ReactNode;
        searchPosition?: string;
        searchPlaceholder?: string;
        prefix?: React.ReactNode;
        insetLabel?: React.ReactNode;
        insetLabelId?: string;
        inputProps?: Omit<import("../input").InputProps, keyof {
            value?: React.ReactText;
            onFocus?: (e: React.FocusEvent<HTMLInputElement, Element>) => void;
            onChange?: (value: string, e: React.ChangeEvent<HTMLInputElement>) => void;
        }>;
        showClear?: boolean;
        showArrow?: boolean;
        renderSelectedItem?: import("../select").RenderSelectedItemFn;
        renderCreateItem?: (inputValue: string | number, focus: boolean, style?: React.CSSProperties) => React.ReactNode;
        renderOptionItem?: (props: import("../select").optionRenderProps) => React.ReactNode;
        onMouseEnter?: (e: React.MouseEvent<Element, MouseEvent>) => any;
        onMouseLeave?: (e: React.MouseEvent<Element, MouseEvent>) => any;
        clickToHide?: boolean;
        onExceed?: (option: import("../select").OptionProps) => void;
        onCreate?: (option: import("../select").OptionProps) => void;
        remote?: boolean;
        onDeselect?: (value: any[] | import("../select").BasicSelectValue, option: Record<string, any>) => void;
        onSelect?: (value: any[] | import("../select").BasicSelectValue, option: Record<string, any>) => void;
        allowCreate?: boolean;
        triggerRender?: (props: import("../select").TriggerRenderProps) => React.ReactNode;
        onClear?: () => void;
        virtualize?: import("../select").virtualListProps;
        onFocus?: (e: React.FocusEvent<Element, Element>) => void;
        onBlur?: (e: React.FocusEvent<Element, Element>) => void;
        onListScroll?: (e: React.UIEvent<HTMLDivElement, UIEvent>) => void;
        children?: React.ReactNode;
        preventScroll?: boolean;
        showRestTagsPopover?: boolean;
        restTagsPopoverProps?: import("../popover").PopoverProps;
    } & Pick<import("../tooltip").TooltipProps, "stopPropagation" | "motion" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay" | "rePosKey"> & import("./interface").CommonFieldProps, keyof import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
    static Checkbox: React.ComponentType<Omit<import("./interface").CommonFieldProps, keyof import("./interface").RadioCheckboxExcludeProps> & import("../checkbox").CheckboxProps & import("./interface").RCIncludeType>;
    static CheckboxGroup: React.ComponentType<Omit<import("../checkbox").CheckboxGroupProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static Radio: React.ComponentType<Omit<import("./interface").CommonFieldProps, keyof import("./interface").RadioCheckboxExcludeProps> & import("../radio").RadioProps & import("./interface").RCIncludeType>;
    static RadioGroup: React.ComponentType<Omit<import("../radio").RadioGroupProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static DatePicker: React.ComponentType<Omit<import("../datePicker").DatePickerProps & React.RefAttributes<import("../datePicker").BaseDatePicker>, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static TimePicker: React.ComponentType<Omit<import("../timePicker").TimePickerProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static Switch: React.ComponentType<Omit<import("../switch").SwitchProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static Slider: React.ComponentType<Omit<import("../slider").SliderProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static TreeSelect: React.ComponentType<Omit<import("../treeSelect").TreeSelectProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static Cascader: React.ComponentType<Omit<import("../cascader").CascaderProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static Rating: React.ComponentType<Omit<import("../rating").RatingProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static AutoComplete: React.ComponentType<Omit<import("../autoComplete").AutoCompleteProps<import("../autoComplete").AutoCompleteItems>, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static Upload: React.ComponentType<Omit<import("../upload").UploadProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static TagInput: React.ComponentType<Omit<import("../tagInput").TagInputProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static PinCode: React.ComponentType<Omit<import("../pincode").PinCodeProps, keyof import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
    static Slot: (props: import("./slot").SlotProps) => React.JSX.Element;
    static ErrorMessage: typeof ErrorMessage;
    static InputGroup: typeof FormInputGroup;
    static Label: typeof Label;
    static Section: typeof Section;
    static useForm: typeof useForm;
    formApi: FormApi<Values>;
    constructor(props: BaseFormProps<Values>);
    componentDidMount(): void;
    componentWillUnmount(): void;
    get adapter(): BaseFormAdapter<BaseFormProps<Values>, BaseFormState, Values>;
    get content(): React.ReactNode;
    submit(e: React.FormEvent<HTMLFormElement>): void;
    reset(e: React.FormEvent<HTMLFormElement>): void;
    render(): React.JSX.Element;
}
export default Form;
