/**
 * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { ExtractPropTypes, PropType, VNode } from 'vue';
import { EditorConfig } from '../../dynamic-form';
import { HeaderCell, VisualData, VisualDataCell } from '../../data-view';
import { DataGridColumnCommand, SortType } from './designer/data-grid-column.props';
/** 默认 fieldsResolver，与业务自定义解析器区分（Card 下列为空仅表单布局等） */
export declare function defaultDataGridFieldsResolver(_fields: any, _data: any): null;
export interface DataGridColumn {
    dataType: string;
    draggable?: boolean;
    editor?: EditorConfig;
    id?: string;
    parentId?: any;
    field: string;
    title: string;
    width?: number | string;
    /** 记录原始定义宽度 */
    actualWidth?: number;
    /** 标题对齐方式 */
    halign?: 'left' | 'center' | 'right';
    /** 文本对齐方式 */
    align?: 'left' | 'center' | 'right';
    /** 垂直对齐方式 */
    valign?: 'top' | 'middle' | 'bottom';
    left?: number;
    /** 是否固定 */
    fixed?: 'left' | 'right';
    /** 是否显示 */
    visible?: boolean | any;
    /** 只读 */
    readonly?: boolean | any;
    /** 鼠标移动至单元格后，显示悬浮消息 */
    showTips?: boolean;
    /** 单元格提示模式：
     *  allways： 鼠标滑过即显示
     *  auto: 单元格宽度不够时才会显示
     */
    tipMode?: 'allways' | 'auto';
    /** True to allow the column can be sorted. */
    sortable?: boolean;
    sort?: SortType;
    sortOrder?: number;
    sorter?: (preValue: any, postValue: any, sortType: SortType) => number;
    /** True to allow the column can be resized. */
    resizable?: boolean;
    rowspan?: number;
    /** 列合并 */
    colspan?: number;
    /** 列合并原始值  */
    origianlColSpan?: number;
    index?: number;
    /** 允许分组，默认为 true */
    allowGrouping?: boolean;
    /** 是否多语字段 */
    /** 操作列命令 */
    commands?: DataGridColumnCommand[];
    /** True to allow the column can be filtered. */
    filterable?: boolean;
    filter?: string;
    showSetting?: boolean;
    showEllipsis?: boolean;
    /** 列模板 */
    columnTemplate?: (cell: VisualDataCell, visualDataRow: VisualData) => VNode;
    /** inner boolean formatter */
    formatter?: ((cell: VisualDataCell, visualDataRow: VisualData) => VNode | string) | object;
    headerFormatter?: (context: {
        headerCell: HeaderCell;
        headerCells: HeaderCell[];
        columnIndex: number;
    }) => VNode | string;
}
export interface ColumnGroupItem {
    field: string;
    title?: string;
    group?: (ColumnGroupItem | string)[];
}
export type InteractiveMode = 'server' | 'client';
export declare const paginationOptions: {
    /** 启用分页 */
    enable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 当前页码 */
    index: {
        type: NumberConstructor;
        default: number;
    };
    /** 分页交互模式 */
    mode: {
        type: PropType<InteractiveMode>;
        default: string;
    };
    /** 显示页码输入框 */
    showGoto: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 显示页码 */
    showIndex: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 显示每页记录数 */
    showLimits: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 显示分页汇总信息 */
    showPageInfo: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认每页记录数 */
    size: {
        type: NumberConstructor;
        default: number;
    };
    /** 可选择的没有记录数据 */
    sizeLimits: {
        type: {
            (arrayLength: number): number[];
            (...items: number[]): number[];
            new (arrayLength: number): number[];
            new (...items: number[]): number[];
            isArray(arg: any): arg is any[];
            readonly prototype: any[];
            from<T>(arrayLike: ArrayLike<T>): T[];
            from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
            from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
            from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
            of<T_4>(...items: T_4[]): T_4[];
            readonly [Symbol.species]: ArrayConstructor;
        };
        default: number[];
    };
    /** 总记录数 */
    total: {
        type: NumberConstructor;
        default: number;
    };
    /** 禁用分页 */
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type PaginatonOptions = ExtractPropTypes<typeof paginationOptions>;
export type DataGridSortOrder = 'asc' | 'desc';
export interface DataGridSortField {
    /** 排序字段名 */
    name: string;
    /** 排序方式 */
    order: DataGridSortOrder;
}
export declare const sortOptions: {
    /** 启用排序 */
    enable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 排序字段集合 */
    fields: {
        type: {
            (arrayLength: number): DataGridSortField[];
            (...items: DataGridSortField[]): DataGridSortField[];
            new (arrayLength: number): DataGridSortField[];
            new (...items: DataGridSortField[]): DataGridSortField[];
            isArray(arg: any): arg is any[];
            readonly prototype: any[];
            from<T>(arrayLike: ArrayLike<T>): T[];
            from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
            from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
            from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
            of<T_4>(...items: T_4[]): T_4[];
            readonly [Symbol.species]: ArrayConstructor;
        };
        default: never[];
    };
    /** 排序交互模式 */
    mode: {
        type: PropType<InteractiveMode>;
        default: string;
    };
    /** 多列排序 */
    multiSort: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type SortOptions = ExtractPropTypes<typeof sortOptions>;
export type GroupSummaryPosition = 'merge-to-group' | 'separate';
export declare const groupOptions: {
    /** 自定义分组合计内容 */
    customGroupRow: {
        type: FunctionConstructor;
        default: () => void;
    };
    /** 自定义分组行样式 */
    customGroupRowStyle: {
        type: FunctionConstructor;
        default: () => void;
    };
    /** 自行分组合计行样式 */
    customSummaryStyle: {
        type: FunctionConstructor;
        default: () => void;
    };
    /** 启用行数据分组 */
    enable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 分组行合并列数 */
    groupColSpan: {
        type: NumberConstructor;
        default: number;
    };
    /** 行数据分组字段；多字段分组以英文逗号分隔 */
    groupFields: {
        type: {
            (arrayLength: number): string[];
            (...items: string[]): string[];
            new (arrayLength: number): string[];
            new (...items: string[]): string[];
            isArray(arg: any): arg is any[];
            readonly prototype: any[];
            from<T>(arrayLike: ArrayLike<T>): T[];
            from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
            from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
            from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
            of<T_4>(...items: T_4[]): T_4[];
            readonly [Symbol.species]: ArrayConstructor;
        };
        default: never[];
    };
    /** 在DataGrid中显示被分组的列 */
    showGroupedColumn: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 显示分组面板 */
    showGroupPanel: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 启用合计行 */
    showSummary: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 显示合计行位置； */
    summaryPosition: {
        type: PropType<GroupSummaryPosition>;
        default: string;
    };
    /** 自定义分组行内容 */
    customRender: {
        type: PropType<(cell: VisualDataCell, visualDataRow: VisualData) => VNode>;
        default: () => void;
    };
};
export type GroupOptions = ExtractPropTypes<typeof groupOptions>;
export type DataGridFilterStyle = 'filter-column' | 'filter-row';
export declare const filterOptions: {
    /** 启用筛选 */
    enable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** DataGrid筛选风格 */
    filterStyle: {
        type: PropType<DataGridFilterStyle>;
        default: string;
    };
    /** 筛选交互模式 */
    mode: {
        type: PropType<InteractiveMode>;
        default: string;
    };
    /** 显示过滤条件工具条 */
    showSummary: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type FilterOptions = ExtractPropTypes<typeof filterOptions>;
export declare const headerOptions: {
    /** 允许折行显示列标题 */
    wrapHeadings: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type HeaderOptions = ExtractPropTypes<typeof headerOptions>;
export declare const rowNumberOptions: {
    /** 显示行号 */
    enable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 行号列表头标题 */
    heading: {
        type: StringConstructor;
        default: string;
    };
    /** 行号宽度，默认为 36px */
    width: {
        type: NumberConstructor;
        default: number;
    };
    /** 是否展示省略号 */
    showEllipsis: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type RowNumberOptions = ExtractPropTypes<typeof rowNumberOptions>;
export declare const rowOptions: {
    /** 自定义行样式 */
    customRowStyle: {
        type: FunctionConstructor;
        default: () => void;
    };
    /** 自定义单元格样式 */
    customCellStyle: {
        type: FunctionConstructor;
        default: () => void;
    };
    /** 自定义行状态 */
    customRowStatus: {
        type: FunctionConstructor;
        default: () => void;
    };
    /** 禁止行选中表达式 */
    disable: {
        type: FunctionConstructor;
        default: () => void;
    };
    /** 默认行高度为 29px */
    height: {
        type: NumberConstructor;
        default: number;
    };
    /** 鼠标滑过行效果 */
    showHovering: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 禁止数据折行 */
    wrapContent: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type RowOptions = ExtractPropTypes<typeof rowOptions>;
export type DataGridSummaryPosition = 'bottom' | 'top' | 'both';
export declare const summaryOptions: {
    /** 显示合计信息 */
    enable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 合计行自定义样式，对启用合计行模板无效 */
    customSummaryStyle: {
        type: FunctionConstructor;
        default: () => void;
    };
    /** 分组合计字段 */
    groupFields: {
        type: {
            (arrayLength: number): string[];
            (...items: string[]): string[];
            new (arrayLength: number): string[];
            new (...items: string[]): string[];
            isArray(arg: any): arg is any[];
            readonly prototype: any[];
            from<T>(arrayLike: ArrayLike<T>): T[];
            from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
            from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
            from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
            of<T_4>(...items: T_4[]): T_4[];
            readonly [Symbol.species]: ArrayConstructor;
        };
        default: never[];
    };
    /** 合计交互模式 */
    mode: {
        type: PropType<InteractiveMode>;
        default: string;
    };
    /** 合计行显示位置， top: 顶部 bottom: 底部， both: 顶部与底部同时显示 */
    position: {
        type: PropType<DataGridSummaryPosition>;
        default: string;
    };
    /** 自定义分组合行内容 */
    customRender: {
        type: FunctionConstructor;
        default: () => void;
    };
};
export type SummaryOptions = ExtractPropTypes<typeof summaryOptions>;
export type DataGridColumnFitMode = 'none' | 'average' | 'expand' | 'percentage';
export declare const columnOptions: {
    /** 自动列宽。设为true后，所有列将填满表格并不会出现横向滚动条。 */
    fitColumns: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 自动适配列宽度模式 */
    fitMode: {
        type: PropType<DataGridColumnFitMode>;
        default: string;
    };
    groups: {
        type: {
            (arrayLength: number): ColumnGroupItem[];
            (...items: ColumnGroupItem[]): ColumnGroupItem[];
            new (arrayLength: number): ColumnGroupItem[];
            new (...items: ColumnGroupItem[]): ColumnGroupItem[];
            isArray(arg: any): arg is any[];
            readonly prototype: any[];
            from<T>(arrayLike: ArrayLike<T>): T[];
            from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
            from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
            from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
            of<T_4>(...items: T_4[]): T_4[];
            readonly [Symbol.species]: ArrayConstructor;
        };
        defaut: never[];
    };
    /** 允许拖动表头改变列显示顺序 */
    reorderColumn: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 允许拖动改变列宽度 */
    resizeColumn: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 双击表头列自适应内容宽度 */
    resizeColumnOnDoubleClick: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type ColumnOptions = ExtractPropTypes<typeof columnOptions>;
/**
 * 与 use-virtual-scroll / 卡片布局规格一致：fitColumns 为 true 或对象且 enable === true
 */
export declare function isFitColumnsEnabled(columnOption: ColumnOptions | undefined): boolean;
export type FocuseSelectionMode = 'current' | 'all';
export declare const selectionOptions: {
    /** 启用多选且显示checkbox, 选中行后勾选前面的checkbox */
    checkOnSelect: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 当数据源为空时，清空已选记录 */
    clearSelectionOnEmpty: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 自定义已选记录列表中的显示内容 */
    customSelectionItem: {
        type: FunctionConstructor;
        default: () => void;
    };
    /** 允许选中行 */
    enabelSelectRow: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 允许重复点击行是保留选中状态 */
    keepSelectingOnClick: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 允许跨页多选 */
    keepSelectingOnPaging: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 启用多选 */
    multiSelect: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 启用多选时，点击行选中，只允许且只有一行被选中 */
    focusSelection: {
        type: PropType<FocuseSelectionMode>;
        default: string;
    };
    /** 启用多选且显示checkbox, 勾选后并且选中行 */
    selectOnCheck: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 每行前边显示 checkbox */
    showCheckbox: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 显示全选checkbox */
    showSelectAll: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 显示已选数据 */
    showSelection: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type SelectionOptions = ExtractPropTypes<typeof selectionOptions>;
export type DataGridEditMode = 'cell' | 'row';
export declare const editOptions: {
    /** 编辑时选中文本 */
    selectOnEditing: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 编辑模式； row：整行编辑，cell: 单元格编辑 */
    editMode: {
        type: PropType<DataGridEditMode>;
        default: string;
    };
};
export type EditOption = ExtractPropTypes<typeof editOptions>;
export declare const loadingOptions: {
    /** show loading */
    show: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** message on display when loading */
    message: {
        type: StringConstructor;
        default: string;
    };
};
export type LoadingOption = Partial<ExtractPropTypes<typeof editOptions>>;
export declare const dataGridProps: Record<string, any>;
export type DataGridProps = ExtractPropTypes<typeof dataGridProps>;
export declare const eventHandlerResolver: import("../../dynamic-resolver").EventHandlerResolver;
