import * as express from 'express';
import { IncomingHttpHeaders } from 'http';
import { Writable } from 'stream';
import { IFormData } from './IFormData';
import { IAuthTokenData } from './IAuthTokenData';
import { IDatabasePosition } from './IDatabasePosition';
export type IQueryParamValue = undefined | string | IQueryParams | (string | IQueryParams)[];
export interface IQueryParams {
[key: string]: IQueryParamValue;
}
export interface IParameterMap {
[key: string]: string | string[];
}
export declare class Request
{
private $request;
constructor(request: express.Request);
getBody(): TBody;
getForm(): Promise;
getHeaders(): IncomingHttpHeaders;
getHeader(name: string): string;
getQueryVariables(): IQueryParams;
getQueryVariable(name: string): IQueryParamValue;
getQuerySingleVariable(name: string): string;
getQueryMultiVariable(name: string): string[];
getParams(): IParameterMap;
getParam(name: string): string | string[];
/**
* Gets a URL parameter as string. If the value is multiple
* then only the first value is returned.
* This is a convenience method over `getParam` which returns a union.
*/
getURLSingleParam(name: string): string;
/**
* Gets a URL parameter as string[].
* This is a convenience method over `getParam` which returns a union.
*/
getURLMultiParam(name: string): string[];
getIP(): string;
getForwardedIP(): string;
getHostname(): string;
getMethod(): string;
getURL(): string;
isSecure(): boolean;
pipe(destination: Writable): Writable;
unpipe(source: Writable): void;
getRequestSource(): express.Request;
/**
* Reads the Page/Position DB headers if present
* Will return null if headers are not parseable.
*
* @since 9.1.0
* @returns {IDatabasePosition}
*/
getDatabasePosition(): IDatabasePosition;
getAuthenticationToken(): Promise;
}