import { Url, MiddlewareInstance, RouteInstance, ErrorCallback } from '../@types';
import Response from './Response';
import Request from './Request';
import Logger from './Logger';
export default class Engine {
    private resolved;
    private request;
    private response;
    private middlewares;
    private method;
    private url;
    private logger;
    private errorCallback;
    constructor(url: Url, method: string, request: Request, response: Response, logger: Logger, errorCallback: ErrorCallback | null);
    /**
     * returns the parameter value
     */
    private getParameterValue;
    /**
     * capture route parameters
     */
    private captureParameter;
    /**
     * runs through the route, and captures parameters
     */
    private captureParameters;
    /**
     * check if route url matches request url
     */
    private matchUrl;
    /**
     * validate that the middleware method matches request method
     */
    private validateMiddleware;
    /**
     * validate that the route method matches the request method
     */
    private validateRoute;
    /**
     * asynchronously runs the middleware
     */
    private runMiddlewares;
    /**
     * asynchronously runs the matching route
     */
    private runRoute;
    /**
     * processes the route
     */
    private process;
    /**
     * sets or overrides the existing middlewares
     */
    use(middlewares: MiddlewareInstance[]): this;
    /**
     * stores route rules for http OPTIONS method
     */
    options(route: RouteInstance): Promise<boolean>;
    /**
     * stores route rules for http HEAD method
     */
    head(route: RouteInstance): Promise<boolean>;
    /**
     * stores route rules for http GET method
     */
    get(route: RouteInstance): Promise<boolean>;
    /**
     * stores route rules for http POST method
     */
    post(route: RouteInstance): Promise<boolean>;
    /**
     * stores route rules for http PUT method
     */
    put(route: RouteInstance): Promise<boolean>;
    /**
     * stores route rules for http DELETE method
     */
    delete(route: RouteInstance): Promise<boolean>;
    /**
     * stores route rules for all http methods
     */
    all(route: RouteInstance): Promise<boolean>;
}
