import { type BinaryData } from "../platform/binary"; import type { ApiClientConfig } from "../types/api"; export interface HttpRequestOptions extends Omit { timeout?: number; retries?: number; retryDelay?: number; accept?: "json" | "text" | "bytes"; } export interface HttpResponse { data: T; status: number; statusText: string; headers: Record; } export declare class HttpClient { private platformClient; private config; constructor(config: ApiClientConfig); request(endpoint: string, options?: HttpRequestOptions): Promise>; get(endpoint: string, options?: Omit): Promise>; post(endpoint: string, body?: BodyInit | null, options?: Omit): Promise>; put(endpoint: string, body?: BodyInit | null, options?: Omit): Promise>; delete(endpoint: string, options?: Omit): Promise>; getJson(endpoint: string, options?: Omit): Promise>; postJson(endpoint: string, body?: unknown, options?: Omit): Promise>; putJson(endpoint: string, body?: unknown, options?: Omit): Promise>; deleteJson(endpoint: string, options?: Omit): Promise>; requestJson(endpoint: string, options?: Omit): Promise>; requestText(endpoint: string, options?: Omit): Promise>; requestBytes(endpoint: string, options?: Omit): Promise>; uploadFiles(endpoint: string, files: Array<{ name: string; data: BinaryData | string; filename?: string; contentType?: string; }>, fields?: Record, options?: Omit): Promise>; streamUpload(endpoint: string, files: Array<{ name: string; data: BinaryData | ReadableStream; filename?: string; contentType?: string; size?: number; }>, fields?: Record, options?: { onProgress?: (progress: { uploadedBytes: number; totalBytes: number; percentage: number; currentFile: string; stage: "preparing" | "uploading" | "processing" | "completed"; }) => void; chunkSize?: number; } & Omit): Promise>; chunkedStreamUpload(endpoint: string, file: { name: string; stream: ReadableStream; filename: string; contentType?: string; size: number; }, fields?: Record, options?: { onProgress?: (progress: { uploadedBytes: number; totalBytes: number; percentage: number; chunkIndex: number; totalChunks: number; stage: "preparing" | "uploading" | "processing" | "completed"; }) => void; chunkSize?: number; } & Omit): Promise>; pipelineUpload(endpoint: string, file: { name: string; stream: NodeJS.ReadableStream; filename: string; contentType?: string; size?: number; }, fields?: Record, options?: { onProgress?: (progress: { uploadedBytes: number; totalBytes: number; percentage: number; bytesPerSecond: number; stage: "preparing" | "uploading" | "processing" | "completed"; }) => void; } & Omit): Promise>; streamPassthrough(endpoint: string, inputStream: NodeJS.ReadableStream, filename: string, contentType: string, fields?: Record, options?: { onProgress?: (progress: { uploadedBytes: number; totalBytes: number; percentage: number; bytesPerSecond: number; stage: "preparing" | "uploading" | "processing" | "completed"; }) => void; estimatedSize?: number; accept?: "json" | "zip"; } & Omit): Promise>; uploadFileStream(endpoint: string, filePath: string, fieldName?: string, fields?: Record, options?: { onProgress?: (progress: { uploadedBytes: number; totalBytes: number; percentage: number; bytesPerSecond: number; stage: "preparing" | "uploading" | "processing" | "completed"; }) => void; } & Omit): Promise>; requestFileStream(endpoint: string, options?: HttpRequestOptions): Promise<{ data?: T; fileStream?: import("node:stream").Readable; fileMetadata?: { filename: string; contentType: string; size?: number; }; status: number; statusText: string; headers: Record; }>; updateConfig(config: Partial): void; getConfig(): ApiClientConfig; getPoolStats(): { total: number; pending: number; free: number; active: number; }; getPoolHealth(): { healthy: boolean; }; updatePoolConfig(_config: unknown): void; closeIdleConnections(): void; destroy(): void; private buildHeaders; private normalizeBody; private toUint8Array; private toBuffer; private nodeStreamToWebStream; private getContentTypeFromFilename; private normalizeError; }