import { Container, Provider } from 'frint-di'; import { Observable } from 'rxjs/Observable'; export interface Methods { [key: string]: (...args: any[]) => any; } export interface ProviderNames { component: string; container: string; store: string; app: string; parentApp: string; rootApp: string; region: string; } export interface RegisterAppOptions { name?: string; multi?: boolean; regions?: string[]; initialize?: () => void; } export interface FrintProvider extends Provider { cascade?: boolean; scoped?: boolean; } export interface AppRegistration { appClass: AppClass; name: string; regions: any[]; instances: { [name: string]: App; }; multi: boolean; initialize?: () => void; } export interface AppOptions { name?: string; methods?: Methods; parentApp?: App; providers?: FrintProvider[]; providerNames?: ProviderNames; initialize?: () => void; beforeDestroy?: () => void; } export interface AppClass { frintAppName?: string; new (opts?: AppOptions): App; } export declare class App { [method: string]: any; container: Container; private options; private _appsCollection; private _apps$; constructor(opts: AppOptions); getContainer(): Container; getRootApp(): App; getParentApp(): App; getParentApps(): App[]; getOption(key: any): any; getName(): any; getProviders(): FrintProvider[]; getProvider(name: any): FrintProvider; get(providerName: any): T; getApps$(regionName?: any): Observable; registerApp(appClass?: AppClass, opts?: RegisterAppOptions): void; hasAppInstance(name: any, region?: any, regionKey?: any): boolean; getAppInstance(name: any, region?: any, regionKey?: any): App; getAppOnceAvailable$(name: any, region?: any, regionKey?: any): Observable; instantiateApp(name: any, region?: any, regionKey?: any): App; destroyApp(name: any, region?: any, regionKey?: any): void; beforeDestroy(): any; private _registerRootProviders(); }