import type { CellMeta, CustomHeaderField, ViewMeta } from '../common';
import type { Fields, FilterParam, Formatter, Meta, RawData, S2CellType, S2DataConfig, SimpleData, SortParams, ViewMetaData } from '../common/interface';
import type { ValueRange } from '../common/interface/condition';
import type { Node } from '../facet/layout/node';
import type { SpreadSheet } from '../sheet-type';
import type { Indexes } from '../utils/indexes';
import type { GetCellMultiDataParams } from './index';
import type { GetCellDataParams, Query } from './interface';
export declare abstract class BaseDataSet {
    /**
     * 字段信息
     */
    fields: Fields;
    /**
     * 字段元信息，包含有字段名、格式化、描述等
     */
    meta: Meta[];
    /**
     * 原始数据
     */
    originData: RawData[];
    /**
     * 索引数据
     */
    indexesData: Record<string, RawData[][] | RawData[]>;
    /**
     * 高级排序, 组内排序
     */
    sortParams: SortParams | undefined;
    /**
     * 筛选配置
     */
    filterParams: FilterParam[] | undefined;
    /**
     * 表格实例
     */
    spreadsheet: SpreadSheet;
    /**
     * 展示数据
     */
    protected displayData: RawData[];
    /**
     * 单元格所对应格式化后的值（用于编辑表）
     */
    displayFormattedValueMap: Map<string, string>;
    constructor(spreadsheet: SpreadSheet);
    /**
     * 获取字段
     */
    getField: (field: CustomHeaderField) => string;
    /**
     * 获取字段信息
     */
    getFieldMeta: ((field: CustomHeaderField, meta?: Meta[]) => Meta | undefined) & import("lodash").MemoizedFunction;
    /**
     * 获取字段名称
     * @param field
     */
    getFieldName(field: CustomHeaderField, defaultValue?: string): string;
    /**
     * 获取自定义单元格字段名称
     * @param cell
     */
    getCustomRowFieldName(cell: S2CellType<ViewMeta | Node>): string | undefined;
    /**
     * 获取自定义单元格字段描述
     * @param cell
     */
    getCustomFieldDescription: (cell: S2CellType<ViewMeta | Node>) => string | undefined;
    /**
     * 获得字段格式化方法
     * @param field
     */
    getFieldFormatter(field: CustomHeaderField): Formatter;
    /**
     * 获得字段描述
     * @param field
     */
    getFieldDescription(field: CustomHeaderField): string | undefined;
    /**
     * 设置数据配置
     * @param dataCfg
     */
    setDataCfg(dataCfg: S2DataConfig): void;
    /**
     * 添加 (角头/数值虚拟字段) 格式化信息
     */
    processMeta(meta: Meta[] | undefined, defaultExtraFieldText: string): Meta[];
    getDisplayDataSet(): RawData[];
    isEmpty(): boolean;
    getEmptyViewIndexes(): Indexes;
    /**
     * 获取 field 的取值范围
     * ! 取值范围是以传入的 data 作为的值做计算
     * ! 没有考虑总计、小计的情况，如果存在总计、小计，但是 data 里面并没有传，这里计算出来的范围就会不准确
     * ! 表格会采用计算明细数据得出，而这些计算出来的总计、小计是和布局结构强相关
     * ! 而要根据 totals 配置来覆盖所有情况，场景非常复杂
     * @param field  values 中的具体数值字段
     * @returns 对应 field 的取值范围
     */
    getValueRangeByField(field: string): ValueRange;
    /** ******************NEED IMPLEMENT BY USER CASE************************ */
    /**
     * Try to process dataConfig in different mode
     * @param dataCfg
     */
    abstract processDataCfg(dataCfg: S2DataConfig): S2DataConfig;
    /**
     * 获取指定字段下的维值
     * 1、query !== null
     * province  city => field
     *   辽宁省
     *          达州市
     *          芜湖市
     *  field = province
     *  query = {province: '辽宁省'}
     *  => [达州市,芜湖市]
     *
     *  2、query = null
     *  query param is not necessary, when just
     *  get some field's all dimension values
     *
     * @param field
     * @param query
     */
    abstract getDimensionValues(field: string, query?: Query): SimpleData[];
    /**
     * 获取单个的单元格数据
     */
    abstract getCellData(params: GetCellDataParams): ViewMetaData | SimpleData | undefined;
    /**
     * 获取批量的单元格数据
     * 如果 query 为空, 则返回全量数据
     * @description 默认获取符合 query 的所有数据，包括小计总计等汇总数据；
     * 如果只希望获取明细数据，请使用 { queryType: QueryDataType.DetailOnly }
     */
    abstract getCellMultiData(params: GetCellMultiDataParams): ViewMetaData[];
    /**
     * 是否超过 1 个数值
     */
    moreThanOneValue(): boolean;
    /**
     * 查询当前整行数据
     */
    abstract getRowData(cellMeta: CellMeta | ViewMeta | Node): ViewMetaData[] | ViewMetaData;
}
