import type { AutoCompleteProps, CascaderProps, CheckboxProps, ColorPickerProps, DatePickerProps, DynamicInputProps, DynamicTagsProps, FormItemProps, InputNumberProps, InputProps, MentionProps, RadioProps, RateProps, SelectProps, SliderProps, SpaceProps, SwitchProps, TimeProps, TransferProps, TreeSelectProps } from 'naive-ui'; import type { DuxAiEditor, DuxCascaderAsync, DuxFileUpload, DuxImageUpload, DuxMentionAsync, DuxRegion, DuxSelectAsync, DuxTransferAsync, DuxTreeSelectAsync } from '../'; import type { JSONSchema } from '../render/jsonRender'; import type { CheckboxGroupAdaptor, GridProps } from './adaptor'; import type { RadioGroupAdaptor } from './adaptor/radioGroup'; export interface JsonFormToAttrMap { 'editor': typeof DuxAiEditor; 'auto-complete': AutoCompleteProps; 'cascader': CascaderProps; 'cascader-async': InstanceType['$props']; 'checkbox': CheckboxProps; 'checkbox-group': CheckboxGroupAdaptor; 'color': ColorPickerProps; 'date': DatePickerProps; 'dynamic-input': DynamicInputProps; 'dynamic-tags': DynamicTagsProps; 'grid': GridProps; 'input': InputProps; 'mention': MentionProps; 'mention-async': typeof DuxMentionAsync; 'number': InputNumberProps; 'radio': RadioProps; 'radio-group': RadioGroupAdaptor; 'rate': RateProps; 'select': SelectProps; 'select-async': InstanceType['$props']; 'slider': SliderProps; 'space': SpaceProps; 'switch': SwitchProps; 'time': TimeProps; 'transfer': TransferProps; 'tree-select': TreeSelectProps; 'file-upload': InstanceType['$props']; 'image-upload': InstanceType['$props']; 'region': InstanceType['$props']; 'tree-select-async': InstanceType['$props']; 'transfer-async': InstanceType['$props']; 'render': Record; } export type JsonFormItemAdaptor = JsonFormToAttrMap[T] | Record; export type JsonFormType = 'editor' | 'auto-complete' | 'cascader' | 'checkbox' | 'checkbox-group' | 'color' | 'date' | 'dynamic-input' | 'dynamic-tags' | 'grid' | 'input' | 'mention' | 'number' | 'radio' | 'radio-group' | 'rate' | 'select' | 'slider' | 'space' | 'switch' | 'time' | 'transfer' | 'tree-select' | 'file-upload' | 'image-upload' | 'cascader-async' | 'select-async' | 'region' | 'tree-select-async' | 'transfer-async' | 'mention-async' | 'render'; export type FormLayoutType = 'page' | 'form'; export interface JsonFormItemProps extends FormItemProps { layout?: FormLayoutType; desc?: string; class?: string; } export interface JsonFormItemSchema { type: JsonFormType; label?: string; name?: string; modelName?: string; attr?: JsonFormItemAdaptor; itemAttr?: JsonFormItemProps; child?: JsonFormItemSchema | JsonFormItemSchema[]; } export declare function formToJson(schema: JsonFormItemSchema[], layout?: FormLayoutType, modelName?: string): JSONSchema[]; export declare function editorToSchema(data: Record[]): JsonFormItemSchema[];