import { HashMap } from 'zrender/lib/core/util.js'; 
 | 
import { DimensionDefinition, DimensionDefinitionLoose, DimensionIndex, DimensionName } from '../../util/types.js'; 
 | 
import { DataStoreDimensionDefine } from '../DataStore.js'; 
 | 
import SeriesDimensionDefine from '../SeriesDimensionDefine.js'; 
 | 
import { Source } from '../Source.js'; 
 | 
/** 
 | 
 * Represents the dimension requirement of a series. 
 | 
 * 
 | 
 * NOTICE: 
 | 
 * When there are too many dimensions in dataset and many series, only the used dimensions 
 | 
 * (i.e., used by coord sys and declared in `series.encode`) are add to `dimensionDefineList`. 
 | 
 * But users may query data by other unused dimension names. 
 | 
 * In this case, users can only query data if and only if they have defined dimension names 
 | 
 * via ec option, so we provide `getDimensionIndexFromSource`, which only query them from 
 | 
 * `source` dimensions. 
 | 
 */ 
 | 
export declare class SeriesDataSchema { 
 | 
    /** 
 | 
     * When there are too many dimensions, `dimensionDefineList` might only contain 
 | 
     * used dimensions. 
 | 
     * 
 | 
     * CAUTION: 
 | 
     * Should have been sorted by `storeDimIndex` asc. 
 | 
     * 
 | 
     * PENDING: 
 | 
     * The item can still be modified outsite. 
 | 
     * But MUST NOT add/remove item of this array. 
 | 
     */ 
 | 
    readonly dimensions: SeriesDimensionDefine[]; 
 | 
    readonly source: Source; 
 | 
    private _fullDimCount; 
 | 
    private _dimNameMap; 
 | 
    private _dimOmitted; 
 | 
    constructor(opt: { 
 | 
        source: Source; 
 | 
        dimensions: SeriesDimensionDefine[]; 
 | 
        fullDimensionCount: number; 
 | 
        dimensionOmitted: boolean; 
 | 
    }); 
 | 
    isDimensionOmitted(): boolean; 
 | 
    private _updateDimOmitted; 
 | 
    /** 
 | 
     * @caution Can only be used when `dimensionOmitted: true`. 
 | 
     * 
 | 
     * Get index by user defined dimension name (i.e., not internal generate name). 
 | 
     * That is, get index from `dimensionsDefine`. 
 | 
     * If no `dimensionsDefine`, or no name get, return -1. 
 | 
     */ 
 | 
    getSourceDimensionIndex(dimName: DimensionName): DimensionIndex; 
 | 
    /** 
 | 
     * @caution Can only be used when `dimensionOmitted: true`. 
 | 
     * 
 | 
     * Notice: may return `null`/`undefined` if user not specify dimension names. 
 | 
     */ 
 | 
    getSourceDimension(dimIndex: DimensionIndex): DimensionDefinition; 
 | 
    makeStoreSchema(): { 
 | 
        dimensions: DataStoreDimensionDefine[]; 
 | 
        hash: string; 
 | 
    }; 
 | 
    makeOutputDimensionNames(): DimensionName[]; 
 | 
    appendCalculationDimension(dimDef: SeriesDimensionDefine): void; 
 | 
} 
 | 
export declare function isSeriesDataSchema(schema: any): schema is SeriesDataSchema; 
 | 
export declare function createDimNameMap(dimsDef: DimensionDefinitionLoose[]): HashMap<DimensionIndex, DimensionName>; 
 | 
export declare function ensureSourceDimNameMap(source: Source): HashMap<DimensionIndex, DimensionName>; 
 | 
export declare function shouldOmitUnusedDimensions(dimCount: number): boolean; 
 |