import './index.less';
import React from 'react';
import { type DripTableExtraOptions, type DripTableRecordTypeBase, type DripTableRecordTypeWithSubtable, type ExtractDripTableExtraOption } from "../../../types";
import { type ButtonProps } from "../button";
interface SlotElementBaseSchema {
    /**
     * 包裹 <Col> 样式名
     */
    className?: string;
    /**
     * 包裹 <Col> 样式
     */
    style?: React.CSSProperties;
    /**
     * 宽度：
     * {number}      跨度，取值 0-24。
     * {'flex-auto'} 自动伸缩。
     * {string}      透传给元素的 width 样式值。
     */
    span?: number | 'flex-auto' | string;
    /**
     * 对齐方式
     * {'flex-start'}    左对齐。
     * {'center'}        居中。
     * {'flex-end'}      右对齐。
     * {'space-between'} 两端对齐。
     * {'space-around'}  等间对齐。
     */
    align?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around';
    /**
     * 是否可见
     */
    visible?: boolean;
}
interface SpacerSlotElementSchema extends SlotElementBaseSchema {
    /**
     * 占位区域
     */
    type: 'spacer';
}
interface TextSlotElementSchema extends SlotElementBaseSchema {
    /**
     * 文本展示
     */
    type: 'text';
    /**
     * 文本内容
     */
    text: string;
}
interface HTMLSlotElementSchema extends SlotElementBaseSchema {
    /**
     * 富文本展示
     */
    type: 'html';
    /**
     * 富文本内容
     */
    html: string;
}
interface SearchSlotElementSchema extends SlotElementBaseSchema {
    /**
     * 基本搜索
     */
    type: 'search';
    /**
     * 搜索区域类名
     */
    wrapperClassName?: string;
    /**
     * 搜索区域样式
     */
    wrapperStyle?: React.CSSProperties;
    /**
     * 暗纹提示
     */
    placeholder?: string;
    /**
     * 显示清空按钮
     */
    allowClear?: boolean;
    /**
     * 搜索按钮文字
     */
    searchButtonText?: string;
    /**
     * 搜索按钮大小
     */
    searchButtonSize?: 'large' | 'middle' | 'small';
    /**
     * 多维度搜索维度指定
     */
    searchKeys?: {
        label: string;
        value: number | string;
    }[];
    /**
     * 多维度搜索默认维度值
     */
    searchKeyDefaultValue?: number | string;
}
interface CustomSlotElementSchema extends SlotElementBaseSchema {
    /**
     * 用户自定义组件插槽
     */
    type: 'slot';
    /**
     * 插槽渲染函数标识符
     */
    slot: string;
    /**
     * 插槽样式类名
     */
    class?: string;
    /**
     * 插槽自定义样式
     */
    style?: Record<string, string>;
    /**
     * 透传给自定义组件的数据
     */
    data?: unknown;
    /**
     * @deprecated 请使用 `data`、`class`、`style` 字段
     */
    props?: Record<string, unknown>;
}
interface InsertButtonSlotElementSchema extends SlotElementBaseSchema {
    type: 'insert-button';
    insertButtonClassName?: string;
    insertButtonStyle?: React.CSSProperties;
    insertButtonText?: string;
    showIcon?: boolean;
}
interface LayoutSelectorSlotElementSchema extends SlotElementBaseSchema {
    /**
     * table布局方式选择器
     */
    type: 'layout-selector';
    /**
     * 布局方式选择器提示文案
     */
    selectorButtonText?: string;
    /**
     * 选择器按钮样式
     */
    selectorButtonType?: ButtonProps['type'];
}
interface DisplayColumnSelectorSlotElementSchema extends SlotElementBaseSchema {
    /**
     * 展示列选择器
     */
    type: 'display-column-selector';
    /**
     * 展示列选择器提示文案
     */
    selectorButtonText?: string;
    /**
     * 选择器按钮样式
     */
    selectorButtonType?: ButtonProps['type'];
}
export declare type DripTableSlotElementSchema = SpacerSlotElementSchema | TextSlotElementSchema | HTMLSlotElementSchema | SearchSlotElementSchema | CustomSlotElementSchema | InsertButtonSlotElementSchema | DisplayColumnSelectorSlotElementSchema | LayoutSelectorSlotElementSchema;
export interface DripTableSlotSchema {
    /**
     * 插槽自定义样式
     */
    style?: React.CSSProperties;
    /**
     * 插槽展示元素配置
     */
    elements?: DripTableSlotElementSchema[];
}
interface SlotRenderProps<RecordType extends DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, ExtractDripTableExtraOption<ExtraOptions, 'SubtableDataSourceKey'>>, ExtraOptions extends Partial<DripTableExtraOptions> = never> {
    /**
     * 自定义样式
     */
    style?: React.CSSProperties;
    /**
     * 插槽 Schema 配置
     */
    schema: DripTableSlotSchema;
    /**
     * 当前插槽位置列 Schema 唯一标识符
     */
    columnKey?: string;
    /**
     * 当前插槽位置行数据（仅位于行插槽可用）
     */
    record?: RecordType;
    /**
     * 当前插槽位置行下标（仅位于行插槽可用）
     */
    recordIndex?: number;
}
declare function SlotRender<RecordType extends DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, ExtractDripTableExtraOption<ExtraOptions, 'SubtableDataSourceKey'>>, ExtraOptions extends Partial<DripTableExtraOptions> = never>(props: SlotRenderProps<RecordType, ExtraOptions>): React.JSX.Element | null;
export default SlotRender;
