/// <reference types="koa-bodyparser" />
/// <reference types="node" />
import type Router from 'koa-router';
import Koa from 'koa';
export interface KobpCustomization {
    /**
     * Before app is being created
     */
    onInit?: () => Promise<void>;
    /**
     * After app has been created
     */
    onAppCreated?: (app: Koa) => void;
    /**
     * Attach all necessary middlewares.
     */
    middlewares?: (app: Koa) => void;
    /**
     * Handle signal received for graceful shutdown.
     */
    onSignalReceived?: (signal: NodeJS.Signals, app: Koa) => Promise<void>;
}
export interface KobpModule {
    customization(): KobpCustomization;
}
export declare class BootstrapLoader {
    private modules;
    addModule(module: KobpModule): this;
    buildSync(serviceRoutes: Router, appCustomization: KobpCustomization): Koa;
    build(serviceRoutes: Router, appCustomization: KobpCustomization): Promise<Koa>;
    private _launchKoa;
}
