/**
 * @adonisjs/http-server
 *
 * (c) Harminder Virk <virk@adonisjs.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
/// <reference path="../../adonis-typings/index.d.ts" />
/// <reference types="@adonisjs/logger/build/adonis-typings/logger" />
/// <reference types="@adonisjs/profiler/build/adonis-typings/profiler" />
/// <reference types="node" />
import { Macroable } from 'macroable';
import { RouteNode } from '@ioc:Adonis/Core/Route';
import { IncomingMessage, ServerResponse } from 'http';
import { LoggerContract } from '@ioc:Adonis/Core/Logger';
import { RequestContract } from '@ioc:Adonis/Core/Request';
import { ResponseContract } from '@ioc:Adonis/Core/Response';
import { ProfilerRowContract } from '@ioc:Adonis/Core/Profiler';
import { ApplicationContract } from '@ioc:Adonis/Core/Application';
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
/**
 * Http context is passed to all route handlers, middleware,
 * error handler and server hooks.
 */
export declare class HttpContext extends Macroable implements HttpContextContract {
    request: RequestContract;
    response: ResponseContract;
    logger: LoggerContract;
    profiler: ProfilerRowContract;
    /**
     * Set inside the provider
     */
    static app: ApplicationContract;
    /**
     * Find if async localstorage is enabled for HTTP requests
     * or not
     */
    static get usingAsyncLocalStorage(): boolean;
    /**
     * Get access to the HTTP context. Available only when
     * "usingAsyncLocalStorage" is true
     */
    static get(): HttpContextContract | null;
    /**
     * Get the HttpContext instance or raise an exception if not
     * available
     */
    static getOrFail(): HttpContextContract;
    /**
     * Run a method that doesn't have access to HTTP context from
     * the async local storage.
     */
    static runOutsideContext<T>(callback: (...args: any[]) => T, ...args: any[]): T;
    /**
     * A unique key for the current route
     */
    routeKey: string;
    /**
     * Route params
     */
    params: Record<string, any>;
    /**
     * Route subdomains
     */
    subdomains: Record<string, any>;
    /**
     * Reference to the current route. Not available inside
     * server hooks
     */
    route?: RouteNode & {
        params: string[];
    };
    /**
     * Required by macroable
     */
    protected static macros: {};
    protected static getters: {};
    constructor(request: RequestContract, response: ResponseContract, logger: LoggerContract, profiler: ProfilerRowContract);
    /**
     * A helper to see top level properties on the context object
     */
    inspect(): string;
    /**
     * Creates a new fake context instance for a given route. The method is
     * meant to be used inside an AdonisJS application since it relies
     * directly on the IoC container.
     */
    static create(routePattern: string, routeParams: Record<string, any>, req?: IncomingMessage, res?: ServerResponse): HttpContext;
}
