import { BringConfig, BringCredentials, BringResponse, Future } from "../models";
export declare class BringBuilder {
    protected config?: BringConfig;
    private _bring;
    constructor(config?: BringConfig);
    /**
     * The base url for the client e.g. https://api.com
     *
     * @param {string} baseUrl
     * @return {*}  {BringBuilder}
     * @memberof BringBuilder
     */
    withBaseUrl(baseUrl: string): BringBuilder;
    /**
     * If headers should be included in the request
     *
     * @param {{ [name: string]: string }} headers
     * @return {*}  {BringBuilder}
     * @memberof BringBuilder
     */
    withHeaders(headers: {
        [name: string]: string;
    }): BringBuilder;
    /**
     * If credential options should be included in the request, Default is "include" for this method
     *
     * @param {BringCredentials} [credentials]
     * @return {*}  {BringBuilder}
     * @memberof BringBuilder
     */
    withCredentials(credentials?: BringCredentials): BringBuilder;
    /**
     * Sets up the client defaults to call a json api
     *
     * @return {*}
     * @memberof BringBuilder
     */
    withJsonApiSupport(): BringBuilder;
    /**
     * Creates the Bring instance with the configuration options
     *
     * @return {*}  {Bring}
     * @memberof BringBuilder
     */
    build(): Bring;
}
export declare class Bring {
    _baseConfig: BringConfig | Future<BringConfig> | Promise<BringConfig>;
    /**
     * Create a new instance of Bring using the BringBuilder
     * @static
     * @param {(BringConfig | Future<BringConfig> | Promise<BringConfig>)} [config]
     * @return {*}  {Bring}
     * @memberof Bring
     */
    static new(config?: BringConfig): BringBuilder;
    /**
     * Creates a new instance of Bring with default configurations for calling Omnia Service Apis
     *
     * @static
     * @return {*}
     * @memberof Bring
     */
    static default(config?: BringConfig): Bring;
    constructor(config?: BringConfig | Future<BringConfig> | Promise<BringConfig>);
    /**
     *Performs a GET request for provided url
     *
     * @template TReturnType
     * @param {string} url
     * @param {BringConfig} [config]
     * @return {*}  {Future<BringResponse<TReturnType>>}
     * @memberof Bring
     */
    get<TReturnType>(url: string, config?: BringConfig): Future<BringResponse<TReturnType>>;
    /**
     * Performs a DELETE request for provided url
     *
     * @template TReturnType
     * @param {string} url
     * @param {BringConfig} [config]
     * @return {*}  {Future<BringResponse<TReturnType>>}
     * @memberof Bring
     */
    delete<TReturnType>(url: string, config?: BringConfig): Future<BringResponse<TReturnType>>;
    /**
     * Performs a HEAD request for provided url
     *
     * @template TReturnType
     * @param {string} url
     * @param {BringConfig} [config]
     * @return {*}  {Future<BringResponse<TReturnType>>}
     * @memberof Bring
     */
    head<TReturnType>(url: string, config?: BringConfig): Future<BringResponse<TReturnType>>;
    /**
     * Performs a HEAD request for provided url
     *
     * @template TReturnType
     * @param {string} url
     * @param {Object} body
     * @param {BringConfig} [config]
     * @return {*}  {Future<BringResponse<TReturnType>>}
     * @memberof Bring
     */
    post<TReturnType>(url: string, body: Object, config?: BringConfig): Future<BringResponse<TReturnType>>;
    /**
     * Performs a POST request for provided url
     *
     * @template TReturnType
     * @param {string} url
     * @param {Object} body
     * @param {BringConfig} [config]
     * @return {*}  {Future<BringResponse<TReturnType>>}
     * @memberof Bring
     */
    put<TReturnType>(url: string, body: Object, config?: BringConfig): Future<BringResponse<TReturnType>>;
    /**
     * Performs a POST request for provided url
     *
     * @template TReturnType
     * @param {string} url
     * @param {Object} body
     * @param {BringConfig} [config]
     * @return {*}  {Future<BringResponse<TReturnType>>}
     * @memberof Bring
     */
    patch<TReturnType>(url: string, body: Object, config?: BringConfig): Future<BringResponse<TReturnType>>;
    private createRequest;
}
