import Source from '../Source';
import { ArrayLike } from 'zrender/esm/core/types';
import { DimensionName, DimensionIndex, OptionSourceData, DimensionIndexLoose, OptionDataItem, OptionDataValue, DimensionDefinition, SourceFormat, SeriesLayoutBy } from '../../util/types';
import List from '../List';
export interface DataProvider {
    pure: boolean;
    persistent: boolean;
    getSource(): Source;
    count(): number;
    getItem(idx: number, out?: OptionDataItem): OptionDataItem;
    appendData(newData: ArrayLike<OptionDataItem>): void;
    clean(): void;
}
export declare class DefaultDataProvider implements DataProvider {
    private _source;
    private _data;
    private _offset;
    private _dimSize;
    pure: boolean;
    persistent: boolean;
    static protoInitialize: void;
    constructor(sourceParam: Source | OptionSourceData, dimSize?: number);
    getSource(): Source;
    count(): number;
    getItem(idx: number, out?: ArrayLike<number>): OptionDataItem;
    appendData(newData: OptionSourceData): void;
    clean(): void;
    private static internalField;
}
declare type RawSourceItemGetter = (rawData: OptionSourceData, startIndex: number, dimsDef: DimensionDefinition[], idx: number) => OptionDataItem;
export declare function getRawSourceItemGetter(sourceFormat: SourceFormat, seriesLayoutBy: SeriesLayoutBy): RawSourceItemGetter;
declare type RawSourceDataCounter = (rawData: OptionSourceData, startIndex: number, dimsDef: DimensionDefinition[]) => number;
export declare function getRawSourceDataCounter(sourceFormat: SourceFormat, seriesLayoutBy: SeriesLayoutBy): RawSourceDataCounter;
declare type RawSourceValueGetter = (dataItem: OptionDataItem, dimIndex: DimensionIndex, dimName: DimensionName) => OptionDataValue | OptionDataItem;
export declare function getRawSourceValueGetter(sourceFormat: SourceFormat): RawSourceValueGetter;
export declare function retrieveRawValue(data: List, dataIndex: number, dim?: DimensionName | DimensionIndexLoose): any;
export declare function retrieveRawAttr(data: List, dataIndex: number, attr: string): any;
export {};
