@ledgerhq/coin-icon
Version:
Ledger Icon Coin integration
39 lines • 1.45 kB
JavaScript
import IconService from "icon-sdk-js";
import { getNid, getNonce } from "./logic";
import { RPC_VERSION } from "./constants";
const { IconBuilder, IconConverter } = IconService;
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(getNid(account.currency)))
.nonce(IconConverter.toHexNumber(getNonce(account)))
.timestamp(IconConverter.toHexNumber(new Date().getTime() * 1000))
.version(IconConverter.toHexNumber(RPC_VERSION));
if (stepLimit) {
icxTransferData.stepLimit(IconConverter.toHexNumber(stepLimit));
}
return icxTransferData.build();
};
/**
*
* @param {Account} account
* @param {Transaction} transaction
*/
export 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,
};
};
//# sourceMappingURL=buildTransaction.js.map