import { Server } from "http"; import { Application } from "express"; import { Container } from "inversify"; import { ILogger } from "@ts-awesome/logger"; import { IoCSetup } from "./server"; import { HealthMonitor } from "./health-monitor"; import { HealthStatus, IServer } from "./interfaces"; export declare abstract class BaseApplicationServer implements IServer { protected readonly containerConfigurator: IoCSetup; protected readonly port: number; protected readonly hostname: string; private _app; protected readonly resourceManager: HealthMonitor; protected readonly container: Container; protected live: boolean; protected ready: boolean; protected server?: Server; protected readonly logger: ILogger; /** * prepare your express app * @param app * @protected */ protected abstract configure(app: Application): void; /** * make sure app is ready for requests * @protected */ protected startup(): Promise; /** * clean up before app goes down * @protected */ protected cleanup(): Promise; /** * check if app is still alive and ready for requests * @protected */ protected heartbeat(): Promise; protected constructor(containerConfigurator: IoCSetup, port?: number, hostname?: string); start(): Promise; stop(): Promise; }