import { type ResponseType } from "axios"; import fs from "fs-extra"; import { type ProgressCallback } from "../types"; import { HttpsAgent } from "agentkeepalive"; import type FilenSDK from ".."; import Semaphore from "../semaphore"; export declare const keepAliveAgent: HttpsAgent; export type APIClientConfig = { apiKey: string; sdk: FilenSDK; }; export type BaseRequestParameters = { endpoint: string; url?: string; abortSignal?: AbortSignal; timeout?: number; maxRetries?: number; retryTimeout?: number; responseType?: ResponseType; headers?: Record; onUploadProgress?: ProgressCallback; onDownloadProgress?: ProgressCallback; onUploadProgressId?: string; onDownloadProgressId?: string; apiKey?: string; }; export type GetRequestParameters = BaseRequestParameters & { method: "GET"; includeRaw?: boolean; }; export type PostRequestParameters = BaseRequestParameters & { method: "POST"; data: unknown; includeRaw?: boolean; }; export type RequestParameters = GetRequestParameters | PostRequestParameters; export type UploadChunkResponse = { bucket: string; region: string; }; export declare const APIClientDefaults: { readonly gatewayURLs: readonly ["https://gateway.filen.io", "https://gateway.filen.net", "https://gateway.filen-1.net", "https://gateway.filen-2.net", "https://gateway.filen-3.net", "https://gateway.filen-4.net", "https://gateway.filen-5.net", "https://gateway.filen-6.net"]; readonly egestURLs: readonly ["https://egest.filen.io", "https://egest.filen.net", "https://egest.filen-1.net", "https://egest.filen-2.net", "https://egest.filen-3.net", "https://egest.filen-4.net", "https://egest.filen-5.net", "https://egest.filen-6.net"]; readonly ingestURLs: readonly ["https://ingest.filen.io", "https://ingest.filen.net", "https://ingest.filen-1.net", "https://ingest.filen-2.net", "https://ingest.filen-3.net", "https://ingest.filen-4.net", "https://ingest.filen-5.net", "https://ingest.filen-6.net"]; readonly gatewayTimeout: 300000; readonly egestTimeout: 60000; readonly ingestTimeout: 180000; readonly maxRetries: 3600; readonly retryTimeout: 1000; }; /** * APIClient * @date 2/1/2024 - 2:45:15 AM * * @export * @class APIClient * @typedef {APIClient} */ export declare class APIClient { readonly sdk: FilenSDK; readonly requestSemaphore: Semaphore; constructor(sdk: FilenSDK); /** * Build API request headers. * @date 2/21/2024 - 8:42:27 AM * * @private * @param {?{ apiKey?: string }} [params] * @returns {Record} */ private buildHeaders; /** * Send a POST request. * @date 2/1/2024 - 2:48:57 AM * * @private * @async * @param {PostRequestParameters} params * @returns {Promise>} */ private post; /** * Send a GET request. * @date 2/1/2024 - 2:49:04 AM * * @private * @async * @param {GetRequestParameters} params * @returns {Promise>} */ private get; /** * Sends the request to the API. * @date 2/1/2024 - 2:49:20 AM * * @public * @async * @template T * @param {RequestParameters} params * @returns {Promise} */ request(params: RequestParameters): Promise; /** * Downloads a file chunk to a local path. * * @public * @async * @param {{ * uuid: string * bucket: string * region: string * chunk: number * to: string * timeout?: number * abortSignal?: AbortSignal * maxRetries?: number * retryTimeout?: number * onProgress?: ProgressCallback, * onProgressId?: string * }} param0 * @param {string} param0.uuid * @param {string} param0.bucket * @param {string} param0.region * @param {number} param0.chunk * @param {string} param0.to * @param {number} param0.timeout * @param {AbortSignal} param0.abortSignal * @param {number} param0.maxRetries * @param {number} param0.retryTimeout * @param {ProgressCallback} param0.onProgress * @param {string} param0.onProgressId * @returns {Promise} */ downloadChunkToLocal({ uuid, bucket, region, chunk, to, timeout, abortSignal, maxRetries, retryTimeout, onProgress, onProgressId }: { uuid: string; bucket: string; region: string; chunk: number; to: string; timeout?: number; abortSignal?: AbortSignal; maxRetries?: number; retryTimeout?: number; onProgress?: ProgressCallback; onProgressId?: string; }): Promise; /** * Downloads a file chunk and returns a readable stream. * * @public * @async * @param {{ * uuid: string * bucket: string * region: string * chunk: number * timeout?: number * abortSignal?: AbortSignal * maxRetries?: number * retryTimeout?: number * onProgress?: ProgressCallback * onProgressId?: string * }} param0 * @param {string} param0.uuid * @param {string} param0.bucket * @param {string} param0.region * @param {number} param0.chunk * @param {number} param0.timeout * @param {AbortSignal} param0.abortSignal * @param {number} param0.maxRetries * @param {number} param0.retryTimeout * @param {ProgressCallback} param0.onProgress * @param {string} param0.onProgressId * @returns {Promise} */ downloadChunkToStream({ uuid, bucket, region, chunk, timeout, abortSignal, maxRetries, retryTimeout, onProgress, onProgressId }: { uuid: string; bucket: string; region: string; chunk: number; timeout?: number; abortSignal?: AbortSignal; maxRetries?: number; retryTimeout?: number; onProgress?: ProgressCallback; onProgressId?: string; }): Promise; /** * Download a chunk buffer. * * @public * @async * @param {{ * uuid: string * bucket: string * region: string * chunk: number * timeout?: number * abortSignal?: AbortSignal * maxRetries?: number * retryTimeout?: number * onProgress?: ProgressCallback * onProgressId?: string * }} param0 * @param {string} param0.uuid * @param {string} param0.bucket * @param {string} param0.region * @param {number} param0.chunk * @param {number} param0.timeout * @param {AbortSignal} param0.abortSignal * @param {number} param0.maxRetries * @param {number} param0.retryTimeout * @param {ProgressCallback} param0.onProgress * @param {string} param0.onProgressId * @returns {Promise} */ downloadChunkToBuffer({ uuid, bucket, region, chunk, timeout, abortSignal, maxRetries, retryTimeout, onProgress, onProgressId }: { uuid: string; bucket: string; region: string; chunk: number; timeout?: number; abortSignal?: AbortSignal; maxRetries?: number; retryTimeout?: number; onProgress?: ProgressCallback; onProgressId?: string; }): Promise; /** * Upload a chunk buffer. * * @public * @async * @param {{ * uuid: string * index: number * parent: string * uploadKey: string * buffer: Buffer * timeout?: number * abortSignal?: AbortSignal * maxRetries?: number * retryTimeout?: number * onProgress?: ProgressCallback * onProgressId?: string * }} param0 * @param {string} param0.uuid * @param {number} param0.index * @param {string} param0.parent * @param {string} param0.uploadKey * @param {Buffer} param0.buffer * @param {AbortSignal} param0.abortSignal * @param {number} param0.maxRetries * @param {number} param0.timeout * @param {number} param0.retryTimeout * @param {ProgressCallback} param0.onProgress * @param {string} param0.onProgressId * @returns {Promise} */ uploadChunkBuffer({ uuid, index, parent, uploadKey, buffer, abortSignal, maxRetries, timeout, retryTimeout, onProgress, onProgressId }: { uuid: string; index: number; parent: string; uploadKey: string; buffer: Buffer; timeout?: number; abortSignal?: AbortSignal; maxRetries?: number; retryTimeout?: number; onProgress?: ProgressCallback; onProgressId?: string; }): Promise; } export default APIClient;