import type { ModelParams } from "../interfaces/chart-interfaces.js";
import type { ModelTypes } from "../interfaces/common.js";
import type { WithNegativeValuesStackedToBaseline } from "../properties/series/negative-values-stacked-to-baseline.js";
import type { SerialChartModel } from "../serial-chart-model/serial-chart-model.js";
import type { WebChartTypes } from "../../spec/chart-object-literals.js";
import type { RESTSimpleLineSymbolStyle, RESTSimpleMarkerSymbolStyle } from "../../spec/rest-js-object-literals.js";
import type { Color } from "../../spec/rest-js-types.js";
import type { ChartConfig } from "../../utils/types/index.js";

export class ComboBarLineChartModel extends ComboBarLineChartModelSuperclass {
  /**
   * Gets the color of the filled area for line chart.
   * **Note:** `areaColor` will be applied only if `showArea` is true, and is defaulted to the line color if not provided.
   *
   * @param seriesIndex - The index of the series.
   */
  getAreaColor(seriesIndex: number): Color | undefined;
  /**
   * Gets whether to hide oversized data labels of the side-by-side series based on the series index. '
   *
   * If the index is out of bounds, it will return `undefined`.
   *
   * @param seriesIndex - The index of the series.
   */
  getSeriesHideOversizedSideBySideLabels(seriesIndex: number): boolean | undefined;
  /**
   * Gets whether to hide oversized data labels of the stacked series based on the series index.
   * If the index is out of bounds, it will return `undefined`.
   *
   * @param seriesIndex - The index of the series.
   */
  getSeriesHideOversizedStackedLabels(seriesIndex: number): boolean | undefined;
  /**
   * Gets the line style of the series based on the series index.
   * If the index is out of bounds, it will return `undefined`.
   *
   * @param seriesIndex - The index of the series.
   */
  getSeriesLineStyle(seriesIndex: number): RESTSimpleLineSymbolStyle | undefined;
  /**
   * Gets the line width of the series based on the series index.
   * If the index is out of bounds, it will return `undefined`.
   *
   * @param seriesIndex - The index of the series.
   */
  getSeriesLineWidth(seriesIndex: number): number | undefined;
  /**
   * Gets the marker color of the series based on the series index.
   * If the index is out of bounds, it will return `undefined`.
   *
   * @param seriesIndex - The index of the series.
   */
  getSeriesMarkerColor(seriesIndex: number): Color | undefined;
  /**
   * Gets the marker size of the series based on the series index.
   * If the index is out of bounds, it will return `undefined`.
   *
   * @param seriesIndex - The index of the series.
   */
  getSeriesMarkerSize(seriesIndex: number): number | undefined;
  /**
   * Gets the marker style of the series based on the series index.
   * If the index is out of bounds, it will return `undefined`.
   *
   * @param seriesIndex - The index of the series.
   */
  getSeriesMarkerStyle(seriesIndex: number): RESTSimpleMarkerSymbolStyle | undefined;
  /**
   * Indicate whether the area is visible for the line series.
   *
   * @param seriesIndex - The index of the series.
   */
  isAreaVisible(seriesIndex: number): boolean;
  /**
   * Specify whether line segments of the series should be smoothed.
   *
   * @param seriesIndex - The index of the series.
   */
  isLineSmoothed(seriesIndex: number): boolean;
  /**
   * Indicate whether to show or hide the markers/bullets of the line series.
   *
   * @param seriesIndex - The index of the series.
   */
  isMarkerVisible(seriesIndex: number): boolean;
  /**
   * Specify the color of the filled area for line chart.
   * **Note:** This method will only work if the series is a line chart series.
   *
   * @param color - The color of the filled area for line chart.
   * @param seriesIndex - The index of the series.
   */
  setAreaColor(color: Color | undefined, seriesIndex: number): void;
  /**
   * Specify whether the area should be visible for the line series.
   * **Note:** This method will only work if the series is a line chart series.
   *
   * @param visible - `true` if the line series should show area, `false` otherwise.
   * @param seriesIndex - The index of the series.
   */
  setAreaVisible(visible: boolean, seriesIndex: number): void;
  /**
   * Specify whether line segments of the series should be smoothed.
   * **Note:** This method will only work if the series is a line chart series.
   *
   * @param smoothed - `true` if line segment of the series should be smoothed, `false` otherwise.
   * @param seriesIndex - The index of the series.
   */
  setLineSmoothed(smoothed: boolean, seriesIndex: number): void;
  /**
   * Indicate whether to show or hide the markers/bullets of the line series.
   * **Note:** This method will only work if the series is a line chart series.
   *
   * @param visible - `true` if the markers/bullets of the line series should be shown, `false` otherwise.
   * @param seriesIndex - The index of the series.
   */
  setMarkerVisible(visible: boolean, seriesIndex: number): void;
  /**
   * Sets whether to hide oversized data labels of the side-by-side series based on the series index.
   *
   * **Note:** This method will only work if the series is a bar chart series.
   *
   * @param hide - The value for hiding oversized labels.
   * @param seriesIndex - The index of the series.
   */
  setSeriesHideOversizedSideBySideLabels(hide: boolean | undefined, seriesIndex: number): void;
  /**
   * Sets whether to hide oversized data labels of the stacked series based on the series index.
   * **Note:** This method will only work if the series is a bar chart series.
   *
   * @param hide - The value for hiding oversized stacked labels.
   * @param seriesIndex - The index of the series.
   */
  setSeriesHideOversizedStackedLabels(hide: boolean | undefined, seriesIndex: number): void;
  /**
   * Sets the line style of the series based on the series index.
   * **Note**: This method will only work if the series is a line chart series.
   *
   * @param newStyle - The new style for the series.
   * @param seriesIndex - The index of the series.
   */
  setSeriesLineStyle(newStyle: RESTSimpleLineSymbolStyle | undefined, seriesIndex: number): void;
  /**
   * Sets the line width of the series based on the series index.
   * **Note**: This method will only work if the series is a line chart series.
   *
   * @param newWidth - The new width for the series.
   * @param seriesIndex - The index of the series.
   */
  setSeriesLineWidth(newWidth: number | undefined, seriesIndex: number): void;
  /**
   * Sets the marker color of the series based on the series index.
   * **Note**: This method will only work if the series is a line chart series.
   *
   * @param newColor - The new color for the series.
   * @param seriesIndex - The index of the series.
   */
  setSeriesMarkerColor(newColor: Color | undefined, seriesIndex: number): void;
  /**
   * Sets the marker size of the series based on the series index.
   * **Note:** This method will only work if the series is a line chart series.
   *
   * @param newSize - The new size for the series.
   * @param seriesIndex - The index of the series.
   */
  setSeriesMarkerSize(newSize: number | undefined, seriesIndex: number): void;
  /**
   * Sets the marker style of the series based on the series index.
   * **Note:** This method will only work if the series is a line chart series.
   *
   * @param newStyle - The new style for the series.
   * @param seriesIndex - The index of the series.
   */
  setSeriesMarkerStyle(newStyle: RESTSimpleMarkerSymbolStyle | undefined, seriesIndex: number): void;
  /**
   * Changes the chart series type at the specified index from bar to line and vice-versa.
   *
   * @param seriesIndex - The index of the series to update.
   * @param seriesType - The new chart series type to apply.
   */
  setSeriesType(seriesIndex: number, seriesType: WebChartTypes): void;
  /**
   * Completes the async setup process for the chart model. Must be called before using the model.
   *
   * @param params
   */
  setup(params: ModelParams<ChartConfig<typeof ModelTypes.ComboBarLineChart>>): Promise<void>;
}
declare const ComboBarLineChartModelSuperclass: typeof SerialChartModel & typeof WithNegativeValuesStackedToBaseline