import { type ChartDrawingArea } from "../../../../hooks/useDrawingArea.js";
import { type AllSeriesType } from "../../../../models/seriesType/index.js";
import { type ChartSeriesType, type DatasetType } from "../../../../models/seriesType/config.js";
import { type ChartSeriesConfig } from "../../models/seriesConfig/index.js";
import { type DefaultizedSeriesGroups, type ProcessedSeries, type SeriesLayout } from "./useChartSeries.types.js";
import type { IsItemVisibleFunction } from "../../featurePlugins/useChartVisibilityManager/index.js";
/**
 * This method groups series by type and adds defaultized values such as the ids and colors.
 * It does NOT apply the series processors - that happens in a selector.
 * @param series The array of series provided by the developer
 * @param colors The color palette used to defaultize series colors
 * @returns An object structuring all the series by type with default values.
 */
export declare const defaultizeSeries: <TSeriesType extends ChartSeriesType>({
  series,
  colors,
  seriesConfig
}: {
  series: Readonly<AllSeriesType<TSeriesType>[]>;
  colors: readonly string[];
  seriesConfig: ChartSeriesConfig<TSeriesType>;
}) => DefaultizedSeriesGroups<TSeriesType>;
/**
 * Applies series processors to the defaultized series groups.
 * This should be called in a selector to compute processed series on-demand.
 * @param defaultizedSeries The defaultized series groups
 * @param seriesConfig The series configuration
 * @param dataset The optional dataset
 * @returns Processed series with all transformations applied
 */
export declare const applySeriesProcessors: <TSeriesType extends ChartSeriesType>(defaultizedSeries: DefaultizedSeriesGroups<TSeriesType>, seriesConfig: ChartSeriesConfig<TSeriesType>, dataset?: Readonly<DatasetType>, isItemVisible?: IsItemVisibleFunction) => ProcessedSeries<TSeriesType>;
/**
 * Applies series processors with drawing area to series if defined.
 * @param processedSeries The processed series groups
 * @param seriesConfig The series configuration
 * @param drawingArea The drawing area
 * @returns Processed series with all transformations applied
 */
export declare const applySeriesLayout: <TSeriesType extends ChartSeriesType>(processedSeries: ProcessedSeries<TSeriesType>, seriesConfig: ChartSeriesConfig<TSeriesType>, drawingArea: ChartDrawingArea) => SeriesLayout<TSeriesType>;