/** The heart of your, well app. It all starts with `new App(...)` */
classAppextendsHookable{
/** The current status of the app */
status:"stopped"|"running"|"starting"|"stopping";
/** The manifest assigned to this app. Stores things like the app name, domain, logo*/
manifest:Sealious.Manifest;
/** The function that's used to generate translated versions of phrases */
i18n:(phrase_id:string,params?:any)=>string;
/** ConfigManager instance. It serves the config based on default values and the config object provided to the app constructor */
ConfigManager:Sealious.ConfigManager;
/** The {@link Logger} instance assigned to this application */
Logger:Logger;
/** Mailer configured according to the app's config */
Email:Mailer;
/** The server that runs the REST API routing and allows to add custom routes etc */
HTTPServer:Sealious.HttpServer;
/** The root subject of the app. It's where all subjects are derived from */
RootSubject:Sealious.Subject;
/** Performs an action within an app. The action is specified by the subject path, parametrized with params and ran under the given context */
runAction:(
context:Sealious.Context,
path:SubjectPathEquiv,
action:ActionName,
params?:any
)=>Promise<any>;
/** The mongoDB client connected to the database specified in the app config */
Datastore:Datastore;
/** The Metadata manager assigned to this app. Used to store certain state information that's not meant to be shown to the user
* @internal
*/
Metadata:Metadata;
/** The emittery instance used to signal app state changes, like "started" or "stopped". It's not advised to use it directly, but rather to use the {@App.on} method
* @internal
*/
privatee:Emittery;
/** The collections defined within the given app. */
collections:{[name:string]:Collection}={};
/** A shorthand-way to create a new SuperContext: `new app.SuperContext()`. */
publicSuperContext:new()=>SuperContext;
/** A shorthand-way to create a new context: `new app.Context()`. */
publicContext:new()=>Context;
/** The app constructor.
* @param custom_config Specify the details, such as database address and the port to listen on. This is private information and won't be shown to user. See {@link Config}
* @param manifest Specify additional information, such as the URL, logo or the main color of the app. This is public information.