UNPKG

@ledgerhq/coin-canton

Version:
26 lines (24 loc) 1.15 kB
import BigNumber from "bignumber.js"; import { AccountBridge } from "@ledgerhq/types-live"; import { getMainAccount } from "@ledgerhq/coin-framework/account/index"; import { getAbandonSeedAddress } from "@ledgerhq/cryptoassets/abandonseed"; import { getTransactionStatus } from "./getTransactionStatus"; import { prepareTransaction } from "./prepareTransaction"; import { createTransaction } from "./createTransaction"; import { Transaction } from "../types"; export const estimateMaxSpendable: AccountBridge<Transaction>["estimateMaxSpendable"] = async ({ account, parentAccount, transaction, }) => { const mainAccount = getMainAccount(account, parentAccount); const newTransaction = await prepareTransaction(mainAccount, { ...createTransaction(account), ...transaction, // fee estimation might require a recipient to work, in that case, we use a dummy one recipient: transaction?.recipient || getAbandonSeedAddress("boilerplate"), amount: new BigNumber(0), }); const status = await getTransactionStatus(mainAccount, newTransaction); return BigNumber.max(0, account.spendableBalance.minus(status.estimatedFees)); };