import { ApplicationState } from './State';
import { Applet } from '../Applet/index';
import { PresetConfig, AppletManifest, AppletConfig, AppSwitcher, ApplicationSafeAreaValue, GlobalCSSVariables, SegueActionOrigin, DefineApplet } from '../types';
declare class Application extends ApplicationState {
    tunneling: boolean;
    presetConfig: PresetConfig;
    appSwitcher: AppSwitcher;
    root: HTMLElement | ShadowRoot;
    appletsSpace: HTMLElement;
    pullRefreshHolder: {
        holder: HTMLElement | null;
        spinner: HTMLElement | null;
        holdLayer: HTMLElement | null;
    };
    installed: boolean;
    private working;
    constructor(presetConfig?: PresetConfig);
    private setBaseStyle;
    add(id: string, manifest: AppletManifest): Applet;
    del(id: string): Promise<boolean>;
    get(id: string): Promise<Applet>;
    defineApplet(defineApplet: DefineApplet, id: string): void;
    cloneAsNewApplet(applet: Applet, id?: string, config?: {}): Applet;
    getAppletByURL(url: string): Promise<Applet | undefined>;
    createAppletByURL(url: string, config?: {
        [key in Extract<keyof AppletConfig, string>]?: string | number;
    }, cloneAs?: string): Promise<Applet | undefined>;
    pushWindow(url: string, title?: string, preset?: string, cloneAs?: string, touches?: SegueActionOrigin): Promise<void>;
    pullDependencies(dependencies?: string[], prerender?: boolean): Promise<unknown>;
    updateSafeArea(data: ApplicationSafeAreaValue): void;
    updateGlobalCSSVariables(data: GlobalCSSVariables): void;
    refresh(): void;
    private createAppSwitcher;
    private createPullToRefreshHolder;
    private mountSystem;
    private mountFramework;
    private createCloneApplet;
    private lineUpApplet;
    private mountFirstApplet;
    activateTunneling(): void;
    subscribeSubAppMessages(): void;
    start(): Promise<void>;
}
export { Application };
