import { IBoxPlotDataSeriesOptions } from "../Charting/Model/BoxPlotDataSeries";
import { IHlcScaleOffsetFilterOptions } from "../Charting/Model/Filters/HlcScaleOffsetFilter";
import { IOhlcScaleOffsetFilterOptions } from "../Charting/Model/Filters/OhlcScaleOffsetFilter";
import { IXyFilterOptions } from "../Charting/Model/Filters/XyFilterBase";
import { IXyMovingAverageFilterOptions } from "../Charting/Model/Filters/XyMovingAverageFilter";
import { IXyRatioFilterOptions } from "../Charting/Model/Filters/XyRatioFilter";
import { IXyScaleOffsetFilterOptions } from "../Charting/Model/Filters/XyScaleOffsetFilter";
import { IXyyScaleOffsetFilterOptions } from "../Charting/Model/Filters/XyyScaleOffsetFilter";
import { IXyzScaleOffsetFilterOptions } from "../Charting/Model/Filters/XyzScaleOffsetFilter";
import { IHlcDataSeriesOptions } from "../Charting/Model/HlcDataSeries";
import { EDataSeriesType, IDataSeries } from "../Charting/Model/IDataSeries";
import { INonUniformHeatmapSeriesOptions } from "../Charting/Model/NonUniformHeatmapDataSeries";
import { IOhlcDataSeriesOptions } from "../Charting/Model/OhlcDataSeries";
import { IUniformHeatmapSeriesOptions } from "../Charting/Model/UniformHeatmapDataSeries";
import { IXyDataSeriesOptions } from "../Charting/Model/XyDataSeries";
import { IXyNDataSeriesOptions } from "../Charting/Model/XyNDataSeries";
import { IXyTextDataSeriesOptions } from "../Charting/Model/XyTextDataSeries";
import { IXyxDataSeriesOptions } from "../Charting/Model/XyxDataSeries";
import { IXyxyDataSeriesOptions, XyxyDataSeries } from "../Charting/Model/XyxyDataSeries";
import { IXyyDataSeriesOptions } from "../Charting/Model/XyyDataSeries";
import { IXyzDataSeriesOptions } from "../Charting/Model/XyzDataSeries";
import { EDataSeriesType3D } from "../Charting3D/Model/DataSeries/BaseDataSeries3D";
import { IUniformGridDataSeries3DOptions, UniformGridDataSeries3D } from "../Charting3D/Model/DataSeries/UniformGridDataSeries3D";
import { IXyzDataSeries3DOptions, XyzDataSeries3D } from "../Charting3D/Model/DataSeries/XyzDataSeries3D";
import { EDataFilterType } from "../types/DataFilterType";
import { TSciChart } from "../types/TSciChart";
import { TSciChart3D } from "../types/TSciChart3D";
/**
 * Shared data that can be used in {@link ISciChart2DDefinition}
 * or directly in {@link chartBuilder.buildSeries} or {@link chartBuilder.buildDataSeries}
 */
