import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, TemplateRef, ViewContainerRef } from "@angular/core";
import { GuiCommand } from "@magic-xpa/gui";
import { Title } from "@angular/platform-browser";
import { EngineMagicService } from "../services/engine.magic.service";
import { ComponentListMagicService } from "../services/component-list.magic.service";
import { ExitMagicService } from "../services/exit.magic.service";
import { OverlayWindowService } from "../services/OverlayWindowService";
import { IMagicViewContainerRef } from "../..";
import { CommandsCollectorMagicService } from "../services/commands-collector.magic.service";
import { HttpClient } from "@angular/common/http";
import { Subscription } from 'rxjs';
import { SpinnerService } from "../services/spinner.service";
/**
 * Root Magic component
 */
export declare class MagicShellComponent implements AfterViewInit, IMagicViewContainerRef {
    protected engineMagicService: EngineMagicService;
    protected componentList: ComponentListMagicService;
    protected changeDetectorRef: ChangeDetectorRef;
    private titleService;
    private overlayWindowService;
    private httpClient;
    private spinnerService;
    private pendingCommandsCollector;
    exitMagicService: ExitMagicService;
    /**
     * Root component to be displayed in the window
     */
    RootComponent: Component;
    /**
     * parameters for the Root Component
     */
    RootComponentParameters: any;
    overlayWindowsContainerViewRef: ViewContainerRef;
    rootMagicElementRef: ElementRef;
    SpinnerTemplate: TemplateRef<any>;
    showSpinner: boolean;
    subscription: Subscription;
    private magicEngineTerminated;
    /**
     *
     * @param magic Magic's service
     * @param componentList Magic component list
     * @param changeDetectorRef Changes detector
     * @param titleService Title setting service
     * @param httpClient The native httpClient instance
     * @param exitMagicService Magic exit service
     */
    constructor(engineMagicService: EngineMagicService, componentList: ComponentListMagicService, changeDetectorRef: ChangeDetectorRef, titleService: Title, overlayWindowService: OverlayWindowService, httpClient: HttpClient, spinnerService: SpinnerService, pendingCommandsCollector: CommandsCollectorMagicService, exitMagicService: ExitMagicService);
    /**
     * Before-unload event listener
     * @param event
     */
    onBeforeUnload(event: any): Promise<void>;
    /**
     * Unload event listener
     * @param event
     */
    onUnload(event: any): Promise<void>;
    ngAfterViewInit(): void;
    setViewContainerRef(vcRef: ViewContainerRef): void;
    /**
     * Initialization of Magic mechanisms
     */
    initialize(): void;
    /**
     * Set the title
     */
    setTitle(): void;
    /**
     * Set the component according to requested form
     * @param formName Name of the form to open
     * @param taskId Id of opening task
     * @param taskDescription TODO
     * @param isModal whether modal window is being opened
     */
    private setComponent;
    /**
     * @ignore
     */
    registerUICommands(): void;
    /**
     * Execute commands received from the Magic WebClient engine
     * @param command
     */
    executeCommand(command: GuiCommand): void;
}
