import { AfterViewInit, Injector, OnDestroy, AfterContentInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Viewport, ScriptLoaderService } from '@wm/core';
import { LayoutDirective } from '@wm/components/page';
import { Subject } from 'rxjs';
import { AbstractI18nService, AbstractNavigationService, App } from '@wm/core';
import { AppManagerService } from '../services/app.manager.service';
import { FragmentMonitor } from '../util/fragment-monitor';
import * as i0 from "@angular/core";
export declare abstract class BaseSpaPageComponent extends FragmentMonitor implements AfterViewInit, OnDestroy, AfterContentInit {
    static lastPageSnapShot: any;
    Widgets: any;
    Variables: any;
    Actions: any;
    App: App;
    injector: Injector;
    pageName: string;
    activePageName: string;
    route: ActivatedRoute;
    appManager: AppManagerService;
    navigationService: AbstractNavigationService;
    router: Router;
    pageParams: any;
    showPageContent: boolean;
    i18nService: AbstractI18nService;
    appLocale: any;
    startupVariablesLoaded: boolean;
    pageTransitionCompleted: boolean;
    layoutDirective: LayoutDirective;
    spaPageDirective: any;
    $page: any;
    scriptLoaderService: ScriptLoaderService;
    Viewport: Viewport;
    destroy$: Subject<unknown>;
    viewInit$: Subject<unknown>;
    formatsByLocale: {
        timezone: string;
    };
    abstract evalUserScript(prefabContext: any, appContext: any, utils: any): any;
    abstract getVariables(): any;
    abstract getExpressions(): any;
    init(): void;
    registerWidgets(): void;
    initUserScript(): void;
    registerPageParams(): void;
    registerDestroyListener(fn: Function): void;
    defineI18nProps(): void;
    initVariables(): void;
    setTimezone(locale: any): void;
    /**
     * function to register bind expressions generated in this page instance
     * getExpressions function is defined in the generated page.comp.ts file
     * @param expressions, map of bind expression vs generated function
     */
    registerExpressions(): void;
    runPageTransition(transition?: string): Promise<void>;
    invokeOnReady(): void;
    private loadScripts;
    private restoreLastPageSnapshot;
    private savePageSnapShot;
    private saveScrollPosition;
    private restoreScrollPosition;
    /**
     * canDeactivate is called before a route change.
     * This will internally call onBeforePageLeave method present
     * at page level and app level in the application and decide
     * whether to change route or not based on return value.
     */
    canDeactivate(): any;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    onReady(): void;
    onBeforePageReady(): void;
    onBeforePageLeave(): void;
    onPageContentReady(): void;
    canReuse(): boolean;
    mute(): void;
    unmute(c?: this): void;
    ngOnAttach(): void;
    ngOnDetach(): void;
    ngAfterContentInit(): void;
    static clear(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseSpaPageComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BaseSpaPageComponent, never, never, {}, {}, never, never, false, never>;
}
