import { RouterManager } from '../routes';
import { ApplicationManager } from '../applicationManager';
import { History, HistoryOptions } from '../history';
import { Data } from '../data';
import { Locales, LocalesOptions } from '../locales';
import { Storage, StorageOptions } from '../storage';
import { MenuManager } from '../menuManager';
import LoggerManager, { LoggerOptions } from '../logger';
import { TasksManager } from '../tasks';
import IndexDBManager, { DBOptions } from '../indexDB';
declare global {
    interface Window {
        app: App;
    }
}
export interface AppOptions {
    logger?: LoggerOptions;
    db?: DBOptions;
    constants?: any;
    history?: HistoryOptions;
    storage?: StorageOptions;
    locales?: LocalesOptions;
}
declare class App {
    private static instance;
    private plugins;
    globalData: any;
    router: RouterManager;
    applicationManager: ApplicationManager;
    history: History;
    data: Data;
    hooks: import("../hooks").HooksExport;
    locales: Locales;
    models: {
        getStore: () => import("../models").Store;
        StoreProvider: typeof import("react-redux").Provider;
        setConfig: (models: any[]) => void;
    };
    request: {
        get: (url: import("../request").RequestWrapperProps["url"], data: import("../request").RequestWrapperProps["data"], config: import("../request").RequestWrapperProps["config"]) => Promise<any>;
        post: (url: import("../request").RequestWrapperProps["url"], data: import("../request").RequestWrapperProps["data"], config: import("../request").RequestWrapperProps["config"]) => Promise<any>;
        put: (url: import("../request").RequestWrapperProps["url"], data: import("../request").RequestWrapperProps["data"], config: import("../request").RequestWrapperProps["config"]) => Promise<any>;
        remove: (url: import("../request").RequestWrapperProps["url"], data: import("../request").RequestWrapperProps["data"], config: import("../request").RequestWrapperProps["config"]) => Promise<any>;
        custom: (url: import("../request").RequestWrapperProps["url"], config: import("../request").RequestWrapperProps["config"]) => Promise<any>;
        setConfig: (newConfig: Partial<import("../request").RequestConfig>) => void;
        getConfig: () => import("../request").RequestConfig;
    };
    storage: Storage;
    menuManager: MenuManager;
    cookie: {
        setCookie: (name: string, value: string, domain?: string) => void;
        getCookie: (name: string) => string | null;
        deleteCookie: (name: string, domain?: string) => void;
        checkCookie: (name: string) => boolean;
        updateCookie: (name: string, value: string, domain?: string) => void;
    };
    website: {
        setTitle: (title: string) => void;
        setIcon: (paramsIcon: string) => void;
        setAppleWebAppTitle: (title: string) => void;
    };
    logger: LoggerManager;
    pubsub: import("../pubsub").PubSub;
    tasksManager: TasksManager;
    dbManager: IndexDBManager | null;
    sqlite: any;
    constants: {
        channel: string;
        [key: string]: string;
    };
    private constructor();
    static getInstance(options?: AppOptions): App;
    setGlobalData(globalData: any): void;
    usePlugin(name: string, plugin: any): void;
    usePlugins(plugins: {
        name: string;
        plugin: any;
    }[]): void;
    getPlugin(name: string): any;
    getGlobalData(): any;
    install(): void;
    unInstall(): void;
}
export default App;
