UNPKG

@harmoniclabs/buildooor

Version:

Cardano transaction builder in typescript

86 lines (85 loc) 3.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTxIntervalData = exports.slotToPOSIX = exports.POSIXToSlot = void 0; var plutus_data_1 = require("@harmoniclabs/plutus-data"); var GenesisInfos_1 = require("../TxBuilder/GenesisInfos.js"); var ints_1 = require("../utils/ints.js"); /** * * @param POSIX POSIX time in milliseconds * @param sysStartPOSIX blockchain start POSIX time in milliseconds * @param slotLenMs milliseconds per slot * @returns */ function POSIXToSlot(unixTime, gInfos) { var timePassed = unixTime - gInfos.systemStartPosixMs; var slotsPassed = Math.floor(timePassed / gInfos.slotLengthMs); return slotsPassed + gInfos.startSlotNo; } exports.POSIXToSlot = POSIXToSlot; /** * * @param slotN number of the slot * @param sysStartPOSIX blockchain start POSIX time in milliseconds * @param slotLenMs milliseconds per slot * @returns */ function slotToPOSIX(slot, gInfos) { var msAfterBegin = (slot - gInfos.startSlotNo) * gInfos.slotLengthMs; return gInfos.systemStartPosixMs + msAfterBegin; } exports.slotToPOSIX = slotToPOSIX; function getTxIntervalData(startSlot, ttlSlot, geneisInfos) { geneisInfos = geneisInfos ? (0, GenesisInfos_1.normalizedGenesisInfos)(geneisInfos) : undefined; var lowerBoundData = undefined; if (startSlot === undefined) { lowerBoundData = new plutus_data_1.DataConstr(0, []); // PNegInf } else { if (!(0, GenesisInfos_1.isNormalizedGenesisInfos)(geneisInfos)) { throw new Error("missing genesis infos requried to translate slot number to posix"); } lowerBoundData = new plutus_data_1.DataConstr(// PExtended 1, // PFinite [ new plutus_data_1.DataI(slotToPOSIX((0, ints_1.unsafeForceUInt)(startSlot), geneisInfos)) ]); } var endSlot = ttlSlot; var upperBoundData = undefined; if (endSlot === undefined) { upperBoundData = new plutus_data_1.DataConstr(2, []); // PPosInf } else { if (!(0, GenesisInfos_1.isNormalizedGenesisInfos)(geneisInfos)) { throw new Error("missing genesis infos requried to translate slot number to posix"); } upperBoundData = new plutus_data_1.DataConstr(// PExtended 1, // PFinite [ new plutus_data_1.DataI(slotToPOSIX((0, ints_1.unsafeForceUInt)(endSlot), geneisInfos)) ]); } return new plutus_data_1.DataConstr(0, // PPosixTimeRange (PInterval) only constructor [ // from new plutus_data_1.DataConstr(// PBound 0, // only constructor [ // bound lowerBoundData, // inclusive new plutus_data_1.DataConstr(0, []) // PDataBool; True ]), // to new plutus_data_1.DataConstr(// PBound 0, // only constructor [ // bound upperBoundData, // inclusive new plutus_data_1.DataConstr(0, []) // PDataBool; True ]), ]); } exports.getTxIntervalData = getTxIntervalData;