import { ExtractPropTypes, VNode } from 'vue';
import { IHeadColor, ROW_HOVER, SORT_OPTION } from './const';
export declare enum SortScope {
    ALL = "all",
    CURRENT = "current"
}
export type ColumnFilterListItem = {
    text?: string;
    value?: string;
};
export declare enum OverflowModeEnum {
    AUTO = "auto",
    STATIC = "static"
}
export declare const EnumOverflowModeType: import("vue-types").VueTypeDef<"auto" | "static">;
export declare enum ColumnTypeEnum {
    EXPAND = "expand",
    INDEX = "index",
    NONE = "__COL_TYPE_NONE",
    SELECTION = "selection"
}
export declare enum TableAlignEnum {
    CENTER = "center",
    LEFT = "left",
    NONE = "",
    RIGHT = "right"
}
export declare const columnType: import("vue-types").VueTypeDef<"index" | "expand" | "__COL_TYPE_NONE" | "selection">;
export declare const TableAlign: import("vue-types").VueTypeDef<"" | "right" | "left" | "center">;
export declare enum FullEnum {
    FULL = "full",
    FUZZY = "fuzzy"
}
export declare const fullType: import("vue-types").VueTypeDef<"full" | "fuzzy">;
export declare enum SettingSizeEnum {
    LARGE = "large",
    MEDIUM = "medium",
    SMALL = "small"
}
export declare const settingSizeType: import("vue-types").VueTypeDef<"small" | "medium" | "large">;
export declare enum FixedEnum {
    LEFT = "left",
    RIGHT = "right"
}
export declare const fixedType: import("vue-types").VueTypeValidableDef<"right" | "left", import("vue-types/dist/shared/vue-types.d8e57a80").b<"right" | "left">>;
export type IOverflowTooltipOption = {
    content: ((col: Column, row: Record<string, object>) => string) | string;
    disabled?: ((col: Column, row: Record<string, object>) => boolean) | boolean;
    allowHtml?: boolean;
    watchCellResize?: boolean;
    mode?: `${OverflowModeEnum}`;
    popoverOption?: Record<string, object>;
    resizerWay?: ResizerWay;
    showHead?: boolean;
};
export type IOverflowTooltipProp = IOverflowTooltipOption | boolean;
export type IOverflowTooltip = IOverflowTooltipProp;
export declare const IOverflowTooltipPropType: import("vue-types").VueTypeDef<IOverflowTooltipProp>;
export type ISortOption = {
    [key: string]: SORT_OPTION;
};
export declare const ISortType: import("vue-types").VueTypeDef<ISortPropShape>;
export type ISortShape = {
    sortFn?: (...args: any[]) => number;
    sortScope?: SortScope;
    value?: SORT_OPTION;
};
export type ISortPropShape = ISortShape | boolean | string;
export type IHeadFilter = {
    label: string;
    text?: string;
    value: string;
    tipKey?: string;
    showOverflowTooltip?: boolean;
};
export type IFilterShape = {
    list: IHeadFilter[];
    filterFn?: (...args: any[]) => boolean;
    match?: FullEnum;
    checked?: string[];
    filterScope?: SortScope;
    btnSave?: boolean | string;
    btnReset?: boolean | string;
    height?: number;
    maxHeight?: number;
};
export type IFilterPropShape = IFilterShape | boolean | string;
export declare const IFilterType: import("vue-types").VueTypeDef<IFilterPropShape>;
export declare enum ColumnPickEnum {
    DISABLED = "disabled",
    MULTI = "multi",
    SINGLE = "single"
}
export declare enum ResizerWay {
    DEBOUNCE = "debounce",
    THROTTLE = "throttle"
}
export declare const IColumnType: import("vue-types").VueTypeDef<Column>;
export declare const ITableSettings: import("vue-types").VueTypeDef<ISettingPropType>;
/**
 * 配置自定义行高选项
 */
