UNPKG

@ledgerhq/hw-app-canton

Version:
35 lines 1.5 kB
import { encodeDamlTransaction, encodeInputContract, encodeMetadata, encodeNode, } from "./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 */ export function splitTransaction(transaction) { const { transaction: transactionData, metadata } = transaction; // Process DAML transaction const damlTransactionBytes = encodeDamlTransaction(transactionData); // Process input contracts const inputContracts = (metadata.inputContracts || []).map((contract) => encodeInputContract(contract)); // Process metadata const metadataBytes = 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 = encodeNode(node); const pos = lastIndex - nodeId; nodes[pos] = nodeBytes; } return { damlTransaction: damlTransactionBytes, nodes, metadata: metadataBytes, inputContracts, }; } //# sourceMappingURL=splitTransaction.js.map