import * as i0 from '@angular/core';
import { AfterViewInit, OnChanges, OnDestroy, EventEmitter, NgZone, ElementRef } from '@angular/core';
import { AgChartInstance, AgChartOptions, AgFinancialChartOptions, AgGaugeOptions } from 'ag-charts-community';

declare abstract class AgChartsBase<Options extends {}> implements AfterViewInit, OnChanges, OnDestroy {
    chart?: AgChartInstance;
    abstract options: Options;
    abstract chartReady: EventEmitter<AgChartInstance>;
    protected _nativeElement: any;
    protected _initialised: boolean;
    protected ngZone: NgZone;
    protected abstract createChart(options: Options): any;
    ngAfterViewInit(): void;
    ngOnChanges(_changes: any): void;
    ngOnDestroy(): void;
    private patchChartOptions;
    private patchListeners;
    private patchContextMenu;
    private wrapGetItems;
    private wrapContextMenuItems;
    private wrapZoneAction;
    private runOutsideAngular;
    private runInsideAngular;
    static ɵfac: i0.ɵɵFactoryDeclaration<AgChartsBase<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AgChartsBase<any>, "ng-component", never, {}, {}, never, never, true, never>;
}

declare class AgCharts extends AgChartsBase<AgChartOptions> {
    protected ngZone: NgZone;
    options: AgChartOptions;
    chartReady: EventEmitter<AgChartInstance>;
    constructor(elementDef: ElementRef, ngZone: NgZone);
    protected createChart(options: AgChartOptions): AgChartInstance<AgChartOptions>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AgCharts, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AgCharts, "ag-charts", never, { "options": { "alias": "options"; "required": false; }; }, { "chartReady": "chartReady"; }, never, never, true, never>;
}

declare class AgFinancialCharts extends AgChartsBase<AgFinancialChartOptions> {
    protected ngZone: NgZone;
    options: AgFinancialChartOptions;
    chartReady: EventEmitter<AgChartInstance>;
    constructor(elementDef: ElementRef, ngZone: NgZone);
    protected createChart(options: AgFinancialChartOptions): AgChartInstance<AgFinancialChartOptions>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AgFinancialCharts, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AgFinancialCharts, "ag-financial-charts", never, { "options": { "alias": "options"; "required": false; }; }, { "chartReady": "chartReady"; }, never, never, true, never>;
}

declare class AgGauge extends AgChartsBase<AgGaugeOptions> {
    protected ngZone: NgZone;
    options: AgGaugeOptions;
    chartReady: EventEmitter<AgChartInstance>;
    constructor(elementDef: ElementRef, ngZone: NgZone);
    protected createChart(options: AgGaugeOptions): AgChartInstance<AgGaugeOptions>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AgGauge, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AgGauge, "ag-gauge", never, { "options": { "alias": "options"; "required": false; }; }, { "chartReady": "chartReady"; }, never, never, true, never>;
}

declare class AgChartsModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AgChartsModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AgChartsModule, never, [typeof AgCharts, typeof AgFinancialCharts, typeof AgGauge], [typeof AgCharts, typeof AgFinancialCharts, typeof AgGauge]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AgChartsModule>;
}

export { AgCharts, AgChartsModule, AgFinancialCharts, AgGauge };
