import { OnInit, AfterViewInit, OnDestroy, ElementRef, ComponentFactoryResolver, EventEmitter, ViewContainerRef, ComponentRef, OnChanges } from '@angular/core';
import { CdkDragDrop } from '@angular/cdk/drag-drop';
import { MatMenuTrigger } from '@angular/material/menu';
import { ChartFactory } from '../../../../lib/enlighten-lib/report/graphical-report/chart/chart-factory';
import { AxElement } from '../../../../lib/enlighten-lib/elements/ax-element';
import { Report } from '../../../../lib/common-utils/report';
import { CommonService } from '../../../../lib/common.service';
import { Attribute } from '../../data-model/attribute';
import { Page } from './page/page';
import { ChartType } from './chart/chart-type';
import { ReportBuilderMasterService } from '../report-builder-master.service';
import { ScreenType } from '../../filters/condition-type';
import { AxFilter } from '../../filters/ax-filter';
import * as i0 from "@angular/core";
export declare class GraphicalReportComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {
    private _componentFactoryResolver;
    private _reportBuilderMasterService;
    private _commonService;
    /**
     * Element reference for drop container
     */
    graphicalReportDropZone: ElementRef;
    /**
     * * *  * Directive reference to render components dynamically using component factory* */
    graphicalReportHost: ViewContainerRef;
    /***
    * MatMenuTrigger Use for right click on the chart action
    */
    contextMenu: MatMenuTrigger;
    page: Page;
    attributeDropZoneList: string[];
    pageClickedEvent: EventEmitter<any>;
    graphClickedEvent: EventEmitter<any>;
    elementDeleteEvent: EventEmitter<any>;
    screenType: ScreenType;
    drillThroughFilterInput: AxFilter;
    nextPageClicked: EventEmitter<any>;
    previousPageClicked: EventEmitter<any>;
    drillThroughParentType: ScreenType;
    hasNextPage: boolean;
    appVersionId: number;
    newELementDropped: boolean;
    contextMenuPosition: {
        x: string;
        y: string;
    };
    componentsReferences: ComponentRef<any>[];
    chartFactory: ChartFactory;
    /**
     * Array of objects of chart classes that implement IChart
     */
    elements: Array<AxElement>;
    chartType: any;
    series: any;
    childUniqueKey: number;
    report: Report;
    chartIcons: {
        type: string;
        subType: string;
        dropped: boolean;
    }[];
    /**
     * Subject object which helps unsubscribe all the subscribed objects in the component
     */
    private _unsubscribeAll;
    dropZoneList: string[];
    droppedCharts: any[];
    /**
     * Constructor
     *
     */
    constructor(_componentFactoryResolver: ComponentFactoryResolver, _reportBuilderMasterService: ReportBuilderMasterService, _commonService: CommonService);
    get screenTypes(): typeof ScreenType;
    /**
     * On init
     */
    ngOnInit(): void;
    ngAfterViewInit(): void;
    /***
     * onClickAddChartList - called when click on add chart list
     * @param selectedChart
     */
    addElement(selectedChart: AxElement | ChartType | any): void;
    /****
     * renderElementComponent function use for render the  elemengt
     */
    renderElementComponent(element: AxElement): void;
    /**
     * On destroy
     */
    ngOnDestroy(): void;
    /**
     * ngOnChanges use to change the current page object
     */
    ngOnChanges(): void;
    /**
     * attributeOrChartDropped
     * Called when attribute is dragged from left side fields list and dropped
     * Also called when a chart is drragged & dropped (moved) within the central panel
     *
     * @param $event
     */
    handleChartDrop(chartData: any, dropPoint: {
        x: number;
        y: number;
    }): void;
    attributeOrChartDropped($event: CdkDragDrop<any>): void;
    processForRenderingTheChart(chartData: any, left: number, top: number): void;
    /**
     * processAttributeOnPage
     * Called when attribute is dragged from left side fields list and dropped on central page i.e. drop list container
     *
     * @param $event
     */
    processAttributeOnPage($event: CdkDragDrop<any>): void;
    /**
     * processForRenderingTheAttribute() - process the attrinute for rendering on page as chart
     *
     * @param data
     * @param left
     * @param top
     */
    processForRenderingTheAttribute(data: Attribute, left: number, top: number): void;
    /**
     * setItenPosition() - Set the new position of the item on item dropped
     *
     * @param $event
     * @param left
     * @param top
     * @param rect
     */
    setItemPosition($event: CdkDragDrop<any>, left: number, top: number, rect: DOMRect): void;
    /**
     * Called when a page is clicked on graphical report builder
     */
    onPageClicked(): void;
    onChartRightClickDelete(key: number): void;
    previousPage(): void;
    nextPage(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<GraphicalReportComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<GraphicalReportComponent, "graphical-report", never, { "page": "page"; "attributeDropZoneList": "attributeDropZoneList"; "screenType": "screenType"; "drillThroughFilterInput": "drillThroughFilterInput"; "drillThroughParentType": "drillThroughParentType"; "hasNextPage": "hasNextPage"; "appVersionId": "appVersionId"; }, { "pageClickedEvent": "pageClickedEvent"; "graphClickedEvent": "graphClickedEvent"; "elementDeleteEvent": "elementDeleteEvent"; "nextPageClicked": "nextPageClicked"; "previousPageClicked": "previousPageClicked"; }, never, never>;
}
