import { ComponentPublicInstance, ComputedRef, ExtractPropTypes, HTMLAttributes, PropType, Ref, DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { CustomSlotsType } from '../_util/type';
import { ColProps } from '../grid/Col';
import { FormLabelAlign, InternalNamePath, Rule, RuleError, ValidateOptions } from './interface';
import { VueTypeValidableDef, VueTypeDef } from 'vue-types';
declare const ValidateStatuses: ["success", "warning", "error", "validating", ""];
export type ValidateStatus = (typeof ValidateStatuses)[number];
export interface FieldExpose {
    fieldValue: Ref<any>;
    fieldId: ComputedRef<any>;
    fieldName: ComputedRef<any>;
    resetField: () => void;
    clearValidate: () => void;
    namePath: ComputedRef<InternalNamePath>;
    rules?: ComputedRef<Rule[]>;
    validateRules: (options: ValidateOptions) => Promise<void> | Promise<RuleError[]>;
}
export declare const formItemProps: () => {
    htmlFor: StringConstructor;
    prefixCls: StringConstructor;
    label: VueTypeValidableDef<any>;
    help: VueTypeValidableDef<any>;
    extra: VueTypeValidableDef<any>;
    labelCol: {
        type: PropType<ColProps & HTMLAttributes>;
    };
    wrapperCol: {
        type: PropType<ColProps & HTMLAttributes>;
    };
    hasFeedback: {
        type: BooleanConstructor;
        default: boolean;
    };
    colon: {
        type: BooleanConstructor;
        default: undefined;
    };
    labelAlign: PropType<FormLabelAlign>;
    prop: {
        type: PropType<string | number | Array<string | number>>;
    };
    name: {
        type: PropType<string | number | Array<string | number>>;
    };
    rules: PropType<Rule[] | Rule>;
    autoLink: {
        type: BooleanConstructor;
        default: boolean;
    };
    required: {
        type: BooleanConstructor;
        default: undefined;
    };
    validateFirst: {
        type: BooleanConstructor;
        default: undefined;
    };
    validateStatus: VueTypeDef<string>;
    validateTrigger: {
        type: PropType<string | string[]>;
    };
    messageVariables: {
        type: PropType<Record<string, string>>;
    };
    hidden: BooleanConstructor;
    noStyle: BooleanConstructor;
    tooltip: StringConstructor;
};
export type FormItemProps = Partial<ExtractPropTypes<ReturnType<typeof formItemProps>>>;
export interface FormItemExpose {
    onFieldBlur: () => void;
    onFieldChange: () => void;
    clearValidate: () => void;
    resetField: () => void;
}
export type FormItemInstance = ComponentPublicInstance<FormItemProps, FormItemExpose>;
declare const _default: DefineComponent<ExtractPropTypes<{
    htmlFor: StringConstructor;
    prefixCls: StringConstructor;
    label: VueTypeValidableDef<any>;
    help: VueTypeValidableDef<any>;
    extra: VueTypeValidableDef<any>;
    labelCol: {
        type: PropType<ColProps & HTMLAttributes>;
    };
    wrapperCol: {
        type: PropType<ColProps & HTMLAttributes>;
    };
    hasFeedback: {
        type: BooleanConstructor;
        default: boolean;
    };
    colon: {
        type: BooleanConstructor;
        default: undefined;
    };
    labelAlign: PropType<FormLabelAlign>;
    prop: {
        type: PropType<string | number | Array<string | number>>;
    };
    name: {
        type: PropType<string | number | Array<string | number>>;
    };
    rules: PropType<Rule[] | Rule>;
    autoLink: {
        type: BooleanConstructor;
        default: boolean;
    };
    required: {
        type: BooleanConstructor;
        default: undefined;
    };
    validateFirst: {
        type: BooleanConstructor;
        default: undefined;
    };
    validateStatus: VueTypeDef<string>;
    validateTrigger: {
        type: PropType<string | string[]>;
    };
    messageVariables: {
        type: PropType<Record<string, string>>;
    };
    hidden: BooleanConstructor;
    noStyle: BooleanConstructor;
    tooltip: StringConstructor;
}>, () => any, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<{
    htmlFor: StringConstructor;
    prefixCls: StringConstructor;
    label: VueTypeValidableDef<any>;
    help: VueTypeValidableDef<any>;
    extra: VueTypeValidableDef<any>;
    labelCol: {
        type: PropType<ColProps & HTMLAttributes>;
    };
    wrapperCol: {
        type: PropType<ColProps & HTMLAttributes>;
    };
    hasFeedback: {
        type: BooleanConstructor;
        default: boolean;
    };
    colon: {
        type: BooleanConstructor;
        default: undefined;
    };
    labelAlign: PropType<FormLabelAlign>;
    prop: {
        type: PropType<string | number | Array<string | number>>;
    };
    name: {
        type: PropType<string | number | Array<string | number>>;
    };
    rules: PropType<Rule[] | Rule>;
    autoLink: {
        type: BooleanConstructor;
        default: boolean;
    };
    required: {
        type: BooleanConstructor;
        default: undefined;
    };
    validateFirst: {
        type: BooleanConstructor;
        default: undefined;
    };
    validateStatus: VueTypeDef<string>;
    validateTrigger: {
        type: PropType<string | string[]>;
    };
    messageVariables: {
        type: PropType<Record<string, string>>;
    };
    hidden: BooleanConstructor;
    noStyle: BooleanConstructor;
    tooltip: StringConstructor;
}>> & Readonly<{}>, {
    hidden: boolean;
    required: boolean;
    hasFeedback: boolean;
    colon: boolean;
    autoLink: boolean;
    validateFirst: boolean;
    noStyle: boolean;
}, CustomSlotsType<{
    help: any;
    label: any;
    extra: any;
    default: any;
    tooltip: any;
}>, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default _default;
