@ledgerhq/coin-stacks
Version:
Ledger Stacks Coin integration
37 lines • 1.54 kB
JavaScript
import { encodeOperationId } from "@ledgerhq/ledger-wallet-framework/operation";
import BigNumber from "bignumber.js";
import { getAddress } from "./utils/misc";
import { getSubAccount } from "./utils/token";
export const buildOptimisticOperation = (account, transaction, operationType = "OUT") => {
const hash = "";
const { id: accountId } = account;
const { address } = getAddress(account);
// Check if this is a token transfer via subAccountId
const subAccount = 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(0));
return {
id: encodeOperationId(operationAccountId, hash, operationType),
hash,
type: operationType,
senders: [address],
recipients: [transaction.recipient],
accountId: operationAccountId,
value,
fee: transaction.fee || new BigNumber(0),
blockHash: null,
blockHeight: null,
date: new Date(),
transactionSequenceNumber: transaction.nonce ?? new BigNumber(0),
extra: {
memo: transaction.memo,
},
};
};
//# sourceMappingURL=buildOptimisticOperation.js.map