import type { BorderRadius, CartesianScaleTypeRegistry, Chart, ChartComponent, CommonElementOptions, CommonHoverOptions, ControllerDatasetOptions, CoreChartOptions, DatasetController, Element, ScriptableAndArrayOptions, ScriptableContext, VisualElement, } from 'chart.js' type AnyObject = Record export type AnchorX = 'left' | 'center' | 'right' | 'start' | 'end' export type AnchorY = 'top' | 'center' | 'bottom' | 'start' | 'end' export interface MatrixOptions extends Omit { borderRadius: number | BorderRadius borderWidth: number | { top?: number; right?: number; bottom?: number; left?: number } anchorX: AnchorX anchorY: AnchorY width: number height: number } export interface MatrixControllerDatasetOptions extends ControllerDatasetOptions, ScriptableAndArrayOptions>, ScriptableAndArrayOptions> {} export interface MatrixDataPoint { x: number | string y: number | string v?: number } export interface MatrixParsedDataPoint { x: number y: number } declare module 'chart.js' { export interface ChartTypeRegistry { matrix: { chartOptions: CoreChartOptions<'matrix'> datasetOptions: MatrixControllerDatasetOptions defaultDataPoint: MatrixDataPoint parsedDataType: MatrixParsedDataPoint metaExtensions: AnyObject scales: keyof CartesianScaleTypeRegistry } } } export interface MatrixProps { x: number y: number width: number height: number options?: Partial } export type MatrixController = DatasetController export declare const MatrixController: ChartComponent & { prototype: MatrixController new (chart: Chart, datasetIndex: number): MatrixController } export interface MatrixElement< T extends MatrixProps = MatrixProps, O extends MatrixOptions = MatrixOptions, > extends Element, VisualElement {} export declare const MatrixElement: ChartComponent & { prototype: MatrixElement new (cfg: AnyObject): MatrixElement }