import { ElePaginationProps } from '../ele-app/plus';
import { DataItem, Column, Columns, Sorter, Filter, TableSize, TreeProps, RowKey, SpanMethod, SummaryMethod } from '../ele-data-table/types';
import { PageParam, OrderParamList, Filters, OrderItem, RequestOption, ResponseOption, TablePagination, DatasourceResult, ResponseResult, ReloadDataResult, ColItem, ProProps, ExportBodyNode, ExportDataItem, ExportDataResult, CacheKey, TableLocale } from './types';

/**
 * 合并复合属性
 * @param props 属性
 * @param globalProps 全局属性
 */
export declare function mergeProps<T extends Record<keyof any, any>>(props?: ProProps<T> | null, globalProps?: ProProps<T> | null): ProProps<T>;
/**
 * 获取分页组件属性
 * @param size 表格尺寸
 * @param pagination 分页组件属性
 * @param globalPagination 全局配置分页组件属性
 * @param pageProps 分页相关的属性
 */
export declare function getPaginationProps(size: TableSize, pagination: boolean | TablePagination | undefined, globalPagination: boolean | TablePagination | undefined, pageProps?: Pick<ElePaginationProps, 'total' | 'pageSize' | 'currentPage' | 'hasNext'>): ElePaginationProps | null;
/**
 * 获取默认页码
 * @param pagination 分页组件属性
 * @param globalPagination 全局配置分页组件属性
 */
export declare function getTablePage(pagination: boolean | TablePagination | undefined, globalPagination: boolean | TablePagination | undefined): number;
/**
 * 获取默认每页数量
 * @param pagination 分页组件属性
 * @param globalPagination 全局配置分页组件属性
 */
export declare function getTableLimit(pagination: boolean | TablePagination | undefined, globalPagination: boolean | TablePagination | undefined): number;
/**
 * 判断是否开启自动修正页码
 * @param pagination 分页组件属性
 * @param globalPagination 全局配置分页组件属性
 */
export declare function isAutoAmend(pagination: boolean | TablePagination | undefined, globalPagination: boolean | TablePagination | undefined): boolean;
/**
 * 获取表格默认尺寸
 * @param cacheKey 本地缓存的键名
 * @param size 表格尺寸
 * @param globalSize 全局配置尺寸
 */
export declare function getTableSize(cacheKey?: string, size?: TableSize, globalSize?: TableSize): TableSize;
/**
 * 获取默认筛选条件
 * @param columns 表格的列
 */
export declare function getDefaultFilter(columns?: Columns): Filter;
/**
 * 获取请求参数名称
 * @param globalRequest 全局配置
 * @param request 当前配置
 */
export declare function getRequestName(globalRequest?: RequestOption, request?: RequestOption): RequestOption;
/**
 * 获取响应参数名称
 * @param globalResponse 全局响应参数配置
 * @param response 响应参数配置
 */
export declare function getResponseName(globalResponse?: ResponseOption, response?: ResponseOption): ResponseOption;
/**
 * 获取排序方式封装
 * @param sorter 排序方式
 */
export declare function getOrderItems(sorter?: Sorter): OrderItem[];
/**
 * 生成请求的排序参数列表
 * @param sorter 排序方式
 * @param request 请求参数配置
 * @param globalRequest 全局请求参数配置
 */
export declare function getRequestOrderParamList(sorter?: Sorter, request?: RequestOption, globalRequest?: RequestOption): OrderParamList;
/**
 * 生成请求的筛选参数
 * @param filter 筛选条件
 */
export declare function getRequestFilters(filter?: Filter): Filters;
/**
 * 生成请求的分页参数
 * @param currentPage 页码
 * @param pageSize 每页数量
 * @param request 请求参数配置
 * @param globalRequest 全局请求参数配置
 */
export declare function getRequestPageParam(currentPage: number, pageSize: number, request?: RequestOption, globalRequest?: RequestOption): PageParam;
/**
 * 获取数据源请求结果
 * @param data 数据源请求的原始数据
 * @param response 响应参数配置
 * @param globalResponse 全局响应参数配置
 * @param lazy 表格是否开启懒加载
 * @param treeOpt 树形表格字段名配置
 */
export declare function getResponseResult(data: DatasourceResult, response?: ResponseOption, globalResponse?: ResponseOption, lazy?: boolean, treeOpt?: TreeProps): ResponseResult;
/**
 * 树形懒加载时数据增加可展开的字段标识
 * @param data 请求数据
 * @param lazy 表格是否开启懒加载
 * @param treeProps 树形表格字段名配置
 */
export declare function getResponseData(data?: DataItem[] | null, lazy?: boolean, treeProps?: TreeProps): DataItem[] | undefined;
/**
 * 排序数据
 * @param datasource 数据源
 * @param sorter 排序方式
 */
export declare function sortData(datasource?: DataItem[], sorter?: Sorter): DataItem[];
/**
 * 前端分页排序
 * @param datasource 数据源
 * @param sorter 排序方式
 * @param currentPage 当前页码
 * @param pageSize 每页数量
 */
export declare function reloadData(datasource?: DataItem[], sorter?: Sorter, currentPage?: number, pageSize?: number): ReloadDataResult;
/**
 * 获取列配置标识
 * @param column 列数据
 */
export declare function getColId(column: Column): string | undefined;
/**
 * 获取初始显示的列数据
 * @param columns 列数据
 * @param cacheColsWidth 缓存的列宽
 */
export declare function getInitColumns(columns: Columns, cacheColsWidth?: ColItem[]): Columns;
/**
 * 获取初始显示的列数据
 * @param columns 列数据
 * @param cacheKey 缓存名称
 * @param sortable 是否可排序
 */
