import { BlobClientResponse } from '../client/BlobClientResponse';
import { Client } from '../client/Client';
import { ClientListener } from "../client/ClientListener";
import { JsonClientResponse } from '../client/JsonClientResponse';
import { TextClientResponse } from '../client/TextClientResponse';
import { VoidClientResponse } from '../client/VoidClientResponse';
import { StreamProducer } from '../io/StreamProducer';
import { CvLocale, StringDictionary } from '../util';
export declare type FetchMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
export declare class FetchClient implements Client {
    private _lastActivity;
    private _locale;
    private _clientListener;
    isAnyUserInBriefcaseMode(tenantId: string): Promise<boolean>;
    isUserInBriefcaseMode(userInfo: {}): Promise<boolean>;
    addClientListener(clientListener: ClientListener, locale: CvLocale): void;
    removeClientListener(clientListener: ClientListener): void;
    getBlob(baseUrl: string, resourcePath?: string): Promise<BlobClientResponse>;
    getText(baseUrl: string, resourcePath?: string): Promise<TextClientResponse>;
    openStream(baseUrl: string, resourcePath?: string): Promise<StreamProducer>;
    postMultipart(baseUrl: string, resourcePath: string, formData: FormData): Promise<VoidClientResponse>;
    getJson(baseUrl: string, resourcePath?: string, queryParams?: StringDictionary): Promise<JsonClientResponse>;
    readonly lastActivity: Date;
    postJson(baseUrl: string, resourcePath: string, jsonBody?: StringDictionary): Promise<JsonClientResponse>;
    putJson(baseUrl: string, resourcePath: string, jsonBody?: StringDictionary): Promise<JsonClientResponse>;
    deleteJson(baseUrl: string, resourcePath: string): Promise<JsonClientResponse>;
    fetch(url: string, method: FetchMethod, body?: any, headers?: {
        [index: string]: string;
    }, fetchOpts?: {}): Promise<Response>;
    private assertJsonContentType;
    private encodeQueryParams;
    private isJsonContentType;
    private processRequest;
}