export type SizeItem = {
    value?: string;
    label?: string;
    height?: number;
};
export type Settings = {
    fields?: Field[];
    checked?: string[];
    limit?: number;
    size?: string;
    sizeList?: SizeItem[];
    showLineHeight?: boolean;
    extCls?: string;
    trigger: 'manual';
};
export type ISettingPropType = Settings | boolean;
export type Field = {
    label: string;
    field?: string;
    disabled?: boolean;
    id?: string;
    name?: string;
};
export type LabelFunctionString = ((_column: any, _index: any) => JSX.Element | boolean | number | string) | boolean | number | string;
export declare const LabelFunctionStringType: import("vue-types").VueTypeDef<LabelFunctionString>;
export type HeadRenderArgs = {
    cell?: any;
    data?: any;
    row?: Record<string, any>;
    column?: Column;
    index?: number;
    rows?: Record<string, any>[];
};
export type RenderFunctionString = (args: HeadRenderArgs) => JSX.Element | boolean | number | string;
export declare const RenderFunctionStringType: import("vue-types").VueTypeDef<RenderFunctionString>;
export type SpanFunctionString = (({ column, colIndex, row, rowIndex }: {
    column: any;
    colIndex: any;
    row: any;
    rowIndex: any;
}) => number) | number;
export declare const SpanFunctionStringType: import("vue-types").VueTypeDef<SpanFunctionString>;
export type RowClassFunctionString = ((row: Record<string, object>) => string) | string;
export declare const RowClassFunctionStringType: import("vue-types").VueTypeDef<RowClassFunctionString>;
export type RowHeightFunctionNumber = ((type: string, row: Record<string, object>, rowIndex: number, size?: any) => number) | number | 'auto';
export declare const RowHeightFunctionNumberType: import("vue-types").VueTypeDef<RowHeightFunctionNumber>;
type FunctionNumber = ((...args: any[]) => void) | number;
export declare const FunctionNumberType: import("vue-types").VueTypeDef<FunctionNumber>;
type StringNumber = number | string;
export declare const StringNumberType: (val: number | string) => import("vue-types").VueTypeDef<StringNumber> & {
    default: StringNumber;
};
/**
 * 表格字段解释说明
 */
