| import { DimensionDefinitionLoose, SourceFormat, DimensionDefinition, DimensionIndex, OptionDataValue, DimensionLoose, ParsedValue, OptionSourceDataObjectRows, OptionSourceDataArrayRows } from '../../util/types.js'; | 
| import { Source } from '../Source.js'; | 
| export declare type PipedDataTransformOption = DataTransformOption[]; | 
| export declare type DataTransformType = string; | 
| export declare type DataTransformConfig = unknown; | 
| export interface DataTransformOption { | 
|     type: DataTransformType; | 
|     config?: DataTransformConfig; | 
|     print?: boolean; | 
| } | 
| export interface ExternalDataTransform<TO extends DataTransformOption = DataTransformOption> { | 
|     type: string; | 
|     __isBuiltIn?: boolean; | 
|     transform: (param: ExternalDataTransformParam<TO>) => ExternalDataTransformResultItem | ExternalDataTransformResultItem[]; | 
| } | 
| interface ExternalDataTransformParam<TO extends DataTransformOption = DataTransformOption> { | 
|     upstream: ExternalSource; | 
|     upstreamList: ExternalSource[]; | 
|     config: TO['config']; | 
| } | 
| export interface ExternalDataTransformResultItem { | 
|     /** | 
|      * If `data` is null/undefined, inherit upstream data. | 
|      */ | 
|     data: OptionSourceDataArrayRows | OptionSourceDataObjectRows; | 
|     /** | 
|      * A `transform` can optionally return a dimensions definition. | 
|      * The rule: | 
|      * If this `transform result` have different dimensions from the upstream, it should return | 
|      * a new dimension definition. For example, this transform inherit the upstream data totally | 
|      * but add a extra dimension. | 
|      * Otherwise, do not need to return that dimension definition. echarts will inherit dimension | 
|      * definition from the upstream. | 
|      */ | 
|     dimensions?: DimensionDefinitionLoose[]; | 
| } | 
| export declare type DataTransformDataItem = ExternalDataTransformResultItem['data'][number]; | 
| export interface ExternalDimensionDefinition extends Partial<DimensionDefinition> { | 
|     index: DimensionIndex; | 
| } | 
| /** | 
|  * TODO: disable writable. | 
|  * This structure will be exposed to users. | 
|  */ | 
| export declare class ExternalSource { | 
|     /** | 
|      * [Caveat] | 
|      * This instance is to be exposed to users. | 
|      * (1) DO NOT mount private members on this instance directly. | 
|      * If we have to use private members, we can make them in closure or use `makeInner`. | 
|      * (2) "source header count" is not provided to transform, because it's complicated to manage | 
|      * header and dimensions definition in each transform. Source headers are all normalized to | 
|      * dimensions definitions in transforms and their downstreams. | 
|      */ | 
|     sourceFormat: SourceFormat; | 
|     getRawData(): Source['data']; | 
|     getRawDataItem(dataIndex: number): DataTransformDataItem; | 
|     cloneRawData(): Source['data']; | 
|     /** | 
|      * @return If dimension not found, return null/undefined. | 
|      */ | 
|     getDimensionInfo(dim: DimensionLoose): ExternalDimensionDefinition; | 
|     /** | 
|      * dimensions defined if and only if either: | 
|      * (a) dataset.dimensions are declared. | 
|      * (b) dataset data include dimensions definitions in data (detected or via specified `sourceHeader`). | 
|      * If dimensions are defined, `dimensionInfoAll` is corresponding to | 
|      * the defined dimensions. | 
|      * Otherwise, `dimensionInfoAll` is determined by data columns. | 
|      * @return Always return an array (even empty array). | 
|      */ | 
|     cloneAllDimensionInfo(): ExternalDimensionDefinition[]; | 
|     count(): number; | 
|     /** | 
|      * Only support by dimension index. | 
|      * No need to support by dimension name in transform function, | 
|      * because transform function is not case-specific, no need to use name literally. | 
|      */ | 
|     retrieveValue(dataIndex: number, dimIndex: DimensionIndex): OptionDataValue; | 
|     retrieveValueFromItem(dataItem: DataTransformDataItem, dimIndex: DimensionIndex): OptionDataValue; | 
|     convertValue(rawVal: unknown, dimInfo: ExternalDimensionDefinition): ParsedValue; | 
| } | 
| export declare function registerExternalTransform(externalTransform: ExternalDataTransform): void; | 
| export declare function applyDataTransform(rawTransOption: DataTransformOption | PipedDataTransformOption, sourceList: Source[], infoForPrint: { | 
|     datasetIndex: number; | 
| }): Source[]; | 
| export {}; |