import React from 'react'; import type { ObserverParams, Observer as ObserverType } from '../services/observer'; type Option = any; type Func = () => Value | Promise; export type Type = 'object' | 'array' | 'string' | 'number'; export interface SchemaValue { label?: string | React.ReactNode | ObserverType | Func; name?: string; component?: string | ((props: any) => React.ReactElement) | React.ReactNode | ObserverType | React.ComponentType; placeholder?: string | ObserverType | Func; disabled?: boolean | ObserverType | Func | Promise; visible?: boolean | ObserverType | Func | Promise; value?: ObserverType | Func | any; options?: Option[] | ObserverType | Func | Promise; required?: boolean | [boolean, string]; dependencies?: [string]; pattern?: RegExp | [RegExp, string]; len?: number | [number, string]; max?: number | [number, string]; min?: number | [number, string]; beforeChange?: (data: { nextValue: any; preValue: any; change: any; }, ...args: any) => void; onFieldChange?: (changeState: any, allState: any, fieldInfo: any) => void; group?: string | string[]; validator?: (value: any, form: any) => any; range?: [number, number] | [[number, number], string]; rules?: unknown[] | ObserverType | Func; type?: Type; renderItem?: (any: any) => React.ComponentType; defaultValue?: any; fields?: SchemaType; item?: SchemaValue; observer?: ObserverParams | ObserverType | Func; props?: Record | Func>; itemProps?: any; mode?: string; /** * 不稳定的 API,可能会在未来的版本中移除 */ renderContainer?: (itemSchema: SchemaValue, dom: React.DetailedReactHTMLElement) => React.ReactNode; } interface SchemaItemType extends SchemaValue { dataIndex: string; fields?: [SchemaItemType]; } export type SchemaType = Record | SchemaItemType[]; export declare const DEFAULT_COMPONET: (props: any) => any; export declare function normalizeSchema(scope: string, sourceSchema: SchemaType, parentId?: any): {}; export declare function formatFields(fields: any, parentField: any): { type: any; component: any; $init: any; $hasChild: any; $children: any; $observer: any; schemaId: any; data: Data; }[]; export declare function formatField(sourceField: any, key: any, parentField?: any): { type: any; component: any; $init: any; $hasChild: any; $children: any; $observer: any; schemaId: any; data: Data; }; export declare function mergeField(field: any, defaultValue?: {}): any; export interface Data { label?: string | React.ReactNode; component?: string | ((props: any) => React.ReactElement); placeholder?: string; disabled?: boolean; visible?: boolean; value?: any; options?: any[]; required?: boolean | [boolean, string]; pattern?: RegExp | [RegExp, string]; len?: number | [number, string]; max?: number | [number, string]; min?: number | [number, string]; range?: [number, number] | [[number, number], string]; validator?: (value: any, error: any, form: any) => void; rules?: unknown[]; name?: string; itemProps: any; type?: Type; beforeChange?: (data: { nextValue: any; preValue: any; change: any; }, ...args: any) => void; props?: Record; mode?: string; } export {};