import { DIContainer, Logger } from "../../common"; import { Middleware, MiddlewareRegistry } from "../common"; import { Drainable } from "../events/graceful-shutdown"; import { HttpApp, HttpPlugin, PluginManager } from "./types"; import { Route } from "./route"; import { RouteGroup } from "./route.group"; import { RouteRegistry } from "./route.registry"; import { Router } from "./router"; export declare abstract class BaseHttpApp implements HttpApp { protected routes: Router; readonly __isHttpApp = true; private static processHandlersRegistered; private static activeApps; protected routeRegistry: RouteRegistry; protected middlewareRegistry: MiddlewareRegistry; protected container: DIContainer; protected pluginManager: PluginManager; protected logger: Logger; protected state: 'stopped' | 'starting' | 'started' | 'stopping'; protected drainables: Drainable[]; constructor(routes: Router, logger?: Logger); getLogger(): Logger; registerDrainable(resource: Drainable): this; getDrainables(): readonly Drainable[]; abstract start(port: number): Promise; abstract stop(): Promise; abstract getApp(): Framework; abstract getServer(): T; abstract initializeFramework(): void; getRouteRegistry(): RouteRegistry; getMiddlewareRegistry(): MiddlewareRegistry; getContainer(): DIContainer; register(...item: (Route | RouteGroup)[]): this; useMiddleware(...middlewares: Middleware[]): this; usePlugin(plugin: HttpPlugin, options?: any): this; getPlugin(pluginName: string): HttpPlugin | undefined; listPlugins(): HttpPlugin[]; isDevelopment(): boolean; isProduction(): boolean; isTest(): boolean; isStaging(): boolean; protected beforeStart(): Promise; protected afterStart(): Promise; protected beforeStop(): Promise; protected afterStop(): Promise; private static setupProcessHandlers; gracefulShutdown(signals?: string[]): Promise; private static drainResource; } export { Drainable } from "../events/graceful-shutdown";