UNPKG

@mutants/cardano-tx-builder

Version:

A package that provides utility functions to build and destructure a cardano transaction

31 lines (30 loc) 1.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateChange = void 0; const valueBuilder_1 = require("./valueBuilder"); const valueToAssetList_1 = require("./valueToAssetList"); const calculateChangeBasedOnRequiredValue = (inputs, required) => { const valueBuilder = new valueBuilder_1.ValueBuilder(); valueBuilder.loadValues(required); for (const input of inputs) { valueBuilder.addAsset("lovelace", -BigInt(input.value.coin)); if (input.value.assets) { for (const policyId of Object.keys(input.value.assets)) { for (const assetName of Object.keys(input.value.assets[policyId])) { const quantity = input.value.assets[policyId][assetName]; valueBuilder.addAsset(`${policyId}${assetName}`, -quantity); } } } } valueBuilder.abs(); return valueBuilder.build(); }; const calculateChange = (inputs, outputs) => { const totalOutputValue = outputs.reduce((valueBuilder, output) => { valueBuilder.addValue(output.value); return valueBuilder; }, new valueBuilder_1.ValueBuilder()); return calculateChangeBasedOnRequiredValue(inputs, (0, valueToAssetList_1.valueToAssetList)(totalOutputValue.build())); }; exports.calculateChange = calculateChange;