import { SetupContext } from 'vue';
import { FormProviderEmits, FormProviderProps } from './form-provider';
import { FormProviderModel, FormProviderRefInstance } from './types';
export declare function useFormProvider(props: Partial<FormProviderProps>, emit: SetupContext<FormProviderEmits>['emit']): {
    readonly ctx: {
        pageProviderProps: import('vue').ComputedRef<Partial<FormProviderProps>>;
        modelRef: import('vue').ComputedRef<FormProviderModel>;
        rulesRef: import('vue').ComputedRef<{}>;
        schemaRef: import('vue').ComputedRef<Record<string, any>>;
        rowSchema: import('vue').ComputedRef<SchemaConfig>;
        formSchema: import('vue').ComputedRef<SchemaConfig>;
        formRef: import('vue').Ref<FormProviderRefInstance, FormProviderRefInstance>;
        bodySchema: import('vue').ComputedRef<(void | import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
            [key: string]: any;
        }> | import('./types').FormProviderBaseBody)[] | (() => void | import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
            [key: string]: any;
        }> | import('./types').FormProviderBaseBody | (void | import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
            [key: string]: any;
        }> | import('./types').FormProviderBaseBody)[])[]>;
        bodySchemaConfig: import('vue').ComputedRef<(import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
            [key: string]: any;
        }> | import('./types').FormProviderBaseBody)[]>;
    };
    readonly methods: {
        handleFormProviderItemProps: (item: any) => {
            vnode: import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
                [key: string]: any;
            }>;
        } | {
            type: string | import('vue').VNode;
            props?: Record<string, any>;
            events?: Record<string, any>;
            use?: boolean;
            draggable?: boolean | Record<string, any>;
            readOnly?: boolean;
            hidden?: boolean;
            visible?: boolean;
            field?: import('./types').FormProviderFieldProps;
            col?: import('./types').FormProviderItemColProps;
            body?: void | import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
                [key: string]: any;
            }> | import('./types').FormProviderBaseBody | (void | import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
                [key: string]: any;
            }> | import('./types').FormProviderBaseBody)[] | (() => void | import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
                [key: string]: any;
            }> | import('./types').FormProviderBaseBody | (void | import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
                [key: string]: any;
            }> | import('./types').FormProviderBaseBody)[]);
            formItemProps: Record<string, any>;
            colProps: Record<string, any>;
            vnode?: undefined;
        };
    };
    readonly templates: {
        DefinePageProviderItem: import('@vueuse/core').DefineTemplateComponent<object, Record<string, import('vue').Slot>>;
        ReusablePageProviderItem: import('@vueuse/core').ReuseTemplateComponent<object, Record<string, import('vue').Slot>>;
    };
};
