///
import { RequestContext } from "./requestContext";
import url = require('url');
import { IContainer } from "../di/resolvers";
import { HttpResponse } from "./response";
import http = require('http');
export declare abstract class VulcainMiddleware {
next: VulcainMiddleware;
invoke(ctx: RequestContext): Promise;
}
export interface HttpRequest {
url: url.Url;
headers: {
[header: string]: string | string[];
};
body: any;
verb: string;
nativeRequest?: http.IncomingMessage;
nativeResponse?: http.ServerResponse;
}
export declare class VulcainPipeline {
private first;
private last;
constructor(middlewares?: VulcainMiddleware[]);
use(middleware: VulcainMiddleware): this;
process(container: IContainer, request: HttpRequest): Promise;
}