import type { RetryTypes } from "./NativeAPIClient"; export interface ProgressPromise extends Promise { progress?: (callback: (fractionCompleted: number, bytesRead?: number | null) => void) => ProgressPromise; onProgress?: (fractionCompleted: number, bytesRead: number | null | undefined) => void; cancel?: () => void; } export declare type ClientHeaders = Record; export declare type RequestOptions = { headers?: ClientHeaders; body?: Record | string; timeoutInterval?: number; retryPolicyConfiguration?: RetryPolicyConfiguration; }; export declare type MultipartUploadConfig = { fileKey?: string; data?: Record; }; export declare type UploadRequestOptions = RequestOptions & { skipBytes?: number; method?: string; multipart?: MultipartUploadConfig; }; export declare type ClientResponse = { headers?: ClientHeaders; data?: Record; code: number; redirectUrls?: string[]; ok: boolean; retriesExhausted?: boolean; path?: string; }; export declare type ClientResponseError = { code: number; message: string; domain: string; userInfo?: Record; nativeStackAndroid?: unknown[]; nativeStackIOS?: unknown[]; }; export declare type APIClientErrorEventHandler = (event: APIClientErrorEvent) => void; export interface GenericClientInterface { head(url: string, options?: RequestOptions): Promise; get(url: string, options?: RequestOptions): Promise; put(url: string, options?: RequestOptions): Promise; post(url: string, options?: RequestOptions): Promise; patch(url: string, options?: RequestOptions): Promise; delete(url: string, options?: RequestOptions): Promise; } export interface APIClientInterface { baseUrl: string; config: APIClientConfiguration; onClientErrorSubscription?: EmitterSubscription; onClientError(callback: APIClientErrorEventHandler): void; head(endpoint: string, options?: RequestOptions): Promise; get(endpoint: string, options?: RequestOptions): Promise; put(endpoint: string, options?: RequestOptions): Promise; post(endpoint: string, options?: RequestOptions): Promise; patch(endpoint: string, options?: RequestOptions): Promise; delete(endpoint: string, options?: RequestOptions): Promise; upload(endpoint: string, fileUrl: string, options?: UploadRequestOptions): ProgressPromise; download(endpoint: string, filePath: string, options?: RequestOptions): ProgressPromise; getHeaders(): Promise; addHeaders(headers: ClientHeaders): Promise; importClientP12(path: string, password?: string): Promise; invalidate(): Promise; } export declare type ClientP12Configuration = { path: string; password?: string; }; export declare type SessionConfiguration = { allowsCellularAccess?: boolean; waitsForConnectivity?: boolean; timeoutIntervalForRequest?: number; timeoutIntervalForResource?: number; httpMaximumConnectionsPerHost?: number; cancelRequestsOnUnauthorized?: boolean; trustSelfSignedServerCertificate?: boolean; }; export declare type RetryPolicyConfiguration = { type?: RetryTypes; retryLimit?: number; retryInterval?: number; exponentialBackoffBase?: number; exponentialBackoffScale?: number; statusCodes?: number[]; retryMethods?: string[]; }; export declare type RequestAdapterConfiguration = { bearerAuthTokenResponseHeader?: string; }; export declare type APIClientConfiguration = { headers?: ClientHeaders; sessionConfiguration?: SessionConfiguration; retryPolicyConfiguration?: RetryPolicyConfiguration; requestAdapterConfiguration?: RequestAdapterConfiguration; clientP12Configuration?: ClientP12Configuration; }; export declare type ProgressEvent = { taskId: string; fractionCompleted: number; bytesRead?: number | null; }; export declare type MissingClientCertificateEvent = { serverUrl: string; }; export declare type APIClientErrorEvent = { serverUrl: string; errorCode: number; errorDescription: string; };