///
import { srv } from '../../core';
import { Store } from '../../../lib/store';
import { App, IMenuItem } from './app';
import { PluginBuilder, IStateComponentConfig } from './plugin-builder';
import { User } from './user';
import { Options } from '../types';
export type PluginFactory = (app: PluginBuilder) => any;
/**
* Application instance builder
*
* Allows to:
* - register application plugins
* - register application states
* - register menu items
*/
export declare class Builder extends srv.eventEmitter.EventEmitter {
private readonly id;
private readonly ngApp;
private readonly options;
private ngmodules;
private readonly plugins;
private readonly navigator;
private readonly user;
private readonly menuItems;
private readonly title;
private conf;
constructor(id: string | {
id: string;
title: string;
}, ngApp: angular.IModule, options: Options, ngmodules?: any[]);
/**
* Registers an application plugin
*
* @param id plugin id
* @param factory plugin factory
*/
plugin(id: string, factory: (pluginBuilder: PluginBuilder) => any): Builder;
/**
* Registers a ui-router state
*
* @param options ui-router state options
*/
state(options: any): Builder;
/**
* Registers an angular directive
*
* @param name component name
* @param factory component factory
*/
component(name: string, factory: angular.IDirectiveFactory): Builder;
reactComponent(name: string, factory: angular.IComponentOptions): Builder;
/**
* Registers a state component
*
* @param config state component config
*/
stateComponent(config: IStateComponentConfig, app: App, store: Store): Builder;
modules(modules: string[]): void;
menuItem(item: IMenuItem): this;
config(config: Config): this;
getUser(): User;
/**
* Creates an application instance
*/
build(): App;
}