import { ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { ChartData, FusionChartPieData } from './entities/chart-data';
import { ChartLabel } from './entities/chart-label';
import { ChartDataset } from './entities/chart-dataset';
import { CurrencyPipe, DatePipe, DecimalPipe, PercentPipe } from '@angular/common';
import { UniqueIdService } from '@ironsource/fusion-ui/services/unique-id';
import { ChartDataService } from './chart.service';
import { ColorsService } from '@ironsource/fusion-ui/services/colors';
import { ShortNumberScaleSuffixPipe } from '@ironsource/fusion-ui/pipes/numbers';
import { ChartBaseDatasetOptions } from './entities/chart-options';
import { ChartType } from './entities/chart-type.enum';
import { ClonePipe } from '@ironsource/fusion-ui/pipes/clone';
import { Chart, ChartData as ChartJsData, ChartOptions as ChartJsOptions } from 'chart.js';
import * as i0 from "@angular/core";
export declare abstract class ChartBaseComponent implements OnInit, OnDestroy, OnChanges {
    protected datePipe: DatePipe;
    protected currencyPipe: CurrencyPipe;
    protected decimalPipe: DecimalPipe;
    protected percentPipe: PercentPipe;
    protected numberToStringPipe: ShortNumberScaleSuffixPipe;
    protected uniqueIdService: UniqueIdService;
    protected dataParseService: ChartDataService;
    protected colorsService: ColorsService;
    protected elemRef: ElementRef;
    protected clonePipe: ClonePipe;
    /** @internal */
    id: string;
    /** @internal */
    type: ChartType;
    set data(value: ChartData | FusionChartPieData);
    /** @internal */
    set options(value: {});
    /** @internal */
    get options(): any;
    chartSubject: string;
    loading: boolean;
    noData: boolean;
    afterDatasetInit: EventEmitter<ChartDataset[]>;
    /** @internal */
    pieDataSum: number;
    /** @internal */
    pieSumLabel: string;
    /** @internal */
    componentVersion: number;
    private _options;
    protected _data: ChartData | FusionChartPieData;
    protected ctx: HTMLCanvasElement;
    protected canvasContent: CanvasRenderingContext2D;
    protected chart: Chart;
    protected chartData: ChartJsData;
    protected chartOptions: ChartJsOptions;
    protected maxVal: number;
    protected isStacked: boolean;
    protected yAxesFormat: string;
    constructor(datePipe: DatePipe, currencyPipe: CurrencyPipe, decimalPipe: DecimalPipe, percentPipe: PercentPipe, numberToStringPipe: ShortNumberScaleSuffixPipe, uniqueIdService: UniqueIdService, dataParseService: ChartDataService, colorsService: ColorsService, elemRef: ElementRef, clonePipe: ClonePipe);
    ngOnInit(): void;
    ngOnDestroy(): void;
    ngOnChanges(changes: SimpleChanges): void;
    private setChart;
    /** @internal */
    toggleDataset(label: ChartLabel, recalculateYMax?: boolean): void;
    highlightDataset(label: ChartLabel): void;
    /** @internal */
    addDatasetStyleOptions(isLastDotted?: boolean): void;
    protected getColors(): string[];
    private addDatasetLineStyleOptions;
    private addDatasetBarStyleOptions;
    private addDatasetPieStyleOptions;
    private getDisplayFormat;
    protected getDataSetOptionsByStyleVersion(versionNumber?: number): ChartBaseDatasetOptions;
    protected getChartOptionsByStyleVersion(versionNumber?: number): any;
    private applyOptions;
    private deepMerge;
    private getChartOptions;
    protected setLineChartOptions(options: any): void;
    private setBarChartOptions;
    private setPieChartOptions;
    private isLastDotted;
    private filterTooltip;
    private getTooltipLabel;
    private calculateTotals;
    private renderChart;
    protected calcYAxes(yAxe: any): void;
    protected getFormatted(value: any, format?: string): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<ChartBaseComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ChartBaseComponent, never, never, { "id": { "alias": "id"; "required": false; }; "type": { "alias": "type"; "required": false; }; "data": { "alias": "data"; "required": false; }; "options": { "alias": "options"; "required": false; }; "chartSubject": { "alias": "chartSubject"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "noData": { "alias": "noData"; "required": false; }; }, { "afterDatasetInit": "afterDatasetInit"; }, never, never, false, never>;
}
