diff --git a/src/app/common/asset-utils.ts b/src/app/common/asset-utils.ts index 0ef0152f635..b8a857c668e 100644 --- a/src/app/common/asset-utils.ts +++ b/src/app/common/asset-utils.ts @@ -1,5 +1,6 @@ +import type { Money } from '@leather-wallet/models'; + import type { MarketData } from '@shared/models/market.model'; -import { type Money } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote } from './money/calculate-money'; import { i18nFormatCurrency } from './money/format-money'; diff --git a/src/app/common/error-formatters.ts b/src/app/common/error-formatters.ts index 2779e00943c..dba377e83f0 100644 --- a/src/app/common/error-formatters.ts +++ b/src/app/common/error-formatters.ts @@ -1,7 +1,7 @@ +import type { Money } from '@leather-wallet/models'; import { isFunction } from '@leather-wallet/utils'; import { FormErrorMessages } from '@shared/error-messages'; -import { Money } from '@shared/models/money.model'; export function formatPrecisionError(num?: Money) { if (!num) return FormErrorMessages.CannotDeterminePrecision; diff --git a/src/app/common/hooks/balance/use-total-balance.tsx b/src/app/common/hooks/balance/use-total-balance.tsx index 2cbd6fa2cab..a02bdcf01d3 100644 --- a/src/app/common/hooks/balance/use-total-balance.tsx +++ b/src/app/common/hooks/balance/use-total-balance.tsx @@ -1,8 +1,7 @@ import { useMemo } from 'react'; import { useCryptoCurrencyMarketDataMeanAverage } from '@leather-wallet/query'; - -import { createMoney } from '@shared/models/money.model'; +import { createMoney } from '@leather-wallet/utils'; import { baseCurrencyAmountInQuote } from '@app/common/money/calculate-money'; import { i18nFormatCurrency } from '@app/common/money/format-money'; diff --git a/src/app/common/hooks/use-bitcoin-contracts.ts b/src/app/common/hooks/use-bitcoin-contracts.ts index 78fcdb64486..972892df648 100644 --- a/src/app/common/hooks/use-bitcoin-contracts.ts +++ b/src/app/common/hooks/use-bitcoin-contracts.ts @@ -2,19 +2,19 @@ import { useNavigate } from 'react-router-dom'; import { RpcErrorCode } from '@btckit/types'; import { JsDLCInterface } from '@dlc-link/dlc-tools'; +import type { Money } from '@leather-wallet/models'; import { sendAcceptedBitcoinContractOfferToProtocolWallet, useCalculateBitcoinFiatValue, useCryptoCurrencyMarketDataMeanAverage, } from '@leather-wallet/query'; -import { satToBtc } from '@leather-wallet/utils'; +import { createMoneyFromDecimal, satToBtc } from '@leather-wallet/utils'; import { bytesToHex } from '@stacks/common'; import { deriveAddressIndexKeychainFromAccount, extractAddressIndexFromPath, } from '@shared/crypto/bitcoin/bitcoin.utils'; -import { Money, createMoneyFromDecimal } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { BitcoinContractResponseStatus } from '@shared/rpc/methods/accept-bitcoin-contract'; import { makeRpcErrorResponse, makeRpcSuccessResponse } from '@shared/rpc/rpc-methods'; diff --git a/src/app/common/hooks/use-convert-to-fiat-amount.ts b/src/app/common/hooks/use-convert-to-fiat-amount.ts index 82120dc5eea..e15e9954f13 100644 --- a/src/app/common/hooks/use-convert-to-fiat-amount.ts +++ b/src/app/common/hooks/use-convert-to-fiat-amount.ts @@ -1,9 +1,9 @@ import { useCallback } from 'react'; +import type { Money } from '@leather-wallet/models'; import { useCryptoCurrencyMarketDataMeanAverage } from '@leather-wallet/query'; import { CryptoCurrencies } from '@shared/models/currencies.model'; -import { type Money } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote } from '../money/calculate-money'; diff --git a/src/app/common/money/calculate-money.spec.ts b/src/app/common/money/calculate-money.spec.ts index 5029653cf2f..3b613c93e57 100644 --- a/src/app/common/money/calculate-money.spec.ts +++ b/src/app/common/money/calculate-money.spec.ts @@ -1,7 +1,7 @@ +import { createMoney, createMoneyFromDecimal } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; import { MarketData, createMarketData, createMarketPair } from '@shared/models/market.model'; -import { createMoney, createMoneyFromDecimal } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote, diff --git a/src/app/common/money/calculate-money.ts b/src/app/common/money/calculate-money.ts index bb645029589..b8afc81bf08 100644 --- a/src/app/common/money/calculate-money.ts +++ b/src/app/common/money/calculate-money.ts @@ -1,8 +1,8 @@ -import { initBigNumber, isNumber, sumNumbers } from '@leather-wallet/utils'; +import type { Money, NumType } from '@leather-wallet/models'; +import { createMoney, initBigNumber, isNumber, sumNumbers } from '@leather-wallet/utils'; import { BigNumber } from 'bignumber.js'; import { MarketData, formatMarketPair } from '@shared/models/market.model'; -import { Money, NumType, createMoney } from '@shared/models/money.model'; import { formatMoney } from './format-money'; import { isMoney } from './money.utils'; diff --git a/src/app/common/money/format-money.ts b/src/app/common/money/format-money.ts index 0620bfbe4d1..4f64fe565fa 100644 --- a/src/app/common/money/format-money.ts +++ b/src/app/common/money/format-money.ts @@ -1,4 +1,4 @@ -import { Money } from '@shared/models/money.model'; +import type { Money } from '@leather-wallet/models'; const thinSpace = ' '; diff --git a/src/app/common/money/money.utils.ts b/src/app/common/money/money.utils.ts index 508ff9ddf22..9bdaf9d8f14 100644 --- a/src/app/common/money/money.utils.ts +++ b/src/app/common/money/money.utils.ts @@ -1,8 +1,7 @@ +import type { Money } from '@leather-wallet/models'; import { isObject } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; -import { Money } from '@shared/models/money.model'; - export function isMoney(val: unknown): val is Money { if (!isObject(val)) return false; return 'amount' in val && 'symbol' in val && 'decimals' in val; diff --git a/src/app/common/psbt/requests.ts b/src/app/common/psbt/requests.ts index a57ec91b1c2..f530f7ec389 100644 --- a/src/app/common/psbt/requests.ts +++ b/src/app/common/psbt/requests.ts @@ -1,10 +1,9 @@ +import type { Money } from '@leather-wallet/models'; import { isString } from '@leather-wallet/utils'; import * as btc from '@scure/btc-signer'; import { PsbtPayload } from '@stacks/connect'; import { decodeToken } from 'jsontokens'; -import { Money } from '@shared/models/money.model'; - export interface SignPsbtArgs { addressNativeSegwitTotal?: Money; addressTaprootTotal?: Money; diff --git a/src/app/common/transactions/bitcoin/coinselect/local-coin-selection.spec.ts b/src/app/common/transactions/bitcoin/coinselect/local-coin-selection.spec.ts index 5023cf2aedb..5d63052894b 100644 --- a/src/app/common/transactions/bitcoin/coinselect/local-coin-selection.spec.ts +++ b/src/app/common/transactions/bitcoin/coinselect/local-coin-selection.spec.ts @@ -1,7 +1,6 @@ -import { createNullArrayOfLength, sumNumbers } from '@leather-wallet/utils'; +import { createMoney, createNullArrayOfLength, sumNumbers } from '@leather-wallet/utils'; import { BTC_P2WPKH_DUST_AMOUNT } from '@shared/constants'; -import { createMoney } from '@shared/models/money.model'; import { determineUtxosForSpend } from './local-coin-selection'; diff --git a/src/app/common/transactions/bitcoin/fees/bitcoin-fees.spec.ts b/src/app/common/transactions/bitcoin/fees/bitcoin-fees.spec.ts index d0a6584e8d8..87660faa104 100644 --- a/src/app/common/transactions/bitcoin/fees/bitcoin-fees.spec.ts +++ b/src/app/common/transactions/bitcoin/fees/bitcoin-fees.spec.ts @@ -1,9 +1,8 @@ import type { UtxoResponseItem } from '@leather-wallet/query'; +import { createMoney } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; import { sha256 } from 'bitcoinjs-lib/src/crypto'; -import { createMoney } from '@shared/models/money.model'; - import { filterUneconomicalUtxos } from '../utils'; import { calculateMaxBitcoinSpend } from './calculate-max-bitcoin-spend'; diff --git a/src/app/common/transactions/bitcoin/fees/calculate-max-bitcoin-spend.ts b/src/app/common/transactions/bitcoin/fees/calculate-max-bitcoin-spend.ts index ceb142bc269..8fc86b46daf 100644 --- a/src/app/common/transactions/bitcoin/fees/calculate-max-bitcoin-spend.ts +++ b/src/app/common/transactions/bitcoin/fees/calculate-max-bitcoin-spend.ts @@ -1,9 +1,8 @@ import type { UtxoResponseItem } from '@leather-wallet/query'; -import { satToBtc } from '@leather-wallet/utils'; +import { createMoney, satToBtc } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; import { AverageBitcoinFeeRates } from '@shared/models/fees/bitcoin-fees.model'; -import { createMoney } from '@shared/models/money.model'; import { filterUneconomicalUtxos, getSpendableAmount } from '../utils'; diff --git a/src/app/common/transactions/bitcoin/use-generate-bitcoin-tx.ts b/src/app/common/transactions/bitcoin/use-generate-bitcoin-tx.ts index ac3f9a27808..d78140e3c98 100644 --- a/src/app/common/transactions/bitcoin/use-generate-bitcoin-tx.ts +++ b/src/app/common/transactions/bitcoin/use-generate-bitcoin-tx.ts @@ -1,11 +1,11 @@ import { useCallback } from 'react'; +import type { Money } from '@leather-wallet/models'; import type { UtxoResponseItem } from '@leather-wallet/query'; import * as btc from '@scure/btc-signer'; import { logger } from '@shared/logger'; import type { TransferRecipient } from '@shared/models/form.model'; -import { Money } from '@shared/models/money.model'; import { determineUtxosForSpend, diff --git a/src/app/common/validation/forms/amount-validators.ts b/src/app/common/validation/forms/amount-validators.ts index f691534fd3f..a5db5e7a0a8 100644 --- a/src/app/common/validation/forms/amount-validators.ts +++ b/src/app/common/validation/forms/amount-validators.ts @@ -1,3 +1,4 @@ +import type { Money } from '@leather-wallet/models'; import type { UtxoResponseItem } from '@leather-wallet/query'; import { btcToSat, @@ -10,7 +11,6 @@ import { import BigNumber from 'bignumber.js'; import * as yup from 'yup'; -import { Money } from '@shared/models/money.model'; import { analytics } from '@shared/utils/analytics'; import { convertAmountToBaseUnit } from '@app/common/money/calculate-money'; diff --git a/src/app/common/validation/forms/fee-validators.ts b/src/app/common/validation/forms/fee-validators.ts index 22b9ea386d6..83fec76560e 100644 --- a/src/app/common/validation/forms/fee-validators.ts +++ b/src/app/common/validation/forms/fee-validators.ts @@ -1,9 +1,8 @@ +import type { Money } from '@leather-wallet/models'; import { btcToSat, isNumber, moneyToBaseUnit, stxToMicroStx } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; import { AnyObject, NumberSchema } from 'yup'; -import { Money } from '@shared/models/money.model'; - import { formatInsufficientBalanceError, formatPrecisionError } from '@app/common/error-formatters'; import { btcAmountPrecisionValidator, diff --git a/src/app/components/bitcoin-contract-entry-point/bitcoin-contract-entry-point-layout.tsx b/src/app/components/bitcoin-contract-entry-point/bitcoin-contract-entry-point-layout.tsx index 3d093e70813..b7ce692f63c 100644 --- a/src/app/components/bitcoin-contract-entry-point/bitcoin-contract-entry-point-layout.tsx +++ b/src/app/components/bitcoin-contract-entry-point/bitcoin-contract-entry-point-layout.tsx @@ -1,7 +1,6 @@ +import type { Money } from '@leather-wallet/models'; import { Flex, HStack, styled } from 'leather-styles/jsx'; -import { Money } from '@shared/models/money.model'; - import { formatBalance } from '@app/common/format-balance'; import { ftDecimals } from '@app/common/stacks-utils'; import { Flag } from '@app/ui/components/flag/flag'; diff --git a/src/app/components/bitcoin-custom-fee/bitcoin-custom-fee-input.tsx b/src/app/components/bitcoin-custom-fee/bitcoin-custom-fee-input.tsx index 7b6fd2fbe4f..ac2a282d3b0 100644 --- a/src/app/components/bitcoin-custom-fee/bitcoin-custom-fee-input.tsx +++ b/src/app/components/bitcoin-custom-fee/bitcoin-custom-fee-input.tsx @@ -1,11 +1,10 @@ import { useState } from 'react'; -import { satToBtc } from '@leather-wallet/utils'; +import { createMoney, satToBtc } from '@leather-wallet/utils'; import { useField } from 'formik'; import { Stack } from 'leather-styles/jsx'; import type { TransferRecipient } from '@shared/models/form.model'; -import { createMoney } from '@shared/models/money.model'; import { useOnMount } from '@app/common/hooks/use-on-mount'; import { InsufficientFundsError } from '@app/common/transactions/bitcoin/coinselect/local-coin-selection'; diff --git a/src/app/components/bitcoin-custom-fee/bitcoin-custom-fee.tsx b/src/app/components/bitcoin-custom-fee/bitcoin-custom-fee.tsx index 15f80cb69fe..12fa925aa97 100644 --- a/src/app/components/bitcoin-custom-fee/bitcoin-custom-fee.tsx +++ b/src/app/components/bitcoin-custom-fee/bitcoin-custom-fee.tsx @@ -1,5 +1,6 @@ import { Dispatch, SetStateAction, useCallback, useRef } from 'react'; +import { createMoney } from '@leather-wallet/utils'; import { SendCryptoAssetSelectors } from '@tests/selectors/send.selectors'; import { Form, Formik } from 'formik'; import { Stack, styled } from 'leather-styles/jsx'; @@ -7,7 +8,6 @@ import * as yup from 'yup'; import { BtcFeeType } from '@shared/models/fees/bitcoin-fees.model'; import type { TransferRecipient } from '@shared/models/form.model'; -import { createMoney } from '@shared/models/money.model'; import { openInNewTab } from '@app/common/utils/open-in-new-tab'; import { Button } from '@app/ui/components/button/button'; diff --git a/src/app/components/bitcoin-custom-fee/hooks/use-bitcoin-custom-fee.tsx b/src/app/components/bitcoin-custom-fee/hooks/use-bitcoin-custom-fee.tsx index b097c90c307..1eae4d741ca 100644 --- a/src/app/components/bitcoin-custom-fee/hooks/use-bitcoin-custom-fee.tsx +++ b/src/app/components/bitcoin-custom-fee/hooks/use-bitcoin-custom-fee.tsx @@ -1,9 +1,10 @@ import { useCallback } from 'react'; +import type { Money } from '@leather-wallet/models'; import { useCryptoCurrencyMarketDataMeanAverage } from '@leather-wallet/query'; +import { createMoney } from '@leather-wallet/utils'; import type { TransferRecipient } from '@shared/models/form.model'; -import { Money, createMoney } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote } from '@app/common/money/calculate-money'; import { i18nFormatCurrency } from '@app/common/money/format-money'; diff --git a/src/app/components/bitcoin-fees-list/use-bitcoin-fees-list-multiple-recipients.ts b/src/app/components/bitcoin-fees-list/use-bitcoin-fees-list-multiple-recipients.ts index 7e4e2508120..6003e99adf0 100644 --- a/src/app/components/bitcoin-fees-list/use-bitcoin-fees-list-multiple-recipients.ts +++ b/src/app/components/bitcoin-fees-list/use-bitcoin-fees-list-multiple-recipients.ts @@ -1,14 +1,15 @@ import { useMemo } from 'react'; +import type { Money } from '@leather-wallet/models'; import { type UtxoResponseItem, useAverageBitcoinFeeRates, useCryptoCurrencyMarketDataMeanAverage, } from '@leather-wallet/query'; +import { createMoney } from '@leather-wallet/utils'; import { BtcFeeType, btcTxTimeMap } from '@shared/models/fees/bitcoin-fees.model'; import type { TransferRecipient } from '@shared/models/form.model'; -import { Money, createMoney } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote } from '@app/common/money/calculate-money'; import { formatMoneyPadded, i18nFormatCurrency } from '@app/common/money/format-money'; diff --git a/src/app/components/bitcoin-fees-list/use-bitcoin-fees-list.ts b/src/app/components/bitcoin-fees-list/use-bitcoin-fees-list.ts index 43e9987461d..eff79b6bb9b 100644 --- a/src/app/components/bitcoin-fees-list/use-bitcoin-fees-list.ts +++ b/src/app/components/bitcoin-fees-list/use-bitcoin-fees-list.ts @@ -1,13 +1,14 @@ import { useMemo } from 'react'; +import type { Money } from '@leather-wallet/models'; import { type UtxoResponseItem, useAverageBitcoinFeeRates, useCryptoCurrencyMarketDataMeanAverage, } from '@leather-wallet/query'; +import { createMoney } from '@leather-wallet/utils'; import { BtcFeeType, btcTxTimeMap } from '@shared/models/fees/bitcoin-fees.model'; -import { Money, createMoney } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote } from '@app/common/money/calculate-money'; import { formatMoneyPadded, i18nFormatCurrency } from '@app/common/money/format-money'; diff --git a/src/app/components/fees-row/components/transaction-fee.tsx b/src/app/components/fees-row/components/transaction-fee.tsx index 2cde30b135a..b91ac284a4e 100644 --- a/src/app/components/fees-row/components/transaction-fee.tsx +++ b/src/app/components/fees-row/components/transaction-fee.tsx @@ -1,8 +1,8 @@ +import type { Money } from '@leather-wallet/models'; import { SharedComponentsSelectors } from '@tests/selectors/shared-component.selectors'; import { styled } from 'leather-styles/jsx'; import { CryptoCurrencies } from '@shared/models/currencies.model'; -import { Money } from '@shared/models/money.model'; import { formatDustUsdAmounts, i18nFormatCurrency } from '@app/common/money/format-money'; import { BasicTooltip } from '@app/ui/components/tooltip/basic-tooltip'; diff --git a/src/app/components/fees-row/fees-row.tsx b/src/app/components/fees-row/fees-row.tsx index 8829f4914f2..fb93b9849e2 100644 --- a/src/app/components/fees-row/fees-row.tsx +++ b/src/app/components/fees-row/fees-row.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; -import { isNumber, isString } from '@leather-wallet/utils'; +import { createMoney, isNumber, isString } from '@leather-wallet/utils'; import { SharedComponentsSelectors } from '@tests/selectors/shared-component.selectors'; import BigNumber from 'bignumber.js'; import { useField } from 'formik'; @@ -8,7 +8,6 @@ import { Box } from 'leather-styles/jsx'; import { STX_DECIMALS } from '@shared/constants'; import { FeeTypes, Fees } from '@shared/models/fees/fees.model'; -import { createMoney } from '@shared/models/money.model'; import { useConvertCryptoCurrencyToFiatAmount } from '@app/common/hooks/use-convert-to-fiat-amount'; import { convertAmountToBaseUnit } from '@app/common/money/calculate-money'; diff --git a/src/app/features/bitcoin-choose-fee/bitcoin-choose-fee.tsx b/src/app/features/bitcoin-choose-fee/bitcoin-choose-fee.tsx index e0e2eecaa42..5a2bc21c7b6 100644 --- a/src/app/features/bitcoin-choose-fee/bitcoin-choose-fee.tsx +++ b/src/app/features/bitcoin-choose-fee/bitcoin-choose-fee.tsx @@ -1,10 +1,10 @@ import { useState } from 'react'; +import type { Money } from '@leather-wallet/models'; import { Box, FlexProps, Stack, styled } from 'leather-styles/jsx'; import { BtcFeeType } from '@shared/models/fees/bitcoin-fees.model'; import type { TransferRecipient } from '@shared/models/form.model'; -import { Money } from '@shared/models/money.model'; import { formatMoney } from '@app/common/money/format-money'; import { BitcoinCustomFee } from '@app/components/bitcoin-custom-fee/bitcoin-custom-fee'; diff --git a/src/app/features/bitcoin-choose-fee/hooks/use-validate-bitcoin-spend.ts b/src/app/features/bitcoin-choose-fee/hooks/use-validate-bitcoin-spend.ts index 5a5c22ab7c7..a069b3d902a 100644 --- a/src/app/features/bitcoin-choose-fee/hooks/use-validate-bitcoin-spend.ts +++ b/src/app/features/bitcoin-choose-fee/hooks/use-validate-bitcoin-spend.ts @@ -1,6 +1,7 @@ import { useState } from 'react'; -import { Money, createMoney } from '@shared/models/money.model'; +import type { Money } from '@leather-wallet/models'; +import { createMoney } from '@leather-wallet/utils'; import { subtractMoney, sumMoney } from '@app/common/money/calculate-money'; import { useCurrentBtcCryptoAssetBalanceNativeSegwit } from '@app/query/bitcoin/balance/btc-balance-native-segwit.hooks'; diff --git a/src/app/features/dialogs/increase-fee-dialog/hooks/use-btc-increase-fee.ts b/src/app/features/dialogs/increase-fee-dialog/hooks/use-btc-increase-fee.ts index d066f9f087a..22c232520a5 100644 --- a/src/app/features/dialogs/increase-fee-dialog/hooks/use-btc-increase-fee.ts +++ b/src/app/features/dialogs/increase-fee-dialog/hooks/use-btc-increase-fee.ts @@ -2,12 +2,11 @@ import { useMemo } from 'react'; import { useNavigate } from 'react-router-dom'; import { useBitcoinBroadcastTransaction } from '@leather-wallet/query'; -import { btcToSat, isError } from '@leather-wallet/utils'; +import { btcToSat, createMoney, isError } from '@leather-wallet/utils'; import * as btc from '@scure/btc-signer'; import BigNumber from 'bignumber.js'; import * as yup from 'yup'; -import { createMoney } from '@shared/models/money.model'; import { BitcoinTx } from '@shared/models/transactions/bitcoin-transaction.model'; import { RouteUrls } from '@shared/route-urls'; diff --git a/src/app/features/dialogs/increase-fee-dialog/increase-btc-fee-dialog.tsx b/src/app/features/dialogs/increase-fee-dialog/increase-btc-fee-dialog.tsx index 51c14be6bf4..22896787ecf 100644 --- a/src/app/features/dialogs/increase-fee-dialog/increase-btc-fee-dialog.tsx +++ b/src/app/features/dialogs/increase-fee-dialog/increase-btc-fee-dialog.tsx @@ -1,11 +1,10 @@ import { Suspense } from 'react'; import { Outlet, useLocation, useNavigate } from 'react-router-dom'; -import { btcToSat } from '@leather-wallet/utils'; +import { btcToSat, createMoney } from '@leather-wallet/utils'; import { Formik } from 'formik'; import { Flex, Stack } from 'leather-styles/jsx'; -import { createMoney } from '@shared/models/money.model'; import { BitcoinTx } from '@shared/models/transactions/bitcoin-transaction.model'; import { RouteUrls } from '@shared/route-urls'; diff --git a/src/app/features/psbt-signer/components/psbt-inputs-and-outputs/components/psbt-input-list/components/psbt-input-item.tsx b/src/app/features/psbt-signer/components/psbt-inputs-and-outputs/components/psbt-input-list/components/psbt-input-item.tsx index 06e6fed3aad..e8e2efa73ce 100644 --- a/src/app/features/psbt-signer/components/psbt-inputs-and-outputs/components/psbt-input-list/components/psbt-input-item.tsx +++ b/src/app/features/psbt-signer/components/psbt-inputs-and-outputs/components/psbt-input-list/components/psbt-input-item.tsx @@ -1,6 +1,4 @@ -import { truncateMiddle } from '@leather-wallet/utils'; - -import { createMoney } from '@shared/models/money.model'; +import { createMoney, truncateMiddle } from '@leather-wallet/utils'; import { formatMoney } from '@app/common/money/format-money'; import { PsbtInput } from '@app/features/psbt-signer/hooks/use-parsed-inputs'; diff --git a/src/app/features/psbt-signer/components/psbt-inputs-and-outputs/components/psbt-output-list/components/psbt-output-item.tsx b/src/app/features/psbt-signer/components/psbt-inputs-and-outputs/components/psbt-output-list/components/psbt-output-item.tsx index a53a381b0fe..4f0ef140e74 100644 --- a/src/app/features/psbt-signer/components/psbt-inputs-and-outputs/components/psbt-output-list/components/psbt-output-item.tsx +++ b/src/app/features/psbt-signer/components/psbt-inputs-and-outputs/components/psbt-output-list/components/psbt-output-item.tsx @@ -1,6 +1,4 @@ -import { truncateMiddle } from '@leather-wallet/utils'; - -import { createMoney } from '@shared/models/money.model'; +import { createMoney, truncateMiddle } from '@leather-wallet/utils'; import { formatMoney } from '@app/common/money/format-money'; import { PsbtOutput } from '@app/features/psbt-signer/hooks/use-parsed-outputs'; diff --git a/src/app/features/psbt-signer/components/psbt-request-fee.tsx b/src/app/features/psbt-signer/components/psbt-request-fee.tsx index 43fecaed59a..9765df998a0 100644 --- a/src/app/features/psbt-signer/components/psbt-request-fee.tsx +++ b/src/app/features/psbt-signer/components/psbt-request-fee.tsx @@ -1,8 +1,7 @@ +import type { Money } from '@leather-wallet/models'; import { useCalculateBitcoinFiatValue } from '@leather-wallet/query'; import { HStack, Stack, styled } from 'leather-styles/jsx'; -import { Money } from '@shared/models/money.model'; - import { formatMoney, i18nFormatCurrency } from '@app/common/money/format-money'; import { PsbtRequestDetailsSectionLayout } from './psbt-request-details-section.layout'; diff --git a/src/app/features/psbt-signer/hooks/use-psbt-details.tsx b/src/app/features/psbt-signer/hooks/use-psbt-details.tsx index a7ab5154ed3..9cfbddfbb2b 100644 --- a/src/app/features/psbt-signer/hooks/use-psbt-details.tsx +++ b/src/app/features/psbt-signer/hooks/use-psbt-details.tsx @@ -1,9 +1,8 @@ import { useCallback, useMemo } from 'react'; +import { createMoney } from '@leather-wallet/utils'; import * as btc from '@scure/btc-signer'; -import { createMoney } from '@shared/models/money.model'; - import { subtractMoney } from '@app/common/money/calculate-money'; import { useCurrentAccountNativeSegwitIndexZeroSigner } from '@app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks'; import { useCurrentAccountTaprootIndexZeroSigner } from '@app/store/accounts/blockchain/bitcoin/taproot-account.hooks'; diff --git a/src/app/features/psbt-signer/hooks/use-psbt-totals.tsx b/src/app/features/psbt-signer/hooks/use-psbt-totals.tsx index eacbb422c79..83796fdfa61 100644 --- a/src/app/features/psbt-signer/hooks/use-psbt-totals.tsx +++ b/src/app/features/psbt-signer/hooks/use-psbt-totals.tsx @@ -1,8 +1,6 @@ import { useMemo } from 'react'; -import { sumNumbers } from '@leather-wallet/utils'; - -import { createMoney } from '@shared/models/money.model'; +import { createMoney, sumNumbers } from '@leather-wallet/utils'; import { PsbtInput } from './use-parsed-inputs'; import { PsbtOutput } from './use-parsed-outputs'; diff --git a/src/app/features/psbt-signer/psbt-signer.context.ts b/src/app/features/psbt-signer/psbt-signer.context.ts index 94a9e3283c5..70e699412d6 100644 --- a/src/app/features/psbt-signer/psbt-signer.context.ts +++ b/src/app/features/psbt-signer/psbt-signer.context.ts @@ -1,8 +1,6 @@ import { createContext, useContext } from 'react'; -import type { Inscription } from '@leather-wallet/models'; - -import { Money } from '@shared/models/money.model'; +import type { Inscription, Money } from '@leather-wallet/models'; import { PsbtInput } from './hooks/use-parsed-inputs'; import { PsbtOutput } from './hooks/use-parsed-outputs'; diff --git a/src/app/features/retrieve-taproot-to-native-segwit/use-generate-retrieve-taproot-funds-tx.tsx b/src/app/features/retrieve-taproot-to-native-segwit/use-generate-retrieve-taproot-funds-tx.tsx index 24340bf13e5..f9286b85982 100644 --- a/src/app/features/retrieve-taproot-to-native-segwit/use-generate-retrieve-taproot-funds-tx.tsx +++ b/src/app/features/retrieve-taproot-to-native-segwit/use-generate-retrieve-taproot-funds-tx.tsx @@ -1,15 +1,15 @@ import { useCallback, useMemo } from 'react'; +import type { Money } from '@leather-wallet/models'; import { useAverageBitcoinFeeRates, useCurrentTaprootAccountUninscribedUtxos, useNumberOfInscriptionsOnUtxo, } from '@leather-wallet/query'; -import { sumNumbers } from '@leather-wallet/utils'; +import { createMoney, sumNumbers } from '@leather-wallet/utils'; import * as btc from '@scure/btc-signer'; import { extractAddressIndexFromPath } from '@shared/crypto/bitcoin/bitcoin.utils'; -import { Money, createMoney } from '@shared/models/money.model'; import { BtcSizeFeeEstimator } from '@app/common/transactions/bitcoin/fees/btc-size-fee-estimator'; import { useCurrentAccountIndex } from '@app/store/accounts/account'; diff --git a/src/app/features/stacks-transaction-request/hooks/use-stacks-transaction-summary.ts b/src/app/features/stacks-transaction-request/hooks/use-stacks-transaction-summary.ts index 60837342dad..2cbe4a9f7a4 100644 --- a/src/app/features/stacks-transaction-request/hooks/use-stacks-transaction-summary.ts +++ b/src/app/features/stacks-transaction-request/hooks/use-stacks-transaction-summary.ts @@ -1,5 +1,5 @@ import { useCryptoCurrencyMarketDataMeanAverage } from '@leather-wallet/query'; -import { isDefined, microStxToStx } from '@leather-wallet/utils'; +import { createMoney, isDefined, microStxToStx } from '@leather-wallet/utils'; import { bytesToUtf8 } from '@stacks/common'; import { ClarityType, @@ -14,7 +14,6 @@ import { import BigNumber from 'bignumber.js'; import { CryptoCurrencies } from '@shared/models/currencies.model'; -import { createMoney } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote, diff --git a/src/app/pages/bitcoin-contract-list/components/bitcoin-contract-list-item-layout.tsx b/src/app/pages/bitcoin-contract-list/components/bitcoin-contract-list-item-layout.tsx index 39527b3b189..d8998780280 100644 --- a/src/app/pages/bitcoin-contract-list/components/bitcoin-contract-list-item-layout.tsx +++ b/src/app/pages/bitcoin-contract-list/components/bitcoin-contract-list-item-layout.tsx @@ -1,11 +1,9 @@ import { useCallback } from 'react'; import { useCryptoCurrencyMarketDataMeanAverage } from '@leather-wallet/query'; -import { satToBtc } from '@leather-wallet/utils'; +import { createMoneyFromDecimal, satToBtc } from '@leather-wallet/utils'; import { Flex, HStack, styled } from 'leather-styles/jsx'; -import { createMoneyFromDecimal } from '@shared/models/money.model'; - import { useBitcoinExplorerLink } from '@app/common/hooks/use-bitcoin-explorer-link'; import { baseCurrencyAmountInQuote } from '@app/common/money/calculate-money'; import { i18nFormatCurrency } from '@app/common/money/format-money'; diff --git a/src/app/pages/bitcoin-contract-request/components/bitcoin-contract-offer/bitcoin-contract-offer-input.tsx b/src/app/pages/bitcoin-contract-request/components/bitcoin-contract-offer/bitcoin-contract-offer-input.tsx index cc6090f7a7a..f994ded76e4 100644 --- a/src/app/pages/bitcoin-contract-request/components/bitcoin-contract-offer/bitcoin-contract-offer-input.tsx +++ b/src/app/pages/bitcoin-contract-request/components/bitcoin-contract-offer/bitcoin-contract-offer-input.tsx @@ -1,9 +1,7 @@ import { useCalculateBitcoinFiatValue } from '@leather-wallet/query'; -import { satToBtc, truncateMiddle } from '@leather-wallet/utils'; +import { createMoneyFromDecimal, satToBtc, truncateMiddle } from '@leather-wallet/utils'; import { Stack, styled } from 'leather-styles/jsx'; -import { createMoneyFromDecimal } from '@shared/models/money.model'; - import { SimplifiedBitcoinContract } from '@app/common/hooks/use-bitcoin-contracts'; import { formatMoney, i18nFormatCurrency } from '@app/common/money/format-money'; diff --git a/src/app/pages/rpc-send-transfer/components/send-transfer-confirmation-details.tsx b/src/app/pages/rpc-send-transfer/components/send-transfer-confirmation-details.tsx index 3d74812fc81..f7598ee0865 100644 --- a/src/app/pages/rpc-send-transfer/components/send-transfer-confirmation-details.tsx +++ b/src/app/pages/rpc-send-transfer/components/send-transfer-confirmation-details.tsx @@ -1,7 +1,6 @@ +import type { Money } from '@leather-wallet/models'; import { HStack, Stack, styled } from 'leather-styles/jsx'; -import type { Money } from '@shared/models/money.model'; - import { formatMoney } from '@app/common/money/format-money'; interface SendTransferConfirmationDetailsProps { diff --git a/src/app/pages/rpc-send-transfer/rpc-send-transfer-choose-fee.tsx b/src/app/pages/rpc-send-transfer/rpc-send-transfer-choose-fee.tsx index 0a8c8db57ff..67086e708e2 100644 --- a/src/app/pages/rpc-send-transfer/rpc-send-transfer-choose-fee.tsx +++ b/src/app/pages/rpc-send-transfer/rpc-send-transfer-choose-fee.tsx @@ -1,11 +1,11 @@ import { Outlet, useNavigate } from 'react-router-dom'; +import type { Money } from '@leather-wallet/models'; import type { UtxoResponseItem } from '@leather-wallet/query'; import { logger } from '@shared/logger'; import { BtcFeeType } from '@shared/models/fees/bitcoin-fees.model'; import type { TransferRecipient } from '@shared/models/form.model'; -import type { Money } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { useLocationStateWithCache } from '@app/common/hooks/use-location-state'; diff --git a/src/app/pages/rpc-send-transfer/rpc-send-transfer-confirmation.tsx b/src/app/pages/rpc-send-transfer/rpc-send-transfer-confirmation.tsx index 2c43d1900cd..f7f6cfecc3b 100644 --- a/src/app/pages/rpc-send-transfer/rpc-send-transfer-confirmation.tsx +++ b/src/app/pages/rpc-send-transfer/rpc-send-transfer-confirmation.tsx @@ -4,7 +4,7 @@ import { useBitcoinBroadcastTransaction, useCryptoCurrencyMarketDataMeanAverage, } from '@leather-wallet/query'; -import { truncateMiddle } from '@leather-wallet/utils'; +import { createMoney, truncateMiddle } from '@leather-wallet/utils'; import { HStack, Stack, styled } from 'leather-styles/jsx'; import get from 'lodash.get'; @@ -12,7 +12,6 @@ import { decodeBitcoinTx } from '@shared/crypto/bitcoin/bitcoin.utils'; import { logger } from '@shared/logger'; import { CryptoCurrencies } from '@shared/models/currencies.model'; import type { TransferRecipient } from '@shared/models/form.model'; -import { createMoney } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { makeRpcSuccessResponse } from '@shared/rpc/rpc-methods'; diff --git a/src/app/pages/rpc-send-transfer/rpc-send-transfer.tsx b/src/app/pages/rpc-send-transfer/rpc-send-transfer.tsx index bc7eecef4b9..4604eddbced 100644 --- a/src/app/pages/rpc-send-transfer/rpc-send-transfer.tsx +++ b/src/app/pages/rpc-send-transfer/rpc-send-transfer.tsx @@ -1,7 +1,6 @@ +import { createMoney } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; -import { createMoney } from '@shared/models/money.model'; - import { formatMoneyPadded } from '@app/common/money/format-money'; import { InfoCardFooter } from '@app/components/info-card/info-card'; import { useBreakOnNonCompliantEntity } from '@app/query/common/compliance-checker/compliance-checker.query'; diff --git a/src/app/pages/rpc-send-transfer/use-rpc-send-transfer.ts b/src/app/pages/rpc-send-transfer/use-rpc-send-transfer.ts index f24b6e38b6b..e208f40637e 100644 --- a/src/app/pages/rpc-send-transfer/use-rpc-send-transfer.ts +++ b/src/app/pages/rpc-send-transfer/use-rpc-send-transfer.ts @@ -1,10 +1,9 @@ import { useMemo } from 'react'; import { useNavigate } from 'react-router-dom'; -import { sumNumbers } from '@leather-wallet/utils'; +import { createMoney, sumNumbers } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; -import { createMoney } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { useDefaultRequestParams } from '@app/common/hooks/use-default-request-search-params'; diff --git a/src/app/pages/rpc-sign-psbt/use-rpc-sign-psbt.tsx b/src/app/pages/rpc-sign-psbt/use-rpc-sign-psbt.tsx index 090bc69a93f..374a65ebd81 100644 --- a/src/app/pages/rpc-sign-psbt/use-rpc-sign-psbt.tsx +++ b/src/app/pages/rpc-sign-psbt/use-rpc-sign-psbt.tsx @@ -1,6 +1,7 @@ import { useNavigate } from 'react-router-dom'; import { RpcErrorCode } from '@btckit/types'; +import type { Money } from '@leather-wallet/models'; import { useBitcoinBroadcastTransaction, useCalculateBitcoinFiatValue, @@ -10,7 +11,6 @@ import { isError } from '@leather-wallet/utils'; import { hexToBytes } from '@noble/hashes/utils'; import { bytesToHex } from '@stacks/common'; -import { Money } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { makeRpcErrorResponse, makeRpcSuccessResponse } from '@shared/rpc/rpc-methods'; import { closeWindow } from '@shared/utils'; diff --git a/src/app/pages/send/ordinal-inscription/hooks/use-generate-ordinal-tx.ts b/src/app/pages/send/ordinal-inscription/hooks/use-generate-ordinal-tx.ts index 4175c40144e..e95ade181e4 100644 --- a/src/app/pages/send/ordinal-inscription/hooks/use-generate-ordinal-tx.ts +++ b/src/app/pages/send/ordinal-inscription/hooks/use-generate-ordinal-tx.ts @@ -1,5 +1,5 @@ import type { UtxoWithDerivationPath } from '@leather-wallet/query'; -import { createCounter } from '@leather-wallet/utils'; +import { createCounter, createMoney } from '@leather-wallet/utils'; import * as btc from '@scure/btc-signer'; import { AddressType, getAddressInfo } from 'bitcoin-address-validation'; @@ -7,7 +7,6 @@ import { extractAddressIndexFromPath } from '@shared/crypto/bitcoin/bitcoin.util import { BitcoinInputSigningConfig } from '@shared/crypto/bitcoin/signer-config'; import { logger } from '@shared/logger'; import { OrdinalSendFormValues } from '@shared/models/form.model'; -import { createMoney } from '@shared/models/money.model'; import { InsufficientFundsError, diff --git a/src/app/pages/send/ordinal-inscription/hooks/use-send-inscription-fees-list.ts b/src/app/pages/send/ordinal-inscription/hooks/use-send-inscription-fees-list.ts index efaf2bb272b..430212bb9d1 100644 --- a/src/app/pages/send/ordinal-inscription/hooks/use-send-inscription-fees-list.ts +++ b/src/app/pages/send/ordinal-inscription/hooks/use-send-inscription-fees-list.ts @@ -6,9 +6,9 @@ import { useAverageBitcoinFeeRates, useCryptoCurrencyMarketDataMeanAverage, } from '@leather-wallet/query'; +import { createMoney } from '@leather-wallet/utils'; import { BtcFeeType, btcTxTimeMap } from '@shared/models/fees/bitcoin-fees.model'; -import { createMoney } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote } from '@app/common/money/calculate-money'; import { formatMoneyPadded, i18nFormatCurrency } from '@app/common/money/format-money'; diff --git a/src/app/pages/send/ordinal-inscription/send-inscription-choose-fee.tsx b/src/app/pages/send/ordinal-inscription/send-inscription-choose-fee.tsx index 6dc03a21b2a..e05db0683dc 100644 --- a/src/app/pages/send/ordinal-inscription/send-inscription-choose-fee.tsx +++ b/src/app/pages/send/ordinal-inscription/send-inscription-choose-fee.tsx @@ -1,8 +1,9 @@ import { useState } from 'react'; import { Outlet, useNavigate } from 'react-router-dom'; +import { createMoney } from '@leather-wallet/utils'; + import { BtcFeeType } from '@shared/models/fees/bitcoin-fees.model'; -import { createMoney } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { diff --git a/src/app/pages/send/send-crypto-asset-form/components/amount-field.tsx b/src/app/pages/send/send-crypto-asset-form/components/amount-field.tsx index 0a8c1dd4e2b..84ca7b654c2 100644 --- a/src/app/pages/send/send-crypto-asset-form/components/amount-field.tsx +++ b/src/app/pages/send/send-crypto-asset-form/components/amount-field.tsx @@ -1,11 +1,11 @@ import { type ChangeEvent, useCallback, useEffect, useRef, useState } from 'react'; +import type { Money } from '@leather-wallet/models'; import { SendCryptoAssetSelectors } from '@tests/selectors/send.selectors'; import { useField } from 'formik'; import { Box, Flex, Stack, styled } from 'leather-styles/jsx'; import { STX_DECIMALS, TOKEN_NAME_LENGTH } from '@shared/constants'; -import { Money } from '@shared/models/money.model'; import { useShowFieldError } from '@app/common/form-utils'; import { linearInterpolation } from '@app/common/utils'; diff --git a/src/app/pages/send/send-crypto-asset-form/components/send-fiat-value.tsx b/src/app/pages/send/send-crypto-asset-form/components/send-fiat-value.tsx index 5a111c1ad62..9e29bdd048d 100644 --- a/src/app/pages/send/send-crypto-asset-form/components/send-fiat-value.tsx +++ b/src/app/pages/send/send-crypto-asset-form/components/send-fiat-value.tsx @@ -1,11 +1,11 @@ import { useEffect, useState } from 'react'; -import { isNumber } from '@leather-wallet/utils'; +import type { Money } from '@leather-wallet/models'; +import { createMoneyFromDecimal, isNumber } from '@leather-wallet/utils'; import { useField } from 'formik'; import { styled } from 'leather-styles/jsx'; import { MarketData } from '@shared/models/market.model'; -import { Money, createMoneyFromDecimal } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote } from '@app/common/money/calculate-money'; import { i18nFormatCurrency } from '@app/common/money/format-money'; diff --git a/src/app/pages/send/send-crypto-asset-form/components/send-max-button.tsx b/src/app/pages/send/send-crypto-asset-form/components/send-max-button.tsx index 344d9f8e0df..40ad1dc5bcb 100644 --- a/src/app/pages/send/send-crypto-asset-form/components/send-max-button.tsx +++ b/src/app/pages/send/send-crypto-asset-form/components/send-max-button.tsx @@ -1,11 +1,10 @@ import { useCallback } from 'react'; +import type { Money } from '@leather-wallet/models'; import { SendCryptoAssetSelectors } from '@tests/selectors/send.selectors'; import { useField } from 'formik'; import { Box } from 'leather-styles/jsx'; -import { Money } from '@shared/models/money.model'; - import { useAnalytics } from '@app/common/hooks/analytics/use-analytics'; import { useToast } from '@app/features/toasts/use-toast'; import { Link } from '@app/ui/components/link/link'; diff --git a/src/app/pages/send/send-crypto-asset-form/family/bitcoin/components/bitcoin-send-max-button.tsx b/src/app/pages/send/send-crypto-asset-form/family/bitcoin/components/bitcoin-send-max-button.tsx index ca254bad780..bcff8aa0a26 100644 --- a/src/app/pages/send/send-crypto-asset-form/family/bitcoin/components/bitcoin-send-max-button.tsx +++ b/src/app/pages/send/send-crypto-asset-form/family/bitcoin/components/bitcoin-send-max-button.tsx @@ -1,8 +1,7 @@ +import type { Money } from '@leather-wallet/models'; import { SendCryptoAssetSelectors } from '@tests/selectors/send.selectors'; import { Box } from 'leather-styles/jsx'; -import { Money } from '@shared/models/money.model'; - import { Link } from '@app/ui/components/link/link'; import { BasicTooltip } from '@app/ui/components/tooltip/basic-tooltip'; diff --git a/src/app/pages/send/send-crypto-asset-form/family/bitcoin/hooks/use-send-max.tsx b/src/app/pages/send/send-crypto-asset-form/family/bitcoin/hooks/use-send-max.tsx index 1f9de4221b2..0bc7cb30c35 100644 --- a/src/app/pages/send/send-crypto-asset-form/family/bitcoin/hooks/use-send-max.tsx +++ b/src/app/pages/send/send-crypto-asset-form/family/bitcoin/hooks/use-send-max.tsx @@ -1,9 +1,8 @@ import { useCallback } from 'react'; +import type { Money } from '@leather-wallet/models'; import { useField } from 'formik'; -import { Money } from '@shared/models/money.model'; - import { useAnalytics } from '@app/common/hooks/analytics/use-analytics'; import { useToast } from '@app/features/toasts/use-toast'; diff --git a/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-choose-fee.tsx b/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-choose-fee.tsx index 9c4dd38e274..01ced28a3fc 100644 --- a/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-choose-fee.tsx +++ b/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-choose-fee.tsx @@ -2,12 +2,12 @@ import { useState } from 'react'; import { Outlet, useLocation, useNavigate } from 'react-router-dom'; import type { UtxoResponseItem } from '@leather-wallet/query'; +import { createMoney } from '@leather-wallet/utils'; import { Stack } from 'leather-styles/jsx'; import get from 'lodash.get'; import { logger } from '@shared/logger'; import { BtcFeeType } from '@shared/models/fees/bitcoin-fees.model'; -import { createMoney } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { formFeeRowValue } from '@app/common/send/utils'; diff --git a/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-send-form-confirmation.tsx b/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-send-form-confirmation.tsx index 7372b141b6e..1d46bf8c47a 100644 --- a/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-send-form-confirmation.tsx +++ b/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-send-form-confirmation.tsx @@ -1,12 +1,12 @@ import { useLocation, useNavigate } from 'react-router-dom'; import { useBitcoinBroadcastTransaction } from '@leather-wallet/query'; +import { createMoney } from '@leather-wallet/utils'; import { SendCryptoAssetSelectors } from '@tests/selectors/send.selectors'; import { Stack } from 'leather-styles/jsx'; import get from 'lodash.get'; import { decodeBitcoinTx } from '@shared/crypto/bitcoin/bitcoin.utils'; -import { createMoney } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { useAnalytics } from '@app/common/hooks/analytics/use-analytics'; diff --git a/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-send-form.tsx b/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-send-form.tsx index 060f7b33a81..91a2bcbe461 100644 --- a/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-send-form.tsx +++ b/src/app/pages/send/send-crypto-asset-form/form/brc20/brc20-send-form.tsx @@ -1,12 +1,12 @@ import { Outlet, useLocation } from 'react-router-dom'; +import type { Money } from '@leather-wallet/models'; import { SendCryptoAssetSelectors } from '@tests/selectors/send.selectors'; import { Form, Formik } from 'formik'; import { Box, styled } from 'leather-styles/jsx'; import get from 'lodash.get'; import type { MarketData } from '@shared/models/market.model'; -import type { Money } from '@shared/models/money.model'; import { convertAmountToBaseUnit } from '@app/common/money/calculate-money'; import { formatMoney } from '@app/common/money/format-money'; diff --git a/src/app/pages/send/send-crypto-asset-form/form/brc20/use-brc20-send-form.tsx b/src/app/pages/send/send-crypto-asset-form/form/brc20/use-brc20-send-form.tsx index b74e06ad09f..504438f954c 100644 --- a/src/app/pages/send/send-crypto-asset-form/form/brc20/use-brc20-send-form.tsx +++ b/src/app/pages/send/send-crypto-asset-form/form/brc20/use-brc20-send-form.tsx @@ -1,12 +1,12 @@ import { useRef } from 'react'; import { useNavigate } from 'react-router-dom'; +import type { Money } from '@leather-wallet/models'; import { noop } from '@leather-wallet/utils'; import { FormikHelpers, FormikProps } from 'formik'; import * as yup from 'yup'; import { logger } from '@shared/logger'; -import { type Money } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { useOnMount } from '@app/common/hooks/use-on-mount'; diff --git a/src/app/pages/send/send-crypto-asset-form/form/btc/btc-send-form-confirmation.tsx b/src/app/pages/send/send-crypto-asset-form/form/btc/btc-send-form-confirmation.tsx index a85a5340425..6a0cca1f69e 100644 --- a/src/app/pages/send/send-crypto-asset-form/form/btc/btc-send-form-confirmation.tsx +++ b/src/app/pages/send/send-crypto-asset-form/form/btc/btc-send-form-confirmation.tsx @@ -5,7 +5,7 @@ import { useBitcoinBroadcastTransaction, useCryptoCurrencyMarketDataMeanAverage, } from '@leather-wallet/query'; -import { satToBtc } from '@leather-wallet/utils'; +import { createMoney, createMoneyFromDecimal, satToBtc } from '@leather-wallet/utils'; import { hexToBytes } from '@noble/hashes/utils'; import * as btc from '@scure/btc-signer'; import { SendCryptoAssetSelectors } from '@tests/selectors/send.selectors'; @@ -15,7 +15,6 @@ import get from 'lodash.get'; import { decodeBitcoinTx } from '@shared/crypto/bitcoin/bitcoin.utils'; import { CryptoCurrencies } from '@shared/models/currencies.model'; -import { createMoney, createMoneyFromDecimal } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { useAnalytics } from '@app/common/hooks/analytics/use-analytics'; diff --git a/src/app/pages/send/send-crypto-asset-form/form/btc/use-btc-choose-fee.tsx b/src/app/pages/send/send-crypto-asset-form/form/btc/use-btc-choose-fee.tsx index 8d49c23d9bd..b6696d98f5c 100644 --- a/src/app/pages/send/send-crypto-asset-form/form/btc/use-btc-choose-fee.tsx +++ b/src/app/pages/send/send-crypto-asset-form/form/btc/use-btc-choose-fee.tsx @@ -1,7 +1,6 @@ -import { btcToSat } from '@leather-wallet/utils'; +import { btcToSat, createMoney } from '@leather-wallet/utils'; import { logger } from '@shared/logger'; -import { createMoney } from '@shared/models/money.model'; import { formFeeRowValue } from '@app/common/send/utils'; import { useGenerateUnsignedNativeSegwitTx } from '@app/common/transactions/bitcoin/use-generate-bitcoin-tx'; diff --git a/src/app/pages/send/send-crypto-asset-form/form/stacks/stacks-common-send-form.tsx b/src/app/pages/send/send-crypto-asset-form/form/stacks/stacks-common-send-form.tsx index f70df55fab6..193f27ed14c 100644 --- a/src/app/pages/send/send-crypto-asset-form/form/stacks/stacks-common-send-form.tsx +++ b/src/app/pages/send/send-crypto-asset-form/form/stacks/stacks-common-send-form.tsx @@ -1,5 +1,6 @@ import { Outlet, useNavigate } from 'react-router-dom'; +import type { Money } from '@leather-wallet/models'; import { SendCryptoAssetSelectors } from '@tests/selectors/send.selectors'; import BigNumber from 'bignumber.js'; import { Form, Formik, FormikHelpers } from 'formik'; @@ -9,7 +10,6 @@ import { ObjectSchema } from 'yup'; import { HIGH_FEE_AMOUNT_STX, HIGH_FEE_WARNING_LEARN_MORE_URL_STX } from '@shared/constants'; import { Fees } from '@shared/models/fees/fees.model'; import { StacksSendFormValues } from '@shared/models/form.model'; -import { Money } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { formatMoney } from '@app/common/money/format-money'; diff --git a/src/app/pages/send/send-crypto-asset-form/form/stacks/use-stacks-common-send-form.tsx b/src/app/pages/send/send-crypto-asset-form/form/stacks/use-stacks-common-send-form.tsx index 25cdba02fd3..d6a4044615c 100644 --- a/src/app/pages/send/send-crypto-asset-form/form/stacks/use-stacks-common-send-form.tsx +++ b/src/app/pages/send/send-crypto-asset-form/form/stacks/use-stacks-common-send-form.tsx @@ -1,3 +1,4 @@ +import type { Money } from '@leather-wallet/models'; import { isEmpty } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; import { FormikHelpers } from 'formik'; @@ -6,7 +7,6 @@ import { HIGH_FEE_AMOUNT_STX } from '@shared/constants'; import { FormErrorMessages } from '@shared/error-messages'; import { FeeTypes } from '@shared/models/fees/fees.model'; import { StacksSendFormValues } from '@shared/models/form.model'; -import { Money } from '@shared/models/money.model'; import { stxMemoValidator } from '@app/common/validation/forms/memo-validators'; import { stxRecipientValidator } from '@app/common/validation/forms/recipient-validators'; diff --git a/src/app/pages/send/sent-summary/brc20-sent-summary.tsx b/src/app/pages/send/sent-summary/brc20-sent-summary.tsx index aa15215e525..5c8e73cadb9 100644 --- a/src/app/pages/send/sent-summary/brc20-sent-summary.tsx +++ b/src/app/pages/send/sent-summary/brc20-sent-summary.tsx @@ -1,10 +1,9 @@ import { useLocation, useNavigate } from 'react-router-dom'; +import { createMoney } from '@leather-wallet/utils'; import { HStack, Stack, styled } from 'leather-styles/jsx'; import get from 'lodash.get'; -import { createMoney } from '@shared/models/money.model'; - import { HandleOpenStacksTxLinkArgs } from '@app/common/hooks/use-stacks-explorer-link'; import { formatMoney } from '@app/common/money/format-money'; import { openInNewTab } from '@app/common/utils/open-in-new-tab'; diff --git a/src/app/pages/swap/components/swap-asset-dialog/components/swap-asset-list.tsx b/src/app/pages/swap/components/swap-asset-dialog/components/swap-asset-list.tsx index f7f81bbb501..384db6b427b 100644 --- a/src/app/pages/swap/components/swap-asset-dialog/components/swap-asset-list.tsx +++ b/src/app/pages/swap/components/swap-asset-dialog/components/swap-asset-list.tsx @@ -1,12 +1,11 @@ import { useNavigate, useParams } from 'react-router-dom'; -import { isUndefined } from '@leather-wallet/utils'; +import { createMoney, isUndefined } from '@leather-wallet/utils'; import { SwapSelectors } from '@tests/selectors/swap.selectors'; import BigNumber from 'bignumber.js'; import { useFormikContext } from 'formik'; import { Stack } from 'leather-styles/jsx'; -import { createMoney } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { convertAmountToFractionalUnit } from '@app/common/money/calculate-money'; diff --git a/src/app/pages/swap/components/swap-asset-select/components/swap-amount-field.tsx b/src/app/pages/swap/components/swap-asset-select/components/swap-amount-field.tsx index d5b7ccf366a..8574f05224e 100644 --- a/src/app/pages/swap/components/swap-asset-select/components/swap-amount-field.tsx +++ b/src/app/pages/swap/components/swap-asset-select/components/swap-amount-field.tsx @@ -1,13 +1,11 @@ import { ChangeEvent } from 'react'; -import { isDefined, isUndefined } from '@leather-wallet/utils'; +import { createMoney, isDefined, isUndefined } from '@leather-wallet/utils'; import { SwapSelectors } from '@tests/selectors/swap.selectors'; import BigNumber from 'bignumber.js'; import { useField, useFormikContext } from 'formik'; import { Stack, styled } from 'leather-styles/jsx'; -import { createMoney } from '@shared/models/money.model'; - import { useShowFieldError } from '@app/common/form-utils'; import { convertAmountToFractionalUnit } from '@app/common/money/calculate-money'; import { formatMoneyWithoutSymbol } from '@app/common/money/format-money'; diff --git a/src/app/pages/swap/components/swap-asset-select/swap-asset-select-base.tsx b/src/app/pages/swap/components/swap-asset-select/swap-asset-select-base.tsx index 021c97b4b5d..2382f7013fc 100644 --- a/src/app/pages/swap/components/swap-asset-select/swap-asset-select-base.tsx +++ b/src/app/pages/swap/components/swap-asset-select/swap-asset-select-base.tsx @@ -1,8 +1,7 @@ -import { isDefined, isUndefined } from '@leather-wallet/utils'; +import { createMoney, isDefined, isUndefined } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; import { useField, useFormikContext } from 'formik'; -import { createMoney } from '@shared/models/money.model'; import { RouteUrls } from '@shared/route-urls'; import { useShowFieldError } from '@app/common/form-utils'; diff --git a/src/app/pages/swap/components/swap-details/swap-details.tsx b/src/app/pages/swap/components/swap-details/swap-details.tsx index 47c0e627a1b..c4802703a33 100644 --- a/src/app/pages/swap/components/swap-details/swap-details.tsx +++ b/src/app/pages/swap/components/swap-details/swap-details.tsx @@ -1,10 +1,13 @@ -import { isDefined, isUndefined, microStxToStx } from '@leather-wallet/utils'; +import { + createMoneyFromDecimal, + isDefined, + isUndefined, + microStxToStx, +} from '@leather-wallet/utils'; import { SwapSelectors } from '@tests/selectors/swap.selectors'; import BigNumber from 'bignumber.js'; import { HStack, styled } from 'leather-styles/jsx'; -import { createMoneyFromDecimal } from '@shared/models/money.model'; - import { formatMoneyPadded } from '@app/common/money/format-money'; import { getEstimatedConfirmationTime } from '@app/common/transactions/stacks/transaction.utils'; import { SwapSubmissionData, useSwapContext } from '@app/pages/swap/swap.context'; diff --git a/src/app/pages/swap/hooks/use-swap-form.tsx b/src/app/pages/swap/hooks/use-swap-form.tsx index e01e395495f..15b62711cf5 100644 --- a/src/app/pages/swap/hooks/use-swap-form.tsx +++ b/src/app/pages/swap/hooks/use-swap-form.tsx @@ -1,10 +1,10 @@ +import { createMoney } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; import * as yup from 'yup'; import { FormErrorMessages } from '@shared/error-messages'; import { FeeTypes } from '@shared/models/fees/fees.model'; import { StacksTransactionFormValues } from '@shared/models/form.model'; -import { createMoney } from '@shared/models/money.model'; import { convertAmountToFractionalUnit } from '@app/common/money/calculate-money'; import type { SwapAsset } from '@app/query/common/alex-sdk/alex-sdk.hooks'; diff --git a/src/app/pages/swap/swap.utils.ts b/src/app/pages/swap/swap.utils.ts index 16b7a07cffe..b7bdbc7d845 100644 --- a/src/app/pages/swap/swap.utils.ts +++ b/src/app/pages/swap/swap.utils.ts @@ -1,7 +1,7 @@ -import { unitToFractionalUnit } from '@leather-wallet/utils'; +import type { Money } from '@leather-wallet/models'; +import { createMoney, unitToFractionalUnit } from '@leather-wallet/utils'; import type { MarketData } from '@shared/models/market.model'; -import { type Money, createMoney } from '@shared/models/money.model'; import { baseCurrencyAmountInQuote } from '@app/common/money/calculate-money'; import { isMoneyGreaterThanZero } from '@app/common/money/money.utils'; diff --git a/src/app/query/bitcoin/balance/bitcoin-contracts-balance.hooks.ts b/src/app/query/bitcoin/balance/bitcoin-contracts-balance.hooks.ts index 1df4b237456..c05b36dbac9 100644 --- a/src/app/query/bitcoin/balance/bitcoin-contracts-balance.hooks.ts +++ b/src/app/query/bitcoin/balance/bitcoin-contracts-balance.hooks.ts @@ -1,11 +1,9 @@ import { useMemo } from 'react'; import { useCalculateBitcoinFiatValue } from '@leather-wallet/query'; -import { isUndefined } from '@leather-wallet/utils'; +import { createMoney, isUndefined } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; -import { createMoney } from '@shared/models/money.model'; - import { i18nFormatCurrency } from '@app/common/money/format-money'; import { useBitcoinContractsBalanceQuery } from './bitcoin-contracts-balance.query'; diff --git a/src/app/query/bitcoin/balance/bitcoin-contracts-balance.query.ts b/src/app/query/bitcoin/balance/bitcoin-contracts-balance.query.ts index 36a112cdb3f..133ff336935 100644 --- a/src/app/query/bitcoin/balance/bitcoin-contracts-balance.query.ts +++ b/src/app/query/bitcoin/balance/bitcoin-contracts-balance.query.ts @@ -1,7 +1,6 @@ +import type { Money } from '@leather-wallet/models'; import { UseQueryResult, useQuery } from '@tanstack/react-query'; -import { Money } from '@shared/models/money.model'; - import { useBitcoinContracts } from '@app/common/hooks/use-bitcoin-contracts'; import { useCurrentAccountIndex } from '@app/store/accounts/account'; import { useCurrentNetwork } from '@app/store/networks/networks.selectors'; diff --git a/src/app/query/bitcoin/balance/btc-balance-native-segwit.hooks.ts b/src/app/query/bitcoin/balance/btc-balance-native-segwit.hooks.ts index 8a25cf5d8f4..fbb0c849a97 100644 --- a/src/app/query/bitcoin/balance/btc-balance-native-segwit.hooks.ts +++ b/src/app/query/bitcoin/balance/btc-balance-native-segwit.hooks.ts @@ -2,11 +2,9 @@ import { useMemo } from 'react'; import type { BtcCryptoAssetBalance, Money } from '@leather-wallet/models'; import { useNativeSegwitUtxosByAddress, useRunesEnabled } from '@leather-wallet/query'; -import { isUndefined, sumNumbers } from '@leather-wallet/utils'; +import { createMoney, isUndefined, sumNumbers } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; -import { createMoney } from '@shared/models/money.model'; - import { useCurrentAccountNativeSegwitIndexZeroSigner } from '@app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks'; function createBtcCryptoAssetBalance(balance: Money): BtcCryptoAssetBalance { diff --git a/src/app/query/bitcoin/ordinals/brc20/brc20-tokens.hooks.ts b/src/app/query/bitcoin/ordinals/brc20/brc20-tokens.hooks.ts index a61cfd72f34..dd80bb7d153 100644 --- a/src/app/query/bitcoin/ordinals/brc20/brc20-tokens.hooks.ts +++ b/src/app/query/bitcoin/ordinals/brc20/brc20-tokens.hooks.ts @@ -8,11 +8,10 @@ import { useGetBrc20TokensQuery, useOrdinalsbotClient, } from '@leather-wallet/query'; -import { unitToFractionalUnit } from '@leather-wallet/utils'; +import { createMoney, unitToFractionalUnit } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; import { createMarketData, createMarketPair } from '@shared/models/market.model'; -import { createMoney } from '@shared/models/money.model'; import { createCryptoAssetBalance } from '@app/query/common/models'; import { isFetchedWithSuccess } from '@app/query/query-config'; diff --git a/src/app/query/common/alex-sdk/alex-sdk.hooks.ts b/src/app/query/common/alex-sdk/alex-sdk.hooks.ts index 7a27136f85f..a4ed43795a7 100644 --- a/src/app/query/common/alex-sdk/alex-sdk.hooks.ts +++ b/src/app/query/common/alex-sdk/alex-sdk.hooks.ts @@ -1,12 +1,12 @@ import { useCallback } from 'react'; -import { isDefined } from '@leather-wallet/utils'; +import type { Money } from '@leather-wallet/models'; +import { createMoney, isDefined } from '@leather-wallet/utils'; import { Currency, type TokenInfo } from 'alex-sdk'; import BigNumber from 'bignumber.js'; import { logger } from '@shared/logger'; import { type MarketData, createMarketData, createMarketPair } from '@shared/models/market.model'; -import { type Money, createMoney } from '@shared/models/money.model'; import { sortAssetsByName } from '@app/common/asset-utils'; import { convertAmountToFractionalUnit } from '@app/common/money/calculate-money'; diff --git a/src/app/query/stacks/balance/account-balance.hooks.ts b/src/app/query/stacks/balance/account-balance.hooks.ts index 0c85fa37011..1df67f702fc 100644 --- a/src/app/query/stacks/balance/account-balance.hooks.ts +++ b/src/app/query/stacks/balance/account-balance.hooks.ts @@ -1,8 +1,8 @@ -import type { StxCryptoAssetBalance } from '@leather-wallet/models'; +import type { Money, StxCryptoAssetBalance } from '@leather-wallet/models'; +import { createMoney } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; import { AccountBalanceStxKeys, type AddressBalanceResponse } from '@shared/models/account.model'; -import { Money, createMoney } from '@shared/models/money.model'; import { subtractMoney, sumMoney } from '@app/common/money/calculate-money'; import { useCurrentStacksAccountAddress } from '@app/store/accounts/blockchain/stacks/stacks-account.hooks'; diff --git a/src/app/query/stacks/fees/fees.hooks.ts b/src/app/query/stacks/fees/fees.hooks.ts index 7ef7ef5f680..51cef40010c 100644 --- a/src/app/query/stacks/fees/fees.hooks.ts +++ b/src/app/query/stacks/fees/fees.hooks.ts @@ -1,10 +1,11 @@ import { useMemo } from 'react'; +import type { Money } from '@leather-wallet/models'; +import { createMoney } from '@leather-wallet/utils'; import { StacksTransaction } from '@stacks/transactions'; import { FeeCalculationTypes, Fees } from '@shared/models/fees/fees.model'; import { StacksFeeEstimate, StacksTxFeeEstimation } from '@shared/models/fees/stacks-fees.model'; -import { Money, createMoney } from '@shared/models/money.model'; import { useConfigFeeEstimationsMaxEnabled, diff --git a/src/app/query/stacks/fees/fees.utils.ts b/src/app/query/stacks/fees/fees.utils.ts index 69e950b82e2..748b6e38615 100644 --- a/src/app/query/stacks/fees/fees.utils.ts +++ b/src/app/query/stacks/fees/fees.utils.ts @@ -1,3 +1,5 @@ +import type { Money } from '@leather-wallet/models'; +import { createMoney } from '@leather-wallet/utils'; import { bytesToHex } from '@stacks/common'; import { StacksTransaction, serializePayload } from '@stacks/transactions'; import { BigNumber } from 'bignumber.js'; @@ -9,7 +11,6 @@ import { StacksFeeEstimate, StacksTxFeeEstimation, } from '@shared/models/fees/stacks-fees.model'; -import { Money, createMoney } from '@shared/models/money.model'; const defaultFeesMaxValues = [500000, 750000, 2000000]; const defaultFeesMinValues = [2500, 3000, 3500]; diff --git a/src/app/query/stacks/mempool/mempool.utils.ts b/src/app/query/stacks/mempool/mempool.utils.ts index dc3905f75a5..163cdd46e83 100644 --- a/src/app/query/stacks/mempool/mempool.utils.ts +++ b/src/app/query/stacks/mempool/mempool.utils.ts @@ -1,12 +1,10 @@ -import { sumNumbers } from '@leather-wallet/utils'; +import { createMoney, sumNumbers } from '@leather-wallet/utils'; import type { MempoolTokenTransferTransaction, MempoolTransaction, Transaction, } from '@stacks/stacks-blockchain-api-types'; -import { createMoney } from '@shared/models/money.model'; - type PendingTransactionType = 'inbound' | 'outbound'; function getInboundPendingTxs( diff --git a/src/app/query/stacks/stx20/stx20-tokens.hooks.ts b/src/app/query/stacks/stx20/stx20-tokens.hooks.ts index 7f054caabb5..870497bcf43 100644 --- a/src/app/query/stacks/stx20/stx20-tokens.hooks.ts +++ b/src/app/query/stacks/stx20/stx20-tokens.hooks.ts @@ -1,8 +1,7 @@ import type { Stx20CryptoAssetInfo } from '@leather-wallet/models'; +import { createMoney } from '@leather-wallet/utils'; import BigNumber from 'bignumber.js'; -import { createMoney } from '@shared/models/money.model'; - import { createCryptoAssetBalance } from '@app/query/common/models'; import type { Stx20Balance } from '../stacks-client'; diff --git a/src/app/query/stacks/token-metadata/fungible-tokens/fungible-token-metadata.query.ts b/src/app/query/stacks/token-metadata/fungible-tokens/fungible-token-metadata.query.ts index 66c90d10392..a0805207622 100644 --- a/src/app/query/stacks/token-metadata/fungible-tokens/fungible-token-metadata.query.ts +++ b/src/app/query/stacks/token-metadata/fungible-tokens/fungible-token-metadata.query.ts @@ -1,9 +1,9 @@ +import { createMoney } from '@leather-wallet/utils'; import { useQueries, useQuery } from '@tanstack/react-query'; import BigNumber from 'bignumber.js'; import PQueue from 'p-queue'; import type { AddressBalanceResponse } from '@shared/models/account.model'; -import { createMoney } from '@shared/models/money.model'; import { getStacksContractIdStringParts } from '@app/common/stacks-utils'; import { getPrincipalFromContractId, getTicker } from '@app/common/utils'; diff --git a/src/shared/models/currencies.model.ts b/src/shared/models/currencies.model.ts index ffbdfdf0045..e49b7ad0ff7 100644 --- a/src/shared/models/currencies.model.ts +++ b/src/shared/models/currencies.model.ts @@ -3,5 +3,3 @@ import type { LiteralUnion } from 'leather-styles/types'; export type CryptoCurrencies = LiteralUnion<'BTC' | 'STX', string>; export type FiatCurrencies = 'USD' | string; - -export type Currencies = CryptoCurrencies | FiatCurrencies; diff --git a/src/shared/models/fees/stacks-fees.model.ts b/src/shared/models/fees/stacks-fees.model.ts index ee15f390190..39a20e09e85 100644 --- a/src/shared/models/fees/stacks-fees.model.ts +++ b/src/shared/models/fees/stacks-fees.model.ts @@ -1,4 +1,4 @@ -import { Money } from '../money.model'; +import type { Money } from '@leather-wallet/models'; export interface StacksFeeEstimate { fee: Money; diff --git a/src/shared/models/form.model.ts b/src/shared/models/form.model.ts index 2555bfa5b07..f1dea13ff90 100644 --- a/src/shared/models/form.model.ts +++ b/src/shared/models/form.model.ts @@ -1,6 +1,4 @@ -import type { Inscription } from '@leather-wallet/models'; - -import type { Money } from './money.model'; +import type { Inscription, Money } from '@leather-wallet/models'; export interface BitcoinSendFormValues { amount: number | string; diff --git a/src/shared/models/market.model.ts b/src/shared/models/market.model.ts index 9d4d11e8772..fc8102257ac 100644 --- a/src/shared/models/market.model.ts +++ b/src/shared/models/market.model.ts @@ -1,5 +1,6 @@ +import type { Money } from '@leather-wallet/models'; + import { CryptoCurrencies, FiatCurrencies } from './currencies.model'; -import type { Money } from './money.model'; interface MarketPair { readonly base: CryptoCurrencies; diff --git a/src/shared/models/money.model.ts b/src/shared/models/money.model.ts deleted file mode 100644 index e9293be4dea..00000000000 --- a/src/shared/models/money.model.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { isBigInt, isUndefined } from '@leather-wallet/utils'; -import BigNumber from 'bignumber.js'; - -import { BTC_DECIMALS, STX_DECIMALS } from '@shared/constants'; - -import type { Currencies } from './currencies.model'; - -export type NumType = BigNumber | bigint | number; - -export interface Money { - readonly amount: BigNumber; - readonly symbol: Currencies; - readonly decimals: number; -} - -// Units of `Money` should be declared in their smallest unit. Similar to -// Rosetta, we model currencies with their respective resolution -const currencyDecimalsMap = { - BTC: BTC_DECIMALS, - STX: STX_DECIMALS, - USD: 2, -} as const; - -type KnownCurrencyDecimals = keyof typeof currencyDecimalsMap; - -function isResolutionOfCurrencyKnown(symbol: Currencies): symbol is KnownCurrencyDecimals { - return symbol in currencyDecimalsMap; -} - -function getDecimalsOfSymbolIfKnown(symbol: Currencies) { - if (isResolutionOfCurrencyKnown(symbol)) return currencyDecimalsMap[symbol]; - return null; -} - -function throwWhenDecimalUnknown( - symbol: Currencies, - decimals?: number -): asserts decimals is number { - if (isUndefined(decimals) && isUndefined(getDecimalsOfSymbolIfKnown(symbol))) - throw new Error(`Resolution of currency ${symbol} is unknown, must be described`); -} - -/** - * @param value Amount described in currency's primary unit - * @param symbol Identifying letter code, e.g. EUR - * @param resolution Optional, required if value not known at build-time - */ -export function createMoneyFromDecimal( - value: NumType, - symbol: Currencies, - resolution?: number -): Money { - throwWhenDecimalUnknown(symbol, resolution); - const decimals = getDecimalsOfSymbolIfKnown(symbol) ?? resolution; - const amount = new BigNumber(isBigInt(value) ? value.toString() : value).shiftedBy(decimals); - return Object.freeze({ amount, symbol, decimals }); -} - -/** - * @param value Amount described in currency's fractional base unit, e.g. cents for USD amounts - * @param symbol Identifying letter code, e.g. EUR - * @param resolution Optional, required if value not known at build-time - */ -export function createMoney(value: NumType, symbol: Currencies, resolution?: number): Money { - throwWhenDecimalUnknown(symbol, resolution); - const decimals = getDecimalsOfSymbolIfKnown(symbol) ?? resolution; - const amount = new BigNumber(isBigInt(value) ? value.toString() : value); - return Object.freeze({ amount, symbol, decimals }); -}