import type { CSSProperties, ExtractPropTypes, PropType, Ref, ToRefs } from 'vue';
import type { RuleItem } from 'async-validator';
import type { ExtractPublicPropTypes } from '../_util/interface';
export interface FormRuleItem extends RuleItem {
    trigger?: string | string[];
}
export type FormRules = Record<string, FormRuleItem | FormRuleItem[]>;
export declare const formProps: {
    readonly model: ObjectConstructor;
    readonly rules: {
        readonly type: PropType<FormRules>;
        readonly default: () => FormRules;
    };
    readonly layout: {
        readonly type: PropType<"horizontal" | "inline">;
        readonly default: "horizontal";
    };
    readonly span: {
        readonly type: NumberConstructor;
        readonly default: 6;
    };
    readonly inlineItemGap: {
        readonly type: PropType<string | number>;
        readonly default: 11;
    };
    readonly inlineItemWidth: PropType<string | number>;
    readonly labelPosition: {
        readonly type: PropType<"left" | "right" | "top">;
        readonly default: "left";
    };
    readonly labelWidth: PropType<string | number>;
    readonly labelClass: StringConstructor;
    readonly showMessage: {
        readonly type: BooleanConstructor;
        readonly default: true;
    };
    readonly disabled: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly align: {
        readonly type: PropType<"center" | "flex-start" | "baseline">;
        readonly default: "flex-start";
    };
};
export type FormProps = ExtractPublicPropTypes<typeof formProps>;
export declare const formItemProps: {
    readonly prop: StringConstructor;
    readonly value: {
        readonly type: PropType<string | number | boolean | object>;
        readonly default: undefined;
    };
    readonly label: StringConstructor;
    readonly labelWidth: PropType<string | number>;
    readonly labelClass: StringConstructor;
    readonly contentStyle: {
        readonly type: PropType<string | CSSProperties | CSSProperties[]>;
        readonly default: () => {};
    };
    readonly span: {
        readonly type: NumberConstructor;
        readonly default: number;
    };
    readonly showMessage: {
        readonly type: PropType<boolean>;
        readonly default: boolean;
    };
    readonly disabled: {
        readonly type: PropType<boolean>;
        readonly default: () => boolean | null | undefined;
    };
    readonly rules: {
        readonly type: PropType<FormRuleItem[]>;
        readonly default: () => FormRuleItem[];
    };
    readonly align: {
        readonly type: PropType<"center" | "flex-start" | "baseline">;
        readonly default: string;
    };
};
export type FormItemProps = ExtractPublicPropTypes<typeof formItemProps>;
export type AddFieldType = (formItemProp: string, formItemContext: Field) => void;
export type removeField = (formItemProp: string) => void;
export type PropsType = Partial<ExtractPropTypes<typeof formProps>>;
export type FormInjectKey = ToRefs<PropsType> & {
    addField: AddFieldType;
    removeField: removeField;
};
export interface FormItemInject {
    validate: (eventName: string) => void;
    setRuleDefaultType?: (ruleType: string) => void;
    isError?: Ref<boolean>;
    isFormDisabled?: Ref<boolean>;
}
export interface Field {
    prop: string;
    value: any;
    rules: FormRuleItem[];
    validateRules: (trigger?: string | string[]) => Promise<any>;
    clearValidate: () => void;
    resetField: () => void;
}
export interface ValidateResult {
    name: string;
    errors: [];
}
