import type { HTMLDOMElement } from '../Renderer/DOMElementType';
import type SVGElement from '../Renderer/SVG/SVGElement';
/**
 * An animation configuration. Animation configurations can also be defined as
 * booleans, where `false` turns off animation and `true` defaults to a duration
 * of 500ms and defer of 0ms.
 */
export interface AnimationOptions {
    /**
     * A callback function to execute when the animation finishes.
     * @name Highcharts.AnimationOptionsObject#complete
     * @type {Function|undefined}
     */
    complete?: Function;
    /**
     * The animation defer in milliseconds.
     * @name Highcharts.AnimationOptionsObject#defer
     * @type {number|undefined}
     */
    defer: number;
    /**
     * The animation duration in milliseconds.
     * @name Highcharts.AnimationOptionsObject#duration
     * @type {number|undefined}
     */
    duration: number;
    /**
     * The name of an easing function as defined on the `Math` object.
     * @name Highcharts.AnimationOptionsObject#easing
     * @type {string|Function|undefined}
     */
    easing?: (string | Function);
    /**
     * A callback function to execute on each step of each attribute or CSS
     * property that's being animated. The first argument contains information
     * about the animation and progress.
     */
    step?: AnimationStepCallbackFunction;
}
export interface AnimationStepCallbackFunction {
    (this: HTMLDOMElement | SVGElement | undefined, ...args: Array<any>): void;
}
export default AnimationOptions;
