import Vue, { VNode } from 'vue';
import { NormalizedScopedSlot } from 'vue/types/vnode';
import { ErrorCircleFilledIcon } from 'tdesign-icons-vue';
import { Data, FormRule, TdFormItemProps, TdFormProps, ValueType, ValidateTriggerType, AllValidateResult, FormErrorMessage, FormItemValidateMessage } from './type';
import Form from './form';
import { ClassName, TNodeReturnValue, Styles } from '../common';
import { FormConfig } from '../config-provider/config-receiver';
export declare type IconConstructor = typeof ErrorCircleFilledIcon;
export declare type FormInstance = InstanceType<typeof Form>;
export declare type FormItemValidateResult<T extends Data = Data> = {
    [key in keyof T]: boolean | AllValidateResult[];
};
export declare const enum VALIDATE_STATUS {
    TO_BE_VALIDATED = "not",
    SUCCESS = "success",
    FAIL = "fail"
}
export interface FormItemConstructor extends Vue {
    form: FormInstance;
}
declare const _default: import("vue/types/vue").ExtendedVue<{
    t<T>(pattern: T, placement?: import("../config-provider/config-receiver").Placement): string;
} & {
    global: FormConfig;
} & Record<never, any> & import("../config-provider/config-receiver").ConfigComponent & FormItemConstructor & Vue, {
    errorList: any[];
    successList: any[];
    verifyStatus: VALIDATE_STATUS;
    resetValidating: boolean;
    needResetField: boolean;
    initialValue: any;
}, {
    addWatch(): void;
    setChildrenDisabled(disabled: boolean, children: Vue[]): void;
    setValidateMessage(validateMessage: FormItemValidateMessage[]): void;
    validate<T_1>(trigger: ValidateTriggerType): Promise<FormItemValidateResult<T_1>>;
    getLabelContent(): TNodeReturnValue;
    getLabel(): TNodeReturnValue;
    getDefaultIcon(): TNodeReturnValue;
    getIcon(statusIcon: TdFormProps['statusIcon'] | TdFormItemProps['statusIcon'], slotStatusIcon: NormalizedScopedSlot, props?: TdFormItemProps): TNodeReturnValue;
    getSuffixIcon(): TNodeReturnValue;
    getEmptyValue(): ValueType;
    resetField(): void;
    resetHandler(): void;
}, {
    needErrorMessage: Boolean;
    classes: ClassName;
    helpNode: VNode;
    extraNode: JSX.Element;
    labelClasses: ClassName;
    errorClasses: string;
    disabled: boolean;
    contentClasses: ClassName;
    contentStyle: Styles;
    value: any;
    hasColon: boolean;
    needRequiredMark: boolean;
    innerRules: FormRule[];
    errorMessages: FormErrorMessage;
}, {
    for: string;
    help: string;
    label: string | ((h: import("vue").CreateElement) => import("vue/types/vnode").ScopedSlotReturnValue);
    labelAlign: "left" | "top" | "right";
    labelWidth: string | number;
    name: string;
    requiredMark: any;
    rules: FormRule[];
    showErrorMessage: any;
    statusIcon: any;
    successBorder: boolean;
}>;
export default _default;
