import { OptionSourceData, DimensionDefinitionLoose, OptionSourceHeader, SourceFormat, DimensionDefinition, OptionDataItem, DimensionIndex, OptionDataValue, DimensionLoose, ParsedValue } from '../../util/types';
import Source from '../Source';
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 DataTransformResult {
    source: Source;
}
export interface DataTransform {
    (sourceList: Source[], config: DataTransformConfig): {};
}
export interface ExternalDataTransform<TO extends DataTransformOption = DataTransformOption> {
    type: string;
    transform?: (param: ExternalDataTransformParam<TO>) => ExternalDataTransformResultItem | ExternalDataTransformResultItem[];
}
interface ExternalDataTransformParam<TO extends DataTransformOption = DataTransformOption> {
    source: ExternalSource;
    sourceList: ExternalSource[];
    config: TO['config'];
}
export interface ExternalDataTransformResultItem {
    data: OptionSourceData;
    dimensions?: DimensionDefinitionLoose[];
    sourceHeader?: OptionSourceHeader;
}
interface ExternalDimensionDefinition extends DimensionDefinition {
    index: DimensionIndex;
}
declare class ExternalSource {
    data: OptionSourceData;
    sourceFormat: SourceFormat;
    sourceHeaderCount: number;
    getDimensionInfo(dim: DimensionLoose): ExternalDimensionDefinition;
    getDimensionInfoAll(): ExternalDimensionDefinition[];
    getRawDataItem(dataIndex: number): OptionDataItem;
    getRawHeaderItem(dataIndex: number): OptionDataItem;
    count(): number;
    retrieveItemValue(rawItem: OptionDataItem, dimIndex: DimensionIndex): OptionDataValue;
    convertDataValue(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 {};
