import { Context, type ContextMiddleware, type ContextListener } from '../context/context';
import type { IEvent } from '../events';
export type AppConfig = {
    context?: Context;
    init?: ContextMiddleware;
    start?: ContextMiddleware;
    destroy?: ContextMiddleware;
};
export declare class App<C extends Context = Context> {
    readonly context: C;
    constructor(context: C);
    static Events: {
        Init: string;
        Start: string;
        Destroy: string;
    };
    init(): Promise<void>;
    onInit(listener: ContextListener<C, IEvent>): this;
    start(): Promise<void>;
    onStart(listener: ContextListener<C, IEvent>): void;
    destroy(): Promise<void>;
    onDestroy(listener: ContextListener<C, IEvent>): void;
}
//# sourceMappingURL=app.d.ts.map