| /// <reference types="node" /> |
| import { Socket } from "net"; |
| export type ProgressType = "upload" | "download" | "list"; |
| /** |
| * Describes progress of file transfer. |
| */ |
| export interface ProgressInfo { |
| /** A name describing this info, e.g. the filename of the transfer. */ |
| readonly name: string; |
| /** The type of transfer, typically "upload" or "download". */ |
| readonly type: ProgressType; |
| /** Transferred bytes in current transfer. */ |
| readonly bytes: number; |
| /** Transferred bytes since last counter reset. Useful for tracking multiple transfers. */ |
| readonly bytesOverall: number; |
| } |
| export type ProgressHandler = (info: ProgressInfo) => void; |
| /** |
| * Tracks progress of one socket data transfer at a time. |
| */ |
| export declare class ProgressTracker { |
| bytesOverall: number; |
| protected readonly intervalMs = 500; |
| protected onStop: (stopWithUpdate: boolean) => void; |
| protected onHandle: ProgressHandler; |
| /** |
| * Register a new handler for progress info. Use `undefined` to disable reporting. |
| */ |
| reportTo(onHandle?: ProgressHandler): void; |
| /** |
| * Start tracking transfer progress of a socket. |
| * |
| * @param socket The socket to observe. |
| * @param name A name associated with this progress tracking, e.g. a filename. |
| * @param type The type of the transfer, typically "upload" or "download". |
| */ |
| start(socket: Socket, name: string, type: ProgressType): void; |
| /** |
| * Stop tracking transfer progress. |
| */ |
| stop(): void; |
| /** |
| * Call the progress handler one more time, then stop tracking. |
| */ |
| updateAndStop(): void; |
| } |