UNPKG

@harmoniclabs/plu-ts-offchain

Version:

An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript

122 lines (121 loc) 7.57 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; Object.defineProperty(exports, "__esModule", { value: true }); exports.completeTxBuilderProtocolParams = exports.isValidatedTxBuilderProtocolParams = exports.defaultTxBuilderProtocolParameters = void 0; var cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts"); var ints_1 = require("../utils/ints.js"); var cbor_1 = require("@harmoniclabs/cbor"); var plutus_machine_1 = require("@harmoniclabs/plutus-machine"); var Rational_1 = require("../utils/Rational.js"); var cardano_costmodels_ts_1 = require("@harmoniclabs/cardano-costmodels-ts"); var obj_utils_1 = require("@harmoniclabs/obj-utils"); exports.defaultTxBuilderProtocolParameters = Object.freeze({ txFeePerByte: BigInt((_a = cardano_ledger_ts_1.defaultProtocolParameters.txFeePerByte) !== null && _a !== void 0 ? _a : 0), txFeeFixed: BigInt((_b = cardano_ledger_ts_1.defaultProtocolParameters.txFeeFixed) !== null && _b !== void 0 ? _b : 0), utxoCostPerByte: BigInt((_c = cardano_ledger_ts_1.defaultProtocolParameters.utxoCostPerByte) !== null && _c !== void 0 ? _c : 0), maxTxSize: BigInt((_d = cardano_ledger_ts_1.defaultProtocolParameters.maxTxSize) !== null && _d !== void 0 ? _d : 0), maxTxExecutionUnits: forceExBudget((_e = cardano_ledger_ts_1.defaultProtocolParameters.maxTxExecutionUnits) !== null && _e !== void 0 ? _e : { steps: 0, memory: 0 }), maxCollateralInputs: BigInt((_f = cardano_ledger_ts_1.defaultProtocolParameters.maxCollateralInputs) !== null && _f !== void 0 ? _f : 0), collateralPercentage: BigInt((_g = cardano_ledger_ts_1.defaultProtocolParameters.collateralPercentage) !== null && _g !== void 0 ? _g : 0), minfeeRefScriptCostPerByte: (0, Rational_1.cborFromRational)((_h = cardano_ledger_ts_1.defaultProtocolParameters.minfeeRefScriptCostPerByte) !== null && _h !== void 0 ? _h : 0), executionUnitPrices: forceExecUnitPricesArray((_j = cardano_ledger_ts_1.defaultProtocolParameters.executionUnitPrices) !== null && _j !== void 0 ? _j : [0, 0]), costModels: (_k = cardano_ledger_ts_1.defaultProtocolParameters.costModels) !== null && _k !== void 0 ? _k : { PlutusScriptV1: cardano_costmodels_ts_1.defaultV1Costs, PlutusScriptV2: cardano_costmodels_ts_1.defaultV2Costs, PlutusScriptV3: cardano_costmodels_ts_1.defaultV3Costs } }); function forceExBudget(ex) { return ex instanceof plutus_machine_1.ExBudget ? ex.clone() : plutus_machine_1.ExBudget.fromJson(ex); } function forceExecUnitPricesArray(ex) { return Array.isArray(ex) ? ex.slice() : [ cbor_1.CborPositiveRational.fromNumber(ex.priceMemory), cbor_1.CborPositiveRational.fromNumber(ex.priceSteps), ]; } var keysOfTxBuilderProtocolParameters = Object.freeze(Object.keys(exports.defaultTxBuilderProtocolParameters)); function isValidatedTxBuilderProtocolParams(stuff) { if (!(0, obj_utils_1.isObject)(stuff)) return false; var keys = Object.keys(stuff); // all keys must be present if (!keysOfTxBuilderProtocolParameters.every(function (key) { return keys.includes(key); })) return false; var ppexecCosts = stuff.executionUnitPrices; if (!((Array.isArray(ppexecCosts) && ppexecCosts.length >= 2 && ppexecCosts[0] instanceof cbor_1.CborPositiveRational && ppexecCosts[1] instanceof cbor_1.CborPositiveRational) || ((0, obj_utils_1.isObject)(ppexecCosts) && typeof ppexecCosts.priceSteps === "number" && typeof ppexecCosts.priceMemory === "number"))) return false; return ((0, ints_1.canBeUInteger)(stuff.txFeePerByte) && (0, ints_1.canBeUInteger)(stuff.txFeeFixed) && (0, ints_1.canBeUInteger)(stuff.utxoCostPerByte) && (0, ints_1.canBeUInteger)(stuff.maxTxSize) && (stuff.maxTxExecutionUnits instanceof plutus_machine_1.ExBudget || plutus_machine_1.ExBudget.isJson(stuff.maxTxExecutionUnits)) && (0, ints_1.canBeUInteger)(stuff.maxCollateralInputs) && (0, ints_1.canBeUInteger)(stuff.collateralPercentage) && (0, Rational_1.isRational)(stuff.minfeeRefScriptCostPerByte) && (0, cardano_costmodels_ts_1.isCostModels)(stuff.costModels)); } exports.isValidatedTxBuilderProtocolParams = isValidatedTxBuilderProtocolParams; function completeTxBuilderProtocolParams(partial) { if (partial === undefined) return __assign({}, exports.defaultTxBuilderProtocolParameters); var result = {}; result.executionUnitPrices = (partial.executionUnitPrices ? forceExecUnitPricesArray(partial.executionUnitPrices) : undefined); var ppexecCosts = result.executionUnitPrices; if (!(Array.isArray(ppexecCosts) && ppexecCosts.length >= 2 && ppexecCosts[0] instanceof cbor_1.CborPositiveRational && ppexecCosts[1] instanceof cbor_1.CborPositiveRational)) result.executionUnitPrices = exports.defaultTxBuilderProtocolParameters.executionUnitPrices.slice(); result.txFeePerByte = ((0, ints_1.canBeUInteger)(partial.txFeePerByte) ? BigInt(partial.txFeePerByte) : exports.defaultTxBuilderProtocolParameters.txFeePerByte); result.txFeeFixed = ((0, ints_1.canBeUInteger)(partial.txFeeFixed) ? BigInt(partial.txFeeFixed) : exports.defaultTxBuilderProtocolParameters.txFeeFixed); result.utxoCostPerByte = ((0, ints_1.canBeUInteger)(partial.utxoCostPerByte) ? BigInt(partial.utxoCostPerByte) : exports.defaultTxBuilderProtocolParameters.utxoCostPerByte); result.maxTxSize = ((0, ints_1.canBeUInteger)(partial.maxTxSize) ? BigInt(partial.maxTxSize) : exports.defaultTxBuilderProtocolParameters.maxTxSize); result.maxTxExecutionUnits = ((partial.maxTxExecutionUnits instanceof plutus_machine_1.ExBudget || plutus_machine_1.ExBudget.isJson(partial.maxTxExecutionUnits)) ? forceExBudget(partial.maxTxExecutionUnits) : exports.defaultTxBuilderProtocolParameters.maxTxExecutionUnits.clone()); result.maxCollateralInputs = ((0, ints_1.canBeUInteger)(partial.maxCollateralInputs) ? BigInt(partial.maxCollateralInputs) : exports.defaultTxBuilderProtocolParameters.maxCollateralInputs); result.collateralPercentage = ((0, ints_1.canBeUInteger)(partial.collateralPercentage) ? BigInt(partial.collateralPercentage) : exports.defaultTxBuilderProtocolParameters.collateralPercentage); result.collateralPercentage = ((0, ints_1.canBeUInteger)(partial.collateralPercentage) ? BigInt(partial.collateralPercentage) : exports.defaultTxBuilderProtocolParameters.collateralPercentage); result.minfeeRefScriptCostPerByte = ((0, Rational_1.isRational)(partial.minfeeRefScriptCostPerByte) ? (0, Rational_1.cborFromRational)(partial.minfeeRefScriptCostPerByte) : exports.defaultTxBuilderProtocolParameters.minfeeRefScriptCostPerByte); result.costModels = ((0, cardano_costmodels_ts_1.isCostModels)(partial.costModels) ? partial.costModels : exports.defaultTxBuilderProtocolParameters.costModels); return result; } exports.completeTxBuilderProtocolParams = completeTxBuilderProtocolParams;