import { OnInit, EventEmitter, AfterViewInit, OnDestroy } from '@angular/core';
import { ApexAxisChartSeries, ApexChart, ChartComponent, ApexDataLabels, ApexXAxis, ApexPlotOptions, ApexYAxis, ApexLegend, ApexTitleSubtitle, ApexGrid, ApexNoData } from 'ng-apexcharts';
import { CdkDragDrop } from '@angular/cdk/drag-drop';
import { MatMenuTrigger } from '@angular/material/menu';
import { ResizeEvent } from 'angular-resizable-element';
import { Router } from '@angular/router';
import { ChartProperty } from '../chart/chart-property';
import { CrossFilterDto, ElementsDto } from '../../../../common-dto/elements-dto';
import { FieldsListService } from '../../../../field-list-lib/fields-list.service';
import { IGraphicalReportComponent } from '../igraphical-report.component';
import { LineColumnChart, LineColumnChartOrientation } from './line-column-chart';
import { Report } from '../../../../common-utils/report';
import { ReportBuilderMasterService } from '../../report-builder-master.service';
import { SendToDashboardService } from '../../../../dashboard-lib/send-to-dashboard.service';
import { ElementService } from '../../element.service';
import { IChartComponent } from '../ichart-component';
import { CommonService } from '../../../../common.service';
import { AxFilter } from '../../../filters/ax-filter';
import { ScreenType } from '../../../filters/condition-type';
import { Page } from '../page/page';
import { DrillThroughService } from '../../../../drill-through/drill-through.service';
import { DashboardBuilderService } from '../../../../dashboard-lib/dashboard-builder.service';
import { GhostLoaderType } from '../../../../ghost-loader/ghost-loader.component';
import { FiltersService } from '../../../../filters/filters.service';
import * as i0 from "@angular/core";
export declare type LineColumnChartOptions = {
    series: ApexAxisChartSeries;
    chart: ApexChart;
    dataLabels: ApexDataLabels;
    plotOptions: ApexPlotOptions;
    xaxis: ApexXAxis;
    yaxis: ApexYAxis | ApexYAxis[];
    legend: ApexLegend;
    grid: ApexGrid;
    title: ApexTitleSubtitle;
    noData: ApexNoData;
    tooltip: ApexTooltip;
    fill: ApexFill;
    states: ApexStates;
};
export declare class LineColumnChartComponent implements IGraphicalReportComponent, OnInit, AfterViewInit, OnDestroy, IChartComponent {
    private _fieldsListService;
    private _reportBuilderMasterService;
    private _sendToDashboardService;
    private _elementService;
    private _commonService;
    private _drillThroughService;
    private _dashboardService;
    private _router;
    private _filterService;
    onchartClickedEvent: EventEmitter<any>;
    onchartRightClickDeleteEvent: EventEmitter<any>;
    chartRendered: EventEmitter<any>;
    currentPageId: number;
    lineColumnChartContainer: ChartComponent;
    /***
     * MatMenuTrigger Use for right click on the chart action
     */
    contextMenu: MatMenuTrigger;
    reportData: LineColumnChart;
    isEditable: boolean;
    guid: string;
    screenType: ScreenType;
    drillThroughFilterInput: AxFilter;
    drillThroughParentType: ScreenType;
    appVersionId: number;
    ScreenType: typeof ScreenType;
    ShowFilters: Boolean;
    titleText: string;
    report: Report;
    uniquekey: number;
    property: ChartProperty;
    isDirty: boolean;
    handle: boolean;
    dataEvent: string;
    componentRef: IChartComponent;
    isDataPointSelected: boolean;
    selectedDataPoints: Array<Array<number>>;
    selectedSeriesIndexes: Array<number>;
    contextMenuPosition: {
        x: string;
        y: string;
    };
    pages: Array<Page>;
    chart: ApexCharts;
    chartId: any;
    highlightedByOtherChart: boolean;
    isDrillThrough: boolean;
    appManifest: any;
    yPosition: number;
    xPosition: number;
    /****
     * Resize  chart  styles
     */
    reportId: number;
    lineColumnChartOptions: Partial<LineColumnChartOptions>;
    private _unsubscribeAll;
    private drillThroughFilter;
    showGhostLoader: boolean;
    GhostLoaderType: typeof GhostLoaderType;
    LineColumnChartOrientation: typeof LineColumnChartOrientation;
    /*** Constructor
     *
     */
    constructor(_fieldsListService: FieldsListService, // Used for get matrix data
    _reportBuilderMasterService: ReportBuilderMasterService, _sendToDashboardService: SendToDashboardService, _elementService: ElementService, _commonService: CommonService, _drillThroughService: DrillThroughService, _dashboardService: DashboardBuilderService, _router: Router, _filterService: FiltersService);
    get screenTypes(): typeof ScreenType;
    click(event: any): void;
    /**
     * This will get called after the UI render.
     */
    ngAfterViewInit(): void;
    /**
     * NgOnInit LifeCycle hook.
     * This will get called on component initialization.
     */
    ngOnInit(): void;
    /**
     * This will initialize bar-chart options.basically did apexChart configuration here.
     */
    initializeLineColumnChartOptions(): void;
    /**
     * This will return series color.
     */
    getSeriesColors(): Array<string>;
    /**
     * Subscribers for barChart..
     */
    subscribers(): void;
    /**
     * Clone selected data points
     *
     * @param dataPoints
     */
    saveSelectDataPoints(dataPoints: Array<Array<number>>): void;
    /**
     * Created filter object for cross filtering.
     *
     *  @param CrossFilterDto
     */
    createCrossFilter(crossFilterData: CrossFilterDto): void;
    /**
     * pushed the filter object into basic filter and applied the filter on the data
     *
     *  @param CrossFilterDto
     *  @param AxFilter
     */
    getCrossFilterData(_filter: AxFilter, crossFilterData: CrossFilterDto): void;
    /**
     * set data to chart if entitiesAttribute is not equal to null then this method will call and will highlight the matrix
     */
    highlightSeriesData(indexList: Array<number>): void;
    /**
     * Clear the selected data points.
     */
    clearSelectedDataPoint(): void;
    /**
     *
     * Called when we select a bar by a click event
     *
     * @param opts
     */
    dataPointSelection(opts: any): void;
    /**
     * Reset cross filter and emit reset cross filter event.
     */
    resetCrossFilter(): void;
    /**
     * On destroy
     */
    ngOnDestroy(): void;
    /**
     * Get data
     */
    getChartData(): void;
    /**
     * set data to chart if entitiesAttribute is not equal to null then this method will call
     */
    /**
   * setDataToChart
   * Updated to merge incoming service data with the existing matrix attributes,
   * so that user-set displayType (and related properties) are preserved.
   */
    setDataToChart(entitiesAttribute: ElementsDto): void;
    /**
     * attributeDropped
     * Called when attribute is dragged from left side fields list and dropped on the bar chart
     *
     * @param $event
     */
    attributeDropped($event: CdkDragDrop<any>): void;
    private initializeMatrixAndDimension;
    private setDimensionAttribute;
    private addMatrixAttribute;
    private updateChartSeries;
    chartSelect(): void;
    /**
     * Created filter object for cross filtering.
     *
     *  @param CrossFilterDto
     */
    createDrillThroughFilter(series: any): void;
    /***
     * On chart context  click Function
     */
    onContextMenu(event: MouseEvent, chart: LineColumnChart): void;
    /***
     * Delete chart Function
     */
    openOptionPopUp(): void;
    onDeleteClick(event: MouseEvent): void;
    /***
     * Pin to Dashboard Function
     */
    sendToDashboard(): void;
    /****
     * chartResizeMinDimensions =   this function use  Resize min dimensions validation
     */
    chartResizeMinDimensions(event: ResizeEvent): boolean;
    /****
     * onResizing = this function use for resize the  chart
     */
    onResizing(event: ResizeEvent): void;
    /**
     * Called when resizing ends
     */
    resizeEnd(): void;
    /**
     * to set isDirty after changes in bar-chart filter
     *
     */
    dirtyFlowCheckEvent(): void;
    /**
     * call cdk drag start event
     *
     * @param $event
     */
    dragStart($event: DragEvent): void;
    /**
     * call cdk drag end event
     *
     * @param $event
     */
    dragEnd($event: DragEvent): void;
    /**
     * Deselecting the selected matrix
     *
     */
    deselectDataPoints(crossFilterData: CrossFilterDto): void;
    /**
     * Called on page name clicked on dropdown options of drill through pages
     *
     * @param page
     */
    pageClick(page: Page): void;
    /**
     * Navigate to drill through component with page id as route params
     * Checks the parent URL if it is already exists or not
     *
     * @param page
     */
    navigateToDrillThrough(page: Page): void;
    /**
     * Apply local filter.
     */
    applyLocalFilter(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LineColumnChartComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LineColumnChartComponent, "line-column-chart", never, { "currentPageId": "currentPageId"; "reportData": "reportData"; "isEditable": "isEditable"; "guid": "guid"; "screenType": "screenType"; "drillThroughFilterInput": "drillThroughFilterInput"; "drillThroughParentType": "drillThroughParentType"; "appVersionId": "appVersionId"; }, { "onchartClickedEvent": "onchartClickedEvent"; "onchartRightClickDeleteEvent": "onchartRightClickDeleteEvent"; "chartRendered": "chartRendered"; }, never, never>;
}
