import React from 'react';
import { ModeType } from '../../dataSourceForm/type';
export interface RecordListWrapperOption {
    label?: React.ReactNode;
    value: string | number;
}
export interface RecordListWrapperFieldSchema {
    name: string;
    label?: React.ReactNode;
    component?: string;
    componentName?: string;
    type?: string;
    /** 接口类型，用于映射到具体组件（如 Select、Input 等） */
    interface?: string;
    options?: RecordListWrapperOption[];
    props?: Record<string, any>;
    /** 子字段（用于嵌套结构，如 Input.JSON） */
    children?: RecordListWrapperFieldSchema[];
    _children?: RecordListWrapperFieldSchema[];
    schema?: Record<string, any>;
    uiSchema?: {
        title?: React.ReactNode;
        enum?: RecordListWrapperOption[];
        'x-component'?: string;
        'x-component-props'?: Record<string, any>;
        'x-read-pretty'?: boolean;
        'x-validator'?: string;
        'x-display'?: 'visible' | 'hidden' | 'none';
        'x-pattern'?: 'editable' | 'disabled' | 'readPretty';
        'x-data-source'?: {
            type?: string;
            options?: Array<{
                id?: string;
                label: string | Record<string, any>;
                value: string;
                color?: string;
            }>;
            labelField?: string;
            valueField?: string;
            dataSource?: any;
            extraParams?: Record<string, any>;
        };
        'x-record-schema'?: RecordListWrapperSchema | RecordListWrapperFieldSchema[] | string;
        default?: any;
        type?: 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object';
    };
}
export interface RecordListWrapperSchema {
    fields?: RecordListWrapperFieldSchema[];
    properties?: Record<string, any>;
    children?: RecordListWrapperFieldSchema[];
}
/**
 * @title RecordListWrapper 组件 Props
 * @description
 * 值结构为 Map：key 是 xDataSource option 的 value，value 是该 option 对应的表单字段值。
 * 例如：{ "5": { "code": "xxx", "type": "yyy" }, "3": { "code": "aaa" } }
 */
export interface RecordListWrapperProps {
    renderMode: ModeType;
    /**
     * 值: Map 结构
     * - key: xDataSource option 的 value
     * - value: 该 option 对应的 xRecordSchema 字段值对象
     */
    value?: Record<string, Record<string, any>>;
    onChange?: (value: Record<string, Record<string, any>>) => void;
    /** xDataSource 选项列表，驱动 tabs 导航和 records 结构 */
    options?: RecordListWrapperOption[];
    /**
     * 上部插槽：用户可在低代码平台拖入自定义导航组件。
     * RecordListWrapper 会通过 cloneElement 注入 options、value（activeKey）、onChange。
     */
    topSlot?: React.ReactNode;
    slot?: React.ReactNode;
    /** xRecordSchema：定义每条记录的子字段结构 */
    xRecordSchema?: string | RecordListWrapperSchema | RecordListWrapperFieldSchema[];
    /** 容器 children：低代码引擎渲染的子组件节点 */
    children?: React.ReactNode;
    /** 低代码设计模式标识 */
    __designMode?: string;
    /**
     * 默认激活的 Tab key，外部传入时优先于 options[0].value
     */
    defaultValue?: string;
    [key: string]: any;
}
