@ledgerhq/coin-stacks
Version:
Ledger Stacks Coin integration
44 lines • 1.94 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildOptimisticOperation = void 0;
const operation_1 = require("@ledgerhq/coin-framework/operation");
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const misc_1 = require("./utils/misc");
const token_1 = require("./utils/token");
const buildOptimisticOperation = (account, transaction, operationType = "OUT") => {
const hash = "";
const { id: accountId } = account;
const { address } = (0, misc_1.getAddress)(account);
// Check if this is a token transfer via subAccountId
const subAccount = (0, token_1.getSubAccount)(account, transaction);
const isTokenTransfer = !!subAccount;
// For token transfers, use the subAccount's id
const operationAccountId = isTokenTransfer ? subAccount.id : accountId;
// Set the correct value based on transaction type
// For token transfers, only the fee impacts the main account's balance
const value = isTokenTransfer
? transaction.amount
: transaction.amount.plus(transaction.fee || new bignumber_js_1.default(0));
return {
id: (0, operation_1.encodeOperationId)(operationAccountId, hash, operationType),
hash,
type: operationType,
senders: [address],
recipients: [transaction.recipient],
accountId: operationAccountId,
value,
fee: transaction.fee || new bignumber_js_1.default(0),
blockHash: null,
blockHeight: null,
date: new Date(),
transactionSequenceNumber: transaction.nonce ?? new bignumber_js_1.default(0),
extra: {
memo: transaction.memo,
},
};
};
exports.buildOptimisticOperation = buildOptimisticOperation;
//# sourceMappingURL=buildOptimisticOperation.js.map