import { type ActionDslDefinition } from '@oinone/kunlun-dsl';
import { type ActiveRecord, type ActiveRecords, GroupingData, GroupingField, GroupStatisticsEnum, type Pagination, type QueryContext, type QueryVariables, type RuntimeModelField, type RuntimeRelationField } from '@oinone/kunlun-engine';
import { type Entity } from '@oinone/kunlun-meta';
import { Condition } from '@oinone/kunlun-request';
import { ISort } from '@oinone/kunlun-service';
import { type ActiveEditorContext, TableRowClickMode } from '@oinone/kunlun-vue-ui';
import { VxeTableDefines } from 'vxe-table';
import { type BaseElementListViewWidgetProps, BaseTableColumnWidget, BaseTableWidget } from '../../basic';
import { TableLineHeightEnum } from '../../typing';
export interface TableWidgetProps extends BaseElementListViewWidgetProps {
    fixedHeight?: number | string | false;
}
export declare class TableWidget<Props extends TableWidgetProps = TableWidgetProps> extends BaseTableWidget<Props> {
    protected currentRow: ActiveRecord | undefined;
    initialize(props: Props): this;
    /**
     * 表格底部开启「添加一行」操作
     */
    protected showAddBtn: boolean;
    /**
     * 表格底部开启「快速填报」操作
     */
    protected showQuickFill: boolean;
    protected get cellWidth(): "auto" | undefined;
    protected get cellMinWidth(): string | undefined;
    protected get checkbox(): boolean;
    protected get lineHeight(): string | number | undefined;
    /**
     * 默认基准行高，切换行高时以该值作为计算基准
     * @protected
     */
    protected get defaultBasicLineHeight(): number;
    /**
     * 根据行高类型计算行高
     * @param lineHeight 行高
     * @protected
     */
    protected computeLineHeight(lineHeight: number | string): string | number | undefined;
    /**
     * 计算行高偏移量，切换行高时通过类型获取偏移量
     * @protected
     */
    protected computeLineHeightOffset(lineHeightType: TableLineHeightEnum.SMALL | TableLineHeightEnum.LARGE): number;
    protected get minLineHeight(): number | undefined;
    protected get border(): any;
    protected get stripe(): any;
    protected get isCurrent(): any;
    protected get isHover(): any;
    /**
     * 表格行高是否自适应，默认开启
     */
    protected get autoLineHeight(): boolean;
    protected get lineHeightType(): TableLineHeightEnum | undefined;
    protected get enableSequence(): boolean;
    protected get defaultEnableSequence(): any;
    protected get defaultPageSize(): number;
    protected get activeCount(): number | undefined;
    /**
     * @deprecated 使用activeCount
     */
    protected get inlineActiveCount(): number | undefined;
    protected get allowChecked(): string | boolean | undefined;
    protected get allowAllChecked(): true | "表格最多支持勾选200条";
    protected get isAllCheckedIndeterminate(): boolean | undefined;
    protected checkMethod(params: {
        row: ActiveRecord;
    }): boolean | string | undefined;
    protected checkMethodByGroup({ row }: {
        row: ActiveRecord;
    }): boolean | string | undefined;
    protected hasExpandedGroupNode(children: object[]): boolean;
    protected get readyToAllCheckedCount(): number;
    protected computeReadyToCheckedCount(children: object[]): number;
    protected get operatorColumnDirection(): any;
    protected get operatorColumnWidth(): any;
    protected get operatorColumnButtonType(): any;
    onPaginationChange(current: number, pageSize: number): void;
    onSortChange(sortList: ISort[]): void;
    onGroupChange(groupList: GroupingField[]): void;
    protected resetExpandRowAttr(): void;
    protected get expandAccordion(): boolean;
    /**
     * 单元格合并
     *
     * {@link https://vxetable.cn/v4.6/#/table/api}
     */
    protected get mergeCells(): undefined;
    /**
     * 虚拟滚动 横向滚动配置
     *
     * {@link https://vxetable.cn/v4.6/#/table/api}
     */
    protected get scrollX(): {
        gt: number;
    };
    /**
     * 虚拟滚动 纵向滚动配置
     *
     * {@link https://vxetable.cn/v4.6/#/table/api}
     */
    protected get scrollY(): {
        gt: number;
    };
    /**
     * 是否存在展开行
     */
    protected get existingExpandElement(): boolean;
    protected get expandAll(): boolean;
    protected get expandOperationField(): any;
    protected expandRowIndexes: number[];
    protected lazyExistExpandRow: boolean;
    protected get existExpandRow(): boolean;
    protected isResetExpandRowIndexes(): boolean;
    protected resetExpandRowIndexes(init?: boolean): void;
    protected get allowExpand(): string | boolean | undefined;
    protected expandMethod({ row }: {
        row: ActiveRecord;
    }): string | boolean | undefined;
    protected onToggleRowExpand({ expanded, rowIndex }: {
        expanded: any;
        rowIndex: any;
    }): void;
    /**
     * 当列宽拖动发生变化时, 需要将字段对应的宽度保存到用户偏号
     */
    protected onResizableChange({ column }: {
        column: any;
    }): Promise<void>;
    protected get showFooter(): boolean | undefined;
    protected footerMethod({ columns, data }: {
        columns: VxeTableDefines.ColumnInfo[];
        data: ActiveRecord[];
    }): string[] | string[][];
    protected get statisticsLabel(): string;
    protected get skipStatisticsText(): string;
    protected get emptyStatisticsText(): string;
    protected get statisticsFun(): string | undefined;
    protected get refreshRemoteStatistics(): boolean | undefined;
    protected statistics(statisticalValues: unknown[], statistics: string): string;
    protected generatorStatisticsRow(columns: VxeTableDefines.ColumnInfo[], data: ActiveRecord[]): string[];
    protected statisticsBySum(statisticalValues: unknown[]): string;
    protected remoteStatisticsRow: string[] | undefined;
    protected remoteStatistics(columns: VxeTableDefines.ColumnInfo[], fun: string): Promise<void>;
    protected fetchStatisticsResult(columns: VxeTableDefines.ColumnInfo[], fun: string, ...args: unknown[]): Promise<Record<string, unknown> | undefined>;
    protected generatorStatisticsRow0(columns: VxeTableDefines.ColumnInfo[], fn: (statisticsRow: string[], columnWidget: BaseTableColumnWidget, columnStatistics: string | undefined) => void): string[];
    protected get rowClickActionDslDefinition(): ActionDslDefinition | undefined;
    protected get rowDblClickActionDslDefinition(): ActionDslDefinition | undefined;
    protected get allowRowClick(): boolean;
    protected get rowClickMode(): TableRowClickMode[] | undefined;
    /**
     * 添加一行
     */
    protected onAddRow(): void;
    protected onCurrentChange(e: any): void;
    /**
     * 整行、全表编辑开启时，点击单元格需要记录最新的行+单元格数据
     */
    protected onCellClick(context: ActiveEditorContext): void;
    protected onRowClick({ column, row }: {
        column: any;
        row: any;
    }): Promise<void>;
    protected onRowDblClick({ column, row }: {
        column: any;
        row: any;
    }): Promise<void>;
    protected clickActionWidget(activeRecords: ActiveRecords, actionName: string): Promise<void>;
    protected internalEnabledTreeConfig: boolean | undefined;
    protected treeRelationField: RuntimeRelationField | undefined;
    protected expandTreeField: RuntimeModelField | undefined;
    protected get expandTreeFieldColumn(): string | undefined;
    protected getEnabledTreeConfig(): boolean | undefined;
    /**
     * 默认展开所有子孙树节点（只会在初始化时被触发一次）
     * @protected
     */
    protected getTreeExpandAll(): boolean;
    /**
     * 是否使用懒加载（启用后只有指定 hasChild 字段的节点才允许被点击）
     * @protected
     */
    protected getTreeLazy(): boolean;
    /**
     * 判断树的节点是否有子节点的字段配置
     * @protected
     */
    protected getTreeHasChildField(): string;
    protected getTreeRelationField(): RuntimeRelationField | undefined;
    protected getExpandTreeField(): RuntimeModelField | undefined;
    protected initTreeConfig(): void;
    protected get enabledTreeConfig(): boolean;
    protected get treeConfig(): {
        transform: boolean;
        rowField: string;
        parentField: string;
        hasChild: string;
        expandAll: boolean;
        lazy: boolean;
        loadMethod: ({ row }: {
            row: any;
        }) => Promise<ActiveRecord[]>;
        children?: undefined;
    } | {
        rowField: string;
        parentField: string;
        hasChild: string;
        expandAll: boolean;
        children: string;
        lazy: boolean;
        loadMethod: ({ row }: {
            row: any;
        }) => Promise<ActiveRecord[]>;
        transform?: undefined;
    } | undefined;
    protected loadTreeNodes(condition?: Condition, currentRow?: ActiveRecord): Promise<ActiveRecord[]>;
    $$loadTreeNodes(condition?: Condition, currentRow?: ActiveRecord): Promise<Entity[]>;
    protected buildTreeTableDataSource(dataList: ActiveRecord[]): void;
    protected queryAllTreeNodeChildren(condition: Condition, pagination: Pagination, sort: ISort[], variables: QueryVariables, context: QueryContext): Promise<ActiveRecord[]>;
    protected get enableGrouping(): boolean;
    /**
     * 展开、关闭所有的分组
     *
     */
    protected setAllGroupExpand(expand: boolean): void;
    protected getGroupFieldValues(list: ActiveRecord[], targetRow: ActiveRecord, index?: number): GroupingField[];
    protected getGroupFieldValue(row: ActiveRecord, index: number): GroupingField;
    /**
     * 初始化分组展开字段
     */
    protected initGroupTreeField(): void;
    protected generatorGroupQueryCondition(condition?: Condition): Record<string, unknown>;
    /**
     * 查询分组下对应的数据源（懒加载）
     */
    protected loadGroupData(row: ActiveRecord): Promise<ActiveRecord[]>;
    protected loadGroupStatistics(row: ActiveRecord, field: RuntimeModelField, groupStatistics: GroupStatisticsEnum): Promise<string | undefined>;
    /**
     * 查询分组分页数据
     */
    protected loadGroupPage(condition?: Condition): Promise<any>;
    protected generatorGroupTree(groups?: GroupingData[]): any;
    protected parseGroupValue(groupingData: GroupingData): unknown;
    protected get groupTitleEmptyStyle(): any;
    protected spanMethod({ row }: {
        row: ActiveRecord;
    }): {
        rowspan: number;
        colspan: number;
    } | undefined;
    /**
     * 键盘事件处理
     */
    protected onKeydown({ $event: event }: {
        $event: KeyboardEvent;
    }): void;
    protected onKeyboardMoveToRightCell(event: KeyboardEvent): void;
    protected onKeyboardMoveToLeftCell(event: KeyboardEvent): void;
    protected onKeyboardMoveToDownCell(event: KeyboardEvent): void;
    protected onKeyboardMoveToUpCell(event: KeyboardEvent): void;
    protected onKeyboardEnter(event: KeyboardEvent): void;
    protected onKeyboardCancel(event: KeyboardEvent): void;
    protected getCellEditable(field: string, row: ActiveRecord, rowIndex: number): boolean;
    /**
     * 单元格左右移动
     */
    protected onMoveColumnActiveEditor(event: KeyboardEvent, offset: number): any;
    /**
     * 上下移动
     */
    protected onMoveRowActiveEditor(event: KeyboardEvent, offset: 1 | -1): Promise<void>;
    fetchData(condition?: Condition): Promise<ActiveRecord[]>;
    protected mountedProcess(): Promise<void>;
    protected refreshProcess(condition?: Condition): Promise<void>;
    protected refreshTree(): void;
    protected refreshStatistics(): void;
    protected $$beforeCreated(): void;
    protected $$beforeMount(): void;
}
