///
import * as http from "http";
import * as https from "https";
import * as utils from "./utils";
import { Context } from "./context";
import { Router } from "./router";
import { MicroServer } from "./server-utils";
export interface ItemsContainer {
items: Map;
getItem(key: string): T;
setItem(key: string, value: T): void;
hasItem(key: string): boolean;
}
export interface IApplication extends ItemsContainer {
middlewares: Middleware[];
createServer(secureOpts?: https.ServerOptions): MicroServer;
createHandler(): (req: http.IncomingMessage, res: http.ServerResponse) => void;
use(...middlewares: (Middleware | Router)[]): IApplication;
setErrorHandler(handler: ErrorHandler): void;
setFallbackHandler(handler: Middleware): void;
}
export declare type Middleware = (context: T, next: NextMiddleware) => MiddlewareResult;
export declare type MiddlewareResult = Promise;
export declare type NextMiddleware = () => MiddlewareResult;
export declare type ErrorHandler = (err: Error, req: http.IncomingMessage, res: http.ServerResponse, context?: T) => void;
export declare class Application implements IApplication {
private _contextFactory;
private _errorHandler;
private _fallbackHandler;
middlewares: Middleware[];
items: Map;
constructor(_contextFactory: (app: Application, req: http.IncomingMessage, res: http.ServerResponse) => T, _errorHandler?: ErrorHandler, _fallbackHandler?: typeof utils.defaultFallbackNotFoundHandler);
createServer(secureOpts?: https.ServerOptions): MicroServer;
createHandler(): (req: http.IncomingMessage, res: http.ServerResponse) => void;
use(...middleware: (Middleware | Router)[]): Application;
setErrorHandler(handler: ErrorHandler): void;
setFallbackHandler(handler: Middleware): void;
getItem(key: string): T;
setItem(key: string, value: T): void;
hasItem(key: string): boolean;
}
export declare class App extends Application {
constructor();
}