UNPKG

@exromany/lido-csm-sdk

Version:

[![GitHub license](https://img.shields.io/github/license/lidofinance/lido-csm-sdk?color=limegreen)](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [![Version npm](https://img.shields.io/npm/v/@lidofinance/lido-csm-sdk?label=version)](h

41 lines 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.slotToApproximateBlockNumber = exports.getFrameDuration = exports.getSlotsPerFrame = exports.epochToTimestamp = exports.epochToSlot = exports.slotToEpoch = exports.timestampToSlot = exports.slotToTimestamp = exports.ESTIMATED_BLOCK_GAP = void 0; exports.ESTIMATED_BLOCK_GAP = 10000n; const slotToTimestamp = (slot, { secondsPerSlot, genesisTime, }) => { return Number(BigInt(slot) * secondsPerSlot + genesisTime); }; exports.slotToTimestamp = slotToTimestamp; const timestampToSlot = (timestamp, { genesisTime, secondsPerSlot, }) => { return (BigInt(timestamp) - genesisTime) / secondsPerSlot; }; exports.timestampToSlot = timestampToSlot; const slotToEpoch = (slot, { slotsPerEpoch }) => { return BigInt(slot) / slotsPerEpoch; }; exports.slotToEpoch = slotToEpoch; const epochToSlot = (epoch, { slotsPerEpoch }) => { return BigInt(epoch) * slotsPerEpoch; }; exports.epochToSlot = epochToSlot; const epochToTimestamp = (epoch, config) => { const slot = (0, exports.epochToSlot)(epoch, config); return (0, exports.slotToTimestamp)(slot, config); }; exports.epochToTimestamp = epochToTimestamp; const getSlotsPerFrame = ({ epochsPerFrame, slotsPerEpoch, }) => { return epochsPerFrame * slotsPerEpoch; }; exports.getSlotsPerFrame = getSlotsPerFrame; const getFrameDuration = ({ epochsPerFrame, slotsPerEpoch, secondsPerSlot, }) => { return Number(epochsPerFrame * slotsPerEpoch * secondsPerSlot); }; exports.getFrameDuration = getFrameDuration; const slotToApproximateBlockNumber = (slot, config, currentBlock) => { const targetTimestamp = (0, exports.slotToTimestamp)(slot, config); const timeDiff = currentBlock.timestamp - BigInt(targetTimestamp); const blockOffset = timeDiff / config.secondsPerSlot; return currentBlock.number - blockOffset; }; exports.slotToApproximateBlockNumber = slotToApproximateBlockNumber; //# sourceMappingURL=utils.js.map