import { type ChartModuleDefinition, type CloneOptions, type DeepPartial } from 'ag-charts-core';
import { type AgChartOptions, type AgChartThemeParams } from 'ag-charts-types';
import { ChartTheme } from '../chart/themes/chartTheme';
import { type OptionsGraphAccessor } from './optionsGraph';
export interface ChartSpecialOverrides {
    document: Document;
    window: Window;
    styleContainer?: HTMLElement;
    skipCss?: boolean;
}
export interface ChartInternalOptionMetadata {
    presetType?: 'price-volume' | 'gauge-preset' | 'sparkline';
    pool?: boolean;
    domMode?: 'normal' | 'minimal';
    withDragInterpretation?: boolean;
}
export declare class ChartOptions<T extends AgChartOptions = AgChartOptions> {
    static readonly OPTIONS_CLONE_OPTS_SLOW: CloneOptions;
    static readonly OPTIONS_CLONE_OPTS_FAST: CloneOptions;
    static readonly JSON_DIFF_OPTS: Set<any>;
    private static readonly perfDebug;
    private static readonly FAST_PATH_OPTIONS;
    private static isFastPathDelta;
    activeTheme: ChartTheme;
    processedOptions: T;
    userOptions: Partial<T>;
    processedOverrides: Partial<T>;
    specialOverrides: ChartSpecialOverrides;
    optionMetadata: ChartInternalOptionMetadata;
    themeParameters: AgChartThemeParams;
    annotationThemes: any;
    googleFonts?: Set<string>;
    fastDelta?: DeepPartial<T>;
    chartDef?: ChartModuleDefinition<any>;
    optionsProcessingTime?: number;
    optionsGraph?: OptionsGraphAccessor;
    seriesWithUserVisibility?: {
        identifiers: Set<string>;
        indices: Set<number>;
    };
    userDeltaKeys?: Set<string>;
    private static readonly debug;
    constructor(currentUserOptions: T | ChartOptions<T> | undefined, newUserOptions: T, processedOverrides: Partial<T>, specialOverrides: Partial<ChartSpecialOverrides>, metadata: ChartInternalOptionMetadata, deltaOptions?: DeepPartial<T> | null, stripSymbols?: boolean, apiStartTime?: number);
    private findSeriesWithUserVisiblity;
    private fastSetup;
    private fastSeriesSetup;
    private slowSetup;
    private validatePluginOptions;
    private validateSeriesOptions;
    private validateAxesOptions;
    diffOptions(other?: ChartOptions): Partial<T>;
    private optionsType;
    private processSeriesOptions;
    /**
     * Collates axis keys from the axis and series options to determine the full set of axis keys, defaults series to
     * the primary axes and renames the primary axes to the internal direction-based names.
     */
    private processAxesOptions;
    /**
     * These keys are used to map a series to an axis for each direction. They are retrieved per-series to allow a
     * mixture of flipped and non-flipped series within the same chart.
     */
    private getSeriesDirectionAxisKey;
    /**
     * Check if any of the series' axis keys have values that do not match the expected value, i.e. the direction.
     */
    private countNonDefaultSeriesAxisKeys;
    /**
     * The primary axes are defined, for each direction, as those first in the `axes` object or referenced by a series.
     * This is irregardless of the specific key of the axis, e.g. an axis with the key `y` may have the position `top`,
     * and would therefore be classified as the primary `x` axis.
     */
    private getPrimaryAxisKeys;
    private getRemappedAxisKeys;
    /**
     * Update each series' axis keys to match the name used internally, such as the direction or a constant suffixed by
     * the index for secondary axes.
     */
    private remapSeriesAxisKeys;
    /**
     * Attempt to predict the axes for each direction based on a subset of the data. Each series has its own prediction
     * algorithm.
     */
    private predictAxes;
    private cloneDefaultAxes;
    private predictAxesMissingTypesAndPositions;
    private predictAxisMissingTypeFromPosition;
    private predictAxisMissingTypeAndPositionFromSeries;
    /**
     * If the first secondary axis in either direction does not have a specified position, it will be placed in the
     * alternate position to the primary axis (i.e. right or top).
     */
    private alternateSecondaryAxisPositions;
    private processMiniChartSeriesOptions;
    private getSeriesGroupingOptions;
    private setSeriesGroupingOptions;
    private getSeriesGroupId;
    private getSeriesGrouping;
    private soloSeriesIntegrity;
    private static processFontOptions;
    private processFonts;
    private static removeDisabledOptionJson;
    private removeDisabledOptions;
    private static removeLeftoverSymbolsJson;
    private removeLeftoverSymbols;
    private specialOverridesDefaults;
}
