import type { QueryDataType } from '../common';
import type { RawData, SortParam } from '../common/interface';
import type { Node } from '../facet/layout/node';
import type { CellData } from './cell-data';
import type { PivotDataSet } from './pivot-data-set';
export type Query = Record<string, any>;
export type PivotMetaValue = {
    id: string;
    dimensions: string[];
    value: string;
    level: number;
    children: PivotMeta;
    childField?: string;
};
export type PivotMeta = Map<string, PivotMetaValue>;
export type SortedDimensionValues = Record<string, string[]>;
export interface OnFirstCreateParams {
    careRepeated?: boolean;
    dimension: string;
    dimensionPath: string;
}
export type DataPath = (number | string | undefined)[];
export type DataPathParams = {
    rowDimensionValues: string[];
    colDimensionValues: string[];
    rowPivotMeta: PivotMeta;
    colPivotMeta: PivotMeta;
    rowFields: string[];
    colFields: string[];
    isFirstCreate?: boolean;
    onFirstCreate?: (params: OnFirstCreateParams) => void;
    prefix?: string;
};
export interface GetCellDataParams {
    /**
     * 查询条件
     */
    query: Query;
    /**
     * 是否是汇总节点
     */
    isTotals?: boolean;
    /**
     * 行头节点，用于下钻场景
     */
    rowNode?: Node;
    /**
     * 是否是行头
     */
    isRow?: boolean;
    /**
     * 汇总信息
     */
    totalStatus?: TotalStatus;
}
export interface CheckAccordQueryParams {
    dimensionValues: string;
    query: Query;
    dimensions: string[];
    field: string;
}
export interface TotalStatus {
    isRowGrandTotal: boolean;
    isRowSubTotal: boolean;
    isColGrandTotal: boolean;
    isColSubTotal: boolean;
}
export interface GetCellMultiDataParams {
    /**
     * 查询条件
     */
    query?: Query;
    /**
     * 查询类型
     */
    queryType?: QueryDataType;
    /**
     * 下钻
     */
    drillDownFields?: string[];
}
export interface SortActionParams {
    dataSet?: PivotDataSet;
    sortParam?: SortParam;
    originValues?: string[];
    measureValues?: string[] | CellData[];
    sortByValues?: string[];
    isSortByMeasure?: boolean;
}
export interface SortPivotMetaParams {
    pivotMeta: PivotMeta;
    dimensions: string[];
    sortedDimensionValues: string[];
    sortFieldId: string;
}
export type FlattingIndexesData = RawData[][] | RawData[] | RawData;
