import { DimensionIndex, DimensionName, OptionDataItem, ParsedValue, ParsedValueNumeric } from '../util/types.js'; 
 | 
import { DataProvider } from './helper/dataProvider.js'; 
 | 
import OrdinalMeta from './OrdinalMeta.js'; 
 | 
import { Source } from './Source.js'; 
 | 
export declare const CtorUint32Array: ArrayConstructor | Uint32ArrayConstructor; 
 | 
export declare const CtorUint16Array: ArrayConstructor | Uint16ArrayConstructor; 
 | 
export declare const CtorInt32Array: ArrayConstructor | Int32ArrayConstructor; 
 | 
export declare const CtorFloat64Array: ArrayConstructor | Float64ArrayConstructor; 
 | 
/** 
 | 
 * Multi dimensional data store 
 | 
 */ 
 | 
declare const dataCtors: { 
 | 
    readonly float: ArrayConstructor | Float64ArrayConstructor; 
 | 
    readonly int: ArrayConstructor | Int32ArrayConstructor; 
 | 
    readonly ordinal: ArrayConstructor; 
 | 
    readonly number: ArrayConstructor; 
 | 
    readonly time: ArrayConstructor | Float64ArrayConstructor; 
 | 
}; 
 | 
export declare type DataStoreDimensionType = keyof typeof dataCtors; 
 | 
declare type EachCb = (...args: any) => void; 
 | 
declare type FilterCb = (...args: any) => boolean; 
 | 
declare type MapCb = (...args: any) => ParsedValue | ParsedValue[]; 
 | 
export declare type DimValueGetter = (this: DataStore, dataItem: any, property: string, dataIndex: number, dimIndex: DimensionIndex) => ParsedValue; 
 | 
export interface DataStoreDimensionDefine { 
 | 
    /** 
 | 
     * Default to be float. 
 | 
     */ 
 | 
    type?: DataStoreDimensionType; 
 | 
    /** 
 | 
     * Only used in SOURCE_FORMAT_OBJECT_ROWS and SOURCE_FORMAT_KEYED_COLUMNS to retrieve value 
 | 
     * by "object property". 
 | 
     * For example, in `[{bb: 124, aa: 543}, ...]`, "aa" and "bb" is "object property". 
 | 
     * 
 | 
     * Deliberately name it as "property" rather than "name" to prevent it from been used in 
 | 
     * SOURCE_FORMAT_ARRAY_ROWS, because if it comes from series, it probably 
 | 
     * can not be shared by different series. 
 | 
     */ 
 | 
    property?: string; 
 | 
    /** 
 | 
     * When using category axis. 
 | 
     * Category strings will be collected and stored in ordinalMeta.categories. 
 | 
     * And store will store the index of categories. 
 | 
     */ 
 | 
    ordinalMeta?: OrdinalMeta; 
 | 
    /** 
 | 
     * Offset for ordinal parsing and collect 
 | 
     */ 
 | 
    ordinalOffset?: number; 
 | 
} 
 | 
/** 
 | 
 * Basically, DataStore API keep immutable. 
 | 
 */ 
 | 
