import type { VNode } from 'vue';
import { Dayjs } from 'dayjs';
import type { IColumn, IDerivedRowKeys, IMergeCellItem, IRecord, IRowKey, ISorter } from '../table/types';
import type { Nullable, AnyObject } from '../../../_utils/types';
export declare const columnsFlatMap: (columns: IColumn[]) => IColumn[];
export declare const createFilterColumns: (columns: IColumn[]) => IColumn[];
export declare const createShadowColumns: (columns: IColumn[]) => IColumn[];
export declare const getAllColumns: (columns: IColumn[]) => IColumn[];
export declare const mapTableColumns: (columns: IColumn[], callback?: ((column: IColumn) => void) | undefined) => IColumn[];
export declare const deepFindColumn: (columns: IColumn[], mark: string) => Nullable<IColumn>;
export declare const findFirstColumn: (column: IColumn) => IColumn;
export declare const findLastColumn: (column: IColumn) => IColumn;
export declare const filterTableColumns: (columns: IColumn[], marks: string[]) => IColumn[];
export declare const tableDataFlatMap: (list: IRecord[]) => IRecord[];
export declare const getAllTableData: (list: IRecord[]) => IRecord[];
export declare const getAllParentKeys: (tree: IRecord[], fn: (data: IRecord) => IRowKey) => (string | number)[];
export declare const getAllRowKeys: (list: IRecord[], fn: (data: IRecord) => IRowKey) => (string | number)[];
export declare const getChildKeys: (node: IRecord, fn: (data: IRecord) => IRowKey) => (string | number)[];
export declare const convertToRows: (columns: IColumn[]) => IColumn[][];
export declare const deepGetTreeRows: (treeData: IRecord[], fn: (row: IRecord) => boolean) => IRecord<any>[];
export declare const createPreventKeys: (rowKeys: IDerivedRowKeys) => IDerivedRowKeys;
export declare const deletePreventKey: (rowKeys: IDerivedRowKeys) => void;
export declare const getNodeOffset: (el: Nullable<HTMLElement>, container: HTMLElement, rest?: {
    left: number;
    top: number;
}) => any;
export declare const parseHeight: (height: number | string) => Nullable<number | string>;
export declare const difference: <T extends AnyObject<any>>(obj: T, base: T) => T;
export declare const getCellValue: (record: IRecord, dataIndex: string) => any;
export declare const setCellValue: (record: IRecord, dataIndex: string, val: unknown, precision?: number) => void;
export declare const getSplitValue: (record: IRecord, key: string) => string;
export declare const setSplitValue: (record: IRecord, key: string, val: string, precision?: number) => void;
export declare const isValidNumber: (value: number | string) => boolean;
export declare const formatNumber: (value: number | string) => string;
export declare const formatDisplayPrecision: (value: number | string, precision: number) => string | number;
export declare const stringToNumber: (value: string) => number | '';
export declare const getDate: (dateString: string | undefined, format: string) => Date | null;
export declare const formatDate: (date: Dayjs | Date | null, format: string) => string;
export declare const createUidKey: (prefix?: string) => string;
export declare const getTextFromVNode: <T extends string | number>(node: VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}> | T) => T[];
export declare const getTHeadTitle: (title: VNode | string) => string;
export declare const createOrderBy: (sorter: ISorter) => string;
export declare const SPACE_CHAR = "\u001F";
export declare const createWhereSQL: (filters: any, showType?: boolean) => string;
export declare const groupByProps: (array?: IRecord[], props?: string[]) => any[][];
export declare const deepGetColumn: (arr: IColumn[], value: string) => IColumn[] | undefined;
export declare const deepFindRecord: (arr: IRecord[], fn: (node: IRecord) => boolean) => Nullable<IRecord>;
export declare const deepGetRowkey: (arr: IRecord[], value: IRowKey) => IRowKey[] | undefined;
export declare const deepTreeFilter: (treeData: any[], fn: (node: IRecord) => boolean) => any[];
export declare const flatToTree: (list: any[], id: string, pid: string) => any[];
/**
 * 深度比较两个对象字面量
 * @param obj1 对象1
 * @param obj2 对象2
 * @param shallow 是否浅比较
 * @returns
 */
export declare const equalFn: <T = any>(obj1: T, obj2: T, shallow?: boolean) => boolean;
export declare const calcMergedCells: (mergeCells: IMergeCellItem[], visibleRowIndices: number[]) => IMergeCellItem[];
export declare const isSameReference: (obj1: unknown, obj2: unknown) => boolean;
export declare const isNilType: (value: string) => boolean;