export type IColumnExplain = {
    content: LabelFunctionString;
    head: LabelFunctionString | boolean;
} | boolean;
export type IDraggableRowOption = {
    label: (() => string) | string;
    render?: () => HTMLElement | JSX.Element;
    fontSize?: number;
    icon?: JSX.Element;
    width?: number;
};
export type IHeadGroup = {
    thColspan: number;
    thRowspan: number;
    isGroup: boolean;
    parent?: IHeadGroup;
    label?: string;
    offsetLeft?: number;
};
export type Column = {
    label?: LabelFunctionString;
    field?: LabelFunctionString;
    render?: RenderFunctionString;
    disabled?: boolean;
    renderHead?: RenderFunctionString;
    width?: number | string;
    minWidth?: number | string;
    columnKey?: string;
    showOverflowTooltip?: IOverflowTooltip;
    type?: string;
    fixed?: boolean | string;
    resizable?: boolean;
    sort?: ISortShape | boolean | string;
    filter?: IFilterShape | boolean | string;
    colspan?: SpanFunctionString;
    rowspan?: SpanFunctionString;
    textAlign?: string;
    className?: RowClassFunctionString;
    align?: string;
    prop?: LabelFunctionString;
    index?: number;
    explain?: IColumnExplain;
    children?: Column[];
    acrossPage?: boolean;
};
export declare const IColumnProp: import("vue-types").VueTypeDef<Column>;
export type Thead = {
    height?: number;
    isShow?: boolean;
    cellFn?: ({ index, column }: {
        index: any;
        column: any;
    }) => JSX.Element | VNode | string;
    color?: IHeadColor | string;
};
export type Columns = ReadonlyArray<Column>;
export type TablePropTypes = Readonly<ExtractPropTypes<typeof tableProps>>;
export type GroupColumn = {
    calcWidth?: number;
    resizeWidth?: number;
    isHidden?: boolean;
    listeners?: Map<string, (...args: any[]) => void>;
} & Column;
export type IColumnActive = {
    index: number;
    active: boolean;
};
export type IReactiveProp = {
    activeColumns: IColumnActive[];
    rowActions: Record<string, object>;
    scrollTranslateY: number;
    scrollTranslateX: number;
    pos: Record<string, object>;
    settings: Settings | boolean;
    setting: {
        size: string;
        height: number;
    };
    defaultSort: Record<string, object>;
};
export type Colgroups = Column & {
    calcWidth: number;
    resizeWidth: number;
    listeners: Map<string, (...args: any[]) => void>;
};
export declare enum IColSortBehavior {
    /**
     * 列与列之间的排序是独立的，互斥的
     */
    independent = "independent",
    /**
     * 列排序是相互依赖的
     */
    interdependent = "interdependent"
}
export type FixedBottomOption = {
    position: 'absolute' | 'relative';
    height: number;
    minHeight?: number;
    loading?: boolean;
};
export type AppendLastRowOption = {
    type: 'default' | 'summary';
    cellRender?: (column: Column, index: number) => VNode | number | string;
};
export declare const tableProps: {
    /**
     * 渲染列表
     */
    data: import("vue-types").VueTypeDef<any[]> & {
        default: () => any[];
    };
    /**
     * Table 列渲染
     */
    columns: import("vue-types").VueTypeDef<Column[]> & {
        default: () => Column[];
    };
    /**
     * 当前选中列
     * 当设置选中多列时（columnPick = multi），配置为数组[index1, index2, index3]，只能选中单列时，可以为数值或者数组[index]
     */
    activeColumn: import("vue-types").VueTypeDef<number | number[]>;
    /**
     * 表格列选中方式
     * 支持：单列（single），多列（multi），禁用（disabled）
     * 默认：disabled
     */
    columnPick: import("vue-types").VueTypeDef<"single" | "disabled" | "multi"> & {
        default: "single" | "disabled" | "multi";
    };
    /**
     * 设置表格高度
     * 默认：auto 根据行数自动填充高度
     * 100%，依赖初始化时父级容器高度
     */
    height: import("vue-types").VueTypeDef<StringNumber> & {
        default: StringNumber;
    };
    /**
     * 是否为斑马纹 Table
     */
    stripe: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 设置表格最小高度
     * 默认：LINE_HEIGHT * 2
     */
    minHeight: import("vue-types").VueTypeDef<StringNumber> & {
        default: StringNumber;
    };
    /**
     * 设置表格最d大高度
     * 默认：auto，依赖外层高度
     */
    maxHeight: import("vue-types").VueTypeDef<StringNumber> & {
        default: StringNumber;
    };
    /**
     * 行高，可以为固定数值类型
     * 可以是函数，返回当前行的高度，返回值为数值类型
     */
    rowHeight: import("vue-types").VueTypeDef<RowHeightFunctionNumber>;
    /**
     * Thead行高，可以为固定数值类型
     */
    headHeight: import("vue-types").VueTypeValidableDef<number, import("vue-types/dist/shared/vue-types.d8e57a80").b<number>> & {
        default: number;
    } & {
        default: number;
    };
    /**
     * 是否显示Head
     */
    showHead: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 排序时对需要排序的字符串数值进行格式化
     * 这里需要配置为正则或者回调函数，(str) => string | number | boolean
     * 如果配置为正则，程序会提取匹配到的第一个结果尝试转换为数值
     * 如果为多个，程序会顺序执行所有正则表达式，直到转换成功
     */
    sortValFormat: import("vue-types").VueTypeDef<any[]> & {
        default: () => any[];
    };
    /**
     * table header config
     */
    thead: import("vue-types").VueTypeDef<Thead> & {
        default: () => Thead;
    };
    /**
     * 是否启用虚拟渲染 & 滚动
     * 当数据量很大时，启用虚拟渲染可以解决压面卡顿问题
     */
    virtualEnabled: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 表格边框显示设置，可以是一个组合
     * 生效规则: 除非单独设置 none,否则会追加每个设置
     */
    border: import("vue-types").VueTypeDef<string | ("col" | "none" | "row" | "horizontal" | "outer")[]> & {
        default: string | (() => ("col" | "none" | "row" | "horizontal" | "outer")[]);
    };
    /**
     * 分页配置
     * 默认值为false，不启用分页
     * 设置为 true，启用分页功能，默认值参考分页组件 Pagination
     */
    pagination: import("vue-types").VueTypeDef<boolean | Record<string, any>> & {
        default: boolean | (() => Record<string, any>);
    };
    /**
     * 分页组件高度
     * 在设置了分页配置之后才会生效
     * 用于配置分页组件的高度，在不同项目中，分页组件高度会影响表格高度计算
     * 这里设置为可配置项，避免自计算导致的性能问题以及不确定性样式问题
     */
    paginationHeight: import("vue-types").VueTypeValidableDef<number, import("vue-types/dist/shared/vue-types.d8e57a80").b<number>> & {
        default: number;
    } & {
        default: number;
    };
    /**
     * 是否启用远程分页
     */
    remotePagination: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 是否支持跨页全选
     */
    acrossAll: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 空数据展示
     */
    emptyText: import("vue-types").VueTypeValidableDef<string, import("vue-types/dist/shared/vue-types.d8e57a80").b<string>> & {
        default: string;
    };
    /**
     * 单元格数据为空展示
     */
    emptyCellText: import("vue-types").VueTypeDef<any> & {
        default: any;
    };
    /**
     * 判定单元格是否为空
     * 支持数组：判定条件为 arr.some(item => item === cellText)
     * 支持函数回调：返回结果为 true | false， ({ cellText, row, column }) => boolean
     */
    isEmptyCell: import("vue-types").VueTypeDef<any> & {
        default: any;
    };
    /**
     * bk-table-setting-content
     */
    settings: import("vue-types").VueTypeDef<ISettingPropType>;
    /**
     * 行的 class 的回调方法，也可以使用一个固定的 Object 为所有行设置一样的 Style
     */
    rowClass: import("vue-types").VueTypeDef<any> & {
        default: any;
    };
    /**
     * 行的 style 的回调方法，也可以使用一个固定的 Object 为所有行设置一样的 Style
     */
    rowStyle: import("vue-types").VueTypeDef<any> & {
        default: any;
    };
    /**
     * 单元格的 style 的回调方法，也可以使用一个固定的 Object 为所有单元格设置一样的 Style
     */
    cellStyle: import("vue-types").VueTypeDef<any> & {
        default: any;
    };
    /**
     * 单元格的 className 的回调方法，也可以使用字符串为所有单元格设置一个固定的 className
     */
    cellClass: import("vue-types").VueTypeDef<any> & {
        default: any;
    };
    /**
     * 表格底部loading加载效果，可以配合表格scroll-bottom事件使用
     * 详细配置可参考bk-loading组件
     */
    scrollLoading: import("vue-types").VueTypeDef<boolean | Record<string, any>> & {
        default: boolean | (() => Record<string, any>);
    };
    /**
     * 仅对 type=selection 的列有效，类型为 Boolean，为 true 则会在数据更新之后保留之前选中的展开收起操作（需指定 row-key）
     */
    reserveExpand: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 仅对设置了selection的情况下生效
     * 用于初始化或者更新row已选中状态
     * 内部使用逻辑为：row[selectionKey]，可以为多级选择，但是多级选择只支持 row.child.child
     */
    selectionKey: import("vue-types").VueTypeValidableDef<string, import("vue-types/dist/shared/vue-types.d8e57a80").b<string>> & {
        default: string;
    } & {
        default: string;
    };
    /**
     * 默认选中行
     * 仅对设置了selection的情况下生效
     * 值可以为 [key1, key2, key3, ...] 或者 [row1, row2, row3, ...]
     * 如果设置为key，则 selectionKey 必须设置，内部匹配逻辑为：row[selectionKey] === key
     */
    checked: import("vue-types").VueTypeValidableDef<unknown[], import("vue-types/dist/shared/vue-types.d8e57a80").b<unknown[]>> & {
        default: () => unknown[];
    } & {
        default: () => unknown[];
    };
    /**
     * 提供自定义判定当前行是否选中
     * 如果设置了此属性，其他判定均不生效
     * ({ row }) => bool
     */
    isSelectedFn: import("vue-types").VueTypeValidableDef<(...args: any[]) => any, import("vue-types/dist/shared/vue-types.d8e57a80").b<(...args: any[]) => any>> & {
        default: (...args: any[]) => any;
    } & {
        default: (...args: any[]) => any;
    };
    /**
     * 行数据的 Key，用来优化 Table 的渲染
     * 此key用于渲染table row的key，便于大数据渲染时的性能优化
     * 在使用 reserve-selection, reserve-expand 功能的情况下，该属性是必填的。
     * 类型为 String 时，支持多层访问：user.info.id，同时支持 user.info[0].id
     */
    rowKey: import("vue-types").VueTypeDef<any> & {
        default: any;
    };
    /**
     * 当内容过长被隐藏时显示 tooltip, 此处为全局配置, 如果只配置此处，整个table都启用
     * column内部可以单个配置覆盖此配置
     */
    showOverflowTooltip: import("vue-types").VueTypeDef<IOverflowTooltipProp>;
    /**
     * 为避免不必要的数据修改导致的不可控组件更新
     * 默认组件不会对传入组件的data进行任何修改
     * 设置此属性为true则会对源数据进行同步（如：启用selection，勾选时想要自动同步到源数据）
     * 目前只会对指定了selectionKey的情况下才会对指定的字段数据进行更新，同时需要指定 rowKey，保证匹配到的row是正确的目标对象
     */
    asyncData: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 鼠标划过行样式行为
     * @param { ROW_HOVER.AUTO }
     * @param { ROW_HOVER.HIGHLIGHT }
     */
    rowHover: import("vue-types").VueTypeDef<ROW_HOVER> & {
        default: ROW_HOVER;
    };
    /**
     * 默认的排序列的 prop 和顺序。它的 prop 属性指定默认的排序的列，order指定默认排序的顺序
     */
    defaultSort: import("vue-types").VueTypeShape<ISortOption> & {
        default: () => Partial<ISortOption>;
    };
    /**
     * 配合 column selection 使用
     * 用于配置渲染行数据的勾选框是否可用
     * 可以直接为 true|false，全部启用或者禁用
     * 如果是函数，则返回 true|false
     * ({ row, index, isCheckAll }) => boolean
     */
    isRowSelectEnable: import("vue-types").VueTypeDef<any> & {
        default: any;
    };
    /**
     * 当外层容器尺寸改变时，当前组件用什么方式进行重新计算
     * 默认为 throttle，按照指定频率重新计算
     * 可选值：debounce，在指定时间范围内只执行一次重新计算
     */
    resizerWay: import("vue-types").VueTypeDef<"debounce" | "throttle">;
    /**
     * 是否监表格尺寸变化而响应式重新计算渲染
     */
    observerResize: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 是否使用IntersectionObserver监听表格Cell进如有可视区域再渲染
     */
    intersectionObserver: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    align: import("vue-types").VueTypeDef<"" | "right" | "left" | "center">;
    headerAlign: import("vue-types").VueTypeDef<"" | "right" | "left" | "center">;
    /**
     * 插入至表格第一行之前的内容容器样式
     * 默认样式为固定在第一行
     * 需要跟随滚动或者其他样式，可以通过此配置进行覆盖
     */
    prependStyle: import("vue-types").VueTypeDef<import("vue").CSSProperties> & {
        default: () => import("vue").CSSProperties;
    };
    /**
     * 列排序行为
     * independent：列与列之间的排序是独立的，互斥的
     * interdependent：列排序是相互影响、依赖的
     *
     */
    colSortBehavior: import("vue-types").VueTypeDef<IColSortBehavior>;
    /**
     * 是否采用flex布局表格
     */
    isFlex: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 是否支持行拖拽排序
     */
    rowDraggable: import("vue-types").VueTypeDef<any> & {
        default: any;
    };
    /**
     * 是否支持shift键多行选择
     */
    shiftMultiChecked: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 启用Scrollbar
     */
    scrollbar: import("vue-types").VueTypeValidableDef<boolean, import("vue-types/dist/shared/vue-types.d8e57a80").b<boolean>> & {
        default: boolean;
    };
    /**
     * 固定在底部的配置项
     */
    fixedBottom: import("vue-types").VueTypeDef<FixedBottomOption> & {
        default: () => FixedBottomOption;
    };
    /**
     * 表格尾部追加的行配置
     */
    appendLastRow: import("vue-types").VueTypeDef<AppendLastRowOption>;
};
export {};
