import { OnInit, EventEmitter, OnDestroy, AfterViewInit } from '@angular/core';
import { ChartComponent, ApexAxisChartSeries, ApexChart, ApexXAxis, ApexYAxis, ApexDataLabels, ApexTitleSubtitle, ApexStroke, ApexGrid, ApexPlotOptions, ApexNoData } from 'ng-apexcharts';
import { CdkDragDrop } from '@angular/cdk/drag-drop';
import { MatMenuTrigger } from '@angular/material/menu';
import { ResizeEvent } from 'angular-resizable-element';
import { FieldsListService } from '../../../../field-list-lib/fields-list.service';
import { Router } from '@angular/router';
import { ElementsDto, CrossFilterDto } from '../../../../common-dto/elements-dto';
import { ChartProperty } from '../chart/chart-property';
import { IGraphicalReportComponent } from '../igraphical-report.component';
import { LineChart } from './line-chart';
import { SendToDashboardService } from '../../../../dashboard-lib/send-to-dashboard.service';
import { Report } from '../../../../common-utils/report';
import { ReportBuilderMasterService } from '../../report-builder-master.service';
import { ElementService } from '../../element.service';
import { IChartComponent } from '../ichart-component';
import { CommonService } from '../../../../common.service';
import { ScreenType } from '../../../filters/condition-type';
import { AxFilter } from '../../../filters/ax-filter';
import { Page } from '../page/page';
import { AxElement } from '../../../elements/ax-element';
import { DashboardBuilderService } from '../../../../dashboard-lib/dashboard-builder.service';
import { DrillThroughService } from '../../../../drill-through/drill-through.service';
import { GhostLoaderType } from '../../../../ghost-loader/ghost-loader.component';
import { FiltersService } from '../../../../filters/filters.service';
import * as i0 from "@angular/core";
export declare type LineChartOptions = {
    series: ApexAxisChartSeries;
    chart: ApexChart;
    xaxis: ApexXAxis;
    yaxis: ApexYAxis;
    dataLabels: ApexDataLabels;
    grid: ApexGrid;
    stroke: ApexStroke;
    title: ApexTitleSubtitle;
    plotOptions: ApexPlotOptions;
    colors: any;
    toolbar: any;
    legend: any;
    noData: ApexNoData;
    tooltip: ApexTooltip;
};
export declare class LineChartComponent implements IGraphicalReportComponent, OnInit, OnDestroy, AfterViewInit, IChartComponent {
    private _fieldsListService;
    private _sendToDashboardService;
    private _reportBuilderMasterService;
    private _elementService;
    private _commonService;
    private _dashboardService;
    private _drillThroughService;
    private _router;
    private _filterService;
    chart: ChartComponent;
    contextMenu: MatMenuTrigger;
    reportData: LineChart;
    isEditable: boolean;
    guid: string;
    onchartClickedEvent: EventEmitter<any>;
    onchartRightClickDeleteEvent: EventEmitter<any>;
    chartRendered: EventEmitter<any>;
    screenType: ScreenType;
    drillThroughFilterInput: AxFilter;
    drillThroughParentType: ScreenType;
    currentPageId: number;
    appVersionId: number;
    report: Report;
    isDirty: boolean;
    reportId: number;
    handle: boolean;
    isDrillThrough: boolean;
    componentRef: LineChartComponent;
    pages: Array<Page>;
    selectedDataPoints: Array<number>;
    isDataPointSelected: boolean;
    drillThroughFilter: AxFilter;
    ScreenType: typeof ScreenType;
    ShowFilters: Boolean;
    appManifest: any;
    yPosition: number;
    xPosition: number;
    lineChartOptions: Partial<LineChartOptions>;
    uniquekey: number;
    property: ChartProperty;
    /***
     * MatMenuTrigger Use for right click on the chart action
     */
    contextMenuPosition: {
        x: string;
        y: string;
    };
    /****
     * Resize  chart  styles
     */
    style: {};
    showGhostLoader: boolean;
    GhostLoaderType: typeof GhostLoaderType;
    private _unsubscribeAll;
    /**
     * Constructor
     *
     */
    constructor(_fieldsListService: FieldsListService, // Used for get matrix data
    _sendToDashboardService: SendToDashboardService, _reportBuilderMasterService: ReportBuilderMasterService, _elementService: ElementService, _commonService: CommonService, _dashboardService: DashboardBuilderService, _drillThroughService: DrillThroughService, _router: Router, _filterService: FiltersService);
    get screenTypes(): typeof ScreenType;
    click(event: any): void;
    ngAfterViewInit(): void;
    /**
     * On init
     */
    ngOnInit(): void;
    /**
     * On destroy
     */
    ngOnDestroy(): void;
    subscribers(): void;
    getChartData(): void;
    /**
     *
     * Called when we select a bar by a click event
     *
     * @param opts
     */
    dataPointSelection(dataPointIndex: any): 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
     */
    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 updateLineChartOptions;
    /**
     * Created filter object for drill through.
     *
     *  @param dataPointIndex
     */
    createDrillThroughFilter(dataPointIndex: any): void;
    chartSelect(): void;
    /***
     * Delete chart Function
     */
    openOptionPopUp(): void;
    onDeleteClick(event: MouseEvent, item: AxElement): void;
    /***
        * On chart context  click Function
        */
    onContextMenu(event: MouseEvent, chart: LineChart): 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 line-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;
    /**
     * 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<LineChartComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LineChartComponent, "lib-line-chart", never, { "reportData": "reportData"; "isEditable": "isEditable"; "guid": "guid"; "screenType": "screenType"; "drillThroughFilterInput": "drillThroughFilterInput"; "drillThroughParentType": "drillThroughParentType"; "currentPageId": "currentPageId"; "appVersionId": "appVersionId"; }, { "onchartClickedEvent": "onchartClickedEvent"; "onchartRightClickDeleteEvent": "onchartRightClickDeleteEvent"; "chartRendered": "chartRendered"; }, never, never>;
}
