UNPKG

@ledgerhq/coin-filecoin

Version:
55 lines 2.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.toCBOR = void 0; const index_1 = require("../common-logic/index"); const network_1 = require("../network"); const message_1 = require("iso-filecoin/message"); const tokenAccounts_1 = require("../erc20/tokenAccounts"); const bignumber_js_1 = __importDefault(require("bignumber.js")); const utils_1 = require("./utils"); const toCBOR = async (account, tx) => { const { address: from } = (0, index_1.getAddress)(account); const { method, version, nonce, gasLimit, gasPremium, gasFeeCap, amount, recipient } = tx; const recipientValidation = (0, network_1.validateAddress)(recipient); const fromValidation = (0, network_1.validateAddress)(from); const subAccount = (0, index_1.getSubAccount)(account, tx); const tokenTransfer = subAccount && subAccount.type === utils_1.AccountType.TokenAccount; const params = tokenTransfer ? (0, tokenAccounts_1.encodeTxnParams)(tx.params ?? "") : undefined; if (!recipientValidation.isValid || !fromValidation.isValid) throw new Error("recipient and/or from address are not valid"); let finalRecipient; if (tokenTransfer) { const validated = (0, network_1.validateAddress)(subAccount.token.contractAddress); if (!validated.isValid) throw new Error("token contract address is not valid"); finalRecipient = validated.parsedAddress.toString(); } else { finalRecipient = recipientValidation.parsedAddress.toString(); } const finalAmount = tokenTransfer ? "0" : amount.toString(); const message = new message_1.Message({ to: finalRecipient, from: fromValidation.parsedAddress.toString(), gasFeeCap: gasFeeCap.toString(), gasLimit: gasLimit.toNumber(), gasPremium: gasPremium.toString(), method, nonce, params, version: version === 0 ? 0 : undefined, value: finalAmount, }); return { txPayload: message.serialize(), recipientToBroadcast: finalRecipient, parsedSender: fromValidation.parsedAddress.toString(), encodedParams: params ?? "", amountToBroadcast: new bignumber_js_1.default(finalAmount), }; }; exports.toCBOR = toCBOR; //# sourceMappingURL=serializer.js.map