diff --git a/src/features/payment/api/paymentApi.ts b/src/features/payment/api/paymentApi.ts index 91ee054..ddf267d 100644 --- a/src/features/payment/api/paymentApi.ts +++ b/src/features/payment/api/paymentApi.ts @@ -62,6 +62,10 @@ export function getPaymentQuote(usdtAmount: number): Promise { return doPaymentRequest(`/payment/quote?usdt_amount=${usdtAmount}`, {}, true) } +export function getPaymentQuoteByRub(rubAmount: number): Promise { + return doPaymentRequest(`/payment/quote/rub?total_rub=${rubAmount}`, {}, true) +} + export interface CreateOrderPayload { usdt_amount: number usdt_exchange_rate: number diff --git a/src/features/payment/hooks/usePaymentQuoteByRub.ts b/src/features/payment/hooks/usePaymentQuoteByRub.ts new file mode 100644 index 0000000..1a3e2d7 --- /dev/null +++ b/src/features/payment/hooks/usePaymentQuoteByRub.ts @@ -0,0 +1,13 @@ +import { useQuery } from '@tanstack/react-query' +import { getPaymentQuoteByRub } from '../api/paymentApi' +import type { PaymentQuote } from '../api/paymentApi' + +export function usePaymentQuoteByRub(rubAmount: number) { + return useQuery({ + queryKey: ['payment', 'quote', 'rub', rubAmount], + queryFn: () => getPaymentQuoteByRub(rubAmount), + enabled: rubAmount > 0, + staleTime: 30_000, + retry: false, + }) +} diff --git a/src/features/payment/index.ts b/src/features/payment/index.ts index 5481ea6..b2db366 100644 --- a/src/features/payment/index.ts +++ b/src/features/payment/index.ts @@ -1,4 +1,5 @@ export { usePaymentConfig } from './hooks/usePaymentConfig' export { usePaymentQuote } from './hooks/usePaymentQuote' +export { usePaymentQuoteByRub } from './hooks/usePaymentQuoteByRub' export { useCreateOrder } from './hooks/useCreateOrder' export type { PaymentConfig, PaymentQuote, CreateOrderPayload, OrderResult } from './api/paymentApi' diff --git a/src/widgets/converter-page/ui/ConverterSection.tsx b/src/widgets/converter-page/ui/ConverterSection.tsx index 7f9984c..660af4f 100644 --- a/src/widgets/converter-page/ui/ConverterSection.tsx +++ b/src/widgets/converter-page/ui/ConverterSection.tsx @@ -1,6 +1,7 @@ +import { useState } from 'react' import { useConverter, progressPercent } from '@widgets/currency-converter' import { useDebounce } from '@shared/lib/hooks/useDebounce' -import { usePaymentQuote, usePaymentConfig, useCreateOrder } from '@features/payment' +import { usePaymentQuote, usePaymentQuoteByRub, usePaymentConfig, useCreateOrder } from '@features/payment' import { CommissionPanel } from './CommissionPanel' import { AgreementCheck } from './AgreementCheck' import styles from './ConverterSection.module.css' @@ -8,31 +9,69 @@ import { GAS_PRICE } from '@shared/config/constants' export function ConverterSection() { const c = useConverter({ usdtRate: 0 }) + const [direction, setDirection] = useState<'usdt_to_rub' | 'rub_to_usdt'>('usdt_to_rub') + const [rubInputVal, setRubInputVal] = useState('1000') - const debouncedUsdt = useDebounce(c.numRub, 400) - const { data: quote, isError: quoteError } = usePaymentQuote(debouncedUsdt) const { data: config } = usePaymentConfig() const configUsdtRate = Number(config?.usdt_exchange_rate) || 0 const gasPriceRub = Number(config?.gas_fee) || GAS_PRICE - const rubTotal = quote?.total_price ?? '' - const rubTotalNum = Number(rubTotal) || 0 + const isUsdtToRub = direction === 'usdt_to_rub' - const commission = Number(quote?.service_fee) || 0 - const effectiveRate = c.numRub > 0 ? rubTotalNum / c.numRub : 0 + const debouncedUsdt = useDebounce(c.numRub, 400) + const { data: quoteUsdtToRub, isError: quoteError } = usePaymentQuote(isUsdtToRub ? debouncedUsdt : 0) + + const numRubInput = Number.parseFloat(rubInputVal) || 0 + const debouncedRub = useDebounce(numRubInput, 400) + const { data: quoteRubToUsdt, isError: quoteRubError } = usePaymentQuoteByRub(!isUsdtToRub ? debouncedRub : 0) + + function updateRubInput(raw: string) { + setRubInputVal(raw.replace(/[^0-9.]/g, '')) + } + + function handleSwap() { + setDirection(d => d === 'usdt_to_rub' ? 'rub_to_usdt' : 'usdt_to_rub') + } + + const rubTotal = quoteUsdtToRub?.total_price ?? '' + const rubTotalNum = Number(rubTotal) || 0 + const usdtFromRub = quoteRubToUsdt?.usdt_amount ?? '' + const usdtFromRubNum = Number(usdtFromRub) || 0 + + const commission = isUsdtToRub + ? Number(quoteUsdtToRub?.service_fee) || 0 + : Number(quoteRubToUsdt?.service_fee) || 0 + + const displayRubAmount = isUsdtToRub ? rubTotalNum : numRubInput + const effectiveRate = isUsdtToRub + ? (c.numRub > 0 ? rubTotalNum / c.numRub : 0) + : (usdtFromRubNum > 0 ? numRubInput / usdtFromRubNum : 0) const { mutate: submitOrder, isPending } = useCreateOrder() function handlePay() { - submitOrder({ - usdt_amount: c.numRub, - usdt_exchange_rate: 1, - gas_fee: 1, - total_price: Number(rubTotal) || 0, - }) + if (isUsdtToRub) { + submitOrder({ + usdt_amount: c.numRub, + usdt_exchange_rate: 1, + gas_fee: 1, + total_price: Number(rubTotal) || 0, + }) + } else { + submitOrder({ + usdt_amount: usdtFromRubNum, + usdt_exchange_rate: 1, + gas_fee: 1, + total_price: numRubInput, + }) + } } + const isPayDisabled = isUsdtToRub + ? (!rubTotal || isPending || !c.agreed) + : (!usdtFromRub || isPending || !c.agreed) + return (
@@ -63,62 +102,120 @@ export function ConverterSection() {
-
-
Конвертируете
-
- c.updateRub(e.target.value)} - placeholder="0" - inputMode="decimal" - /> -
- - USDT + {isUsdtToRub ? ( + <> +
+
Конвертируете
+
+ c.updateRub(e.target.value)} + placeholder="0" + inputMode="decimal" + /> +
+ + USDT +
+
+ {quoteError && ( +
+ Сумма слишком большая и превышает 600 000 ₽ +
+ )}
-
- {quoteError && ( -
- Сумма слишком большая и превышает 600 000 ₽ -
- )} -
-
- -
- -
-
Платите
-
- -
- - RUB +
+
-
-
+ +
+
Платите
+
+ +
+ + RUB +
+
+
+ + ) : ( + <> +
+
Конвертируете
+
+ updateRubInput(e.target.value)} + placeholder="0" + inputMode="decimal" + /> +
+ + RUB +
+
+ {quoteRubError && ( +
+ Сумма слишком большая и превышает 600 000 ₽ +
+ )} +
+ +
+ +
+ +
+
Платите
+
+ +
+ + USDT +
+
+
+ + )}
@@ -132,7 +229,7 @@ export function ConverterSection() { type="button" className={styles.payBtn} onClick={handlePay} - disabled={!rubTotal || isPending || !c.agreed} + disabled={isPayDisabled} > {isPending ? 'Обработка...' : 'Оплатить'} diff --git a/src/widgets/currency-converter/ui/Converter.tsx b/src/widgets/currency-converter/ui/Converter.tsx index da96604..a700bed 100644 --- a/src/widgets/currency-converter/ui/Converter.tsx +++ b/src/widgets/currency-converter/ui/Converter.tsx @@ -1,7 +1,8 @@ +import { useState } from 'react' import { GAS_PRICE, USDT_RATE } from '@shared/config/constants' import { useConverter } from '../model/useConverter' import { progressPercent } from '../model/tiers' -import { usePaymentConfig, usePaymentQuote } from '@features/payment' +import { usePaymentConfig, usePaymentQuote, usePaymentQuoteByRub } from '@features/payment' import { useDebounce } from '@shared/lib/hooks/useDebounce' import { CommissionTable } from './CommissionTable' import styles from './Converter.module.css' @@ -11,20 +12,44 @@ import { ROUTES } from '@shared/config/routes' export function Converter() { const { data: config } = usePaymentConfig() + const [direction, setDirection] = useState<'usdt_to_rub' | 'rub_to_usdt'>('usdt_to_rub') + const [rubInputVal, setRubInputVal] = useState('1000') const configUsdtRate = Number(config?.usdt_exchange_rate) || USDT_RATE const gasPriceRub = Number(config?.gas_fee) || GAS_PRICE const c = useConverter({ usdtRate: configUsdtRate }) + const isUsdtToRub = direction === 'usdt_to_rub' + const debouncedUsdt = useDebounce(c.numRub, 400) - const { data: quote } = usePaymentQuote(debouncedUsdt) + const { data: quoteUsdtToRub } = usePaymentQuote(isUsdtToRub ? debouncedUsdt : 0) - const rubTotal = quote?.total_price ?? '' + const numRubInput = Number.parseFloat(rubInputVal) || 0 + const debouncedRub = useDebounce(numRubInput, 400) + const { data: quoteRubToUsdt } = usePaymentQuoteByRub(!isUsdtToRub ? debouncedRub : 0) + + function updateRubInput(raw: string) { + setRubInputVal(raw.replace(/[^0-9.]/g, '')) + } + + function handleSwap() { + setDirection(d => d === 'usdt_to_rub' ? 'rub_to_usdt' : 'usdt_to_rub') + } + + const rubTotal = quoteUsdtToRub?.total_price ?? '' const rubTotalNum = Number(rubTotal) || 0 + const usdtFromRub = quoteRubToUsdt?.usdt_amount ?? '' + const usdtFromRubNum = Number(usdtFromRub) || 0 - const commission = Number(quote?.service_fee) || 0 - const effectiveRate = c.numRub > 0 ? rubTotalNum / c.numRub : 0 + const commission = isUsdtToRub + ? Number(quoteUsdtToRub?.service_fee) || 0 + : Number(quoteRubToUsdt?.service_fee) || 0 + + const displayRubAmount = isUsdtToRub ? rubTotalNum : numRubInput + const effectiveRate = isUsdtToRub + ? (c.numRub > 0 ? rubTotalNum / c.numRub : 0) + : (usdtFromRubNum > 0 ? numRubInput / usdtFromRubNum : 0) return (
@@ -57,52 +82,102 @@ export function Converter() {
-
-
- c.updateRub(e.target.value)} - placeholder="0" - inputMode="decimal" - /> -
- USDT + {isUsdtToRub ? ( + <> +
+
+ c.updateRub(e.target.value)} + placeholder="0" + inputMode="decimal" + /> +
+ USDT +
+
-
-
-
- -
- -
-
- -
- RUB +
+
-
-
+ +
+
+ +
+ RUB +
+
+
+ + ) : ( + <> +
+
+ updateRubInput(e.target.value)} + placeholder="0" + inputMode="decimal" + /> +
+ RUB +
+
+
+ +
+ +
+ +
+
+ +
+ USDT +
+
+
+ + )}
diff --git a/src/widgets/swap-form/model/useSwapForm.ts b/src/widgets/swap-form/model/useSwapForm.ts index 5815b23..6dd9755 100644 --- a/src/widgets/swap-form/model/useSwapForm.ts +++ b/src/widgets/swap-form/model/useSwapForm.ts @@ -106,7 +106,7 @@ export function buildTokensFromBalance(data: WalletBalanceData): Token[] { const RATE = 82.2578 export function useSwapForm() { - const [fromAmount, setFromAmountRaw] = useState('0.25') + const [fromAmount, setFromAmountRaw] = useState('0') const [fromToken, setFromToken] = useState(TOKENS.SOL) const [toToken, setToToken] = useState(TOKENS.USDC) const [isRefreshing, setIsRefreshing] = useState(false) diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index 7fd2d26..f7a24ca 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/main.tsx","./src/vite-env.d.ts","./src/app/app.tsx","./src/app/providers/guestroute.tsx","./src/app/providers/protectedroute.tsx","./src/app/providers/queryprovider.tsx","./src/app/providers/routerprovider.tsx","./src/app/providers/scrolltotop.tsx","./src/app/providers/index.ts","./src/features/auth/index.ts","./src/features/auth/api/profileapi.ts","./src/features/auth/api/registrationapi.ts","./src/features/auth/hooks/useauth.ts","./src/features/auth/hooks/useisauthenticated.ts","./src/features/auth/hooks/useme.ts","./src/features/auth/hooks/useuploadavatar.ts","./src/features/kyc/api/kycapi.ts","./src/features/payment/index.ts","./src/features/payment/api/paymentapi.ts","./src/features/payment/hooks/usecreateorder.ts","./src/features/payment/hooks/usepaymentconfig.ts","./src/features/payment/hooks/usepaymentquote.ts","./src/features/wallet/index.ts","./src/features/wallet/api/walletapi.ts","./src/features/wallet/model/usewalletdata.ts","./src/pages/bridge/index.ts","./src/pages/bridge/ui/bridgepage.tsx","./src/pages/converter/index.ts","./src/pages/converter/ui/converterpage.tsx","./src/pages/home/index.ts","./src/pages/home/ui/homepage.tsx","./src/pages/kyc/index.ts","./src/pages/kyc/ui/kycpage.tsx","./src/pages/login/index.ts","./src/pages/login/ui/loginpage.tsx","./src/pages/profile/index.ts","./src/pages/profile/ui/profilepage.tsx","./src/pages/register/index.ts","./src/pages/register/ui/registerpage.tsx","./src/pages/seed-phrase/index.ts","./src/pages/seed-phrase/ui/seedphrasepage.tsx","./src/pages/swap/index.ts","./src/pages/swap/ui/swappage.tsx","./src/pages/wallet/index.ts","./src/pages/wallet/ui/walletpage.tsx","./src/shared/api/base.ts","./src/shared/api/csrf.ts","./src/shared/api/tokenstore.ts","./src/shared/api/types.ts","./src/shared/assets/coins/index.ts","./src/shared/config/constants.ts","./src/shared/config/env.ts","./src/shared/config/routes.ts","./src/shared/lib/hooks/usedebounce.ts","./src/shared/lib/hooks/uselocalstorage.ts","./src/shared/lib/utils/cn.ts","./src/shared/lib/utils/truncatedecimals.ts","./src/shared/types/index.ts","./src/shared/ui/index.ts","./src/shared/ui/button/button.tsx","./src/shared/ui/button/index.ts","./src/shared/ui/formfield/formfield.tsx","./src/shared/ui/formfield/index.ts","./src/shared/ui/notification/notification.tsx","./src/shared/ui/notification/index.ts","./src/shared/ui/pill/pill.tsx","./src/shared/ui/pill/index.ts","./src/shared/ui/primarybutton/primarybutton.tsx","./src/shared/ui/primarybutton/index.ts","./src/shared/ui/title/title.tsx","./src/shared/ui/tokenicon/tokenicon.tsx","./src/shared/ui/tokenicon/index.ts","./src/widgets/about/index.ts","./src/widgets/about/ui/about.tsx","./src/widgets/balance-card/index.ts","./src/widgets/balance-card/ui/balancecard.tsx","./src/widgets/bridge-form/index.ts","./src/widgets/bridge-form/ui/bridgeform.tsx","./src/widgets/bridge-form/ui/networkselect.tsx","./src/widgets/converter-page/index.ts","./src/widgets/converter-page/ui/agreementcheck.tsx","./src/widgets/converter-page/ui/commissionpanel.tsx","./src/widgets/converter-page/ui/convertersection.tsx","./src/widgets/currency-converter/index.ts","./src/widgets/currency-converter/model/tiers.ts","./src/widgets/currency-converter/model/useconverter.ts","./src/widgets/currency-converter/ui/agreementcheckbox.tsx","./src/widgets/currency-converter/ui/commissiontable.tsx","./src/widgets/currency-converter/ui/converter.tsx","./src/widgets/currency-converter/ui/tiers.tsx","./src/widgets/footer/index.ts","./src/widgets/footer/ui/footer.tsx","./src/widgets/header/index.ts","./src/widgets/header/ui/header.tsx","./src/widgets/hero/index.ts","./src/widgets/hero/lib/usecountdown.ts","./src/widgets/hero/ui/conversionflow.tsx","./src/widgets/hero/ui/countdown.tsx","./src/widgets/hero/ui/exchangecard.tsx","./src/widgets/hero/ui/hero.tsx","./src/widgets/kyc-verification/index.ts","./src/widgets/kyc-verification/model/usekyc.ts","./src/widgets/kyc-verification/ui/kycmodal.tsx","./src/widgets/kyc-verification/ui/kycwidget.tsx","./src/widgets/login-form/index.ts","./src/widgets/login-form/model/useloginform.ts","./src/widgets/login-form/ui/loginform.tsx","./src/widgets/networks-table/index.ts","./src/widgets/networks-table/model/networks.ts","./src/widgets/networks-table/ui/networkstable.tsx","./src/widgets/profile/index.ts","./src/widgets/profile/ui/avatarcropmodal.tsx","./src/widgets/profile/ui/profileavatar.tsx","./src/widgets/profile/ui/profilesection.tsx","./src/widgets/profile/ui/getcroppedimg.ts","./src/widgets/receive-modal/index.ts","./src/widgets/receive-modal/ui/receivemodal.tsx","./src/widgets/register-form/index.ts","./src/widgets/register-form/model/useregisterform.ts","./src/widgets/register-form/ui/registerform.tsx","./src/widgets/seed-phrase/index.ts","./src/widgets/seed-phrase/model/useseedphrase.ts","./src/widgets/seed-phrase/ui/seedphrasewidget.tsx","./src/widgets/send-modal/index.ts","./src/widgets/send-modal/model/sendtypes.ts","./src/widgets/send-modal/ui/sendmodal.tsx","./src/widgets/swap-form/index.ts","./src/widgets/swap-form/model/useswapform.ts","./src/widgets/swap-form/ui/raterow.tsx","./src/widgets/swap-form/ui/swapcard.tsx","./src/widgets/swap-form/ui/swapconfirmmodal.tsx","./src/widgets/swap-form/ui/swapdirectionbutton.tsx","./src/widgets/swap-form/ui/swapform.tsx","./src/widgets/swap-form/ui/swapinfopanel.tsx","./src/widgets/swap-form/ui/tokenselect.tsx","./src/widgets/swap-form/ui/trxconfirmmodal.tsx","./src/widgets/token-table/index.ts","./src/widgets/token-table/model/tokens.ts","./src/widgets/token-table/model/usechaintokenrows.ts","./src/widgets/token-table/ui/tokentable.tsx","./src/widgets/wallet-chain-tabs/index.ts","./src/widgets/wallet-chain-tabs/ui/walletchaintabs.tsx","./src/widgets/wallet-header/index.ts","./src/widgets/wallet-header/ui/walletheader.tsx"],"version":"5.6.3"} \ No newline at end of file +{"root":["./src/main.tsx","./src/vite-env.d.ts","./src/app/app.tsx","./src/app/providers/guestroute.tsx","./src/app/providers/protectedroute.tsx","./src/app/providers/queryprovider.tsx","./src/app/providers/routerprovider.tsx","./src/app/providers/scrolltotop.tsx","./src/app/providers/index.ts","./src/features/auth/index.ts","./src/features/auth/api/profileapi.ts","./src/features/auth/api/registrationapi.ts","./src/features/auth/hooks/useauth.ts","./src/features/auth/hooks/useisauthenticated.ts","./src/features/auth/hooks/useme.ts","./src/features/auth/hooks/useuploadavatar.ts","./src/features/kyc/api/kycapi.ts","./src/features/payment/index.ts","./src/features/payment/api/paymentapi.ts","./src/features/payment/hooks/usecreateorder.ts","./src/features/payment/hooks/usepaymentconfig.ts","./src/features/payment/hooks/usepaymentquote.ts","./src/features/payment/hooks/usepaymentquotebyrub.ts","./src/features/wallet/index.ts","./src/features/wallet/api/walletapi.ts","./src/features/wallet/model/usewalletdata.ts","./src/pages/bridge/index.ts","./src/pages/bridge/ui/bridgepage.tsx","./src/pages/converter/index.ts","./src/pages/converter/ui/converterpage.tsx","./src/pages/home/index.ts","./src/pages/home/ui/homepage.tsx","./src/pages/kyc/index.ts","./src/pages/kyc/ui/kycpage.tsx","./src/pages/login/index.ts","./src/pages/login/ui/loginpage.tsx","./src/pages/profile/index.ts","./src/pages/profile/ui/profilepage.tsx","./src/pages/register/index.ts","./src/pages/register/ui/registerpage.tsx","./src/pages/restore-password/index.ts","./src/pages/restore-password/ui/restorepasswordpage.tsx","./src/pages/seed-phrase/index.ts","./src/pages/seed-phrase/ui/seedphrasepage.tsx","./src/pages/swap/index.ts","./src/pages/swap/ui/swappage.tsx","./src/pages/wallet/index.ts","./src/pages/wallet/ui/walletpage.tsx","./src/shared/api/base.ts","./src/shared/api/csrf.ts","./src/shared/api/tokenstore.ts","./src/shared/api/types.ts","./src/shared/assets/coins/index.ts","./src/shared/config/constants.ts","./src/shared/config/env.ts","./src/shared/config/routes.ts","./src/shared/lib/hooks/usedebounce.ts","./src/shared/lib/hooks/uselocalstorage.ts","./src/shared/lib/utils/cn.ts","./src/shared/lib/utils/truncatedecimals.ts","./src/shared/types/index.ts","./src/shared/ui/index.ts","./src/shared/ui/button/button.tsx","./src/shared/ui/button/index.ts","./src/shared/ui/formfield/formfield.tsx","./src/shared/ui/formfield/index.ts","./src/shared/ui/notification/notification.tsx","./src/shared/ui/notification/index.ts","./src/shared/ui/pill/pill.tsx","./src/shared/ui/pill/index.ts","./src/shared/ui/primarybutton/primarybutton.tsx","./src/shared/ui/primarybutton/index.ts","./src/shared/ui/title/title.tsx","./src/shared/ui/tokenicon/tokenicon.tsx","./src/shared/ui/tokenicon/index.ts","./src/widgets/about/index.ts","./src/widgets/about/ui/about.tsx","./src/widgets/balance-card/index.ts","./src/widgets/balance-card/ui/balancecard.tsx","./src/widgets/bridge-form/index.ts","./src/widgets/bridge-form/ui/bridgeform.tsx","./src/widgets/bridge-form/ui/networkselect.tsx","./src/widgets/converter-page/index.ts","./src/widgets/converter-page/ui/agreementcheck.tsx","./src/widgets/converter-page/ui/commissionpanel.tsx","./src/widgets/converter-page/ui/convertersection.tsx","./src/widgets/currency-converter/index.ts","./src/widgets/currency-converter/model/tiers.ts","./src/widgets/currency-converter/model/useconverter.ts","./src/widgets/currency-converter/ui/agreementcheckbox.tsx","./src/widgets/currency-converter/ui/commissiontable.tsx","./src/widgets/currency-converter/ui/converter.tsx","./src/widgets/currency-converter/ui/tiers.tsx","./src/widgets/footer/index.ts","./src/widgets/footer/ui/footer.tsx","./src/widgets/header/index.ts","./src/widgets/header/ui/header.tsx","./src/widgets/hero/index.ts","./src/widgets/hero/lib/usecountdown.ts","./src/widgets/hero/ui/conversionflow.tsx","./src/widgets/hero/ui/countdown.tsx","./src/widgets/hero/ui/exchangecard.tsx","./src/widgets/hero/ui/hero.tsx","./src/widgets/kyc-verification/index.ts","./src/widgets/kyc-verification/model/usekyc.ts","./src/widgets/kyc-verification/ui/kycmodal.tsx","./src/widgets/kyc-verification/ui/kycwidget.tsx","./src/widgets/login-form/index.ts","./src/widgets/login-form/model/useloginform.ts","./src/widgets/login-form/ui/loginform.tsx","./src/widgets/networks-table/index.ts","./src/widgets/networks-table/model/networks.ts","./src/widgets/networks-table/ui/networkstable.tsx","./src/widgets/profile/index.ts","./src/widgets/profile/ui/avatarcropmodal.tsx","./src/widgets/profile/ui/profileavatar.tsx","./src/widgets/profile/ui/profilesection.tsx","./src/widgets/profile/ui/getcroppedimg.ts","./src/widgets/receive-modal/index.ts","./src/widgets/receive-modal/ui/receivemodal.tsx","./src/widgets/register-form/index.ts","./src/widgets/register-form/model/useregisterform.ts","./src/widgets/register-form/ui/registerform.tsx","./src/widgets/restore-password-form/index.ts","./src/widgets/restore-password-form/ui/restorepasswordform.tsx","./src/widgets/seed-phrase/index.ts","./src/widgets/seed-phrase/model/useseedphrase.ts","./src/widgets/seed-phrase/ui/seedphrasewidget.tsx","./src/widgets/send-modal/index.ts","./src/widgets/send-modal/model/sendtypes.ts","./src/widgets/send-modal/ui/sendmodal.tsx","./src/widgets/swap-form/index.ts","./src/widgets/swap-form/model/useswapform.ts","./src/widgets/swap-form/ui/raterow.tsx","./src/widgets/swap-form/ui/swapcard.tsx","./src/widgets/swap-form/ui/swapconfirmmodal.tsx","./src/widgets/swap-form/ui/swapdirectionbutton.tsx","./src/widgets/swap-form/ui/swapform.tsx","./src/widgets/swap-form/ui/swapinfopanel.tsx","./src/widgets/swap-form/ui/tokenselect.tsx","./src/widgets/swap-form/ui/trxconfirmmodal.tsx","./src/widgets/token-table/index.ts","./src/widgets/token-table/model/tokens.ts","./src/widgets/token-table/model/usechaintokenrows.ts","./src/widgets/token-table/ui/tokentable.tsx","./src/widgets/wallet-chain-tabs/index.ts","./src/widgets/wallet-chain-tabs/ui/walletchaintabs.tsx","./src/widgets/wallet-header/index.ts","./src/widgets/wallet-header/ui/walletheader.tsx"],"version":"5.6.3"} \ No newline at end of file