/**
 * ProTable 类型定义
 */
import { ColumnProps, TableProps } from '@alicloudfe/components/types/table';
import { IProFieldType, IProFieldFormatterProps, IProFieldOptionItem, IProFieldValueEnum } from '@teamix/pro-field';
import { ISimpleFilterProps, IAdvancedFilterProps } from '../../form/src/QueryFilter';
import { ActionGroupProps, IActionButton } from '@teamix/pro-actions';
import { PaginationProps } from '@alicloudfe/components/types/pagination';
import { HeaderProps as ProTableHeaderProps } from '@teamix/utils';
import { Method } from 'axios';
import React from 'react';
import type { Form as FormType } from '@formily/core';
import { ButtonProps } from '@alicloudfe/components/types/button';
declare type IFieldRenderProps = keyof IProFieldFormatterProps;
declare type ITableCellRender = {
    [key in IFieldRenderProps]?: IProFieldFormatterProps[key] | ((...props: any) => void);
} | ((...other: any) => React.ReactNode);
declare type TDataService = {
    /** 翻页器总数 */
    total?: string;
    /** 表格数据 */
    data?: any;
};
export declare type ProColumnProps = {
    /**
     * 会在 title 之后展示一个 icon，hover 之后提示一些信息
     */
    tooltip?: string;
    /**
     * title 之后展示一个 icon 设置，可传 TeamixIcon 对应的 type，也可以是自定义 Icon
     */
    tooltipIcon?: React.ReactNode;
    /** 对应 ProField 里面的 type */
    valueType?: IProFieldType;
    /**
     * 是否显示搜索项
     */
    columnFilters?: boolean;
    /** 渲染单元格内容字段 */
    render?: ITableCellRender;
    /** 格式化数据源 可以传入 options 格式化数据  */
    options?: IProFieldOptionItem[];
    /** 枚举值 */
    valueEnum?: IProFieldValueEnum | IProFieldOptionItem[];
    /** 表头的筛选菜单项，当值为 true 时，自动使用 valueEnum 生成 */
    filters?: boolean;
    /** 操作组配置 */
    actionSchema?: ActionGroupProps;
    /** 指定列对应的字段，支持`a.b`形式的快速取值 和 数组取值 */
    dataIndex?: string | string[];
} & Omit<ColumnProps, 'filters' | 'dataIndex'>;
export declare type ProTableProps = {
    /** ProColums 定义，取代 Table 的 columns */
    columns: ProColumnProps[];
    /** 请求地址 */
    url?: string;
    /** 请求方法 */
    method?: Method;
    /** 请求参数 */
    params?: object;
    /** sort 排序请求参数处理函数 */
    formatSort?: (sort: object) => object;
    /** 如需自定义调用参数格式，则可以设定此值在请求前对 params 进行自定义，如果返回false则可以阻止请求 */
    formatParams?: (params: any) => typeof params;
    /** 对返回值的 data，total 进行映射处理  */
    formatResult?: TDataService | ((res: any) => TDataService);
    /** 请求成功后经过 formatResult 转换后的回调 */
    onFormatResult?: (data: any[]) => void;
    /** 是否第一次加载时就发起请求 */
    requestWhenMount?: boolean;
    /** 内部请求每次成功后的回调 */
    onSuccess?: (res: any) => void;
    /** 内部请求失败时的回调 */
    onError?: (error: Error) => void;
    /** 翻页页数的请求参数名  */
    pageKey?: string;
    /** 翻页器页数对应字段 */
    pageSizeKey?: string;
    /** 翻页器每页显示的条数 */
    pageSize?: number;
    /** 每页显示选择器可选值 */
    pageSizeList?: PaginationProps['pageSizeList'];
    /** 透传给翻页器的属性  */
    paginationProps?: PaginationProps;
    /** 是否显示翻页器  */
    showPagination?: boolean;
    /** 筛选区自动搜索的防抖时间（毫秒） */
    filterDebounce?: number;
    /** ProTable action 的引用，便于手动触发一些方法  */
    actionRef?: React.MutableRefObject<ProTableActionType | undefined>;
    /** 是否首次加载渲染骨架屏  */
    showSkeleton?: boolean;
    /** 渲染骨架屏条数  */
    skeletonSize?: number;
} & Omit<TableProps, 'columns'> & ProTableTopAreaProps;
export declare type ProTableActionType = {
    /** 全屏展示 */
    fullScreen?: () => boolean;
    /** 设置显示列 */
    setColumn?: (newColumns: ProColumnProps[]) => void;
    /** 设置表格大小 */
    setSize?: (mode: 'small' | 'medium') => void;
    /** 刷新表格 */
    refresh?: (params?: any) => void;
    /** 设置 DataSource 过滤规则 */
    setFiltersDataSourceRules?: (rules: string[]) => void;
    /** 过滤 DataSource */
    filterDataSource?: (dataIndex: string) => void;
} & ProTableActionTypeMutations;
/** action State 定义 */
export declare type ProTableActionTypeMutations = {
    /** 获取state状态 */
    getState?: () => ProTableActionTypeState;
    /** 设置全屏状态 */
    setFullScreenState?: (state: boolean) => void;
    /** 绑定state监听事件 */
    on?: (...args: any) => void;
    /** 销毁监听事件 */
    off?: (...args: any) => void;
};
/** action Mutations 定义 */
export declare type ProTableActionTypeState = {
    fullScreenState: boolean;
};
export declare type ProTableTopAreaProps = {
    /** 标题区 */
    header?: ProTableHeaderProps;
    /** 主操作区 */
    mainAction?: ActionGroupProps | React.ReactNode;
    /** 工具栏区 */
    toolBar?: boolean | toolBarItem[];
    /** 快捷操作区 */
    quickAction?: IActionButton | React.ReactNode | React.ReactNode[];
    /** 常规筛选区 */
    regularFilter?: ISimpleFilterProps;
    /** 是否显示常规搜索区的搜索按钮 */
    showSearchBtn?: boolean;
    /** 点击搜索按钮回调 */
    onSearch?: (values: any) => void;
    /** 常规搜索区的搜索按钮属性 */
    searchBtnProps?: ButtonProps;
    /** 高级筛选区 */
    advancedFilter?: IAdvancedFilterProps;
    /** 是否收起高级筛选区 */
    isCollapse?: boolean;
    /** 常规筛选区 form 表单模型 */
    regularFilterForm?: FormType;
    /** 高级筛选区 form 表单模型 */
    advancedFilterForm?: FormType;
    /** 筛选区更改时回调 */
    onFilterChange?: (values: any) => void;
};
/** 单个工具栏 */
declare type toolBarItem = React.ReactNode | 'refresh' | 'density' | 'filterColumn' | 'fullscreen';
export declare type ProTableLayoutProps = {
    actionRef: React.MutableRefObject<ProTableActionType | undefined>;
    columns?: ProColumnProps[];
} & ProTableTopAreaProps;
export {};
