import { Ref, ComputedRef } from 'vue';
import type { TableBodyRef, IColumn, IFetchParams, IPagination, IRecord, IRowColSpan, IRowKey, IRule, ITableProps, IMergedCell, IMergeCellItem } from '../table/types';
import type { ITableRef } from '../hooks/useTableVar';
import type { ITableState } from '../hooks/useTableRef';
import type { ComponentSize } from '../../../_utils/types';
export type ITableContext = {
    $emit: (name: string, ...args: any[]) => void;
    getRowKey: (row: IRecord, index: number) => IRowKey;
    tableProps: ITableProps;
    tableVar: ITableRef;
    tableBodyRef: Ref<TableBodyRef | undefined>;
    prefixCls: string;
    $size: ComputedRef<ComponentSize>;
    flattenColumns: ComputedRef<IColumn[]>;
    editableColumns: ComputedRef<IColumn[]>;
    leftFixedColumns: ComputedRef<IColumn[]>;
    rightFixedColumns: ComputedRef<IColumn[]>;
    treeExpandIndex: ComputedRef<string>;
    sorter: Ref<ITableState['sorter']>;
    filters: Ref<ITableState['filters']>;
    superFilters: Ref<ITableState['superFilters']>;
    mergedTdCells: Ref<IMergedCell[]>;
    derivedMergeCells: ComputedRef<IMergeCellItem[]>;
    layout: Ref<ITableState['layout']>;
    bordered: ComputedRef<boolean>;
    showFooter: ComputedRef<boolean>;
    showSummary: ComputedRef<boolean>;
    summationRows: ComputedRef<Record<string, number | string>[]>;
    scrollX: Ref<ITableState['scrollX']>;
    scrollY: Ref<ITableState['scrollY']>;
    totalRow: Ref<ITableState['totalRow']>;
    pagination: Ref<IPagination>;
    fetchParams: ComputedRef<IFetchParams>;
    selectionKeys: Ref<IRowKey[]>;
    invalidRowKeys: Ref<IRowKey[]>;
    rowExpandedKeys: Ref<ITableState['rowExpandedKeys']>;
    highlightKey: Ref<IRowKey>;
    isFetch: ComputedRef<boolean>;
    isPingLeft: Ref<boolean>;
    isPingRight: Ref<boolean>;
    isHeadSorter: ComputedRef<boolean>;
    isHeadFilter: ComputedRef<boolean>;
    isFullScreen: Ref<boolean>;
    isTableEmpty: ComputedRef<boolean>;
    isHeadGroup: ComputedRef<boolean>;
    isTreeTable: ComputedRef<boolean>;
    isGroupSubtotal: ComputedRef<boolean>;
    isWebPagination: ComputedRef<boolean>;
    dataChange: () => void;
    tableChange: () => void;
    getTableData: () => Promise<void>;
    getTableDataForDepd: () => Ref<IRecord>;
    setElementStore: (key: string, value: HTMLElement) => void;
    createWebPageData: () => IRecord[];
    createTableFullData: (records: IRecord[]) => void;
    updateTableData: () => void;
    setSorter: (value: ITableState['sorter']) => void;
    setFilters: (value: ITableState['filters']) => void;
    setSuperFilters: (options: ITableState['superFilters']) => void;
    setSelectionKeysEffect: (rowKeys: IRowKey[]) => void;
    setHighlightKey: (rowKey: IRowKey) => void;
    setRowExpandedKeys: (rowKeys: IRowKey[]) => void;
    setSelectionRows: (records: IRecord[]) => void;
    setInvalidRowKeys: (rowKeys: IRowKey[]) => void;
    setMergedCells: (options: IMergedCell[]) => void;
    getSpan: (row: IRecord, column: IColumn, rowIndex: number, columnIndex: number, tableData: IRecord[]) => IRowColSpan;
    getStickyLeft: (dataIndex: string, part?: string) => number;
    getStickyRight: (dataIndex: string, part?: string) => number;
    scrollXToColumn: (dataIndex: string, index?: number) => void;
    scrollYToRecord: (rowKey: IRowKey, index?: number) => void;
    rowInViewport: (index: number) => boolean;
    setPagination: (pagination: IPagination) => void;
    setPingLeft: (value: boolean) => void;
    setPingRight: (value: boolean) => void;
    setSpinning: (value: boolean) => void;
    setFullScreen: (value: boolean) => void;
    setShouldToTop: (value: boolean) => void;
    doFieldValidate: (rules: IRule[], val: unknown, rowKey: IRowKey, columnKey: string, columnTitle: string) => void;
    createTableData: (list: IRecord[]) => void;
    createGroupData: (records: IRecord[]) => IRecord[];
    triggerScrollXEvent: (sl: number) => void;
    triggerScrollYEvent: (st: number) => void;
    scrollBottomDebouncer: (event: Event) => void;
    resetTableScroll: () => void;
    clearTableSorter: () => void;
    clearTableFilter: () => void;
    clearSuperFilters: () => void;
    clearRowSelection: () => void;
    clearRowHighlight: () => void;
};