export declare function getInitCacheColumns(columns: Columns, cacheKey?: string, sortable?: boolean): Columns;
/**
 * 获取显示的列配置
 * @param columns 原始列数据
 * @param cols 列配置数据
 * @param sortable 是否进行排序
 * @param isHideInCol 用于排序时计算不显示在配置中的列
 * @param filter 强制过滤的列
 * @param reserveUnchecked 是否保留未选中的列
 * @param cacheColsWidth 缓存的列宽
 */
export declare function getCheckedColumns(columns: Columns | undefined, cols: ColItem[], sortable: boolean | undefined, isHideInCol?: (item: Column) => boolean | undefined, filter?: (item: Column) => boolean, reserveUnchecked?: boolean, cacheColsWidth?: ColItem[]): Columns;
/**
 * 获取列展示列表数据
 * @param columns 列配置
 * @param locale 国际化
 * @param filter 过滤列的方法
 * @param cacheCols 缓存的列展示列表数据
 * @param sortFixed 是否对固定列排序
 * @param cancelFixed 是否取消固定列
 * @param cacheColsWidth 缓存的列宽
 */
export declare function getColItems(columns: Columns | undefined, locale: TableLocale, filter?: (item: Column) => boolean, cacheCols?: ColItem[], sortFixed?: boolean, cancelFixed?: boolean, cacheColsWidth?: ColItem[]): {
    cols: ColItem[];
    checkAll: boolean;
    indeterminate: boolean;
};
/**
 * 获取表格密度缓存的名称
 * @param cacheKey 缓存的名称
 */
export declare function getSizeCacheKey(cacheKey: string): string;
/**
 * 获取列配置缓存的名称
 * @param cacheKey 缓存的名称
 */
export declare function getColsCacheKey<T extends CacheKey>(cacheKey: T): T;
/**
 * 获取表格列宽缓存的名称
 * @param cacheKey 缓存的名称
 */
export declare function getColsWidthCacheKey(cacheKey: string): string;
/**
 * 获取导出的列配置缓存的名称
 * @param cacheKey 缓存的名称
 */
/**
 * 获取导出的列宽缓存的名称
 * @param cacheKey 缓存的名称
 */
/**
 * 获取打印的列配置缓存的名称
 * @param cacheKey 缓存的名称
 */
/**
 * 获取打印的列宽缓存的名称
 * @param cacheKey 缓存的名称
 */
/**
 * 获取缓存的列配置下拉列表数据
 * @param cacheKey 缓存的名称
 */
export declare function getCacheCols(cacheKey?: string): ColItem[] | undefined;
/**
 * 获取缓存的表格密度
 * @param cacheKey 缓存的名称
 */
export declare function getCacheSize(cacheKey?: string): TableSize;
/**
 * 获取缓存的列宽
 * @param cacheKey 缓存的名称
 */
export declare function getCacheColsWidth(cacheKey?: string): ColItem[] | undefined;
/**
 * 获取列对应的缓存的列宽
 * @param cacheColsWidth 缓存的列宽
 * @param column 列配置
 */
export declare function getCacheColWidth(cacheColsWidth?: ColItem[], column?: Column): number | string | undefined;
/**
 * 缓存列宽
 * @param width 列宽
 * @param column 列配置
 * @param cacheKey 缓存的名称
 */
export declare function cacheColWidth(width: number, column?: Column, cacheKey?: string): void;
/**
 * 获取 rowKey
 * @param rowKey 自定义 rowKey
 */
export declare function getRowKey(rowKey?: RowKey): string | ((row: DataItem) => string);
/**
 * 导出获取单元格文本
 * @param column 列配置
 * @param row 行数据
 * @param index 行索引
 * @param pageIndex 序号列起始索引
 */
export declare function getCellText(column: Column | undefined, row: DataItem, index: number, pageIndex?: number): string;
/**
 * 导出获取表头单元格文本
 * @param column 列配置
 * @param index 行索引
 */
export declare function getHeaderCellText(column: Column | undefined, index: number): string;
/**
 * 获取主体数据封装节点
 * @param data 数据
 * @param childrenField 子级字段名
 * @param level 树形所处深度
 * @param parents 父级节点
 */
export declare function getExportBodyNode(data: DataItem[], childrenField?: string, level?: number, parents?: ExportBodyNode[]): {
    depth: number;
    nodes: ExportBodyNode[];
};
/**
 * 获取导出的数据
 * @param data 元数据
 * @param columns 列配置
 * @param spanMethod 单元格合并方法
 * @param pageIndex 序号列起始索引
 * @param showSummary 是否显示合计行
 * @param sumText 合计行文本
 * @param summaryMethod 合计行自定义方法
 * @param childrenField 子级字段名
 * @param showTreeIndex 是否显示层级序号
 * @param showHeader 是否显示表头
 */
export declare function getExportData(data: DataItem[], columns: Columns, spanMethod?: SpanMethod, pageIndex?: number, showSummary?: boolean, sumText?: string, summaryMethod?: SummaryMethod, childrenField?: string, showTreeIndex?: boolean, showHeader?: boolean): ExportDataResult;
/**
 * 导出 csv 文件
 * @param fileName 文件名
 * @param headerData 表头数据
 * @param bodyData 主体数据
 * @param footerData 表尾数据
 */
export declare function exportCSV(fileName: string, headerData: ExportDataItem[][], bodyData: ExportDataItem[][], footerData: ExportDataItem[][]): void;
/**
 * 导出判断列是否显示
 * @param item 列配置
 */
export declare function columnsExportFilter(item: Column): boolean;
/**
 * 打印判断列是否显示
 * @param item 列配置
 */
export declare function columnsPrintFilter(item: Column): boolean;
/**
 * 列配置判断列是否显示
 * @param item 列配置
 */
export declare function columnsSettingFilter(item: Column): boolean;
