import type { AppStore } from './AppStore';
import type { AppView } from './AppView';
/**
 * Defines an application that has views associated with it.
 */
export interface App<AppStoreType extends AppStore = AppStore> {
    /**
     * @returns a unique identifier for an application. This id must be unique as it's
     * used in loading and maintaining the state of an application.
     */
    id: string;
    /**
     * @returns An instance of a new store for the application.
     */
    store?: AppStoreType;
    /**
     * The messages the application is listening for.
     */
    messages?: string[];
    /**
     * @returns the app views associated with this application. Each application
     * view has a unique key that's combined with the application id to form
     * a unique key. For example, if the application id is `finUi.myApp` and id is `myView` then
     * the computed id is `finUi.myApp.myView`. Any localized name for the view will
     * be computed from the overall id for view with a name postfix. Therefore the
     * name for this view would be looked up as `finUi.myApp.myView.name`.
     */
    views?: Record<string, AppView>;
}
