///
import { AddressInfo, Server } from 'net';
import * as Types from './interfaces';
/**
* The kernel class is the orchestration layer of your application.
* It serves as the entry point that initializes the container, prepares the Koa application, wires up middleware, and loads your controller routes.
*
*/
export declare abstract class Kernel, App extends Types.App, Container extends Types.Container> {
protected app: App;
protected container: Container;
protected logger: Types.Logger;
protected options: Config;
protected _server?: Server;
protected _address?: AddressInfo;
constructor(options: Config);
get server(): Server;
get address(): AddressInfo;
boot(): Promise;
serve(): Promise;
shutdown(): Promise;
protected createContainer(): Container;
protected buildContainer(): Promise;
protected addMiddlewares(): void;
protected createApp(): App;
protected abstract createContainerBuilder(): Types.ContainerBuilder;
protected middlewares(): Types.AppMiddleware[];
protected abstract createLogger(): Types.Logger;
protected loadControllers(): void;
}