export declare type TSharedDataDefinition = Record<number | string, number[]>;
/** Definition of a data filter */
declare type TFilterDefinition = {
    type: EDataFilterType.XyLinearTrend;
    options?: IXyFilterOptions;
} | {
    type: EDataFilterType.XyMovingAverage;
    options?: IXyMovingAverageFilterOptions;
} | {
    type: EDataFilterType.XyRatio;
    options: IXyRatioFilterOptions;
} | {
    type: EDataFilterType.XyScaleOffset;
    options?: IXyScaleOffsetFilterOptions;
} | {
    type: EDataFilterType.XyyScaleOffset;
    options?: IXyyScaleOffsetFilterOptions;
} | {
    type: EDataFilterType.XyzScaleOffset;
    options?: IXyzScaleOffsetFilterOptions;
} | {
    type: EDataFilterType.HlcScaleOffset;
    options?: IHlcScaleOffsetFilterOptions;
} | {
    type: EDataFilterType.OhlcScaleOffset;
    options?: IOhlcScaleOffsetFilterOptions;
};
/** Definition of XY data */
export declare type TXySeriesData = {
    /** The id of sharedData to use for X data.  You must either specify both xDataId and yDataId, or both xValues and yValues */
    xDataId?: number | string;
    /** The id of sharedData to use for Y data.  You must either specify both xDataId and yDataId, or both xValues and yValues */
    yDataId?: number | string;
} & IXyDataSeriesOptions & {
    filter?: TFilterDefinition;
};
/** Definition of XYXY data */
export declare type TXyxySeriesData = {
    /** The id of sharedData to use for X data.
     * You must either specify all of xDataId, yDataId, x1DataId and y1DataId, or all of xValues, yValues, x1Values and y1Values
     */
    xDataId?: number | string;
    /** The id of sharedData to use for Y data.
     * You must either specify all of xDataId, yDataId, x1DataId and y1DataId, or all of xValues, yValues, x1Values and y1Values
     */
    yDataId?: number | string;
    /** The id of sharedData to use for X1 data.
     * You must either specify all of xDataId, yDataId, x1DataId and y1DataId, or all of xValues, yValues, x1Values and y1Values
     */
    x1DataId?: number | string;
    /** The id of sharedData to use for Y1 data.
     * You must either specify all of xDataId, yDataId, x1DataId and y1DataId, or all of xValues, yValues, x1Values and y1Values
     */
    y1DataId?: number | string;
} & IXyxyDataSeriesOptions;
/** Definition of XYXY data */
export declare type TXyxSeriesData = {
    /** The id of sharedData to use for X data.
     * You must either specify all of xDataId, yDataId, x1DataId and y1DataId, or all of xValues, yValues, x1Values and y1Values
     */
    xDataId?: number | string;
    /** The id of sharedData to use for Y data.
     * You must either specify all of xDataId, yDataId, x1DataId and y1DataId, or all of xValues, yValues, x1Values and y1Values
     */
    yDataId?: number | string;
    /** The id of sharedData to use for X1 data.
     * You must either specify all of xDataId, yDataId, x1DataId and y1DataId, or all of xValues, yValues, x1Values and y1Values
     */
    x1DataId?: number | string;
} & IXyxDataSeriesOptions;
/** Definition of XYN data */
export declare type TXynSeriesData = {
    xDataId?: number | string;
    yDataIds: Array<number | string>;
} & IXyNDataSeriesOptions;
/** Definition of XYY data */
export declare type TXyySeriesData = {
    /** The id of sharedData to use for X data.
     * You must either specify all of xDataId, yDataId and y1DataId, or all of xValues, yValues and y1Values
     */
    xDataId?: number | string;
    /** The id of sharedData to use for Y data.
     * You must either specify all of xDataId, yDataId and y1DataId, or all of xValues, yValues and y1Values
     */
    yDataId?: number | string;
    /** The id of sharedData to use for Y1 data.
     * You must either specify all of xDataId, yDataId and y1DataId, or all of xValues, yValues and y1Values
     */
    y1DataId?: number | string;
} & IXyyDataSeriesOptions & {
    filter?: TFilterDefinition;
};
/** Definition of XYZ data */
export declare type TXyzSeriesData = {
    /** The id of sharedData to use for X data.
     * You must either specify all of xDataId, yDataId and zDataId, or all of xValues, yValues and zValues
     */
    xDataId?: number | string;
    /** The id of sharedData to use for Y data.
     * You must either specify all of xDataId, yDataId and zDataId, or all of xValues, yValues and zValues
     */
    yDataId?: number | string;
    /** The id of sharedData to use for Z data.
     * You must either specify all of xDataId, yDataId and zDataId, or all of xValues, yValues and zValues
     */
    zDataId?: number | string;
} & IXyzDataSeriesOptions & {
    filter?: TFilterDefinition;
};
/** Definition of Open, High, Low, Close data */
export declare type TOhlcSeriesData = {
    /** The id of sharedData to use for X data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    xDataId?: number | string;
    /** The id of sharedData to use for Open data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    openDataId?: number | string;
    /** The id of sharedData to use for High data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    highDataId?: number | string;
    /** The id of sharedData to use for Low data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    lowDataId?: number | string;
    /** The id of sharedData to use for Close data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    closeDataId?: number | string;
} & IOhlcDataSeriesOptions & {
    filter?: TFilterDefinition;
};
/** Definition of Open, High, Low, Close data */
export declare type THlcSeriesData = {
    /** The id of sharedData to use for X data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    xDataId?: number | string;
    /** The id of sharedData to use for High data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    highDataId?: number | string;
    /** The id of sharedData to use for Low data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    lowDataId?: number | string;
    /** The id of sharedData to use for Close data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    closeDataId?: number | string;
} & IHlcDataSeriesOptions & {
    filter?: TFilterDefinition;
};
/** Definition of Box Series data */
export declare type TBoxPlotSeriesData = {
    /** The id of sharedData to use for X data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    xDataId?: number | string;
    /** The id of sharedData to use for Median data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    medianDataId?: number | string;
    /** The id of sharedData to use for Max data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    maxDataId?: number | string;
    /** The id of sharedData to use for Upper data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    upperDataId?: number | string;
    /** The id of sharedData to use for Lower data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    lowerDataId?: number | string;
    /** The id of sharedData to use for Minimun data.  You must either use all DataId or all Values properties.  You cannot mix them. */
    minDataId?: number | string;
} & IBoxPlotDataSeriesOptions & {
    filter?: TFilterDefinition;
};
/** Definition of XYText data */
export declare type TXyTextSeriesData = {
    /** The id of sharedData to use for X data.
     * You must either specify all of xDataId, yDataId and textValues, or all of xValues, yValues and textValues
     */
    xDataId?: number | string;
    /** The id of sharedData to use for Y data.
     * You must either specify all of xDataId, yDataId and textValues, or all of xValues, yValues and textValues
     */
    yDataId?: number | string;
} & IXyTextDataSeriesOptions & {
    filter?: TFilterDefinition;
};
/** Definition of series data, which can take various shapes */
export declare type TSeriesDataDefinition = TXySeriesData | TXyySeriesData | TXyzSeriesData | XyxyDataSeries | TXynSeriesData | THlcSeriesData | TOhlcSeriesData | TXyTextSeriesData | IUniformHeatmapSeriesOptions | INonUniformHeatmapSeriesOptions;
export declare type TDataSeriesDefinition = {
    type: EDataSeriesType;
    options: TSeriesDataDefinition;
};
/**
 * Build a data series from a definition that can be pure data.
 * @param wasmContext A {@link TSciChart | SciChart 2D WebAssembly Context}
 * @param definition A {@link TSeriesDefinition}
 * @param sharedData Optional {@link TSharedDataDefinition} to define shared data which can be referenced by the data series
 * @param originalDataSeries Optional {@Link IDataSeries} to define original data for filter
 * @returns An {@link IDataSeries}
 */
export declare const buildDataSeries: (wasmContext: TSciChart, dataSeriesDefinition: TDataSeriesDefinition, sharedData?: TSharedDataDefinition, originalDataSeries?: IDataSeries) => IDataSeries;
/** Definition of XYZ 3D data */
export declare type TXyzSeries3DData = {
    /** The id of sharedData to use for X data.
     * You must either specify all of xDataId, yDataId and zDataId, or all of xValues, yValues and zValues
     */
    xDataId?: number | string;
    /** The id of sharedData to use for Y data.
     * You must either specify all of xDataId, yDataId and zDataId, or all of xValues, yValues and zValues
     */
    yDataId?: number | string;
    /** The id of sharedData to use for Z data.
     * You must either specify all of xDataId, yDataId and zDataId, or all of xValues, yValues and zValues
     */
    zDataId?: number | string;
} & IXyzDataSeries3DOptions;
export declare type TUniformGrid3DData = {} & IUniformGridDataSeries3DOptions;
export declare type TSeriesDataDefinition3D = TXyzSeries3DData | TUniformGrid3DData;
export declare type TDataSeriesDefinition3D = {
    type: EDataSeriesType3D;
    options: TSeriesDataDefinition3D;
};
/**
 * Build a data series from a definition that can be pure data.
 * @param wasmContext A {@link TSciChart | SciChart 3D WebAssembly Context}
 * @param definition A {@link TSeriesDefinition}
 * @param sharedData Optional {@link TSharedDataDefinition} to define shared data which can be referenced by the data series
 * @returns An {@link IDataSeries3D}
 */
export declare const buildDataSeries3D: (wasmContext: TSciChart3D, dataSeriesDefinition: TDataSeriesDefinition3D, sharedData?: TSharedDataDefinition) => XyzDataSeries3D | UniformGridDataSeries3D;
export {};