declare class DataStore { 
 | 
    private _chunks; 
 | 
    private _provider; 
 | 
    private _rawExtent; 
 | 
    private _extent; 
 | 
    private _indices; 
 | 
    private _count; 
 | 
    private _rawCount; 
 | 
    private _dimensions; 
 | 
    private _dimValueGetter; 
 | 
    private _calcDimNameToIdx; 
 | 
    defaultDimValueGetter: DimValueGetter; 
 | 
    /** 
 | 
     * Initialize from data 
 | 
     */ 
 | 
    initData(provider: DataProvider, inputDimensions: DataStoreDimensionDefine[], dimValueGetter?: DimValueGetter): void; 
 | 
    getProvider(): DataProvider; 
 | 
    /** 
 | 
     * Caution: even when a `source` instance owned by a series, the created data store 
 | 
     * may still be shared by different sereis (the source hash does not use all `source` 
 | 
     * props, see `sourceManager`). In this case, the `source` props that are not used in 
 | 
     * hash (like `source.dimensionDefine`) probably only belongs to a certain series and 
 | 
     * thus should not be fetch here. 
 | 
     */ 
 | 
    getSource(): Source; 
 | 
    /** 
 | 
     * @caution Only used in dataStack. 
 | 
     */ 
 | 
    ensureCalculationDimension(dimName: DimensionName, type: DataStoreDimensionType): DimensionIndex; 
 | 
    collectOrdinalMeta(dimIdx: number, ordinalMeta: OrdinalMeta): void; 
 | 
    getOrdinalMeta(dimIdx: number): OrdinalMeta; 
 | 
    getDimensionProperty(dimIndex: DimensionIndex): DataStoreDimensionDefine['property']; 
 | 
    /** 
 | 
     * Caution: Can be only called on raw data (before `this._indices` created). 
 | 
     */ 
 | 
    appendData(data: ArrayLike<any>): number[]; 
 | 
    appendValues(values: any[][], minFillLen?: number): { 
 | 
        start: number; 
 | 
        end: number; 
 | 
    }; 
 | 
    private _initDataFromProvider; 
 | 
    count(): number; 
 | 
    /** 
 | 
     * Get value. Return NaN if idx is out of range. 
 | 
     */ 
 | 
    get(dim: DimensionIndex, idx: number): ParsedValue; 
 | 
    getValues(idx: number): ParsedValue[]; 
 | 
    getValues(dimensions: readonly DimensionIndex[], idx?: number): ParsedValue[]; 
 | 
    /** 
 | 
     * @param dim concrete dim 
 | 
     */ 
 | 
    getByRawIndex(dim: DimensionIndex, rawIdx: number): ParsedValue; 
 | 
    /** 
 | 
     * Get sum of data in one dimension 
 | 
     */ 
 | 
    getSum(dim: DimensionIndex): number; 
 | 
    /** 
 | 
     * Get median of data in one dimension 
 | 
     */ 
 | 
    getMedian(dim: DimensionIndex): number; 
 | 
    /** 
 | 
     * Retrieve the index with given raw data index. 
 | 
     */ 
 | 
    indexOfRawIndex(rawIndex: number): number; 
 | 
    /** 
 | 
     * Retrieve the index of nearest value. 
 | 
     * @param dim 
 | 
     * @param value 
 | 
     * @param [maxDistance=Infinity] 
 | 
     * @return If and only if multiple indices have 
 | 
     *         the same value, they are put to the result. 
 | 
     */ 
 | 
    indicesOfNearest(dim: DimensionIndex, value: number, maxDistance?: number): number[]; 
 | 
    getIndices(): ArrayLike<number>; 
 | 
    /** 
 | 
     * Data filter. 
 | 
     */ 
 | 
    filter(dims: DimensionIndex[], cb: FilterCb): DataStore; 
 | 
    /** 
 | 
     * Select data in range. (For optimization of filter) 
 | 
     * (Manually inline code, support 5 million data filtering in data zoom.) 
 | 
     */ 
 | 
    selectRange(range: { 
 | 
        [dimIdx: number]: [number, number]; 
 | 
    }): DataStore; 
 | 
    /** 
 | 
     * Data mapping to a new List with given dimensions 
 | 
     */ 
 | 
    map(dims: DimensionIndex[], cb: MapCb): DataStore; 
 | 
    /** 
 | 
     * @caution Danger!! Only used in dataStack. 
 | 
     */ 
 | 
    modify(dims: DimensionIndex[], cb: MapCb): void; 
 | 
    private _updateDims; 
 | 
    /** 
 | 
     * Large data down sampling using largest-triangle-three-buckets 
 | 
     * @param {string} valueDimension 
 | 
     * @param {number} targetCount 
 | 
     */ 
 | 
    lttbDownSample(valueDimension: DimensionIndex, rate: number): DataStore; 
 | 
    /** 
 | 
     * Large data down sampling using min-max 
 | 
     * @param {string} valueDimension 
 | 
     * @param {number} rate 
 | 
     */ 
 | 
    minmaxDownSample(valueDimension: DimensionIndex, rate: number): DataStore; 
 | 
    /** 
 | 
     * Large data down sampling on given dimension 
 | 
     * @param sampleIndex Sample index for name and id 
 | 
     */ 
 | 
    downSample(dimension: DimensionIndex, rate: number, sampleValue: (frameValues: ArrayLike<ParsedValue>) => ParsedValueNumeric, sampleIndex: (frameValues: ArrayLike<ParsedValue>, value: ParsedValueNumeric) => number): DataStore; 
 | 
    /** 
 | 
     * Data iteration 
 | 
     * @param ctx default this 
 | 
     * @example 
 | 
     *  list.each('x', function (x, idx) {}); 
 | 
     *  list.each(['x', 'y'], function (x, y, idx) {}); 
 | 
     *  list.each(function (idx) {}) 
 | 
     */ 
 | 
    each(dims: DimensionIndex[], cb: EachCb): void; 
 | 
    /** 
 | 
     * Get extent of data in one dimension 
 | 
     */ 
 | 
    getDataExtent(dim: DimensionIndex): [number, number]; 
 | 
    /** 
 | 
     * Get raw data index. 
 | 
     * Do not initialize. 
 | 
     * Default `getRawIndex`. And it can be changed. 
 | 
     */ 
 | 
    getRawIndex: (idx: number) => number; 
 | 
    /** 
 | 
     * Get raw data item 
 | 
     */ 
 | 
    getRawDataItem(idx: number): OptionDataItem; 
 | 
    /** 
 | 
     * Clone shallow. 
 | 
     * 
 | 
     * @param clonedDims Determine which dims to clone. Will share the data if not specified. 
 | 
     */ 
 | 
    clone(clonedDims?: DimensionIndex[], ignoreIndices?: boolean): DataStore; 
 | 
    private _copyCommonProps; 
 | 
    private _cloneIndices; 
 | 
    private _getRawIdxIdentity; 
 | 
    private _getRawIdx; 
 | 
    private _updateGetRawIdx; 
 | 
    private static internalField; 
 | 
} 
 | 
export default DataStore; 
 |