import { EventHandler } from "../../../Core/EventHandler";
import { IDeletable } from "../../../Core/IDeletable";
import { NumberRange } from "../../../Core/NumberRange";
import { EDataSeriesType3D } from "./BaseDataSeries3D";
/**
 * Defines the interface to a DataSeries in SciChart's High Performance Real-time
 * {@link https://www.scichart.com/javascript-chart-features | JavaScript 3D Charts}
 */
export interface IDataSeries3D extends IDeletable {
    /**
     * Gets the {@link EDataSeriesType3D} type of the DataSeries
     */
    readonly type: EDataSeriesType3D;
    /**
     * An {@link EventHandler} which is raised when the data changes.
     * @Remarks
     * To subscribe to dataChanged, use the following code:
     * ```ts
     * const dataSeries = new XyDataSeries(wasmContext);
     * const callback = () => {
     *    // Data has changed
     * };
     * dataSeries.dataChanged.subscribe(callback);
     * ```
     * To unsubscribe from dataChanged, use the following code:
     * ```ts
     * const dataSeries = new XyDataSeries(wasmContext);
     * dataSeries.dataChanged.unsubscribe(callback);
     * ```
     */
    dataChanged: EventHandler<void>;
    /**
     * Gets the DataSeries name. This is used in legend controls and tooltips to identify the series
     */
    dataSeriesName: string;
    /**
     * Gets the total extends of the {@link BaseDataSeries3D | DataSeries3D} in the x-range
     */
    readonly xRange: NumberRange;
    /**
     * Gets the total extends of the {@link BaseDataSeries3D | DataSeries3D} in the y-range
     */
    readonly yRange: NumberRange;
    /**
     * Gets the total extends of the {@link BaseDataSeries3D | DataSeries3D} in the z-range
     */
    readonly zRange: NumberRange;
    /**
     * Determines whether the Data Series has been modified since last resetModified() call.
     */
    readonly isModified: boolean;
    /**
     * Resets the modified flag.
     */
    resetModified(): void;
}
