@exromany/lido-csm-sdk
Version:
[](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [](h
41 lines • 1.98 kB
JavaScript
;
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