import request from 'request';
import { IRequestCallback, IRequestDefaults, IRequestInstance, IRequestOptions, IRequestPromiseValue, IRequestStream } from './types';
/**
 * Request wrapper around the request module.
 *
 * @param defaults Default options.
 */
export declare class Request extends Object {
    /**
     * Request instance.
     */
    protected readonly _request: IRequestInstance;
    constructor(defaults?: IRequestDefaults);
    /**
     * Make request with an optional callback.
     *
     * @param options Request options.
     * @param cb An optional callback function.
     * @returns Stream object.
     */
    stream(options: IRequestOptions, cb?: IRequestCallback): IRequestStream;
    /**
     * Make request with promise.
     *
     * @param options Request options.
     * @returns Stream response and body.
     */
    promise(options: IRequestOptions): Promise<IRequestPromiseValue>;
    /**
     * Make a request object.
     *
     * @param defaults Request defaults.
     * @returns Request instance.
     */
    protected _createRequest(defaults?: IRequestDefaults): request.RequestAPI<request.Request, request.CoreOptions, request.RequiredUriUrl>;
}
