// Copyright 2017-2025 @polkadot/util authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { BN } from '../bn/bn.js'; import type { ToBn } from '../types.js'; import { bnToBn } from '../bn/toBn.js'; /** @internal */ function formatValue (elapsed: number): string { if (elapsed < 15) { return `${elapsed.toFixed(1)}s`; } else if (elapsed < 60) { return `${elapsed | 0}s`; } else if (elapsed < 3600) { return `${elapsed / 60 | 0}m`; } return `${elapsed / 3600 | 0}h`; } /** * @name formatElapsed * @description Formats an elapsed value into s, m, h or day segments */ export function formatElapsed (now?: Date | null, value?: bigint | BN | ExtToBn | Date | number | null): string { const tsNow = now?.getTime() || 0; const tsValue = value instanceof Date ? value.getTime() : bnToBn(value).toNumber(); return (tsNow && tsValue) ? formatValue(Math.max(Math.abs(tsNow - tsValue), 0) / 1000) : '0.0s'; }