import { Request, Response } from 'express'; import { PathDownload, StreamDownload } from './download'; import { View } from '../view'; export declare type ResponseBody = string | undefined | null | object | Array | View; export declare type ResponseHeaders = { [key: string]: string; }; export declare class HTTPResponse { protected readonly controllerResponse: ResponseType; protected readonly headers?: ResponseHeaders; protected readonly status?: number; protected mimeType: string | undefined; protected defaultHeaders: object | undefined; constructor(controllerResponse: ResponseType, headers?: ResponseHeaders, status?: number); handle(req: Request, res: Response): void; protected setBody(_: any, res: Response): HTTPResponse; protected setStatus(req: Request, res: Response): HTTPResponse; protected setHeaders(req: Request, res: Response): HTTPResponse; protected setMimeType(req: Request, res: Response): HTTPResponse; } export declare class HTTPRedirect extends HTTPResponse { protected readonly status: number; handle(req: Request, res: Response): void; } export declare class JSONResponse extends HTTPResponse> { protected readonly mimeType: string; } export declare class HTMLResponse extends HTTPResponse { protected readonly mimeType: string; } export declare class NoContentResponse extends HTTPResponse { protected readonly mimeType: undefined; constructor(content?: any, headers?: any); } export declare class DownloadResponse extends HTTPResponse { constructor(download: StreamDownload | PathDownload, headers?: ResponseHeaders, status?: number); protected setBody(req: Request, res: Response): HTTPResponse; } export declare function toResponse(response: any, headers?: ResponseHeaders, status?: number): Promise>;