/**
 * @module HttpServletResponse
 * @description Http信息返回类
 */
import { ServerResponse } from 'http';
import HttpStatus from './HttpStatus';
import MediaType from './MediaType';
import { HttpHeaderValue } from '../../interface/declare';
import type ServletContext from './ServletContext';
export default class HttpServletResponse {
    private tempStatusCode;
    private tempStatusMessage;
    startTime: number;
    /**
     * nodejs原生ServerResponse
     */
    readonly nativeResponse: ServerResponse;
    /**
   * 当前请求上下文
   */
    get servletContext(): ServletContext;
    /**
     * 判断返回头是否已经发送
     */
    get headersSent(): boolean;
    get status(): HttpStatus;
    /**
     * 获取当前设置的返回状态编码
     */
    get statusCode(): any;
    /**
     * 获取当i请安设置返回状态的描述信息
     */
    get statusMessage(): any;
    /**
     * 获取已经设置的content-type
     */
    get nativeContentType(): string;
    private writeStatus;
    /**
     * 当前请求是否有错误
     */
    get hasError(): boolean;
    /**
     * 获取设置的返回头
     * @param name
     */
    getHeader(name: string): string | number | string[];
    getHeaderValue(name: string): (string | number)[];
    addHeader(name: string, value: HttpHeaderValue, checkExists?: boolean): void;
    /**
     * 添加一个指定名称的返回头到返回头队列
     * @param {String} name 返回头名称
     * @param {String} value 返回头值
     */
    setHeader(name: string, value: HttpHeaderValue): this;
    /**
     * 返回异常，结束请i去
     * @param name
     */
    sendError(status: HttpStatus): void;
    /**
     * 判断当前返回头中是否指定头
     */
    containsHeader(name: string): boolean;
    /**
     * 设置日期类型返回头
     */
    setDateHeader(name: string, value: number | Date): this;
    /**
     * 设置返回状态
     * @param response
     */
    setStatus(status: number | HttpStatus, statusMessage?: any): this;
    /**
     * 移除指定返回头
     * @param name 返回头
     */
    removeHeader(name: string): void;
    /**
     * 以安全方式将要写入的内容创建成一个buffer对象
     * @param data
     * @returns {Buffer}
     */
    createBuffer(data: any): Buffer;
    /**
     * 写出内容到客户端
     * @param response
     */
    write(chunk: string | Buffer, encoding?: BufferEncoding): void;
    /**
     * 结束请求
     * @param response
     */
    end(content?: string | Buffer, encoding?: BufferEncoding): void;
    /**
     * 立即结束请求，并且设置返回内容与返回内容类型
     * 注意：此前不能调用response的 write与end函数
     * @param content 要返回的内容
     * @param mediaType 媒体类型
     * @param encoding 编码
     */
    fullResponse(content: string | Buffer, mediaType: MediaType, encoding?: BufferEncoding): Promise<void>;
    /**
     * 执行http重定向
     * @param response
     */
    sendRedirect(url: any, status?: number): void;
    getLastModifiedTime(): Date;
    setServletContext(context: ServletContext): void;
    constructor(response: ServerResponse);
}
