import { Component, DeepReadonly, InjectionKey, PropType, Ref, SlotsType } from 'vue';
import { FormSchema, InjectedFormData, InjectedFormFieldsGroupData, InjectedFormWrapperData, Path, InferSchema, InferFormattedError } from './types';
export declare function defineFormFieldsGroup<Schema extends FormSchema, Type = undefined>(formProvideKey: InjectionKey<InjectedFormData<Schema, Type>>, wrapperProvideKey: InjectionKey<InjectedFormWrapperData<Schema>>, formFieldsGroupInjectionKey: InjectionKey<InjectedFormFieldsGroupData<Schema>>): import('vue').DefineComponent<import('vue').ExtractPropTypes<{
    is: {
        type: PropType<Component | string>;
        default: undefined;
    };
    names: {
        type: PropType<Path<InferSchema<Schema>>[] | Record<string, Path<InferSchema<Schema>>>>;
        required: true;
    };
    props: {
        type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
        default: () => {};
    };
    showValid: {
        type: BooleanConstructor;
        default: boolean;
    };
    defaultValues: {
        type: PropType<Record<Path<InferSchema<Schema>>, any>>;
        default: undefined;
    };
    readonly: {
        type: BooleanConstructor;
        default: undefined;
    };
}>, {
    component: import('vue').ComputedRef<{
        render(): import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
            [key: string]: any;
        }>[];
    }>;
    hasProps: import('vue').ComputedRef<{
        modelValue: Record<string, any>;
        names: {};
        invalid: boolean;
        invalids: Record<string, boolean>;
        valid: boolean | undefined;
        invalidLabels: Record<string, string[]> | undefined;
        readonly: boolean;
    }>;
    invalid: import('vue').ComputedRef<boolean>;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("invalid" | "valid" | "update:modelValue" | "update:formData")[], "invalid" | "valid" | "update:modelValue" | "update:formData", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
    is: {
        type: PropType<Component | string>;
        default: undefined;
    };
    names: {
        type: PropType<Path<InferSchema<Schema>>[] | Record<string, Path<InferSchema<Schema>>>>;
        required: true;
    };
    props: {
        type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
        default: () => {};
    };
    showValid: {
        type: BooleanConstructor;
        default: boolean;
    };
    defaultValues: {
        type: PropType<Record<Path<InferSchema<Schema>>, any>>;
        default: undefined;
    };
    readonly: {
        type: BooleanConstructor;
        default: undefined;
    };
}>> & Readonly<{
    onInvalid?: ((...args: any[]) => any) | undefined;
    onValid?: ((...args: any[]) => any) | undefined;
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
    "onUpdate:formData"?: ((...args: any[]) => any) | undefined;
}>, {
    readonly: boolean;
    props: [{
        type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
        default: () => {};
    }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
        type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
        default: () => {};
    };
    is: string | Component;
    showValid: boolean;
    defaultValues: [{
        type: PropType<Record<Path<InferSchema<Schema>>, any>>;
        default: undefined;
    }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
        type: PropType<Record<Path<InferSchema<Schema>>, any>>;
        default: undefined;
    };
}, SlotsType<{
    [key: string]: any;
    default: {
        errors?: Record<Path<InferSchema<Schema>>, InferFormattedError<Schema>>;
        formData?: undefined extends Type ? Partial<InferSchema<Schema>> : Type;
        formErrors?: DeepReadonly<InferFormattedError<Schema>>;
        invalid: boolean;
        invalids: Record<string, boolean>;
        invalidLabels?: Record<string, string[]>;
        modelValue: Record<string, any>;
        onUpdate: (value: Record<string, any>) => void;
        onUpdateField: (name: string, value: any) => void;
        readonly: boolean;
        submit?: InjectedFormData<Schema, Type>["submit"];
        validate?: InjectedFormData<Schema, Type>["validate"];
    };
}>, {}, {}, "invalid" | "errors" | "component" | "hasProps" | "is" | "invalidLabels", import('vue').ComponentProvideOptions, true, {}, any>;
