import type Accessibility from './Accessibility';
import type { DOMElementType } from '../Core/Renderer/DOMElementType';
import type SVGAttributes from '../Core/Renderer/SVG/SVGAttributes';
import Chart from '../Core/Chart/Chart.js';
import SVGElement from '../Core/Renderer/SVG/SVGElement.js';
declare module '../Core/Chart/ChartBase' {
    interface ChartBase {
        focusElement?: SVGElement;
        /** @requires modules/accessibility */
        renderFocusBorder(): void;
        /** @requires modules/accessibility */
        setFocusToElement(svgElement: SVGElement, focusElement?: DOMElementType): void;
    }
}
declare module '../Core/Renderer/SVG/SVGElementBase' {
    interface SVGElementBase {
        focusBorder?: SVGElement;
        /** @requires modules/accessibility */
        addFocusBorder(margin: number, attribs: SVGAttributes): void;
        /** @requires modules/accessibility */
        removeFocusBorder(): void;
    }
}
declare namespace FocusBorderComposition {
    interface ChartComposition extends Accessibility.ChartComposition {
        focusElement?: SVGElement;
        renderFocusBorder(): void;
        setFocusToElement(svgElement: SVGElement, focusElement?: DOMElementType): void;
    }
    interface SVGElementCompositon extends SVGElement {
        focusBorder?: SVGElement;
        addFocusBorder(margin: number, attribs: SVGAttributes): void;
        removeFocusBorder(): void;
    }
    /**
     * @private
     */
    function compose(ChartClass: typeof Chart, SVGElementClass: typeof SVGElement): void;
}
export default FocusBorderComposition;
