@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
JavaScript
;
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;