import { EventEmitter } from '@angular/core';
import { AxFilter } from '../enlighten-lib/filters/ax-filter';
import { Page } from '../enlighten-lib/report/graphical-report/page/page';
import { BreadCrumbsService } from '../bread-crumbs/bread-crumbs.service';
import * as i0 from "@angular/core";
/**
 * @class DrillPageState :- hold the state of drilled page
 */
export declare class DrillPageState {
    page: Page;
    filter: AxFilter;
    isLoaded: boolean;
    constructor(page: Page, filter: AxFilter);
}
export declare class ParentData {
    name: string;
    id: number;
    screenType: number;
    url: string;
}
export declare class DrillThroughService {
    private _breadCrumbService;
    onPageChanged: EventEmitter<string>;
    private _drillThroughStates;
    private _drillThroughStatesRedo;
    private _parentData;
    constructor(_breadCrumbService: BreadCrumbsService);
    /**
     * This will save page and filter in array for preserving routing state.
     *
     * @param page
     * @param filter
     */
    drillPage(page: Page, filter: AxFilter): void;
    /**
     * Remove preserved drill page from array on back button click
     */
    PageBack(): DrillPageState;
    PageNext(): DrillPageState;
    /**
     *  This function return the current drill through state.
     */
    GetCurrentDrillThroughState(): DrillPageState;
    /**
     * This function removes the pages from Drill Through States on change of bread crumbs state
     */
    changeDrillThroughStates(index: number): boolean;
    /**
     * check loaded page already exists if it is then change the drill through states accordingly
     */
    checkLoadedPageExists(pageId: number): boolean;
    /**
     * Destroy drill through data
     */
    destroy(): void;
    /**
     * Save states in localstorage on reload
     */
    saveStates(): void;
    /**
     * Set the parent data of the drill through
     *
     * @param id
     * @param name
     * @param url
     */
    setParentData(id: number, name: string, url: string): void;
    /**
     * Get parent data of drill through
     *
     * @returns
     */
    getParentData(): ParentData;
    /**
     * Restore states when reload of page finishes
     */
    restoreStates(): void;
    /**
     * Set drill thorugh parent bread crumb
     */
    setParentBreadCrumb(): void;
    /**
     * Set bread crumbs for all states/pages of drill through
     */
    setBreadCrumbs(): void;
    /**
     * Set page bread crumb
     *
     * @param page
     */
    setPageBreadCrumb(page: Page): void;
    /**
     * returns true if there next page to show
     *
     * @returns boolean
     */
    hasNextPage(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DrillThroughService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DrillThroughService>;
}
