import type { IRenderableSeries3D } from "../../Visuals/RenderableSeries/BaseRenderableSeries3D";
import type { IPointMetadata3D } from "./IPointMetadata3D";
/**
 * The PaletteProvider interface allows you to perform per-point paletting or coloring of series or data-points
 * in SciChart's {@link https://www.scichart.com/javascript-chart-features | High Performance JavaScript 3D Charts}
 * @remarks
 * See derived type {@link IPointMarkerPaletteProvider3D} for coloring 3D Scatter or Bubble series
 */
export interface IPaletteProvider3D {
    /**
     * Called when the PaletteProvider3D instance is attached to a 3D RenderableSeries.
     * Use this to be notified when attached and keep a reference to the parent series
     * @param parentSeries
     */
    onAttached(parentSeries: IRenderableSeries3D): void;
    /**
     * Called when the PaletteProvider3D instance is detached from a 3D RenderableSeries
     */
    onDetached(): void;
}
/**
 * The IPointMarkerPaletteProvider3D interface allows you to perform per-point paletting or coloring of series or data-points
 * in 3D Scatter Charts and JavaScript 3D chart types which have a point-marker
 */
export interface IPointMarkerPaletteProvider3D extends IPaletteProvider3D {
    /**
     * Called by SciChart and may be used to override a 3D Point-marker in Scatter or
     * Bubble 3D Charts on a per-point basis
     * @param xValue the current XValue
     * @param yValue the current YValue
     * @param zValue the current ZValue
     * @param index the current index to the data
     * @param metadata the current metadata
     * @returns an ABGR color code, e.g. e.g. 0xFFFF0000 would be red, or 'undefined' for default colouring
     */
    overrideColorAbgr(xValue: number, yValue: number, zValue: number, index: number, metadata?: IPointMetadata3D): number;
}
