@ledgerhq/coin-tron
Version:
Ledger Tron Coin integration
35 lines • 2.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.craftTransaction = craftTransaction;
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const network_1 = require("../network");
const format_1 = require("../network/format");
const utils_1 = require("./utils");
async function craftTransaction(transactionIntent, customFees) {
const { asset, recipient, sender, amount, expiration } = transactionIntent;
const rawMemo = "memo" in transactionIntent ? transactionIntent.memo : undefined;
const memo = rawMemo?.type === "string" && rawMemo.kind === "memo" ? rawMemo.value : undefined;
const recipientAddress = (0, format_1.decode58Check)(recipient);
const senderAddress = (0, format_1.decode58Check)(sender);
if (asset.type === "trc20" && asset.assetReference) {
const fees = customFees?.value;
if (fees !== undefined && (fees <= 0 || fees > Number.MAX_SAFE_INTEGER)) {
throw new Error(`fees must be between 0 and ${Number.MAX_SAFE_INTEGER} (Typescript Number type value limit)`);
}
if (memo !== undefined) {
throw new Error("Memo cannot be used with smart contract transactions");
}
const { raw_data_hex: rawDataHex } = await (0, network_1.craftTrc20Transaction)(asset.assetReference, recipientAddress, senderAddress, new bignumber_js_1.default(amount.toString()), (0, utils_1.feesToNumber)(fees), expiration);
return { transaction: rawDataHex };
}
else {
const isTransferAsset = asset.type === "trc10";
const tokenId = asset.type === "trc10" ? asset.assetReference : undefined;
const { raw_data_hex: rawDataHex } = await (0, network_1.craftStandardTransaction)(tokenId, recipientAddress, senderAddress, new bignumber_js_1.default(amount.toString()), isTransferAsset, memo, expiration);
return { transaction: rawDataHex };
}
}
//# sourceMappingURL=craftTransaction.js.map