import { IBarControllerDatasetOptions, ILineControllerDatasetOptions, ILineControllerChartOptions, IScatterDataPoint, IScatterControllerDatasetOptions, IScatterControllerChartOptions, IBubbleControllerDatasetOptions, IBubbleDataPoint, IDoughnutControllerChartOptions, IDoughnutControllerDatasetOptions, IDoughnutDataPoint, IPieControllerChartOptions, IPieControllerDatasetOptions, IPieDataPoint, IControllerDatasetOptions, IBarControllerChartOptions, IPolarAreaControllerChartOptions, IPolarAreaControllerDatasetOptions, IRadarControllerChartOptions, IRadarControllerDatasetOptions, } from './controllers'; import { ICoreChartOptions } from './core/interfaces'; import { IElementChartOptions } from './elements'; import { ITooltipChartOptions, IFillerControllerDatasetOptions, ILegendChartOptions, ITitleChartOptions, } from './plugins'; import { IChartAnimationOptions, IParsingOptions } from './core'; import { IScaleChartOptions } from './scales'; export type DeepPartial = T extends {} ? { [K in keyof T]?: DeepPartial; } : T; export type IChartDataset = DeepPartial & { data: T[]; }; export type IBarControllerDataset = IChartDataset; export type ILineControllerDataset = IChartDataset< T, ILineControllerDatasetOptions & IFillerControllerDatasetOptions >; export type IScatterControllerDataset = IChartDataset; export type IBubbleControllerDataset = IChartDataset; export type IPieControllerDataset = IChartDataset; export type IDoughnutControllerDataset = IChartDataset; export type IPolarAreaControllerDataset = IChartDataset; export type IRadarControllerDataset = IChartDataset; export interface IChartData = IChartDataset> extends DeepPartial { labels: L[]; datasets: DS[]; } export type IChartOptions = DeepPartial< ICoreChartOptions & IParsingOptions & ITooltipChartOptions & ILegendChartOptions & ITitleChartOptions & IChartAnimationOptions & IScaleChartOptions & IElementChartOptions & O >; export interface IChartConfiguration< TYPE = string, T = unknown, L = string, DS extends IChartDataset = IChartDataset, O = {} > { type: TYPE; data: IChartData; options?: IChartOptions; } export type IBarControllerConfiguration = IChartConfiguration< 'bar', T, L, IBarControllerDataset, IBarControllerChartOptions >; export type ILineControllerConfiguration = IChartConfiguration< 'line', T, L, ILineControllerDataset, ILineControllerChartOptions >; export type IScatterControllerConfiguration = IChartConfiguration< 'scatter', T, L, IScatterControllerDataset, IScatterControllerChartOptions >; export type IBubbleControllerConfiguration = IChartConfiguration< 'bubble', T, L, IBubbleControllerDataset >; export type IPieControllerConfiguration = IChartConfiguration< 'pie', T, L, IPieControllerDataset, IPieControllerChartOptions >; export type IDoughnutControllerConfiguration = IChartConfiguration< 'doughnut', T, L, IDoughnutControllerDataset, IDoughnutControllerChartOptions >; export type IPolarAreaControllerConfiguration = IChartConfiguration< 'polarArea', T, L, IPolarAreaControllerDataset, IPolarAreaControllerChartOptions >; export type IRadarControllerConfiguration = IChartConfiguration< 'radar', T, L, IRadarControllerDataset, IRadarControllerChartOptions >; export type ConfigurationOptions = O extends IChartConfiguration ? O : never; export type ConfigurationData = O extends IChartConfiguration ? IChartData : never; export type ConfigurationDataset = O extends IChartConfiguration ? DS : never;