///
import { JSONObject, JSONValue } from '@expo/json-file';
import FormData from 'form-data';
import { ParsedUrlQueryInput } from 'querystring';
export declare class ApiV2Error extends Error {
readonly name = "ApiV2Error";
code: string;
details?: JSONValue;
serverStack?: string;
metadata?: object;
readonly _isApiError = true;
constructor(message: string, code?: string);
}
declare type RequestOptions = {
httpMethod: 'get' | 'post' | 'put' | 'patch' | 'delete';
queryParameters?: QueryParameters;
body?: JSONObject;
timeout?: number;
};
declare type UploadOptions = {
headers: any;
data: any;
};
declare type QueryParameters = ParsedUrlQueryInput;
declare type APIV2ClientOptions = {
sessionSecret?: string;
accessToken?: string;
};
export default class ApiV2Client {
static exponentClient: string;
sessionSecret: string | null;
accessToken: string | null;
static clientForUser(user?: APIV2ClientOptions | null): ApiV2Client;
static setClientName(name: string): void;
constructor(options?: APIV2ClientOptions);
getAsync(methodName: string, args?: QueryParameters, extraOptions?: Partial, returnEntireResponse?: boolean): Promise;
postAsync(methodName: string, data?: JSONObject, extraOptions?: Partial, returnEntireResponse?: boolean): Promise;
putAsync(methodName: string, data: JSONObject, extraOptions?: Partial, returnEntireResponse?: boolean): Promise;
patchAsync(methodName: string, data: JSONObject, extraOptions?: Partial, returnEntireResponse?: boolean): Promise;
deleteAsync(methodName: string, args?: QueryParameters, extraOptions?: Partial, returnEntireResponse?: boolean): Promise;
uploadFormDataAsync(methodName: string, formData: FormData): Promise;
_requestAsync(methodName: string, options: RequestOptions, extraRequestOptions?: Partial, returnEntireResponse?: boolean, uploadOptions?: UploadOptions): Promise;
}
export {};