@ledgerhq/coin-icon
Version:
Ledger Icon Coin integration
46 lines • 1.8 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildTransaction = void 0;
const icon_sdk_js_1 = __importDefault(require("icon-sdk-js"));
const logic_1 = require("./logic");
const constants_1 = require("./constants");
const { IconBuilder, IconConverter } = icon_sdk_js_1.default;
const buildTransferTransaction = (account, transaction, stepLimit) => {
const address = account.freshAddress;
const icxTransactionBuilder = new IconBuilder.IcxTransactionBuilder();
const icxTransferData = icxTransactionBuilder
.from(address)
.to(transaction.recipient)
.value(IconConverter.toHexNumber(transaction.amount))
.nid(IconConverter.toHexNumber((0, logic_1.getNid)(account.currency)))
.nonce(IconConverter.toHexNumber((0, logic_1.getNonce)(account)))
.timestamp(IconConverter.toHexNumber(new Date().getTime() * 1000))
.version(IconConverter.toHexNumber(constants_1.RPC_VERSION));
if (stepLimit) {
icxTransferData.stepLimit(IconConverter.toHexNumber(stepLimit));
}
return icxTransferData.build();
};
/**
*
* @param {Account} account
* @param {Transaction} transaction
*/
const buildTransaction = async (account, transaction, stepLimit) => {
let unsigned;
switch (transaction.mode) {
case "send":
unsigned = buildTransferTransaction(account, transaction, stepLimit);
break;
default:
throw new Error(`Unsupported transaction mode: ${transaction.mode}`);
}
return {
unsigned,
};
};
exports.buildTransaction = buildTransaction;
//# sourceMappingURL=buildTransaction.js.map