import type Highcharts from 'highcharts';
export type * from 'highcharts';
export interface MaChartEvents {
    /**
     * Triggered when the chart is loaded.
     */
    (e: 'chartReady', chart: ChartConstructor): void;
    /**
     * Triggered when the chart is destroyed.
     */
    (e: 'chartDestroyed'): void;
}
export interface MaChartProps {
    /**
     * Whether to show the loading indicator.
     */
    loading?: boolean;
    /**
     * Chart constructor to use: 'chart' | 'stockChart' | 'mapChart'.
     * @default 'chart'
     * @remarks
     * Load matching modules (e.g. 'stock' for 'stockChart') via `modulesToLoad`.
     */
    constructorType?: ChartConstructorType;
    /**
     * Highcharts options.
     */
    options: ChartOptions;
    /**
     * Callback for the chart factory.
     */
    callback?: Highcharts.ChartCallbackFunction;
    /**
     * Flags for `Chart.update` call: redraw, oneToOne, and animation.
     * (Default: [true, true])
     */
    updateArgs?: ChartUpdateArgs;
    /**
     * Whether to make a deep copy of object passed to Chart.update() function.
     * In order to avoid passing references of arrays, it's set to true by default.
     *
     * **NOTE:** That can cause a decrease of performance while processing a big amount of data,
     * because copying source data is much expensive,
     * and then it's recommended to disable that option by setting it to false.
     */
    deepCopyOnUpdate?: boolean;
    /**
     * Configuration for dynamic Highcharts module loading.
     *
     * @property {ChartModuleName[]} [sequential]
     *   Modules with inter‑dependencies; loaded one after another.
     * @property {ChartModuleName[]} [parallel]
     *   Independent modules; loaded in parallel for faster startup.
     */
    modulesToLoad?: ModulesToLoad;
    /**
     * Configuration for Highcharts AST whitelisting and sanitization.
     *
     * @property {string[]} [allowedTags]
     *   Additional HTML/SVG tag names to allow when Highcharts sanitizes
     *   dynamic content (e.g. tooltips with useHTML, data labels).
     *
     * @property {string[]} [allowedAttributes]
     *   Additional HTML/SVG attribute names to allow when Highcharts sanitizes
     *   dynamic content (e.g. `data-*`, `aria-*`, custom SVG attributes).
     */
    astConfig?: ASTConfig;
    /**
     * Provide a custom loading overlay component.
     */
    loadingOverlayComponent?: any;
    /**
     * Customise the parameters provided to the loading overlay component.
     */
    loadingOverlayComponentParams?: any;
    /**
     * Text to display when there is no data.
     * If provided, it overrides the default: `No data to display`.
     */
    noDataText?: string;
    /**
     * Provide a custom no data overlay component.
     */
    noDataOverlayComponent?: any;
    /**
     * Customise the parameters provided to the no data overlay component.
     */
    noDataOverlayComponentParams?: any;
    /**
     * Whether to show the watermark.
     */
    showWatermark?: boolean;
    /**
     * Provide a custom watermark component.
     */
    watermarkComponent?: any;
    /**
     * Customise the parameters provided to the watermark component.
     */
    watermarkComponentParams?: any;
    /**
     * When enabled, the default options will not be merged with the `options`.
     * Use this to take full control over the configuration without any defaults applied.
     */
    suppressDefaultOptions?: boolean;
}
export type ChartConstructor = Highcharts.Chart | Highcharts.StockChart | Highcharts.MapChart;
export type ChartConstructorType = 'chart' | 'stockChart' | 'mapChart';
export type ChartOptions = Highcharts.Options;
export type ChartSeriesOptionsType = Highcharts.SeriesOptionsType;
export type ChartUpdateArgs = [boolean] | [boolean, boolean] | [boolean, boolean, boolean];
export type ChartModuleName = 'stock' | 'map' | 'wordcloud' | 'venn' | 'funnel' | 'annotations' | 'exporting' | 'offline-exporting' | 'export-data';
export interface ModulesToLoad {
    parallel?: ChartModuleName[];
    sequential?: ChartModuleName[];
}
export interface ASTConfig {
    allowedTags?: string[];
    allowedAttributes?: string[];
}
