import { DefineComponent, PropType, Component, ComputedRef } from 'vue' export interface FieldSchema extends Record { component: Component | string; } export interface FieldSchemaWithModel extends FieldSchema { model: string; } export type FormArraySchema = FieldSchemaWithModel[]; export type FormObjectSchema = Record; interface PluginExtensionFunctions { extendFormProps(extendedProps: Record): void; } export type PluginExtenderFunction = (extensions: PluginExtensionFunctions) => unknown; export interface BaseSchemaReturns { behaveLikeParentSchema: ComputedRef; parsedSchema: ComputedRef; hasParentSchema: boolean; formBinds: ComputedRef>; slotBinds: ComputedRef>; } export declare function useSchemaForm< TValues extends Record = Record >(initialFormValues?: TValues): { formModel: TValues }; export type PluginFunction = { extend?: PluginExtenderFunction } & (( baseReturns: BaseSchemaReturns ) => BaseSchemaReturns); export declare function SchemaFormFactory( plugins?: PluginFunction[], components?: Record ): typeof SchemaForm; export type SlotBinds = Record; // export all the types type ClassBindingValue = string | Record; type ClassBindingExpression = | ClassBindingValue | (string | Record)[]; interface FormSlots { // eslint-disable-next-line camelcase __VLS_slots: { beforeForm: SlotBinds; afterForm: SlotBinds; }; } declare const SchemaForm: DefineComponent<{ schema: { type: PropType; default: any; }; sharedConfig: { type: ObjectConstructor; default: any; }; preventModelCleanupOnSchemaChange: { type: PropType; default: boolean; }; schemaRowClasses: { type: PropType; default: any; }; }> & FormSlots // eslint-disable-next-line no-unused-vars declare const SchemaWizard: DefineComponent<{ schema: { type: PropType<(FormObjectSchema | FormArraySchema)[]>; required: true; }; step: { type: PropType; required: true; }; }> & FormSlots export declare function definePlugin(plugin: PluginFunction | { setup: PluginFunction, extend: PluginExtenderFunction }): PluginFunction;