import type { CustomHeaderFields, RawData } from '../../common';
import { QueryDataType } from '../../common/constant';
import type { Meta } from '../../common/interface/basic';
import type { PickEssential } from '../../common/interface/type-utils';
import type { CellData } from '../../data-set/cell-data';
import type { DataPath, DataPathParams, FlattingIndexesData, PivotMeta, PivotMetaValue, SortedDimensionValues, TotalStatus } from '../../data-set/interface';
import type { Node } from '../../facet/layout/node';
export declare function filterExtraDimension(dimensions?: CustomHeaderFields): import("../../common").CustomHeaderField[];
export declare function isMultiValue(pathValue: string | number | undefined): boolean;
/**
 * Transform from origin single data to correct dimension values
 * data: {
 *  price: 16,
 *  province: '辽宁省',
 *  city: '芜湖市',
 *  category: '家具',
 *  subCategory: '椅子',
 * }
 * dimensions: [province, city]
 * return [辽宁省, 芜湖市]
 *
 * @param record
 * @param dimensions
 */
export declare function transformDimensionsValues(record?: RawData, dimensions?: string[], placeholder?: string): string[];
export declare function getExistValues(data: RawData, values: string[]): string[];
/**
 * Get dimensions with parent path
 * field: 'category'
 * defaultDimensions: ['province', 'city', 'category', 'subCategory']
 * dimensions: [
 *  {
 *   province: '辽宁省',
 *   city: '芜湖市',
 *   category: '家具',
 *   subCategory: '椅子',
 *   price: ''
 *  },
 * ]
 * return ['辽宁省[&]芜湖市[&]家具']
 *
 * @param field
 * @param defaultDimensions
 * @param dimensions
 */
export declare function getDimensionsWithParentPath(field: string, defaultDimensions: string[] | undefined, dimensions: CellData[]): string[];
export declare function getDataPathPrefix(rowFields: string[], colFields: string[]): string;
/**
 * Transform a single data to path
 * {
 * $$VALUE$$: 15
 * $$EXTRA$$: 'price'
 * "price": 15,
 * "province": "辽宁省",
 * "city": "达州市",
 * "category": "家具",
 * "subCategory": "椅子"
 * }
 * rows: [province, city]
 * columns: [category, subCategory, $$EXTRA$$]
 *
 * rowDimensionValues = [辽宁省, 达州市]
 * colDimensionValues = [家具, 椅子, price]
 *
 * @param params
 */
export declare function getDataPath(params: DataPathParams): DataPath;
interface Param {
    rows: string[];
    columns: string[];
    values: string[];
    valueInCols: boolean;
    data: RawData[];
    indexesData: Record<string, RawData[][] | RawData[]>;
    sortedDimensionValues: SortedDimensionValues;
    rowPivotMeta?: PivotMeta;
    colPivotMeta?: PivotMeta;
    getExistValuesByDataItem?: (data: RawData, values: string[]) => string[];
}
export interface TransformResult {
    paths: DataPath[];
    indexesData: Record<string, RawData[][] | RawData[]>;
    rowPivotMeta: PivotMeta;
    colPivotMeta: PivotMeta;
    sortedDimensionValues: SortedDimensionValues;
}
/**
 * 获取用于数据 transform 中定位的 string 的字段，自定义布局中，自定义字段是 object 类型，这些类型不应该参与到数据处理的流程中
 */
export declare function getIndexFields(fields?: CustomHeaderFields): string[];
/**
 * 转换原始数据为二维数组数据
 */
export declare function transformIndexesData(params: Param): TransformResult;
export declare function deleteMetaById(meta: PivotMeta, nodeId: string): void;
export declare function generateExtraFieldMeta(meta: Meta[], cornerExtraFieldText: string | undefined, defaultText: string): Meta;
export declare function getHeaderTotalStatus(row: Node, col: Node): TotalStatus;
/**
 * 检查 getMultiData 时，传入的 query 是否是包含总计、小计分组的场景
 * MULTI_VALUE 后面再出现具体的名字，就表明是分组场景
 * 以 rows: [province, city] 为例
 * 如果是: [四川, MULTI_VALUE] => 代表获取四川下面的所有 city
 * 如果是: [MULTI_VALUE, 成都] => 这种结果就是所有成都的小计分组
 *    每个 province 下面的 city 都不一样的
 *    就算换成 [province, sex] => [MULTI_VALUE, 女] 这样的形式，去获取所有 province 下的女性，但是每个 province 下的女性的 index 也可能不同
 *    需要将其拓展成多个结构 =>  [MULTI_VALUE, 女] => [[四川，女], [北京，女], ....] => [[1,1],[2,1],[3,2]....]
 */
export declare function existDimensionTotalGroup(path: string[]): boolean;
export declare function getSatisfiedPivotMetaValues(params: {
    pivotMeta: PivotMeta;
    dimensionValues: string[];
    fieldIdx: number;
    queryType: QueryDataType;
    fields: string[];
    sortedDimensionValues: SortedDimensionValues;
}): PivotMetaValue[];
export declare function flattenDimensionValues(params: {
    dimensionValues: string[];
    pivotMeta: PivotMeta;
    fields: string[];
    sortedDimensionValues: SortedDimensionValues;
    queryType?: QueryDataType;
}): string[][];
export declare function getFlattenDimensionValues(params: PickEssential<DataPathParams> & {
    sortedDimensionValues: SortedDimensionValues;
    queryType: QueryDataType;
}): {
    rowQueries: string[][];
    colQueries: string[][];
};
export declare function flattenIndexesData(data: FlattingIndexesData, queryType: QueryDataType): FlattingIndexesData;
/**
 * Get dimensions without path pre
 * dimensions: ['辽宁省[&]芜湖市[&]家具[&]椅子']
 * return ['椅子']
 *
 * @param dimensions
 */
export declare function getDimensionsWithoutPathPre(dimensions: string[]): string[];
export {};
