/** * @license * @preserve * * Copyright 2026 KeeeX SAS * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ /** Analogous to Axios progress event */ export interface ProgressEvent { /** Estimated remaining time in seconds */ estimated?: number; /** Completed data bytes */ loaded: number; /** Percentage completed (if available) */ percent?: number; /** Speed in bytes/s */ rate?: number; /** Number of bytes sent since the last event */ sinceLastEvent: number; /** Total bytes */ total?: number; } export type ProgressHandler = (event: ProgressEvent) => void; /** Provide progress handlers */ export interface ProgressHandlers { upload?: ProgressHandler; download?: ProgressHandler; /** Merge both upload and download as one handler */ total?: ProgressHandler; /** * Balance ratio of upload/download for the unified progress event. * * A value of 0.5 means that upload will be 50% of the total progress. * A value of 0.9 means that upload will be 90% of the total progress. * * Defaults to 0.2. */ totalRatio?: number; } export interface ProgressContext { handlers: ProgressHandlers; ratio: number; uploadMax: number | null; }