import { Component, DeepReadonly, InjectionKey, PropType, SlotsType, VNode } from 'vue';
import { FormSchema, InjectedFormData, FormTemplate, InferFormattedError, InferSchema } from './types';
import { FormStatus } from './enums';
export declare function defineFormTemplate<Schema extends FormSchema, Type = undefined>(formProvideKey: InjectionKey<InjectedFormData<Schema, Type>>, VvFormField: Component): import('vue').DefineComponent<import('vue').ExtractPropTypes<{
    schema: {
        type: PropType<FormTemplate<Schema, Type>>;
        required: true;
    };
    scope: {
        type: PropType<Record<string, unknown>>;
        default: () => {};
    };
}>, (() => (VNode<import('vue').RendererNode, import('vue').RendererElement, {
    [key: string]: any;
}> | VNode<import('vue').RendererNode, import('vue').RendererElement, {
    [key: string]: any;
}>[] | undefined)[]) | undefined, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
    schema: {
        type: PropType<FormTemplate<Schema, Type>>;
        required: true;
    };
    scope: {
        type: PropType<Record<string, unknown>>;
        default: () => {};
    };
}>> & Readonly<{}>, {
    scope: Record<string, unknown>;
}, SlotsType<{
    default: {
        errors?: DeepReadonly<InferFormattedError<Schema>>;
        formData?: undefined extends Type ? Partial<InferSchema<Schema>> : Type;
        invalid: boolean;
        status?: FormStatus;
        submit?: InjectedFormData<Schema, Type>["submit"];
        validate?: InjectedFormData<Schema, Type>["validate"];
        clear?: InjectedFormData<Schema, Type>["clear"];
        reset?: InjectedFormData<Schema, Type>["reset"];
    };
}>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
