/// <reference types="node" />
import { KeyValue } from "./interfaces";
import { HttpResponse } from ".";
import { LaunchOptions } from "puppeteer-core";
export declare type HttpRequestType = "generic" | "json" | "image";
export declare const HttpMethodVerbAllowedValues: string[];
export declare type HttpMethodVerb = "get" | "head" | "delete" | "patch" | "post" | "put" | "options";
export interface BrowserOptions extends LaunchOptions {
    width?: number;
    height?: number;
    recordConsole?: boolean;
    outputConsole?: boolean;
}
export declare type HttpAuth = {
    username: string;
    password: string;
};
export declare type HttpTimeout = {
    read?: number;
    open?: number;
    response?: number;
};
export declare type HttpProxy = {
    host: string;
    port: number;
    auth: HttpAuth;
};
export declare type HttpData = Buffer | KeyValue | NodeJS.ReadableStream | string | null | undefined;
export declare type HttpRequestOptions = {
    browserOptions?: BrowserOptions;
    auth?: HttpAuth;
    data?: HttpData;
    cookies?: KeyValue;
    headers?: KeyValue;
    maxRedirects?: number;
    method?: HttpMethodVerb;
    proxy?: HttpProxy;
    timeout?: HttpTimeout | number;
    type?: HttpRequestType;
    uri?: string | null;
    verifyCert?: boolean;
};
export declare class HttpRequest {
    private _uri;
    private _method;
    private _headers;
    private _cookies;
    private _verifyCert;
    private _proxy;
    private _timeout;
    private _maxRedirects;
    private _auth;
    private _data;
    private _fetched;
    private _browser;
    private _type;
    get uri(): string | null;
    set uri(value: string | null);
    get method(): HttpMethodVerb;
    set method(value: HttpMethodVerb);
    get type(): HttpRequestType;
    set type(value: HttpRequestType);
    get headers(): KeyValue;
    set headers(value: KeyValue);
    get cookies(): KeyValue;
    set cookies(value: KeyValue);
    get auth(): HttpAuth | undefined;
    set auth(value: HttpAuth | undefined);
    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 browser(): BrowserOptions;
    set browser(value: BrowserOptions);
    private get proxyAgent();
    get isImmutable(): boolean;
    get options(): HttpRequestOptions;
    private get needleOptions();
    private get httpOptions();
    private get gotOptions();
    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;
    fetch(opts?: KeyValue): Promise<HttpResponse>;
    private _fetchHttp;
    protected _fetchImage(opts?: KeyValue): Promise<HttpResponse>;
}
