UNPKG

@harmoniclabs/buildooor

Version:

Cardano transaction builder in typescript

127 lines (126 loc) 6.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTxInfos = void 0; var getTxIntervalData_1 = require("./getTxIntervalData.js"); var plutus_data_1 = require("@harmoniclabs/plutus-data"); var cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts"); var getSpendingPurposeData_1 = require("./getSpendingPurposeData.js"); var uint8array_utils_1 = require("@harmoniclabs/uint8array-utils"); function sortUTxO(a, b) { var ord = (0, uint8array_utils_1.lexCompare)(a.utxoRef.id.toBuffer(), b.utxoRef.id.toBuffer()); // if equal tx id order based on tx output index if (ord === 0) return a.utxoRef.index - b.utxoRef.index; // else order by tx id return ord; } function getTxInfos(transaction, genesisInfos) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z; var tx = transaction.body, witnesses = transaction.witnesses; function redeemerToDataPair(rdmr, version) { return new plutus_data_1.DataPair((0, getSpendingPurposeData_1.getSpendingPurposeData)(rdmr, tx, version), rdmr.data.clone()); } var sortedInputs = tx.inputs.slice().sort(sortUTxO); var sortedRefInputs = (_a = tx.refInputs) === null || _a === void 0 ? void 0 : _a.slice().sort(sortUTxO); var feeData = cardano_ledger_ts_1.Value.lovelaces(tx.fee).toData(); var mintData = ((_b = tx.mint) !== null && _b !== void 0 ? _b : cardano_ledger_ts_1.Value.lovelaces(0)).toData(); var mintDataNoLovelaces = new plutus_data_1.DataMap(mintData.map.slice(1)); var intervalData = (0, getTxIntervalData_1.getTxIntervalData)(tx.validityIntervalStart, tx.ttl, genesisInfos); var sigsData = new plutus_data_1.DataList((_d = (_c = tx.requiredSigners) === null || _c === void 0 ? void 0 : _c.map(function (sig) { return sig.toData(); })) !== null && _d !== void 0 ? _d : []); var datumsData = new plutus_data_1.DataMap((_f = (_e = witnesses.datums) === null || _e === void 0 ? void 0 : _e.map(function (dat) { return new plutus_data_1.DataPair(new plutus_data_1.DataB((0, plutus_data_1.hashData)(dat)), dat); })) !== null && _f !== void 0 ? _f : []); var txIdData = new plutus_data_1.DataB(tx.hash.toBuffer()); var v1 = undefined; try { // input and output to data might fail if only v2 v1 = new plutus_data_1.DataConstr(0, // PTxInfo; only costructor [ // inputs new plutus_data_1.DataList(sortedInputs.map(function (input) { return input.toData("v1"); })), // outputs new plutus_data_1.DataList(tx.outputs.map(function (out) { return out.toData("v1"); })), // fee feeData.clone(), // mint mintData.clone(), // dCertificates new plutus_data_1.DataList((_h = (_g = tx.certs) === null || _g === void 0 ? void 0 : _g.map(function (cert) { return cert.toData("v1"); })) !== null && _h !== void 0 ? _h : []), // withderawals (_k = (_j = tx.withdrawals) === null || _j === void 0 ? void 0 : _j.toData("v1")) !== null && _k !== void 0 ? _k : new plutus_data_1.DataMap([]), // interval intervalData.clone(), // signatories sigsData.clone(), // datums datumsData.clone(), // id new plutus_data_1.DataConstr(0, [txIdData.clone()]) ]); } catch ( // input or output can't be v1 (inline datums etc...) _0) { // input or output can't be v1 (inline datums etc...) v1 = undefined; } var v2 = undefined; try { v2 = new plutus_data_1.DataConstr(0, // PTxInfo; only costructor [ // inputs new plutus_data_1.DataList(sortedInputs.map(function (input) { return input.toData("v2"); })), // refInputs new plutus_data_1.DataList((_l = sortedRefInputs === null || sortedRefInputs === void 0 ? void 0 : sortedRefInputs.map(function (refIn) { return refIn.toData("v2"); })) !== null && _l !== void 0 ? _l : []), // outputs new plutus_data_1.DataList(tx.outputs.map(function (out) { return out.toData("v2"); })), // fee feeData, // mint mintData, // dCertificates new plutus_data_1.DataList((_o = (_m = tx.certs) === null || _m === void 0 ? void 0 : _m.map(function (cert) { return cert.toData("v2"); })) !== null && _o !== void 0 ? _o : []), // withderawals (_q = (_p = tx.withdrawals) === null || _p === void 0 ? void 0 : _p.toData("v2")) !== null && _q !== void 0 ? _q : new plutus_data_1.DataMap([]), // interval intervalData, // signatories sigsData, // redeemers new plutus_data_1.DataMap((_s = (_r = witnesses.redeemers) === null || _r === void 0 ? void 0 : _r.map(function (rdmr) { return redeemerToDataPair(rdmr, "v2"); })) !== null && _s !== void 0 ? _s : []), // datums datumsData, // id new plutus_data_1.DataConstr(0, [txIdData.clone()]) ]); } catch (_1) { v2 = undefined; } var v3 = new plutus_data_1.DataConstr(0, // PTxInfo; only costructor [ // inputs new plutus_data_1.DataList(sortedInputs.map(function (input) { return input.toData("v3"); })), // refInputs new plutus_data_1.DataList((_t = sortedRefInputs === null || sortedRefInputs === void 0 ? void 0 : sortedRefInputs.map(function (refIn) { return refIn.toData("v3"); })) !== null && _t !== void 0 ? _t : []), // outputs new plutus_data_1.DataList(tx.outputs.map(function (out) { return out.toData("v3"); })), // fee (only lovelaces) new plutus_data_1.DataI(tx.fee), // mint mintDataNoLovelaces, // certificates new plutus_data_1.DataList((_v = (_u = tx.certs) === null || _u === void 0 ? void 0 : _u.map(function (cert) { return cert.toData("v3"); })) !== null && _v !== void 0 ? _v : []), // withderawals (_x = (_w = tx.withdrawals) === null || _w === void 0 ? void 0 : _w.toData("v3")) !== null && _x !== void 0 ? _x : new plutus_data_1.DataMap([]), // interval intervalData, // signatories sigsData, // redeemers new plutus_data_1.DataMap((_z = (_y = witnesses.redeemers) === null || _y === void 0 ? void 0 : _y.map(function (rdmr) { return redeemerToDataPair(rdmr, "v3"); })) !== null && _z !== void 0 ? _z : []), // datums datumsData, // id txIdData ]); return { v1: v1, v2: v2, v3: v3 }; } exports.getTxInfos = getTxInfos;