import { ModalProps, TableProps } from '@aplus-frontend/antdv';
import { StyleValue, VNode, VNodeChild } from 'vue';
import { ApTableProps } from '../../ap-table';
/** table-modal的props类型 */
export interface ApTableModalProps<TableRowType = any> extends Omit<ModalProps, 'onOk' | 'open' | 'close' | 'visible'> {
    columns: ApTableProps['columns'];
    getRowKey?: (record: TableRowType) => string | number;
    api?: (params: any) => Promise<{
        records: TableRowType[];
        total: number;
    }>;
    /** 支持ApTable组件的props */
    apTableProps?: Omit<ApTableProps, 'columns' | 'getRowKey' | 'request'>;
    maxCount?: number;
    /** 是否渲染modal-title-suffix
     * @default true
     */
    isRenderModalTitleSuffix?: boolean;
    /** 渲染table-modal的后缀函数 */
    renderModalTitleSuffix?: ModalTitleSlots['default'];
    /** 禁用选项 */
    disabledCheckbox?: boolean | ((record: TableRowType, selectRows: TableRowType[]) => boolean);
    /** 其他row-selection选项 */
    rowSelection?: TableProps['rowSelection'];
    /** 表格布局配置 */
    tableLayoutConfig?: TableLayoutConfig;
    /** 渲染头部信息 */
    renderHeader?: () => VNodeChild;
    /** 弹框ok事件回调 */
    onOk?: (data: OpenReturnType<TableRowType>) => Promise<boolean> | void;
}
/** useCreateTableModal参数类型 */
export interface UseCreateTableModalProps extends ApTableModalProps {
    /** 组件卸载时销毁modal */
    destroyOnUnmounted?: boolean;
}
/** useTableSelectModal参数类型 */
export interface UseTableSelectModalProps<TableRowType> extends ApTableModalProps<TableRowType> {
    /**
     * 确认选择数据后回调函数
     * @description 不要直接改变回调函数的传入的数据，因为传入的数据是是引用类型，会影响异步返回的数据
     *  */
    finishCallback?: (data: OpenReturnType<TableRowType>) => void;
}
/** open打开方法返回的值的类型 */
export interface OpenReturnType<RowType> {
    keys: number[] | string[];
    rows: RowType[];
}
/** table-modal实例open方法接收的配置类型 */
export interface OpenOptions {
    extraParams?: any;
    /** 弹框刷新方式 */
    refreshMode?: 'reset' | 'submit' | 'none';
    /** 修改apTable的数据 */
    apTableDataSources?: any[];
}
/** 等待异步打开modal错误情况 */
export declare enum AsyncOpenResultError {
    /** 弹框关闭 */
    ModalCancel = "ModalCancel",
    /** 超出最大选择数量 */
    ExceedMaxCount = "ExceedMaxCount",
    /** 没有getRowKey */
    NotFineGetRowKey = "NotFineGetRowKey"
}
/** modal-title slots */
export interface ModalTitleSlots {
    default: (props: {
        maxCount: number;
        count: number;
    }) => VNodeChild;
}
/** table-layout Props */
export interface TableLayoutConfig {
    /** 左侧标题 */
    leftTitle?: string | VNodeChild;
    /** 右侧标题 */
    rightTitle?: (selectedCount: number) => string | VNodeChild;
    /** 右侧内容样式 */
    rightContentStyle?: StyleValue;
    /** 已经选择item渲染, renderSelectedItem有值才为复杂布局 */
    renderSelectedItem?: (record: any, actions: {
        deleteItem: (record: any) => void;
    }) => VNode;
}
