/// <reference types="node" />
import { iHttpRequest, HttpData, HttpAuth, HttpTimeout, HttpProxy, HttpRequestOptions, HttpAdapter, iHttpResponse } from "../interfaces/http";
import * as http from "http";
import * as FormData from "form-data";
import { HttpAuthType, HttpMethodVerb } from "../interfaces/http";
import { KeyValue } from "../interfaces/generic-types";
export declare class HttpRequest implements iHttpRequest {
    private _uri;
    private _method;
    private _headers;
    private _cookies;
    private _verifyCert;
    private _proxy;
    private _timeout;
    private _maxRedirects;
    private _auth;
    private _authType;
    private _data;
    private _fetched;
    private _customOpts;
    private _outputFile?;
    get uri(): string | null;
    set uri(value: string | null);
    get method(): HttpMethodVerb;
    set method(value: HttpMethodVerb);
    get headers(): KeyValue;
    set headers(value: KeyValue);
    get cookies(): KeyValue;
    set cookies(value: KeyValue);
    get auth(): HttpAuth | undefined;
    set auth(value: HttpAuth | undefined);
    get authType(): HttpAuthType;
    set authType(value: HttpAuthType);
    get maxRedirects(): number;
    set maxRedirects(value: number);
    get timeout(): HttpTimeout;
    set timeout(value: HttpTimeout);
    get proxy(): HttpProxy | undefined;
    set proxy(value: HttpProxy | undefined);
    get verifyCert(): boolean;
    set verifyCert(value: boolean);
    get data(): HttpData;
    set data(value: HttpData);
    get customOpts(): KeyValue;
    set customOpts(value: KeyValue);
    get proxyAgent(): http.Agent | undefined;
    get isImmutable(): boolean;
    get outputFile(): string | undefined;
    set outputFile(value: string | undefined);
    get options(): HttpRequestOptions;
    constructor(opts: HttpRequestOptions);
    setOptions(opts: HttpRequestOptions): HttpRequest;
    setCookie(key: string, value: any): void;
    getCookie(key: string): any;
    setHeader(key: string, value: any): void;
    getHeader(key: string): any;
    setJsonData(data: KeyValue): void;
    setFormData(formData: FormData): HttpRequest;
    setFormData(data: KeyValue, isMultipart?: boolean): HttpRequest;
    fetch(opts?: KeyValue, fetchMethod?: HttpAdapter): Promise<iHttpResponse>;
}
