UNPKG

@ledgerhq/hw-app-canton

Version:
38 lines 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.splitTransaction = splitTransaction; const encodeTransaction_1 = require("./encodeTransaction"); /** * Splits a Canton transaction into components for prepared transaction signing. * Converts protobuf transaction data into structured components that can be * sent to the Ledger device for signing. * * @param transaction - The transaction JSON structure from the Gateway API * @returns Prepared transaction components ready for device signing */ function splitTransaction(transaction) { const { transaction: transactionData, metadata } = transaction; // Process DAML transaction const damlTransactionBytes = (0, encodeTransaction_1.encodeDamlTransaction)(transactionData); // Process input contracts const inputContracts = (metadata.inputContracts || []).map((contract) => (0, encodeTransaction_1.encodeInputContract)(contract)); // Process metadata const metadataBytes = (0, encodeTransaction_1.encodeMetadata)(metadata, inputContracts.length); // Process nodes const nodesArray = transactionData.nodes || []; const nodes = new Array(nodesArray.length); const lastIndex = nodesArray.length - 1; for (const node of nodesArray) { const nodeId = Number.parseInt(node.nodeId || "0", 10); const nodeBytes = (0, encodeTransaction_1.encodeNode)(node); const pos = lastIndex - nodeId; nodes[pos] = nodeBytes; } return { damlTransaction: damlTransactionBytes, nodes, metadata: metadataBytes, inputContracts, }; } //# sourceMappingURL=splitTransaction.js.map