UNPKG

@ledgerhq/coin-stellar

Version:
71 lines 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.craftTransaction = void 0; const errors_1 = require("@ledgerhq/errors"); const stellar_sdk_1 = require("@stellar/stellar-sdk"); const network_1 = require("../network"); const types_1 = require("../types"); const sdkWrapper_1 = require("./sdkWrapper"); async function craftTransaction(account, transaction) { const { amount, recipient, fee, memoType, memoValue, type, assetCode, assetIssuer } = transaction; const source = await (0, network_1.loadAccount)(account.address); if (!source) { throw new errors_1.NetworkDown(); } const transactionBuilder = (0, sdkWrapper_1.buildTransactionBuilder)(source, fee); let operation = null; if (type === "changeTrust") { if (!assetCode || !assetIssuer) { throw new types_1.StellarAssetRequired(""); } operation = (0, sdkWrapper_1.buildChangeTrustOperation)(assetCode, assetIssuer); } else { // Payment const recipientAccount = await (0, network_1.getRecipientAccount)({ recipient, }); if (recipientAccount?.id) { operation = (0, sdkWrapper_1.buildPaymentOperation)({ destination: recipient, amount, assetCode, assetIssuer, }); } else { if (recipientAccount?.isMuxedAccount) { throw new types_1.StellarMuxedAccountNotExist(""); } operation = (0, sdkWrapper_1.buildCreateAccountOperation)(recipient, amount); } } transactionBuilder.addOperation(operation); const memo = buildMemo(memoType, memoValue); if (memo) { transactionBuilder.addMemo(memo); } const craftedTransaction = transactionBuilder.setTimeout(0).build(); return { transaction: craftedTransaction, xdr: craftedTransaction.toXDR(), signatureBase: craftedTransaction.signatureBase().toString("base64"), }; } exports.craftTransaction = craftTransaction; function buildMemo(memoType, memoValue) { if (memoType && memoValue) { switch (memoType) { case "MEMO_TEXT": return stellar_sdk_1.Memo.text(memoValue); case "MEMO_ID": return stellar_sdk_1.Memo.id(memoValue); case "MEMO_HASH": return stellar_sdk_1.Memo.hash(memoValue); case "MEMO_RETURN": return stellar_sdk_1.Memo.return(memoValue); } } return null; } //# sourceMappingURL=craftTransaction.js.map