/// <reference types="node" />
import http from "http";
import express, { RequestHandler } from "express";
import { HttpTerminator } from "http-terminator";
import { INeuraAppConfig } from "./config/app.config";
import { INeuraLogger } from "./utils/logger.util";
import { INeuraContainer } from "./utils/container.util";
import { NeuraController } from "./controllers/neura.controller";
export declare class NeuraApp {
    protected readonly config: INeuraAppConfig;
    protected readonly container: INeuraContainer;
    protected app: express.Application;
    protected httpServer: http.Server;
    protected httpTerminator: HttpTerminator;
    protected started: boolean;
    protected logger: INeuraLogger;
    private middlewaresInitialized;
    constructor(config: INeuraAppConfig, container: INeuraContainer);
    get HttpServer(): http.Server;
    get ExpressApp(): express.Application;
    addController<T extends NeuraController>(instance: T): void;
    addMiddleware(handler: RequestHandler): void;
    listen(): Promise<void>;
    close(): Promise<void>;
}
