export class Progress { private _startTime: number | null = null; private _elapsedTime: number = 0; private _remainingTime: number = 0; get value(): number { return this._remainingTime; } next(progress: number): void { if (progress > 0 && this._startTime === null) { this._startTime = Date.now(); } if (progress > 0 && this._startTime !== null) { this._elapsedTime = (Date.now() - this._startTime) / 1000; // in seconds if (progress > 0) { const speed = this._elapsedTime / progress; this._remainingTime = speed * (1 - progress); } } } }