Repository: chartjs/Chart.js
File: types/index.esm.d.ts (TypeScript)

Code before:
  locale: string;

  /**
   * Called when a resize occurs. Gets passed two arguments: the chart instance and the new size.
   */
  onResize(chart: Chart, size: { width: number; height: number }): void;

  /**
   * Override the window's default devicePixelRatio.
   * @default window.devicePixelRatio
   */
  devicePixelRatio: number;

  interaction: CoreInteractionOptions;

  hover: CoreInteractionOptions;

  /**
   * The events option defines the browser events that the chart should listen to for tooltips and hovering.
   * @default ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove']
   */
  events: (
    'mousemove' |
    'mouseout' |
    'mouseenter' |
    'mouseleave' |
    'mousedown' |
    'mouseup' |
    'click' |
    'dblclick' |
    'mouseover' |
    'contextmenu' |
    'touchstart' |
    'touchmove' |
    'touchend' |
    'pointerenter' |
    'pointerdown' |
    'pointermove' |
    'pointerup' |
    'pointerleave' |
    'pointerout'
  )[];

  /**
   * Called when any of the events fire. Passed the event, an array of active elements (bars, points, etc), and the chart.
   */
  onHover(event: ChartEvent, elements: ActiveElement[], chart: Chart): void;

  /**
   * Called if the event is of type 'mouseup' or 'click'. Passed the event, an array of active elements, and the chart.
   */

Review comment (suggestion):
Maybe `mouseleave `should also be added to `EVENT_TYPES` map?

https://github.com/chartjs/Chart.js/blob/12333b02a5050c8f123826485e32eff7bf0f2d3b/src/platform/platform.dom.js#L24

Then there are quite a few that could still be added, like mousewheel, mouseover, auxclick, touchcancel, focusin, focusout, focus, blur etc.

Also could just use the same thing `addEventLisntener` accepts, which is `keyof HTMLElementEventMap`


Code after:
  locale: string;

  /**
   * Called when a resize occurs. Gets passed two arguments: the chart instance and the new size.
   */
  onResize(chart: Chart, size: { width: number; height: number }): void;

  /**
   * Override the window's default devicePixelRatio.
   * @default window.devicePixelRatio
   */
  devicePixelRatio: number;

  interaction: CoreInteractionOptions;

  hover: CoreInteractionOptions;

  /**
   * The events option defines the browser events that the chart should listen to for tooltips and hovering.
   * @default ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove']
   */
  events: (keyof HTMLElementEventMap)[]

  /**
   * Called when any of the events fire. Passed the event, an array of active elements (bars, points, etc), and the chart.
   */
  onHover(event: ChartEvent, elements: ActiveElement[], chart: Chart): void;

  /**
   * Called if the event is of type 'mouseup' or 'click'. Passed the event, an array of active elements, and the chart.
   */
  onClick(event: ChartEvent, elements: ActiveElement[], chart: Chart): void;

  layout: Partial<{
    autoPadding: boolean;
    padding: Scriptable<number | Partial<ChartArea>, ScriptableContext<TType>>;
  }>;
}

export type EasingFunction =
  | 'linear'
  | 'easeInQuad'
  | 'easeOutQuad'
  | 'easeInOutQuad'
  | 'easeInCubic'
  | 'easeOutCubic'
  | 'easeInOutCubic'
  | 'easeInQuart'
  | 'easeOutQuart'
  | 'easeInOutQuart'
  | 'easeInQuint'