import { StatusCode } from './StatusCode';
import { ResponseData } from './ResponseData';
import { StormError, IErrorResponse } from './StormError';
import * as express from 'express';
export type SendableData = ResponseData | Error | IErrorResponse | Buffer | any;
export interface IHeaderKeyValuePair {
    [key: string]: string;
}
export declare class Response<TResponse = SendableData, TErrorResponse = Error | IErrorResponse | string> {
    private $response;
    private $created;
    private $requestURL;
    constructor(response: express.Response, requestURL: string);
    setStatus(status: StatusCode): Response<TResponse, TErrorResponse>;
    getStatus(): StatusCode;
    redirect(url: string): void;
    private $send;
    send(data?: TResponse | TErrorResponse | StormError | IErrorResponse | Buffer): void;
    pipe(stream: NodeJS.ReadableStream): void;
    success(data?: TResponse): void;
    setHeader(key: string, value: string): void;
    setHeaders(keyValuePair: IHeaderKeyValuePair): void;
    isHeadersSent(): boolean;
    error(error?: TErrorResponse | ResponseData<TErrorResponse>): void;
}
