@ledgerhq/coin-tezos
Version:
95 lines (90 loc) • 2.96 kB
text/typescript
import { BigNumber } from "bignumber.js";
import type { Transaction, TransactionRaw } from "../types";
import { formatTransactionStatus } from "@ledgerhq/coin-framework/formatters";
import {
fromTransactionCommonRaw,
fromTransactionStatusRawCommon as fromTransactionStatusRaw,
toTransactionCommonRaw,
toTransactionStatusRawCommon as toTransactionStatusRaw,
} from "@ledgerhq/coin-framework/serialization";
import type { Account } from "@ledgerhq/types-live";
import { getAccountCurrency } from "@ledgerhq/coin-framework/account/index";
import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies/index";
export const formatTransaction = (
{
mode,
subAccountId,
amount,
recipient,
gasLimit,
storageLimit,
fees,
useAllAmount,
estimatedFees,
}: Transaction,
mainAccount: Account,
): string => {
const account =
(subAccountId && (mainAccount.subAccounts || []).find(a => a.id === subAccountId)) ||
mainAccount;
return `
${mode.toUpperCase()} ${
useAllAmount
? "MAX"
: formatCurrencyUnit(getAccountCurrency(account).units[0], amount, {
showCode: true,
disableRounding: true,
})
}
TO ${recipient}
with fees=${!fees ? "?" : formatCurrencyUnit(mainAccount.currency.units[0], fees)}
with gasLimit=${!gasLimit ? "?" : gasLimit.toString()}
with storageLimit=${!storageLimit ? "?" : storageLimit.toString()}
(estimatedFees ${
!estimatedFees ? "?" : formatCurrencyUnit(mainAccount.currency.units[0], estimatedFees)
})`;
};
export const fromTransactionRaw = (tr: TransactionRaw): Transaction => {
const common = fromTransactionCommonRaw(tr);
const { networkInfo } = tr;
return {
...common,
family: tr.family,
mode: tr.mode,
networkInfo: networkInfo && {
family: networkInfo.family,
fees: new BigNumber(networkInfo.fees),
},
fees: tr.fees ? new BigNumber(tr.fees) : null,
gasLimit: tr.gasLimit ? new BigNumber(tr.gasLimit) : null,
storageLimit: tr.storageLimit ? new BigNumber(tr.storageLimit) : null,
estimatedFees: tr.estimatedFees ? new BigNumber(tr.estimatedFees) : null,
taquitoError: tr.taquitoError,
};
};
export const toTransactionRaw = (t: Transaction): TransactionRaw => {
const common = toTransactionCommonRaw(t);
const { networkInfo } = t;
return {
...common,
family: t.family,
mode: t.mode,
networkInfo: networkInfo && {
family: networkInfo.family,
fees: networkInfo.fees.toString(),
},
fees: t.fees ? t.fees.toString() : null,
gasLimit: t.gasLimit ? t.gasLimit.toString() : null,
storageLimit: t.storageLimit ? t.storageLimit.toString() : null,
estimatedFees: t.estimatedFees ? t.estimatedFees.toString() : null,
taquitoError: t.taquitoError,
};
};
export default {
formatTransaction,
fromTransactionRaw,
toTransactionRaw,
fromTransactionStatusRaw,
toTransactionStatusRaw,
formatTransactionStatus,
};