From 4a320f9ade1230b93120743714bed67095e20315 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Tue, 7 Oct 2025 12:08:03 -0300 Subject: [PATCH 01/66] components structure refactor --- .eslintignore | 2 + .npmrc | 4 + package.json | 6 +- pages/_app.page.tsx | 35 +- .../EstimatedCostsForLimitSwap.tsx | 15 + .../infoTooltips/ExecutionFeeTooltip.tsx | 11 + .../CollateralChangeModal.tsx | 3 +- .../DebtSwitch/DebtSwitchModal.tsx | 3 +- .../transactions/FlowCommons/BaseSuccess.tsx | 2 +- .../transactions/Repay/RepayModal.tsx | 6 +- .../Swap/actions/ActionsBlocked.tsx | 26 + .../Swap/actions/ActionsSkeleton.tsx | 34 + .../CollateralSwap/CollateralSwapActions.tsx | 65 + .../CollateralSwapActionsViaCoWAdapters.tsx | 244 ++++ ...llateralSwapActionsViaParaswapAdapters.tsx | 268 ++++ .../Swap/actions/DebtSwap/DebtSwapActions.tsx | 41 + .../DebtSwap/DebtSwapActionsViaCoW.tsx | 273 ++++ .../DebtSwap/DebtSwapActionsViaParaswap.tsx | 201 +++ .../RepayWithCollateralActions.tsx | 41 + .../RepayWithCollateralActionsViaCoW.tsx | 273 ++++ .../RepayWithCollateralActionsViaParaswap.tsx | 165 +++ .../actions/SwapActions/SwapActionsViaCoW.tsx | 357 +++++ .../SwapActions/SwapActionsViaParaswap.tsx | 186 +++ .../Swap/actions/SwapActions/index.tsx | 41 + .../WithdrawAndSwapActions.tsx | 41 + .../WithdrawAndSwapActionsViaCoW.tsx | 28 + .../WithdrawAndSwapActionsViaParaswap.tsx | 301 +++++ .../actions/approval/useSwapTokenApproval.ts | 366 +++++ .../transactions/Swap/actions/index.ts | 75 ++ .../transactions/Swap/analytics/constants.ts | 40 + .../Swap/analytics/state.helpers.ts | 117 ++ .../Swap/analytics/useTrackAnalytics.ts | 59 + .../Swap/backup/BaseSwitchModal.tsx | 133 ++ .../Swap/backup/BaseSwitchModalContent.tsx | 242 ++++ .../CollateralSwap/CollateralSwapActions.tsx | 110 ++ .../CollateralSwap/CollateralSwapModal.tsx | 29 + .../CollateralSwapModalDetails.tsx | 208 +++ .../Swap/backup/ExpirySelector.tsx | 78 ++ .../Swap/backup/NetworkSelector.tsx | 73 + .../transactions/Swap/backup/PriceInput.tsx | 204 +++ .../Swap/backup/SwitchActions.tsx | 144 ++ .../Swap/backup/SwitchAssetInput.tsx | 503 +++++++ .../transactions/Swap/backup/SwitchErrors.tsx | 27 + .../Swap/backup/SwitchLimitOrdersActions.tsx | 243 ++++ .../backup/SwitchLimitOrdersModalContent.tsx | 374 ++++++ .../transactions/Swap/backup/SwitchModal.tsx | 37 + .../Swap/backup/SwitchModalTxDetails.tsx | 509 +++++++ .../transactions/Swap/backup/SwitchRates.tsx | 82 ++ .../Swap/backup/SwitchRatesError.tsx | 35 + .../Swap/backup/SwitchSlippageSelector.tsx | 261 ++++ .../Swap/backup/SwitchTxSuccessView.tsx | 327 +++++ .../Swap/backup/SwitchTypeSelector.tsx | 54 + .../Swap/backup/assetCorrelation.helpers.ts | 49 + .../transactions/Swap/backup/common.ts | 28 + .../Swap/backup/cowprotocol/CowOrderToast.tsx | 20 + .../cowprotocol/cowprotocol.constants.ts | 28 + .../backup/cowprotocol/cowprotocol.errors.ts | 21 + .../backup/cowprotocol/cowprotocol.helpers.ts | 376 ++++++ .../Swap/backup/slippage.helpers.ts | 8 + .../Swap/backup/switch.constants.ts | 39 + .../transactions/Swap/backup/switch.types.ts | 79 ++ .../Swap/backup/validation.helpers.ts | 1 + .../Swap/constants/cow.constants.ts | 112 ++ .../Swap/constants/limitOrders.constants.ts | 15 + .../Swap/constants/paraswap.constants.ts | 25 + .../Swap/constants/shared.constants.ts | 25 + .../Swap/details/CollateralSwapDetails.tsx | 280 ++++ .../Swap/details/CowCostsDetails.tsx | 220 +++ .../Swap/details/DebtSwapDetails.tsx | 164 +++ .../Swap/details/DetailsSkeleton.tsx | 37 + .../details/RepayWithCollateralDetails.tsx | 97 ++ .../transactions/Swap/details/SwapDetails.tsx | 255 ++++ .../Swap/details/WithdrawAndSwapDetails.tsx | 63 + .../transactions/Swap/details/index.ts | 49 + .../transactions/Swap/errors/SwapErrors.tsx | 103 ++ .../errors/cow/quote.helpers.ts} | 4 +- .../Swap/errors/paraswap/quote.helpers.ts | 27 + .../errors/shared/BalanceLowerThanInput.tsx | 13 + .../Swap/errors/shared/GasEstimationError.tsx | 43 + .../Swap/errors/shared/GenericError.tsx | 48 + .../shared/InsufficientBalanceGuard.tsx | 56 + .../Swap/errors/shared/ProviderError.tsx | 47 + .../Swap/errors/shared/UserDenied.tsx | 95 ++ .../errors/shared/ZeroLTVBlockingError.tsx | 16 + .../errors/shared/ZeroLTVBlockingGuard.tsx | 59 + .../Swap/errors/shared/console.helpers.ts | 62 + .../Swap/helpers/cow/adapters.helpers.ts | 98 ++ .../transactions/Swap/helpers/cow/index.ts | 3 + .../Swap/helpers/cow/orders.helpers.ts | 643 +++++++++ .../Swap/helpers/cow/rates.helpers.ts | 237 ++++ .../Swap/helpers/cow/signatures.helpers.ts | 0 .../Swap/helpers/gasEstimation.helpers.ts | 151 +++ .../Swap/helpers/paraswap/index.ts | 3 + .../helpers/paraswap/misc.helpers.ts} | 2 +- .../Swap/helpers/paraswap/order.helpers.ts | 95 ++ .../Swap/helpers/paraswap/rates.helpers.ts | 77 ++ .../shared}/assetCorrelation.helpers.ts | 0 .../transactions/Swap/helpers/shared/index.ts | 4 + .../helpers/shared/misc.helpers.ts} | 4 +- .../Swap/helpers/shared/provider.helpers.ts | 59 + .../helpers/shared/slippage.helpers.ts} | 4 +- .../Swap/hooks/useFlowSelector.ts | 132 ++ .../Swap/hooks/useMaxNativeAmount.ts | 41 + .../Swap/hooks/useMinimumReceived.ts | 44 + .../Swap/hooks/useProtocolReserves.ts | 41 + .../Swap/hooks/useSlippageSelector.ts | 46 + .../Swap/hooks/useSwapGasEstimation.ts | 80 ++ .../transactions/Swap/hooks/useSwapQuote.ts | 378 ++++++ .../transactions/Swap/hooks/useUserContext.ts | 31 + .../Swap/inputs/LimitOrderInputs.tsx | 187 +++ .../Swap/inputs/MarketOrderInputs.tsx | 175 +++ .../transactions/Swap/inputs/SwapInputs.tsx | 517 ++++++++ .../Swap/inputs/primitives/SwapAssetInput.tsx | 519 ++++++++ .../inputs/shared}/ExpirySelector.tsx | 35 +- .../inputs/shared}/NetworkSelector.tsx | 2 +- .../Swap/inputs/shared/PriceInput.tsx | 299 +++++ .../Swap/inputs/shared/QuoteProgressRing.tsx | 78 ++ .../inputs/shared}/SwitchRates.tsx | 29 +- .../inputs/shared}/SwitchSlippageSelector.tsx | 11 +- .../Swap/modals/CollateralSwapModal.tsx | 36 + .../Swap/modals/DebtSwapModal.tsx | 36 + .../modals/SwapModal.tsx} | 23 +- .../modals/request/BaseSwapModalContent.tsx | 168 +++ .../request/CollateralSwapModalContent.tsx | 258 ++++ .../modals/request/DebtSwapModalContent.tsx | 241 ++++ .../modals/request/NoEligibleAssetsToSwap.tsx | 10 + .../RepayWithCollateralModalContent.tsx | 239 ++++ .../Swap/modals/request/SwapModalContent.tsx | 158 +++ .../request/WithdrawAndSwapModalContent.tsx | 180 +++ .../modals/result}/CowOrderToast.tsx | 0 .../modals/result/SwapResultView.tsx} | 68 +- .../shared/OrderTypeSelector.tsx} | 29 +- .../Swap/shared/SwapModalTitle.tsx | 12 + .../transactions/Swap/types/index.ts | 6 + .../transactions/Swap/types/params.types.ts | 91 ++ .../types/quote.types.ts} | 41 +- .../transactions/Swap/types/shared.types.ts | 38 + .../transactions/Swap/types/state.types.ts | 192 +++ .../transactions/Swap/types/tokens.types.ts | 34 + .../Swap/warnings/SwapNetworkWarning.tsx | 28 + .../Swap/warnings/SwapPostInputWarnings.tsx | 42 + .../Swap/warnings/SwapPreInputWarnings.tsx | 19 + .../transactions/Swap/warnings/constants.ts | 8 + .../transactions/Swap/warnings/helpers.ts | 32 + .../postInputs/CustomTokenWarning.tsx | 23 + .../postInputs/HighPriceImpactWarning.tsx | 86 ++ .../postInputs/LimitOrderAmountWarning.tsx | 69 + .../postInputs/LiquidationCriticalWarning.tsx | 36 + .../postInputs/LowHealthFactorWarning.tsx | 73 + .../postInputs/SafetyModuleSwapWarning.tsx | 28 + .../warnings/postInputs/SlippageWarning.tsx | 17 + .../warnings/postInputs/USDTResetWarning.tsx | 20 + .../Swap/warnings/postInputs/index.ts | 8 + .../preInputs/CowOpenOrdersWarning.tsx | 69 + .../Swap/warnings/preInputs/index.ts | 1 + .../transactions/Switch/BaseSwitchModal.tsx | 133 -- .../Switch/BaseSwitchModalContent.tsx | 1175 ----------------- .../CollateralSwap/CollateralSwapActions.tsx | 132 -- .../CollateralSwap/CollateralSwapModal.tsx | 158 --- .../CollateralSwapModalDetails.tsx | 208 --- .../transactions/Switch/PriceInput.tsx | 204 --- .../transactions/Switch/SwitchActions.tsx | 1151 ---------------- .../transactions/Switch/SwitchAssetInput.tsx | 503 ------- .../transactions/Switch/SwitchErrors.tsx | 27 - .../Switch/SwitchLimitOrdersActions.tsx | 243 ---- .../Switch/SwitchLimitOrdersModalContent.tsx | 374 ------ .../Switch/SwitchModalTxDetails.tsx | 509 ------- .../transactions/Switch/SwitchRatesError.tsx | 34 - .../cowprotocol/cowprotocol.constants.ts | 28 - .../Switch/cowprotocol/cowprotocol.helpers.ts | 376 ------ .../transactions/Switch/switch.constants.ts | 39 - .../transactions/Withdraw/WithdrawModal.tsx | 6 +- .../Withdraw/WithdrawTypeSelector.tsx | 10 +- src/hooks/paraswap/common.ts | 35 +- src/hooks/paraswap/useParaswapRates.ts | 11 +- src/hooks/switch/cowprotocol.rates.ts | 429 +++--- src/hooks/switch/paraswap.rates.ts | 104 +- src/hooks/switch/switchProvider.helpers.ts | 100 +- src/hooks/switch/useCowSwitchRates.ts | 114 +- .../switch/useMultiProviderSwitchRates.ts | 256 ++-- src/hooks/useCowOrderToast.tsx | 2 +- src/hooks/useModal.tsx | 18 +- src/hooks/useStaticRate.ts | 82 +- src/hooks/useTransactionHistory.tsx | 9 +- src/locales/el/messages.js | 2 +- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 247 ++-- src/locales/es/messages.js | 2 +- src/locales/fr/messages.js | 2 +- src/modules/history/TransactionRowItem.tsx | 2 +- src/modules/history/actions/ActionDetails.tsx | 2 +- src/store/poolSlice.ts | 109 +- src/ui-config/errorMapping.tsx | 11 + src/ui-config/permitConfig.ts | 463 ++++++- src/ui-config/queries.ts | 18 +- src/utils/events.ts | 26 + tsconfig.json | 1 + yarn.lock | 565 ++------ 198 files changed, 17346 insertions(+), 6586 deletions(-) create mode 100644 .npmrc create mode 100644 src/components/infoTooltips/EstimatedCostsForLimitSwap.tsx create mode 100644 src/components/infoTooltips/ExecutionFeeTooltip.tsx create mode 100644 src/components/transactions/Swap/actions/ActionsBlocked.tsx create mode 100644 src/components/transactions/Swap/actions/ActionsSkeleton.tsx create mode 100644 src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActions.tsx create mode 100644 src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx create mode 100644 src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx create mode 100644 src/components/transactions/Swap/actions/DebtSwap/DebtSwapActions.tsx create mode 100644 src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx create mode 100644 src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx create mode 100644 src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActions.tsx create mode 100644 src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx create mode 100644 src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx create mode 100644 src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx create mode 100644 src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx create mode 100644 src/components/transactions/Swap/actions/SwapActions/index.tsx create mode 100644 src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActions.tsx create mode 100644 src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaCoW.tsx create mode 100644 src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx create mode 100644 src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts create mode 100644 src/components/transactions/Swap/actions/index.ts create mode 100644 src/components/transactions/Swap/analytics/constants.ts create mode 100644 src/components/transactions/Swap/analytics/state.helpers.ts create mode 100644 src/components/transactions/Swap/analytics/useTrackAnalytics.ts create mode 100644 src/components/transactions/Swap/backup/BaseSwitchModal.tsx create mode 100644 src/components/transactions/Swap/backup/BaseSwitchModalContent.tsx create mode 100644 src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapActions.tsx create mode 100644 src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapModal.tsx create mode 100644 src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapModalDetails.tsx create mode 100644 src/components/transactions/Swap/backup/ExpirySelector.tsx create mode 100644 src/components/transactions/Swap/backup/NetworkSelector.tsx create mode 100644 src/components/transactions/Swap/backup/PriceInput.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchActions.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchAssetInput.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchErrors.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchLimitOrdersActions.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchLimitOrdersModalContent.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchModal.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchModalTxDetails.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchRates.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchRatesError.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchSlippageSelector.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchTxSuccessView.tsx create mode 100644 src/components/transactions/Swap/backup/SwitchTypeSelector.tsx create mode 100644 src/components/transactions/Swap/backup/assetCorrelation.helpers.ts create mode 100644 src/components/transactions/Swap/backup/common.ts create mode 100644 src/components/transactions/Swap/backup/cowprotocol/CowOrderToast.tsx create mode 100644 src/components/transactions/Swap/backup/cowprotocol/cowprotocol.constants.ts create mode 100644 src/components/transactions/Swap/backup/cowprotocol/cowprotocol.errors.ts create mode 100644 src/components/transactions/Swap/backup/cowprotocol/cowprotocol.helpers.ts create mode 100644 src/components/transactions/Swap/backup/slippage.helpers.ts create mode 100644 src/components/transactions/Swap/backup/switch.constants.ts create mode 100644 src/components/transactions/Swap/backup/switch.types.ts create mode 100644 src/components/transactions/Swap/backup/validation.helpers.ts create mode 100644 src/components/transactions/Swap/constants/cow.constants.ts create mode 100644 src/components/transactions/Swap/constants/limitOrders.constants.ts create mode 100644 src/components/transactions/Swap/constants/paraswap.constants.ts create mode 100644 src/components/transactions/Swap/constants/shared.constants.ts create mode 100644 src/components/transactions/Swap/details/CollateralSwapDetails.tsx create mode 100644 src/components/transactions/Swap/details/CowCostsDetails.tsx create mode 100644 src/components/transactions/Swap/details/DebtSwapDetails.tsx create mode 100644 src/components/transactions/Swap/details/DetailsSkeleton.tsx create mode 100644 src/components/transactions/Swap/details/RepayWithCollateralDetails.tsx create mode 100644 src/components/transactions/Swap/details/SwapDetails.tsx create mode 100644 src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx create mode 100644 src/components/transactions/Swap/details/index.ts create mode 100644 src/components/transactions/Swap/errors/SwapErrors.tsx rename src/components/transactions/{Switch/cowprotocol/cowprotocol.errors.ts => Swap/errors/cow/quote.helpers.ts} (82%) create mode 100644 src/components/transactions/Swap/errors/paraswap/quote.helpers.ts create mode 100644 src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx create mode 100644 src/components/transactions/Swap/errors/shared/GasEstimationError.tsx create mode 100644 src/components/transactions/Swap/errors/shared/GenericError.tsx create mode 100644 src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx create mode 100644 src/components/transactions/Swap/errors/shared/ProviderError.tsx create mode 100644 src/components/transactions/Swap/errors/shared/UserDenied.tsx create mode 100644 src/components/transactions/Swap/errors/shared/ZeroLTVBlockingError.tsx create mode 100644 src/components/transactions/Swap/errors/shared/ZeroLTVBlockingGuard.tsx create mode 100644 src/components/transactions/Swap/errors/shared/console.helpers.ts create mode 100644 src/components/transactions/Swap/helpers/cow/adapters.helpers.ts create mode 100644 src/components/transactions/Swap/helpers/cow/index.ts create mode 100644 src/components/transactions/Swap/helpers/cow/orders.helpers.ts create mode 100644 src/components/transactions/Swap/helpers/cow/rates.helpers.ts create mode 100644 src/components/transactions/Swap/helpers/cow/signatures.helpers.ts create mode 100644 src/components/transactions/Swap/helpers/gasEstimation.helpers.ts create mode 100644 src/components/transactions/Swap/helpers/paraswap/index.ts rename src/components/transactions/{Switch/slippage.helpers.ts => Swap/helpers/paraswap/misc.helpers.ts} (73%) create mode 100644 src/components/transactions/Swap/helpers/paraswap/order.helpers.ts create mode 100644 src/components/transactions/Swap/helpers/paraswap/rates.helpers.ts rename src/components/transactions/{Switch => Swap/helpers/shared}/assetCorrelation.helpers.ts (100%) create mode 100644 src/components/transactions/Swap/helpers/shared/index.ts rename src/components/transactions/{Switch/common.ts => Swap/helpers/shared/misc.helpers.ts} (89%) create mode 100644 src/components/transactions/Swap/helpers/shared/provider.helpers.ts rename src/components/transactions/{Switch/validation.helpers.ts => Swap/helpers/shared/slippage.helpers.ts} (96%) create mode 100644 src/components/transactions/Swap/hooks/useFlowSelector.ts create mode 100644 src/components/transactions/Swap/hooks/useMaxNativeAmount.ts create mode 100644 src/components/transactions/Swap/hooks/useMinimumReceived.ts create mode 100644 src/components/transactions/Swap/hooks/useProtocolReserves.ts create mode 100644 src/components/transactions/Swap/hooks/useSlippageSelector.ts create mode 100644 src/components/transactions/Swap/hooks/useSwapGasEstimation.ts create mode 100644 src/components/transactions/Swap/hooks/useSwapQuote.ts create mode 100644 src/components/transactions/Swap/hooks/useUserContext.ts create mode 100644 src/components/transactions/Swap/inputs/LimitOrderInputs.tsx create mode 100644 src/components/transactions/Swap/inputs/MarketOrderInputs.tsx create mode 100644 src/components/transactions/Swap/inputs/SwapInputs.tsx create mode 100644 src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx rename src/components/transactions/{Switch => Swap/inputs/shared}/ExpirySelector.tsx (71%) rename src/components/transactions/{Switch => Swap/inputs/shared}/NetworkSelector.tsx (95%) create mode 100644 src/components/transactions/Swap/inputs/shared/PriceInput.tsx create mode 100644 src/components/transactions/Swap/inputs/shared/QuoteProgressRing.tsx rename src/components/transactions/{Switch => Swap/inputs/shared}/SwitchRates.tsx (75%) rename src/components/transactions/{Switch => Swap/inputs/shared}/SwitchSlippageSelector.tsx (97%) create mode 100644 src/components/transactions/Swap/modals/CollateralSwapModal.tsx create mode 100644 src/components/transactions/Swap/modals/DebtSwapModal.tsx rename src/components/transactions/{Switch/SwitchModal.tsx => Swap/modals/SwapModal.tsx} (51%) create mode 100644 src/components/transactions/Swap/modals/request/BaseSwapModalContent.tsx create mode 100644 src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx create mode 100644 src/components/transactions/Swap/modals/request/DebtSwapModalContent.tsx create mode 100644 src/components/transactions/Swap/modals/request/NoEligibleAssetsToSwap.tsx create mode 100644 src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx create mode 100644 src/components/transactions/Swap/modals/request/SwapModalContent.tsx create mode 100644 src/components/transactions/Swap/modals/request/WithdrawAndSwapModalContent.tsx rename src/components/transactions/{Switch/cowprotocol => Swap/modals/result}/CowOrderToast.tsx (100%) rename src/components/transactions/{Switch/SwitchTxSuccessView.tsx => Swap/modals/result/SwapResultView.tsx} (83%) rename src/components/transactions/{Switch/SwitchTypeSelector.tsx => Swap/shared/OrderTypeSelector.tsx} (53%) create mode 100644 src/components/transactions/Swap/shared/SwapModalTitle.tsx create mode 100644 src/components/transactions/Swap/types/index.ts create mode 100644 src/components/transactions/Swap/types/params.types.ts rename src/components/transactions/{Switch/switch.types.ts => Swap/types/quote.types.ts} (63%) create mode 100644 src/components/transactions/Swap/types/shared.types.ts create mode 100644 src/components/transactions/Swap/types/state.types.ts create mode 100644 src/components/transactions/Swap/types/tokens.types.ts create mode 100644 src/components/transactions/Swap/warnings/SwapNetworkWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/SwapPostInputWarnings.tsx create mode 100644 src/components/transactions/Swap/warnings/SwapPreInputWarnings.tsx create mode 100644 src/components/transactions/Swap/warnings/constants.ts create mode 100644 src/components/transactions/Swap/warnings/helpers.ts create mode 100644 src/components/transactions/Swap/warnings/postInputs/CustomTokenWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/postInputs/LimitOrderAmountWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/postInputs/LiquidationCriticalWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/postInputs/LowHealthFactorWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/postInputs/SafetyModuleSwapWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/postInputs/SlippageWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/postInputs/USDTResetWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/postInputs/index.ts create mode 100644 src/components/transactions/Swap/warnings/preInputs/CowOpenOrdersWarning.tsx create mode 100644 src/components/transactions/Swap/warnings/preInputs/index.ts delete mode 100644 src/components/transactions/Switch/BaseSwitchModal.tsx delete mode 100644 src/components/transactions/Switch/BaseSwitchModalContent.tsx delete mode 100644 src/components/transactions/Switch/CollateralSwap/CollateralSwapActions.tsx delete mode 100644 src/components/transactions/Switch/CollateralSwap/CollateralSwapModal.tsx delete mode 100644 src/components/transactions/Switch/CollateralSwap/CollateralSwapModalDetails.tsx delete mode 100644 src/components/transactions/Switch/PriceInput.tsx delete mode 100644 src/components/transactions/Switch/SwitchActions.tsx delete mode 100644 src/components/transactions/Switch/SwitchAssetInput.tsx delete mode 100644 src/components/transactions/Switch/SwitchErrors.tsx delete mode 100644 src/components/transactions/Switch/SwitchLimitOrdersActions.tsx delete mode 100644 src/components/transactions/Switch/SwitchLimitOrdersModalContent.tsx delete mode 100644 src/components/transactions/Switch/SwitchModalTxDetails.tsx delete mode 100644 src/components/transactions/Switch/SwitchRatesError.tsx delete mode 100644 src/components/transactions/Switch/cowprotocol/cowprotocol.constants.ts delete mode 100644 src/components/transactions/Switch/cowprotocol/cowprotocol.helpers.ts delete mode 100644 src/components/transactions/Switch/switch.constants.ts diff --git a/.eslintignore b/.eslintignore index 5ba9f5090f..e6a481dac4 100644 --- a/.eslintignore +++ b/.eslintignore @@ -20,3 +20,5 @@ src/locales/ *.md *.log *.lock + +src/components/transactions/Swap/backup/**/*.* \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000..be745c5382 --- /dev/null +++ b/.npmrc @@ -0,0 +1,4 @@ +@cowprotocol:registry=https://npm.pkg.github.com +always-auth=true +# registry=https://registry.npmjs.org/ +//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN} diff --git a/package.json b/package.json index cbbef31cd9..ee1570a895 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,10 @@ "@aave/react": "0.6.1", "@amplitude/analytics-browser": "^2.13.0", "@bgd-labs/aave-address-book": "^4.31.0", - "@cowprotocol/app-data": "^3.1.0", - "@cowprotocol/cow-sdk": "6.3.3", + "@cowprotocol/sdk-app-data": "4.1.3-pr-614-5b1d24e9.0", + "@cowprotocol/cow-sdk": "7.0.10-pr-614-5b1d24e9.0", + "@cowprotocol/sdk-flash-loans": "0.0.1-pr-614-5b1d24e9.0", + "@cowprotocol/sdk-viem-adapter": "0.1.2-pr-614-5b1d24e9.0", "@emotion/cache": "11.10.3", "@emotion/react": "11.10.4", "@emotion/server": "latest", diff --git a/pages/_app.page.tsx b/pages/_app.page.tsx index d1882d0e8f..df754c1b38 100644 --- a/pages/_app.page.tsx +++ b/pages/_app.page.tsx @@ -16,7 +16,7 @@ import { AddressBlocked } from 'src/components/AddressBlocked'; import { Meta } from 'src/components/Meta'; import { TransactionEventHandler } from 'src/components/TransactionEventHandler'; import { GasStationProvider } from 'src/components/transactions/GasStation/GasStationProvider'; -import { CowOrderToast } from 'src/components/transactions/Switch/cowprotocol/CowOrderToast'; +import { CowOrderToast } from 'src/components/transactions/Swap/modals/result/CowOrderToast'; import { AppDataProvider } from 'src/hooks/app-data-provider/useAppDataProvider'; import { CowOrderToastProvider } from 'src/hooks/useCowOrderToast'; import { ModalContextProvider } from 'src/hooks/useModal'; @@ -31,16 +31,22 @@ import createEmotionCache from '../src/createEmotionCache'; import { AppGlobalStyles } from '../src/layouts/AppGlobalStyles'; import { LanguageProvider } from '../src/libs/LanguageProvider'; -const SwitchModal = dynamic(() => - import('src/components/transactions/Switch/SwitchModal').then((module) => module.SwitchModal) +const SwapModal = dynamic(() => + import('src/components/transactions/Swap/modals/SwapModal').then((module) => module.SwapModal) ); const CollateralSwapModal = dynamic(() => - import('src/components/transactions/Switch/CollateralSwap/CollateralSwapModal').then( + import('src/components/transactions/Swap/modals/CollateralSwapModal').then( (module) => module.CollateralSwapModal ) ); +const DebtSwapModal = dynamic(() => + import('src/components/transactions/Swap/modals/DebtSwapModal').then( + (module) => module.DebtSwapModal + ) +); + const BridgeModal = dynamic(() => import('src/components/transactions/Bridge/BridgeModal').then((module) => module.BridgeModal) ); @@ -53,16 +59,6 @@ const ClaimRewardsModal = dynamic(() => (module) => module.ClaimRewardsModal ) ); -const CollateralChangeModal = dynamic(() => - import('src/components/transactions/CollateralChange/CollateralChangeModal').then( - (module) => module.CollateralChangeModal - ) -); -const DebtSwitchModal = dynamic(() => - import('src/components/transactions/DebtSwitch/DebtSwitchModal').then( - (module) => module.DebtSwitchModal - ) -); const EmodeModal = dynamic(() => import('src/components/transactions/Emode/EmodeModal').then((module) => module.EmodeModal) ); @@ -170,19 +166,20 @@ export default function MyApp(props: MyAppProps) { - - - - - + + {/* Swap Modals */} + + + + diff --git a/src/components/infoTooltips/EstimatedCostsForLimitSwap.tsx b/src/components/infoTooltips/EstimatedCostsForLimitSwap.tsx new file mode 100644 index 0000000000..787e467ec8 --- /dev/null +++ b/src/components/infoTooltips/EstimatedCostsForLimitSwap.tsx @@ -0,0 +1,15 @@ +import { Trans } from '@lingui/macro'; + +import { TextWithTooltip } from '../TextWithTooltip'; + +export const EstimatedCostsForLimitSwapTooltip = () => { + return ( + Estimated Costs & Fees}> + + These are the estimated costs associated with your limit swap, including costs and fees. + Consider these costs when setting your order amounts to help optimize execution and maximize + your chances of filling the order. + + + ); +}; diff --git a/src/components/infoTooltips/ExecutionFeeTooltip.tsx b/src/components/infoTooltips/ExecutionFeeTooltip.tsx new file mode 100644 index 0000000000..3261c58d37 --- /dev/null +++ b/src/components/infoTooltips/ExecutionFeeTooltip.tsx @@ -0,0 +1,11 @@ +import { Trans } from '@lingui/macro'; + +import { TextWithTooltip } from '../TextWithTooltip'; + +export const ExecutionFeeTooltip = () => { + return ( + Execution fee}> + This is the fee of executing position changes, set by governance. + + ); +}; diff --git a/src/components/transactions/CollateralChange/CollateralChangeModal.tsx b/src/components/transactions/CollateralChange/CollateralChangeModal.tsx index ed044938e8..d0894995c6 100644 --- a/src/components/transactions/CollateralChange/CollateralChangeModal.tsx +++ b/src/components/transactions/CollateralChange/CollateralChangeModal.tsx @@ -11,8 +11,9 @@ export const CollateralChangeModal = () => { const { type, close, args } = useModalContext() as ModalContextType<{ underlyingAsset: string; }>; + return null; return ( - + Review tx} underlyingAsset={args.underlyingAsset}> {(params) => ( diff --git a/src/components/transactions/DebtSwitch/DebtSwitchModal.tsx b/src/components/transactions/DebtSwitch/DebtSwitchModal.tsx index c1a44b58a5..6a75290d55 100644 --- a/src/components/transactions/DebtSwitch/DebtSwitchModal.tsx +++ b/src/components/transactions/DebtSwitch/DebtSwitchModal.tsx @@ -11,8 +11,9 @@ export const DebtSwitchModal = () => { const { type, close, args } = useModalContext() as ModalContextType<{ underlyingAsset: string; }>; + return null; return ( - + Swap borrow position} underlyingAsset={args.underlyingAsset} diff --git a/src/components/transactions/FlowCommons/BaseSuccess.tsx b/src/components/transactions/FlowCommons/BaseSuccess.tsx index 689b6f8d78..a045d8249b 100644 --- a/src/components/transactions/FlowCommons/BaseSuccess.tsx +++ b/src/components/transactions/FlowCommons/BaseSuccess.tsx @@ -95,7 +95,7 @@ export const BaseSuccessView = ({ onClick={handleClose} variant="contained" size="large" - sx={{ minHeight: '50px', mb: '30px' }} + sx={{ minHeight: '50px', mb: '0px' }} data-cy="closeButton" > Ok, Close diff --git a/src/components/transactions/Repay/RepayModal.tsx b/src/components/transactions/Repay/RepayModal.tsx index 972f30addd..0ae907beed 100644 --- a/src/components/transactions/Repay/RepayModal.tsx +++ b/src/components/transactions/Repay/RepayModal.tsx @@ -9,7 +9,7 @@ import { isFeatureEnabled } from 'src/utils/marketsAndNetworksConfig'; import { BasicModal } from '../../primitives/BasicModal'; import { ModalWrapper } from '../FlowCommons/ModalWrapper'; -import { CollateralRepayModalContent } from './CollateralRepayModalContent'; +import { RepayWithCollateralModalContent } from '../Swap/modals/request/RepayWithCollateralModalContent'; import { RepayModalContent } from './RepayModalContent'; import { RepayType, RepayTypeSelector } from './RepayTypeSelector'; @@ -53,10 +53,10 @@ export const RepayModal = () => { )} {repayType === RepayType.BALANCE && } {repayType === RepayType.COLLATERAL && ( - )} diff --git a/src/components/transactions/Swap/actions/ActionsBlocked.tsx b/src/components/transactions/Swap/actions/ActionsBlocked.tsx new file mode 100644 index 0000000000..83ac6dd4fc --- /dev/null +++ b/src/components/transactions/Swap/actions/ActionsBlocked.tsx @@ -0,0 +1,26 @@ +import { Trans } from '@lingui/macro'; +import { Button } from '@mui/material'; + +import { SwapState } from '../types'; + +type blockType = 'errors' | 'generic'; +const stateToBlockType = (state: SwapState): blockType => { + if (state.error) return 'errors'; + return 'generic'; +}; + +export const ActionsBlocked: React.FC<{ state: SwapState }> = ({ state }) => { + const blockType = stateToBlockType(state); + + return ( + + ); +}; diff --git a/src/components/transactions/Swap/actions/ActionsSkeleton.tsx b/src/components/transactions/Swap/actions/ActionsSkeleton.tsx new file mode 100644 index 0000000000..16816d15fc --- /dev/null +++ b/src/components/transactions/Swap/actions/ActionsSkeleton.tsx @@ -0,0 +1,34 @@ +import { Trans } from '@lingui/macro'; +import { Button, CircularProgress } from '@mui/material'; + +import { SwapState } from '../types'; + +export type LoadingType = 'quote' | 'actions' | 'other'; +const stateToLoadingType = (state: SwapState): LoadingType => { + if (state.ratesLoading) return 'quote'; + if (state.actionsLoading) return 'actions'; + return 'other'; +}; + +export const ActionsLoading: React.FC<{ state: SwapState }> = ({ state }) => { + const loadingType = stateToLoadingType(state); + + return ( + + ); +}; diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActions.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActions.tsx new file mode 100644 index 0000000000..82ae9ad3e6 --- /dev/null +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActions.tsx @@ -0,0 +1,65 @@ +import { Dispatch } from 'react'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { ProtocolSwapParams, ProtocolSwapState, SwapProvider, SwapState } from '../../types'; +import { SwapActionsViaCoW } from '../SwapActions/SwapActionsViaCoW'; +import { SwapActionsViaParaswap } from '../SwapActions/SwapActionsViaParaswap'; +import { CollateralSwapActionsViaCowAdapters } from './CollateralSwapActionsViaCoWAdapters'; +import { CollateralSwapActionsViaParaswapAdapters } from './CollateralSwapActionsViaParaswapAdapters'; + +export const CollateralSwapActions = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + switch (state.provider) { + case SwapProvider.COW_PROTOCOL: + if (state.useFlashloan) { + return ( + + ); + } else { + // Essentially traditional aTokens swap + return ( + + ); + } + case SwapProvider.PARASWAP: + if (state.useFlashloan) { + return ( + + ); + } else { + // Essentially traditional aTokens swap + return ( + + ); + } + } +}; diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx new file mode 100644 index 0000000000..02a5de075c --- /dev/null +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx @@ -0,0 +1,244 @@ +import { normalize } from '@aave/math-utils'; +import { getOrderToSign, LimitTradeParameters, OrderKind, TradingSdk } from '@cowprotocol/cow-sdk'; +import { AaveCollateralSwapSdk, HASH_ZERO } from '@cowprotocol/sdk-flash-loans'; +import { Trans } from '@lingui/macro'; +import { Dispatch, useEffect, useState } from 'react'; +import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; +import { useModalContext } from 'src/hooks/useModal'; +import { useRootStore } from 'src/store/root'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { useShallow } from 'zustand/react/shallow'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; +import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; +import { getCowAdapter } from '../../helpers/cow'; +import { calculateInstanceAddress } from '../../helpers/cow/adapters.helpers'; +import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; +import { OrderType, SwapParams, SwapState } from '../../types'; +import { useSwapTokenApproval } from '../approval/useSwapTokenApproval'; + +export const CollateralSwapActionsViaCowAdapters = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const [user] = useRootStore(useShallow((state) => [state.account])); + + const { mainTxState, loadingTxns, approvalTxState, setMainTxState, setTxError } = + useModalContext(); + + const [precalculatedInstanceAddress, setPrecalculatedInstanceAddress] = useState< + string | undefined + >(); + const validTo = state.expiry || Math.floor(Date.now() / 1000) + 10 * 60; // 10 minutes + + const slippageBps = + state.orderType === OrderType.LIMIT ? 0 : Math.round(Number(state.slippage) * 100); // percent to bps + + // Pre-compute instance address + useEffect(() => { + if (state.chainId !== 100) return; // TODO: remove this once we have a supported chainId + calculateInstanceAddress(state, user, validTo) + .catch((error) => { + console.error('calculateInstanceAddress error', error); + setTxError(getErrorTextFromError(error, TxAction.MAIN_ACTION, true)); + setMainTxState({ + txHash: undefined, + loading: false, + success: false, + }); + }) + .then((address) => { + if (address) setPrecalculatedInstanceAddress(address); + }); + }, [ + user, + state.inputAmount, + state.minimumReceived, + state.destinationToken.underlyingAddress, + state.sourceToken.symbol, + state.destinationToken.symbol, + state.slippage, + state.autoSlippage, + APP_CODE_PER_SWAP_TYPE[state.swapType], + ]); + + // Approval is aToken ERC20 Approval + const { requiresApproval, approval, tryPermit, signatureParams } = useSwapTokenApproval({ + chainId: state.chainId, + token: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + amount: state.inputAmount, + decimals: state.sourceToken.decimals, + spender: precalculatedInstanceAddress, + setState, + allowPermit: true, // CoW Adapters do support permit + }); + + // Use centralized gas estimation + useSwapGasEstimation({ + state, + setState, + requiresApproval, + requiresApprovalReset: state.requiresApprovalReset, + approvalTxState, + }); + + const action = async () => { + setMainTxState({ + txHash: undefined, + loading: true, + }); + setState({ + actionsLoading: false, + }); + + try { + if (!state.minimumReceived) return; + + const sellAmount = normalize(state.inputAmount, -state.sourceToken.decimals); + const buyAmount = normalize(state.minimumReceived, -state.destinationToken.decimals); + + const adapter = await getCowAdapter(state.chainId); + const tradingSdk = new TradingSdk( + { + chainId: state.chainId, + appCode: APP_CODE_PER_SWAP_TYPE[state.swapType], + env: 'staging', + signer: adapter.signer, + }, + {}, + adapter + ); + const flashLoanSdk = new AaveCollateralSwapSdk(); + const collateralPermit = signatureParams + ? { + amount: signatureParams?.amount, + deadline: Number(signatureParams?.deadline), + v: signatureParams?.splitedSignature.v, + r: signatureParams?.splitedSignature.r, + s: signatureParams?.splitedSignature.s, + } + : undefined; + + const partnerFee = COW_PARTNER_FEE(state.sourceToken.symbol, state.destinationToken.symbol); + + const { flashLoanFeeAmount, sellAmountToSign } = flashLoanSdk.calculateFlashLoanAmounts({ + flashLoanFeePercent: FLASH_LOAN_FEE_BPS / 100, + sellAmount: BigInt(sellAmount), + }); + + const limitOrder: LimitTradeParameters = { + sellToken: state.sourceToken.underlyingAddress, + sellTokenDecimals: state.sourceToken.decimals, + buyToken: state.destinationToken.underlyingAddress, + buyTokenDecimals: state.destinationToken.decimals, + sellAmount: sellAmountToSign.toString(), + buyAmount: buyAmount.toString(), + kind: state.side === 'buy' ? OrderKind.BUY : OrderKind.SELL, + validTo, + slippageBps, + partnerFee, + }; + + const orderToSign = getOrderToSign( + { chainId: state.chainId, from: user, networkCostsAmount: '0', isEthFlow: false }, + limitOrder, + HASH_ZERO + ); + + const orderPostParams = await flashLoanSdk.getOrderPostingSettings( + { + chainId: state.chainId, + validTo, + owner: user as `0x${string}`, + flashLoanFeeAmount, + }, + { + sellAmount: BigInt(sellAmount), + buyAmount: BigInt(buyAmount), + orderToSign, + collateralPermit, + } + ); + + const result = await tradingSdk.postLimitOrder(limitOrder, orderPostParams.swapSettings); + + trackingHandlers.trackSwap(); + params.invalidateAppState(); + setMainTxState({ + loading: false, + success: true, + txHash: result.orderId, + }); + setState({ + actionsLoading: false, + }); + } catch (error) { + console.error('CollateralSwapActionsViaCoWAdapters error', error); + setTxError(getErrorTextFromError(error, TxAction.MAIN_ACTION, true)); + setMainTxState({ + txHash: undefined, + loading: false, + success: false, + }); + setState({ + actionsLoading: false, + }); + } + }; + + return ( + Checking approval + ) : ( + Swap {state.sourceToken.symbol} collateral + ) + } + actionInProgressText={ + approvalTxState.loading ? ( + Checking approval + ) : ( + Swapping {state.sourceToken.symbol} collateral + ) + } + errorParams={{ + loading: false, + disabled: + state.actionsBlocked || + approvalTxState.loading || + (!approvalTxState.success && requiresApproval), + content: approvalTxState.loading ? ( + Checking approval + ) : ( + Swap {state.sourceToken.symbol} collateral + ), + handleClick: action, + }} + fetchingData={state.actionsLoading} + blocked={state.actionsBlocked || !precalculatedInstanceAddress} + tryPermit={tryPermit} + /> + ); +}; diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx new file mode 100644 index 0000000000..c7646c2bd6 --- /dev/null +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx @@ -0,0 +1,268 @@ +import { normalizeBN } from '@aave/math-utils'; +import { Trans } from '@lingui/macro'; +import { BigNumber, PopulatedTransaction } from 'ethers'; +import { Dispatch, useEffect } from 'react'; +import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; +import { ExactInSwapper, ExactOutSwapper } from 'src/hooks/paraswap/common'; +import { useModalContext } from 'src/hooks/useModal'; +import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +import { useRootStore } from 'src/store/root'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { useShallow } from 'zustand/shallow'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; +import { isParaswapRates, isProtocolSwapState, SwapParams, SwapState } from '../../types'; +import { useSwapTokenApproval } from '../approval/useSwapTokenApproval'; +// import { normalizeBN } from '@aave/math-utils'; + +export const CollateralSwapActionsViaParaswapAdapters = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const { setTxError, setMainTxState, approvalTxState } = useModalContext(); + const { addTransaction, estimateGasLimit } = useRootStore(); + const { sendTx } = useWeb3Context(); + const [swapCollateral, currentMarketData] = useRootStore( + useShallow((state) => [state.swapCollateral, state.currentMarketData]) + ); + + // Approval is aToken ERC20 Approval + const { requiresApproval, signatureParams, approval, tryPermit, approvedAmount } = + useSwapTokenApproval({ + chainId: state.chainId, + token: state.sourceToken.addressToSwap, // aToken + symbol: state.sourceToken.symbol, + amount: normalizeBN(state.inputAmount, -state.sourceToken.decimals).toString(), + decimals: state.sourceToken.decimals, + spender: currentMarketData.addresses.SWAP_COLLATERAL_ADAPTER, + setState, + }); + + // Use centralized gas estimation + useSwapGasEstimation({ + state, + setState, + requiresApproval, + requiresApprovalReset: state.requiresApprovalReset, + approvalTxState, + }); + + const action = async () => { + if (!state.swapRate || !isParaswapRates(state.swapRate)) + throw new Error('Route required to build transaction'); + + const isMaxSelected = state.isMaxSelected; + const optimalRateData = state.swapRate.optimalRateData; + + // 1. Prepare internal swap call data + let swapCallData = ''; + let augustus = ''; + if (state.side === 'sell') { + const swapper = ExactInSwapper(state.chainId); + + console.log('SWAPPER getTransactionParams'); + console.log('maxSlippage', Number(state.slippage)); + + const result = await swapper.getTransactionParams( + state.sourceToken.underlyingAddress, + state.sourceToken.decimals, + state.destinationToken.underlyingAddress, + state.destinationToken.decimals, + state.user, + optimalRateData, + Number(state.slippage) + ); + console.log('SWAPPER getTransactionParams result', result); + swapCallData = result.swapCallData; + augustus = result.augustus; + } else { + const swapper = ExactOutSwapper(state.chainId); + console.log('optimalRateData', optimalRateData, { + srcToken: state.destinationToken.underlyingAddress, + srcDecimals: state.destinationToken.decimals, + destToken: state.sourceToken.underlyingAddress, + destDecimals: state.sourceToken.decimals, + user: state.user, + maxSlippage: Number(state.slippage), + optimalRateData: optimalRateData, + }); + + const result = await swapper.getTransactionParams( + state.destinationToken.underlyingAddress, + state.destinationToken.decimals, + state.sourceToken.underlyingAddress, + state.sourceToken.decimals, + state.user, + optimalRateData, + Number(state.slippage) + ); + swapCallData = result.swapCallData; + augustus = result.augustus; + } + + if (!isProtocolSwapState(state)) throw new Error('State is not a protocol swap state'); + + const signedAmount = approvedAmount; + const amountToSwap = state.inputAmount; + const amountToReceive = state.minimumReceived || '0'; + + console.log('!! CollateralSwapActionsViaParaswapAdapters', { + amountToSwap: amountToSwap, + amountToReceive: amountToReceive, + signedAmount, + }); + + console.log('Partner using app code', optimalRateData.partner); + + console.log({ + amountToSwap: amountToSwap, + amountToReceive: amountToReceive, + poolReserve: state.sourceReserve.reserve, + targetReserve: state.destinationReserve.reserve, + isWrongNetwork: state.isWrongNetwork, + symbol: state.sourceToken.symbol, + blocked: state.actionsBlocked, + isMaxSelected: isMaxSelected, + useFlashLoan: true, + swapCallData: swapCallData, + signature: signatureParams?.splitedSignature, + deadline: signatureParams?.deadline, + signedAmount, + }); + + let response; + try { + // 2. Prepare Tx + const txs = await swapCollateral({ + amountToSwap: amountToSwap, + amountToReceive: amountToReceive, + poolReserve: state.sourceReserve.reserve, + targetReserve: state.destinationReserve.reserve, + isWrongNetwork: state.isWrongNetwork, + symbol: state.sourceToken.symbol, + blocked: state.actionsBlocked, + isMaxSelected: isMaxSelected, + useFlashLoan: true, + swapCallData: swapCallData, + augustus: augustus, + signature: signatureParams?.splitedSignature, + deadline: signatureParams?.deadline, + signedAmount, + }); + + const actionTx = txs.find((tx) => ['DLP_ACTION'].includes(tx.txType)); + if (!actionTx) throw new Error('Action tx not found'); + const tx = await actionTx.tx(); + const populatedTx: PopulatedTransaction = { + to: tx.to, + from: tx.from, + data: tx.data, + gasLimit: tx.gasLimit, + gasPrice: tx.gasPrice, + nonce: tx.nonce, + chainId: tx.chainId, + value: tx.value ? BigNumber.from(tx.value) : undefined, + }; + + // 3. Estimate gas limit and send tx + console.log('populatedTx', populatedTx); + const txWithGasEstimation = await estimateGasLimit(populatedTx, state.chainId); + response = await sendTx(txWithGasEstimation); + await response.wait(1); + addTransaction( + response.hash, + { + txState: 'success', + }, + { + chainId: state.chainId, + } + ); + // TODO: fix success + setMainTxState({ + txHash: response.hash, + loading: false, + success: true, + }); + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.MAIN_ACTION, false); + setTxError(parsedError); + setMainTxState({ + loading: false, + }); + setState({ + actionsLoading: false, + error: { + rawError: parsedError.rawError, + message: `Error: ${parsedError.error} on ${parsedError.txAction}`, + actionBlocked: parsedError.actionBlocked, + }, + }); + } + }; + + useEffect(() => { + if (state.mainTxState.success) { + trackingHandlers.trackSwap(); + params.invalidateAppState(); + + addTransaction( + state.mainTxState.txHash || '', + { + txState: 'success', + }, + { + chainId: state.chainId, + } + ); + + setMainTxState({ + txHash: state.mainTxState.txHash || '', + loading: false, + success: true, + }); + } + }, [state.mainTxState.success]); + + return ( + Checking approval + ) : ( + Swap {state.sourceToken.symbol} collateral + ) + } + actionInProgressText={Swapping {state.sourceToken.symbol} collateral} + fetchingData={state.actionsLoading} + errorParams={{ + loading: false, + disabled: state.actionsBlocked, + content: Swap {state.sourceToken.symbol} collateral, + handleClick: action, + }} + tryPermit={tryPermit} + /> + ); +}; diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActions.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActions.tsx new file mode 100644 index 0000000000..20f90d8b90 --- /dev/null +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActions.tsx @@ -0,0 +1,41 @@ +import { Dispatch } from 'react'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { ProtocolSwapParams, ProtocolSwapState, SwapProvider, SwapState } from '../../types'; +import { DebtSwapActionsViaCoW } from './DebtSwapActionsViaCoW'; +import { DebtSwapActionsViaParaswap } from './DebtSwapActionsViaParaswap'; + +export const DebtSwapActions = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + switch (state.provider) { + case SwapProvider.COW_PROTOCOL: + return ( + + ); + case SwapProvider.PARASWAP: + return ( + + ); + default: + return null; + } +}; diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx new file mode 100644 index 0000000000..37650586a0 --- /dev/null +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -0,0 +1,273 @@ +import { normalize } from '@aave/math-utils'; +import { + LimitTradeParameters, + OrderSigningUtils, + percentageToBps, + TradingSdk, +} from '@cowprotocol/cow-sdk'; +import { + AaveCollateralSwapSdk, + CollateralSwapOrder, + CollateralSwapTradeParams, + EncodedOrder, + FlashLoanHookAmounts, + HASH_ZERO, +} from '@cowprotocol/sdk-flash-loans'; +import { Trans } from '@lingui/macro'; +import { Dispatch, useEffect, useState } from 'react'; +import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; +import { useModalContext } from 'src/hooks/useModal'; +import { useRootStore } from 'src/store/root'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { useShallow } from 'zustand/react/shallow'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { VALID_TO_HALF_HOUR } from '../../constants/cow.constants'; +import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; +import { getCowAdapter, getUnsignerOrder } from '../../helpers/cow'; +import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; +import { SwapParams, SwapState } from '../../types'; +import { useSwapTokenApproval } from '../approval/useSwapTokenApproval'; + +const flashLoanFeePercent = 0.05; + +export const DebtSwapActionsViaCoW = ({ + state, + setState, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const [user] = useRootStore(useShallow((state) => [state.account])); + + const { mainTxState, loadingTxns, approvalTxState, setMainTxState, setTxError } = + useModalContext(); + + const [instanceAddress, setInstanceAddress] = useState(); + const validTo = VALID_TO_HALF_HOUR; + + // Pre-compute instance address + useEffect(() => { + const calculateInstanceAddress = async () => { + if (!state.minimumReceived) return; + + const flashLoanSdk = new AaveCollateralSwapSdk(); + const slippagePercentage = Number(state.slippage) / 100; + const slippageBps = percentageToBps(slippagePercentage); + const orderToSing = await getUnsignerOrder({ + sellAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + buyAmount: normalize(state.minimumReceived, -state.destinationToken.decimals), + dstToken: state.destinationToken.underlyingAddress, // TODO: check if aToken or underlying + user, + chainId: state.chainId, + tokenFromSymbol: state.sourceToken.symbol, // TODO: should be underlying symbol? + tokenToSymbol: state.destinationToken.symbol, // TODO: should be underlying symbol? + slippageBps, + smartSlippage: state.autoSlippage == state.slippage, + appCode: APP_CODE_PER_SWAP_TYPE[state.swapType], + orderType: state.orderType, + validTo: VALID_TO_HALF_HOUR, + }); + + const encodedOrder: EncodedOrder = { + ...OrderSigningUtils.encodeUnsignedOrder(orderToSing), + appData: HASH_ZERO, + validTo: validTo, + }; + + const hookAmounts: FlashLoanHookAmounts = { + flashLoanAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + flashLoanFeeAmount: percentageToBps(flashLoanFeePercent).toString(), // TODO: check if flashLoanFeeAmount is correct + sellAssetAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + buyAssetAmount: normalize(state.minimumReceived, -state.destinationToken.decimals), + }; + + if (!user) return; + try { + const preComputedInstanceAddress = await flashLoanSdk.getExpectedInstanceAddress( + state.chainId, + user as `0x${string}`, + hookAmounts, + encodedOrder + ); + setInstanceAddress(preComputedInstanceAddress); + } catch (error) { + setTxError(getErrorTextFromError(error, TxAction.MAIN_ACTION, true)); + setMainTxState({ + txHash: undefined, + loading: false, + success: false, + }); + return; + } + }; + + calculateInstanceAddress(); + }, [ + user, + state.inputAmount, + state.minimumReceived, + state.destinationToken.underlyingAddress, + state.sourceToken.symbol, + state.destinationToken.symbol, + state.slippage, + state.autoSlippage, + APP_CODE_PER_SWAP_TYPE[state.swapType], + ]); + + console.log('instanceAddress', instanceAddress); + + // Approval is aToken ERC20 Approval + const { requiresApproval, approval, tryPermit, signatureParams } = useSwapTokenApproval({ + chainId: state.chainId, + token: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + amount: state.inputAmount, + decimals: state.sourceToken.decimals, + spender: instanceAddress, + setState, + allowPermit: true, // CoW Adapters do support permit + }); + + // Use centralized gas estimation + useSwapGasEstimation({ + state, + setState, + requiresApproval, + requiresApprovalReset: state.requiresApprovalReset, + approvalTxState, + }); + + const action = async () => { + try { + if (!state.minimumReceived) return; + + const tradingSdk = new TradingSdk( + { + chainId: state.chainId, + appCode: APP_CODE_PER_SWAP_TYPE[state.swapType], + }, + {}, + await getCowAdapter(state.chainId) + ); + + const flashLoanSdk = new AaveCollateralSwapSdk(); + + const collateralPermit = signatureParams + ? { + amount: signatureParams?.amount, + deadline: Number(signatureParams?.deadline), + v: signatureParams?.splitedSignature.v, + r: signatureParams?.splitedSignature.r, + s: signatureParams?.splitedSignature.s, + } + : undefined; + + const collateralSwapTradeParams: CollateralSwapTradeParams = { + chainId: state.chainId, + validTo: validTo, + owner: user as `0x${string}`, + flashLoanFeeAmount: BigInt(flashLoanFeePercent.toString()), // TODO: check if flashLoanFeeAmount is correct + }; + + const slippagePercentage = Number(state.slippage) / 100; + const slippageBps = percentageToBps(slippagePercentage); + const orderToSign = await getUnsignerOrder({ + sellAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + buyAmount: normalize(state.minimumReceived, -state.destinationToken.decimals), + dstToken: state.destinationToken.underlyingAddress, // TODO: check if aToken or underlying + user, + chainId: state.chainId, + tokenFromSymbol: state.sourceToken.symbol, // TODO: should be underlying symbol? + tokenToSymbol: state.destinationToken.symbol, // TODO: should be underlying symbol? + slippageBps, + smartSlippage: state.autoSlippage == state.slippage, + appCode: APP_CODE_PER_SWAP_TYPE[state.swapType], + orderType: state.orderType, + validTo: VALID_TO_HALF_HOUR, + }); + + const collateralSwapQuoteParams: CollateralSwapOrder = { + sellAmount: BigInt(normalize(state.inputAmount, -state.sourceToken.decimals)), + buyAmount: BigInt(normalize(state.minimumReceived, -state.destinationToken.decimals)), + orderToSign: orderToSign, + collateralPermit, + }; + + const { swapSettings } = await flashLoanSdk.getOrderPostingSettings( + collateralSwapTradeParams, + collateralSwapQuoteParams + ); + + const limitOrder: LimitTradeParameters = { + sellToken: orderToSign.sellToken, + sellTokenDecimals: state.sourceToken.decimals, + buyToken: state.destinationToken.addressToSwap, + buyTokenDecimals: state.destinationToken.decimals, + kind: orderToSign.kind, + sellAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + buyAmount: normalize(state.minimumReceived, -state.destinationToken.decimals), + }; + + const result = await tradingSdk.postLimitOrder(limitOrder, swapSettings); + + console.log(result); + } catch (error) { + setTxError(getErrorTextFromError(error, TxAction.MAIN_ACTION, true)); + setMainTxState({ + txHash: undefined, + loading: false, + success: false, + }); + } + }; + + return ( + Checking approval + ) : ( + Swap {state.sourceToken.symbol} collateral + ) + } + actionInProgressText={ + approvalTxState.loading ? ( + Checking approval + ) : ( + Swapping {state.sourceToken.symbol} collateral + ) + } + errorParams={{ + loading: false, + disabled: + state.actionsBlocked || + approvalTxState.loading || + (!approvalTxState.success && requiresApproval), + content: approvalTxState.loading ? ( + Checking approval + ) : ( + Swap {state.sourceToken.symbol} collateral + ), + handleClick: action, + }} + fetchingData={state.actionsLoading} + blocked={state.actionsBlocked || !instanceAddress} + tryPermit={tryPermit} + /> + ); +}; diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx new file mode 100644 index 0000000000..47422bbd6b --- /dev/null +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx @@ -0,0 +1,201 @@ +import { valueToBigNumber } from '@aave/math-utils'; +import { Trans } from '@lingui/macro'; +import { useQueryClient } from '@tanstack/react-query'; +import { parseUnits } from 'ethers/lib/utils'; +import { Dispatch } from 'react'; +import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; +import { maxInputAmountWithSlippage } from 'src/hooks/paraswap/common'; +import { useModalContext } from 'src/hooks/useModal'; +import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +import { useRootStore } from 'src/store/root'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { queryKeysFactory } from 'src/ui-config/queries'; +import { useShallow } from 'zustand/shallow'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { getTransactionParams } from '../../helpers/paraswap'; +import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; +import { isParaswapRates, ProtocolSwapParams, ProtocolSwapState, SwapState } from '../../types'; +import { useSwapTokenApproval } from '../approval/useSwapTokenApproval'; + +export const DebtSwapActionsViaParaswap = ({ + state, + setState, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const [currentMarketData, estimateGasLimit, addTransaction, debtSwitch] = useRootStore( + useShallow((state) => [ + state.currentMarketData, + state.estimateGasLimit, + state.addTransaction, + state.debtSwitch, + ]) + ); + const { approvalTxState, mainTxState, loadingTxns, setMainTxState, setTxError } = + useModalContext(); + const { sendTx } = useWeb3Context(); + const queryClient = useQueryClient(); + + const amountToSwap = maxInputAmountWithSlippage( + state.minimumReceived ?? '0', + (Number(state.slippage) * 100).toString(), + state.destinationReserve.reserve.decimals || 18 + ); + + const maxNewDebtAmountToReceiveWithSlippage = maxInputAmountWithSlippage( + state.outputAmount, + (Number(state.slippage) * 100).toString(), + state.destinationReserve.reserve.decimals || 18 + ); + + const { requiresApproval, approval, tryPermit, signatureParams } = useSwapTokenApproval({ + chainId: state.chainId, + token: state.destinationReserve.reserve.variableDebtTokenAddress, + symbol: state.destinationReserve.reserve.symbol, + amount: maxNewDebtAmountToReceiveWithSlippage, + decimals: state.destinationReserve.reserve.decimals, + spender: currentMarketData.addresses.DEBT_SWITCH_ADAPTER, + setState, + allowPermit: currentMarketData.v3, + margin: 0.25, + type: 'delegation', + }); + + // Use centralized gas estimation + useSwapGasEstimation({ + state, + setState, + requiresApproval, + requiresApprovalReset: state.requiresApprovalReset, + approvalTxState, + }); + + const action = async () => { + try { + setMainTxState({ ...mainTxState, loading: true }); + + if (!state.swapRate || !isParaswapRates(state.swapRate)) { + throw new Error('No swap rate found'); + } + + if (!signatureParams) { + throw new Error('Signature params not found'); + } + + const inferredKind = state.swapRate.optimalRateData.side === 'SELL' ? 'sell' : 'buy'; + + // CallData for ParaswapRoute, which is inversed to the actual swap (dest -> src) + const { swapCallData, augustus } = await getTransactionParams( + inferredKind, + state.chainId, + state.destinationToken.addressToSwap, + state.destinationToken.decimals, + state.sourceToken.addressToSwap, + state.sourceToken.decimals, + state.user, + state.swapRate.optimalRateData, + Number(state.slippage) + ); + + // Transaction sent to Paraswap Adapter + const amountToReceiveForDebtSwitch = parseUnits( + maxNewDebtAmountToReceiveWithSlippage, + state.sourceReserve.reserve.decimals + ).toString(); + const amountToSwapForDebtSwitch = parseUnits( + amountToSwap, + state.destinationReserve.reserve.decimals + ).toString(); + + let debtSwitchTxData = debtSwitch({ + poolReserve: state.sourceReserve.reserve, + targetReserve: state.destinationReserve.reserve, + amountToReceive: amountToSwapForDebtSwitch, + amountToSwap: amountToReceiveForDebtSwitch, + isMaxSelected: state.isMaxSelected, + txCalldata: swapCallData, + augustus: augustus, + signatureParams: { + signature: signatureParams.splitedSignature, + deadline: signatureParams.deadline, + amount: signatureParams.amount, + }, + isWrongNetwork: state.isWrongNetwork, + }); + + debtSwitchTxData = await estimateGasLimit(debtSwitchTxData); + const response = await sendTx(debtSwitchTxData); + await response.wait(1); + setMainTxState({ + txHash: response.hash, + loading: false, + success: true, + }); + addTransaction(response.hash, { + action: 'debtSwitch', + txState: 'success', + previousState: `${state.minimumReceived} variable ${state.sourceReserve.reserve.symbol}`, + newState: `${state.inputAmount} variable ${state.destinationReserve.reserve.symbol}`, + amountUsd: valueToBigNumber( + parseUnits(amountToSwap, state.sourceReserve.reserve.decimals).toString() + ) + .multipliedBy(state.sourceReserve.reserve.priceInUSD) + .toString(), + outAmountUsd: valueToBigNumber( + parseUnits( + maxNewDebtAmountToReceiveWithSlippage, + state.destinationReserve.reserve.decimals + ).toString() + ) + .multipliedBy(state.destinationReserve.reserve.priceInUSD) + .toString(), + }); + + queryClient.invalidateQueries({ queryKey: queryKeysFactory.pool }); + queryClient.invalidateQueries({ queryKey: queryKeysFactory.gho }); + } catch (error) { + console.error('error', error); + const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); + setTxError(parsedError); + setState({ + actionsLoading: false, + }); + setMainTxState({ + txHash: undefined, + loading: false, + }); + } + }; + + return ( + Swap} + actionInProgressText={Swapping} + fetchingData={state.ratesLoading} + errorParams={{ + loading: false, + disabled: state.actionsBlocked || !approvalTxState?.success, + content: Swap, + handleClick: action, + }} + blocked={state.actionsBlocked} + tryPermit={tryPermit} + /> + ); +}; diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActions.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActions.tsx new file mode 100644 index 0000000000..5db63b5e8f --- /dev/null +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActions.tsx @@ -0,0 +1,41 @@ +import { Dispatch } from 'react'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { ProtocolSwapParams, ProtocolSwapState, SwapProvider, SwapState } from '../../types'; +import { RepayWithCollateralActionsViaCoW } from './RepayWithCollateralActionsViaCoW'; +import { RepayWithCollateralActionsViaParaswap } from './RepayWithCollateralActionsViaParaswap'; + +export const RepayWithCollateralActions = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + switch (state.provider) { + case SwapProvider.COW_PROTOCOL: + return ( + + ); + case SwapProvider.PARASWAP: + return ( + + ); + default: + return null; + } +}; diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx new file mode 100644 index 0000000000..5cf95ff119 --- /dev/null +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -0,0 +1,273 @@ +import { normalize } from '@aave/math-utils'; +import { + LimitTradeParameters, + OrderSigningUtils, + percentageToBps, + TradingSdk, +} from '@cowprotocol/cow-sdk'; +import { + AaveCollateralSwapSdk, + CollateralSwapOrder, + CollateralSwapTradeParams, + EncodedOrder, + FlashLoanHookAmounts, + HASH_ZERO, +} from '@cowprotocol/sdk-flash-loans'; +import { Trans } from '@lingui/macro'; +import { Dispatch, useEffect, useState } from 'react'; +import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; +import { useModalContext } from 'src/hooks/useModal'; +import { useRootStore } from 'src/store/root'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { useShallow } from 'zustand/react/shallow'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { VALID_TO_HALF_HOUR } from '../../constants/cow.constants'; +import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; +import { getCowAdapter, getUnsignerOrder } from '../../helpers/cow'; +import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; +import { SwapParams, SwapState } from '../../types'; +import { useSwapTokenApproval } from '../approval/useSwapTokenApproval'; + +const flashLoanFeePercent = 0.05; + +export const RepayWithCollateralActionsViaCoW = ({ + state, + setState, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const [user] = useRootStore(useShallow((state) => [state.account])); + + const { mainTxState, loadingTxns, approvalTxState, setMainTxState, setTxError } = + useModalContext(); + + const [instanceAddress, setInstanceAddress] = useState(); + const validTo = VALID_TO_HALF_HOUR; + + // Pre-compute instance address + useEffect(() => { + const calculateInstanceAddress = async () => { + if (!state.minimumReceived) return; + + const flashLoanSdk = new AaveCollateralSwapSdk(); + const slippagePercentage = Number(state.slippage) / 100; + const slippageBps = percentageToBps(slippagePercentage); + const orderToSing = await getUnsignerOrder({ + sellAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + buyAmount: normalize(state.minimumReceived, -state.destinationToken.decimals), + dstToken: state.destinationToken.underlyingAddress, // TODO: check if aToken or underlying + user, + chainId: state.chainId, + tokenFromSymbol: state.sourceToken.symbol, // TODO: should be underlying symbol? + tokenToSymbol: state.destinationToken.symbol, // TODO: should be underlying symbol? + slippageBps, + smartSlippage: state.autoSlippage == state.slippage, + appCode: APP_CODE_PER_SWAP_TYPE[state.swapType], + orderType: state.orderType, + validTo: VALID_TO_HALF_HOUR, + }); + + const encodedOrder: EncodedOrder = { + ...OrderSigningUtils.encodeUnsignedOrder(orderToSing), + appData: HASH_ZERO, + validTo: validTo, + }; + + const hookAmounts: FlashLoanHookAmounts = { + flashLoanAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + flashLoanFeeAmount: percentageToBps(flashLoanFeePercent).toString(), // TODO: check if flashLoanFeeAmount is correct + sellAssetAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + buyAssetAmount: normalize(state.minimumReceived, -state.destinationToken.decimals), + }; + + if (!user) return; + try { + const preComputedInstanceAddress = await flashLoanSdk.getExpectedInstanceAddress( + state.chainId, + user as `0x${string}`, + hookAmounts, + encodedOrder + ); + setInstanceAddress(preComputedInstanceAddress); + } catch (error) { + setTxError(getErrorTextFromError(error, TxAction.MAIN_ACTION, true)); + setMainTxState({ + txHash: undefined, + loading: false, + success: false, + }); + return; + } + }; + + calculateInstanceAddress(); + }, [ + user, + state.inputAmount, + state.minimumReceived, + state.destinationToken.underlyingAddress, + state.sourceToken.symbol, + state.destinationToken.symbol, + state.slippage, + state.autoSlippage, + APP_CODE_PER_SWAP_TYPE[state.swapType], + ]); + + console.log('instanceAddress', instanceAddress); + + // Approval is aToken ERC20 Approval + const { requiresApproval, approval, tryPermit, signatureParams } = useSwapTokenApproval({ + chainId: state.chainId, + token: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + amount: state.inputAmount, + decimals: state.sourceToken.decimals, + spender: instanceAddress, + setState, + allowPermit: true, // CoW Adapters do support permit + }); + + // Use centralized gas estimation + useSwapGasEstimation({ + state, + setState, + requiresApproval, + requiresApprovalReset: state.requiresApprovalReset, + approvalTxState, + }); + + const action = async () => { + try { + if (!state.minimumReceived) return; + + const tradingSdk = new TradingSdk( + { + chainId: state.chainId, + appCode: APP_CODE_PER_SWAP_TYPE[state.swapType], + }, + {}, + await getCowAdapter(state.chainId) + ); + + const flashLoanSdk = new AaveCollateralSwapSdk(); + + const collateralPermit = signatureParams + ? { + amount: signatureParams.amount, + deadline: Number(signatureParams.deadline), + v: signatureParams.splitedSignature.v, + r: signatureParams.splitedSignature.r, + s: signatureParams.splitedSignature.s, + } + : undefined; + + const collateralSwapTradeParams: CollateralSwapTradeParams = { + chainId: state.chainId, + validTo: validTo, + owner: user as `0x${string}`, + flashLoanFeeAmount: BigInt(flashLoanFeePercent.toString()), // TODO: check if flashLoanFeeAmount is correct + }; + + const slippagePercentage = Number(state.slippage) / 100; + const slippageBps = percentageToBps(slippagePercentage); + const orderToSign = await getUnsignerOrder({ + sellAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + buyAmount: normalize(state.minimumReceived, -state.destinationToken.decimals), + dstToken: state.destinationToken.underlyingAddress, // TODO: check if aToken or underlying + user, + chainId: state.chainId, + tokenFromSymbol: state.sourceToken.symbol, // TODO: should be underlying symbol? + tokenToSymbol: state.destinationToken.symbol, // TODO: should be underlying symbol? + slippageBps, + smartSlippage: state.autoSlippage == state.slippage, + appCode: APP_CODE_PER_SWAP_TYPE[state.swapType], + orderType: state.orderType, + validTo: VALID_TO_HALF_HOUR, + }); + + const collateralSwapQuoteParams: CollateralSwapOrder = { + sellAmount: BigInt(normalize(state.inputAmount, -state.sourceToken.decimals)), + buyAmount: BigInt(normalize(state.minimumReceived, -state.destinationToken.decimals)), + orderToSign: orderToSign, + collateralPermit, + }; + + const { swapSettings } = await flashLoanSdk.getOrderPostingSettings( + collateralSwapTradeParams, + collateralSwapQuoteParams + ); + + const limitOrder: LimitTradeParameters = { + sellToken: orderToSign.sellToken, + sellTokenDecimals: state.sourceToken.decimals, + buyToken: state.destinationToken.addressToSwap, + buyTokenDecimals: state.destinationToken.decimals, + kind: orderToSign.kind, + sellAmount: normalize(state.inputAmount, -state.sourceToken.decimals), + buyAmount: normalize(state.minimumReceived, -state.destinationToken.decimals), + }; + + const result = await tradingSdk.postLimitOrder(limitOrder, swapSettings); + + console.log(result); + } catch (error) { + setTxError(getErrorTextFromError(error, TxAction.MAIN_ACTION, true)); + setMainTxState({ + txHash: undefined, + loading: false, + success: false, + }); + } + }; + + return ( + Checking approval + ) : ( + Swap {state.sourceToken.symbol} collateral + ) + } + actionInProgressText={ + approvalTxState.loading ? ( + Checking approval + ) : ( + Swapping {state.sourceToken.symbol} collateral + ) + } + errorParams={{ + loading: false, + disabled: + state.actionsBlocked || + approvalTxState.loading || + (!approvalTxState.success && requiresApproval), + content: approvalTxState.loading ? ( + Checking approval + ) : ( + Swap {state.sourceToken.symbol} collateral + ), + handleClick: action, + }} + fetchingData={state.actionsLoading} + blocked={state.actionsBlocked || !instanceAddress} + tryPermit={tryPermit} + /> + ); +}; diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx new file mode 100644 index 0000000000..95e51673d5 --- /dev/null +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx @@ -0,0 +1,165 @@ +import { + API_ETH_MOCK_ADDRESS, + gasLimitRecommendations, + ProtocolAction, +} from '@aave/contract-helpers'; +import { valueToBigNumber } from '@aave/math-utils'; +import { Trans } from '@lingui/macro'; +import { Dispatch } from 'react'; +import { useParaSwapTransactionHandler } from 'src/helpers/useParaSwapTransactionHandler'; +import { calculateSignedAmount } from 'src/hooks/paraswap/common'; +import { useRootStore } from 'src/store/root'; +import { useShallow } from 'zustand/shallow'; + +import { TxActionsWrapper } from '../../../TxActionsWrapper'; +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { getTransactionParams } from '../../helpers/paraswap'; +import { isParaswapRates, ProtocolSwapParams, ProtocolSwapState, SwapState } from '../../types'; + +export const RepayWithCollateralActionsViaParaswap = ({ + params, + state, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const [paraswapRepayWithCollateral, currentMarketData] = useRootStore( + useShallow((state) => [state.paraswapRepayWithCollateral, state.currentMarketData]) + ); + + const tokenToRepayWithBalance = state.destinationToken.balance || '0'; + + let safeAmountToRepayAll = valueToBigNumber(state.sourceReserve.variableBorrows || '0'); + // Add in the approximate interest accrued over the next 30 minutes + safeAmountToRepayAll = safeAmountToRepayAll.plus( + safeAmountToRepayAll + .multipliedBy(state.sourceReserve.reserve.variableBorrowAPY) + .dividedBy(360 * 24 * 2) + ); + + const isMaxSelected = state.inputAmount === '-1'; + const repayAmount = isMaxSelected ? safeAmountToRepayAll.toString() : state.inputAmount; + // const repayAmountUsdValue = valueToBigNumber(repayAmount) + // .multipliedBy(state.sourceReserve.reserve.priceInUSD) + // .toString(); + + // The slippage is factored into the collateral amount because when we swap for 'exactOut', positive slippage is applied on the collateral amount. + const collateralAmountRequiredToCoverDebt = safeAmountToRepayAll + .multipliedBy(state.sourceReserve.reserve.priceInUSD) + .multipliedBy(100 + Number(state.slippage)) + .dividedBy(100) + .dividedBy(state.destinationReserve.reserve.priceInUSD); + + const repayAllDebt = + state.isMaxSelected && + valueToBigNumber(tokenToRepayWithBalance).gte(collateralAmountRequiredToCoverDebt); + + const { approval, action, loadingTxns, approvalTxState, mainTxState, requiresApproval } = + useParaSwapTransactionHandler({ + protocolAction: ProtocolAction.repayCollateral, + handleGetTxns: async (signature, deadline) => { + if (!state.swapRate || !isParaswapRates(state.swapRate)) { + throw new Error('No swap rate found'); // TODO: handle gracefully, this should not happen + } + + const { swapCallData, augustus } = await getTransactionParams( + state.side, + state.chainId, + state.sourceToken.addressToSwap, + state.sourceToken.decimals, + state.destinationToken.addressToSwap, + state.destinationToken.decimals, + state.user, + state.swapRate.optimalRateData, + Number(state.slippage) + ); + + // TODO: Fix this not working the tx builder via paraswap + + return paraswapRepayWithCollateral({ + repayAllDebt, + repayAmount, + rateMode: params.interestMode, + repayWithAmount: state.minimumReceived ?? '0', + fromAssetData: state.destinationReserve.reserve, + poolReserve: state.sourceReserve.reserve, + isWrongNetwork: state.isWrongNetwork, + symbol: state.destinationReserve.reserve.symbol, + useFlashLoan: state.useFlashloan || false, + blocked: state.actionsBlocked, + swapCallData, + augustus, + signature, + deadline, + signedAmount: calculateSignedAmount( + state.minimumReceived ?? '0', + state.destinationReserve.reserve.decimals + ), + }); + }, + handleGetApprovalTxns: async () => { + return paraswapRepayWithCollateral({ + repayAllDebt, + repayAmount, + rateMode: params.interestMode, + repayWithAmount: state.minimumReceived ?? '0', + fromAssetData: state.destinationReserve.reserve, + poolReserve: state.sourceReserve.reserve, + isWrongNetwork: state.isWrongNetwork, + symbol: state.destinationReserve.reserve.symbol, + useFlashLoan: false, + blocked: state.actionsBlocked, + swapCallData: '0x', + augustus: API_ETH_MOCK_ADDRESS, + }); + }, + gasLimitRecommendation: gasLimitRecommendations[ProtocolAction.repayCollateral].limit, + skip: + state.ratesLoading || !repayAmount || parseFloat(repayAmount) === 0 || state.actionsBlocked, + spender: currentMarketData.addresses.REPAY_WITH_COLLATERAL_ADAPTER ?? '', + deps: [state.destinationReserve.reserve.symbol, state.minimumReceived], + }); + + if (!state.swapRate || !isParaswapRates(state.swapRate)) { + console.error('No swap rate found'); + return; + } + + return ( + + approval({ + amount: calculateSignedAmount( + state.minimumReceived ?? '0', + state.destinationReserve.reserve.decimals + ), + underlyingAsset: state.destinationReserve.reserve.aTokenAddress, + }) + } + actionText={Repay {state.sourceReserve.reserve.symbol}} + actionInProgressText={Repaying {state.sourceReserve.reserve.symbol}} + fetchingData={state.ratesLoading} + errorParams={{ + loading: false, + disabled: state.actionsBlocked, + content: Repay {state.sourceReserve.reserve.symbol}, + handleClick: action, + }} + tryPermit + /> + ); +}; diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx new file mode 100644 index 0000000000..62e807f925 --- /dev/null +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx @@ -0,0 +1,357 @@ +import { + calculateUniqueOrderId, + COW_PROTOCOL_VAULT_RELAYER_ADDRESS, + OrderKind, + SupportedChainId, +} from '@cowprotocol/cow-sdk'; +import { Trans } from '@lingui/macro'; +import { BigNumber } from 'ethers'; +import stringify from 'json-stringify-deterministic'; +import { Dispatch, useEffect } from 'react'; +import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; +import { isSmartContractWallet } from 'src/helpers/provider'; +import { useModalContext } from 'src/hooks/useModal'; +import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; +import { useRootStore } from 'src/store/root'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { wagmiConfig } from 'src/ui-config/wagmiConfig'; +import { useShallow } from 'zustand/shallow'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { COW_APP_DATA, VALID_TO_HALF_HOUR } from '../../constants/cow.constants'; +import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; +import { + buyAmountWithCostsIncluded, + getPreSignTransaction, + getUnsignerOrder, + isNativeToken, + populateEthFlowTx, + sellAmountWithCostsIncluded, + sendOrder, + uploadAppData, +} from '../../helpers/cow'; +import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; +import { isCowProtocolRates, OrderType, SwapParams, SwapState } from '../../types'; +import { useSwapTokenApproval } from '../approval/useSwapTokenApproval'; + +export const SwapActionsViaCoW = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const [user, estimateGasLimit, addTransaction] = useRootStore( + useShallow((state) => [state.account, state.estimateGasLimit, state.addTransaction]) + ); + + const { mainTxState, loadingTxns, setMainTxState, setTxError, approvalTxState } = + useModalContext(); + + const { requiresApproval, requiresApprovalReset, approval, tryPermit } = useSwapTokenApproval({ + chainId: state.chainId, + token: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + amount: state.inputAmount, + decimals: state.sourceToken.decimals, + spender: isCowProtocolRates(state.swapRate) + ? COW_PROTOCOL_VAULT_RELAYER_ADDRESS[state.chainId as SupportedChainId] + : undefined, + setState, + allowPermit: false, // CoW does not support permit + }); + + // Use centralized gas estimation + useSwapGasEstimation({ + state, + setState, + requiresApproval, + requiresApprovalReset, + approvalTxState, + }); + + const { sendTx } = useWeb3Context(); + + const slippageInPercent = state.slippage; + const sellAmountAccountingCosts = sellAmountWithCostsIncluded(state); + const buyAmountAccountingCosts = buyAmountWithCostsIncluded(state); + + const action = async () => { + setMainTxState({ ...mainTxState, loading: true }); + if (isCowProtocolRates(state.swapRate)) { + if (state.useFlashloan) { + setTxError( + getErrorTextFromError(new Error('Please use flashloan'), TxAction.MAIN_ACTION, true) + ); + setState({ + actionsLoading: false, + }); + setMainTxState({ + txHash: undefined, + loading: false, + }); + return; + } + + try { + const provider = await getEthersProvider(wagmiConfig, { chainId: state.chainId }); + const slippageBps = + state.orderType === OrderType.LIMIT ? 0 : Math.round(Number(slippageInPercent) * 100); // percent to bps + const smartSlippage = state.swapRate.suggestedSlippage == Number(slippageInPercent); + const appCode = APP_CODE_PER_SWAP_TYPE[params.swapType]; + + // If srcToken is native, we need to use the eth-flow instead of the orderbook + if (isNativeToken(state.sourceToken.addressToSwap)) { + const ethFlowTx = await populateEthFlowTx( + sellAmountAccountingCosts, + buyAmountAccountingCosts, + state.destinationToken.addressToSwap, + user, + VALID_TO_HALF_HOUR, + state.sourceToken.symbol, + state.destinationToken.symbol, + slippageBps, + smartSlippage, + appCode, + state.orderType, + state.swapRate.quoteId + ); + const txWithGasEstimation = await estimateGasLimit(ethFlowTx, state.chainId); + let response; + try { + response = await sendTx(txWithGasEstimation); + addTransaction( + response.hash, + { + txState: 'success', + }, + { + chainId: state.chainId, + } + ); + + setMainTxState({ + loading: false, + success: true, + }); + + const unsignerOrder = await getUnsignerOrder({ + sellAmount: sellAmountAccountingCosts, + buyAmount: buyAmountAccountingCosts, + dstToken: state.destinationToken.addressToSwap, + user, + chainId: state.chainId, + tokenFromSymbol: state.sourceToken.symbol, + tokenToSymbol: state.destinationToken.symbol, + slippageBps, + smartSlippage, + appCode, + orderType: state.orderType, + validTo: VALID_TO_HALF_HOUR, + }); + const calculatedOrderId = await calculateUniqueOrderId(state.chainId, unsignerOrder); + + await uploadAppData( + calculatedOrderId, + stringify( + COW_APP_DATA( + state.sourceToken.symbol, + state.destinationToken.symbol, + slippageBps, + smartSlippage, + state.orderType, + APP_CODE_PER_SWAP_TYPE[params.swapType] + ) + ), + state.chainId + ); + + // CoW takes some time to index the order for 'eth-flow' orders + setTimeout(() => { + setMainTxState({ + loading: false, + success: true, + txHash: calculatedOrderId, + }); + }, 1000 * 30); // 30 seconds - if we set less than 30 seconds, the order is not indexed yet and CoW explorer will not find the order + } catch (error) { + setTxError(getErrorTextFromError(error, TxAction.MAIN_ACTION, false)); + setMainTxState({ + txHash: response?.hash, + loading: false, + }); + setState({ + actionsLoading: false, + }); + if (response?.hash) { + addTransaction( + response?.hash, + { + txState: 'failed', + }, + { chainId: state.chainId } + ); + } + } + } else { + let orderId; + try { + if (await isSmartContractWallet(user, provider)) { + const preSignTransaction = await getPreSignTransaction({ + provider, + tokenDest: state.destinationToken.addressToSwap, + chainId: state.chainId, + user, + sellAmount: sellAmountAccountingCosts, + buyAmount: buyAmountAccountingCosts, + tokenSrc: state.sourceToken.addressToSwap, + tokenSrcDecimals: state.swapRate.srcDecimals, + tokenDestDecimals: state.swapRate.destDecimals, + slippageBps, + smartSlippage, + inputSymbol: state.sourceToken.symbol, + outputSymbol: state.destinationToken.symbol, + quote: state.swapRate.order, + appCode, + orderBookQuote: state.swapRate.orderBookQuote, + orderType: state.orderType, + kind: + state.orderType === OrderType.MARKET + ? OrderKind.SELL + : state.side === 'buy' + ? OrderKind.BUY + : OrderKind.SELL, + }); + + const response = await sendTx({ + data: preSignTransaction.data, + to: preSignTransaction.to, + value: BigNumber.from(preSignTransaction.value), + gasLimit: BigNumber.from(preSignTransaction.gasLimit), + }); + + addTransaction( + response.hash, + { + txState: 'success', + }, + { + chainId: state.chainId, + } + ); + + setMainTxState({ + loading: false, + success: true, + txHash: preSignTransaction.orderId, + }); + } else { + orderId = await sendOrder({ + tokenSrc: state.sourceToken.addressToSwap, + tokenSrcDecimals: state.swapRate.srcDecimals, + tokenDest: state.destinationToken.addressToSwap, + tokenDestDecimals: state.swapRate.destDecimals, + quote: state.swapRate.order, + sellAmount: sellAmountAccountingCosts, + buyAmount: buyAmountAccountingCosts, + slippageBps, + smartSlippage, + orderType: state.orderType, + kind: + state.orderType === OrderType.MARKET + ? OrderKind.SELL + : state.side === 'buy' + ? OrderKind.BUY + : OrderKind.SELL, + chainId: state.chainId, + user, + provider, + inputSymbol: state.sourceToken.symbol, + outputSymbol: state.destinationToken.symbol, + appCode, + orderBookQuote: state.swapRate.orderBookQuote, + }); + setMainTxState({ + loading: false, + success: true, + txHash: orderId ?? undefined, + }); + } + } catch (error) { + console.error('SwapActionsViaCoW error', error); + const parsedError = getErrorTextFromError(error, TxAction.MAIN_ACTION, false); + setTxError(parsedError); + setMainTxState({ + success: false, + loading: false, + }); + setState({ + actionsLoading: false, + }); + } + } + } catch (error) { + console.error(error); + const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); + setTxError(parsedError); + setMainTxState({ + txHash: undefined, + loading: false, + success: false, + }); + setState({ + actionsLoading: false, + }); + } + } else { + setTxError( + getErrorTextFromError(new Error('No sell rates found'), TxAction.MAIN_ACTION, true) + ); + setState({ + actionsLoading: false, + }); + } + + trackingHandlers.trackSwap(); + params.invalidateAppState(); + }; + + // Track execution state to pause rate updates during actions + useEffect(() => { + const isExecuting = mainTxState.loading || approvalTxState.loading; + setState({ actionsLoading: isExecuting }); + }, [mainTxState.loading, approvalTxState.loading, setState, state.actionsLoading]); + + return ( + approval()} + requiresApproval={!state.actionsBlocked && requiresApproval} + actionText={Swap} + actionInProgressText={Swapping} + errorParams={{ + loading: false, + disabled: state.actionsBlocked || (!approvalTxState.success && requiresApproval), + content: Swap, + handleClick: action, + }} + fetchingData={state.actionsLoading} + blocked={state.actionsBlocked} + tryPermit={tryPermit} + /> + ); +}; diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx new file mode 100644 index 0000000000..80d744bc6c --- /dev/null +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx @@ -0,0 +1,186 @@ +import { Trans } from '@lingui/macro'; +import { useQueryClient } from '@tanstack/react-query'; +import { Dispatch, useEffect } from 'react'; +import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; +import { useParaswapSellTxParams } from 'src/hooks/paraswap/useParaswapRates'; +import { useModalContext } from 'src/hooks/useModal'; +import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +import { useRootStore } from 'src/store/root'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { queryKeysFactory } from 'src/ui-config/queries'; +import { useShallow } from 'zustand/shallow'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; +import { isParaswapRates, SwapParams, SwapState } from '../../types'; +import { useSwapTokenApproval } from '../approval/useSwapTokenApproval'; + +export const SwapActionsViaParaswap = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const [user, estimateGasLimit, addTransaction, currentMarketData] = useRootStore( + useShallow((state) => [ + state.account, + state.estimateGasLimit, + state.addTransaction, + state.currentMarketData, + ]) + ); + + const { mainTxState, loadingTxns, setMainTxState, setTxError, approvalTxState } = + useModalContext(); + + const { sendTx } = useWeb3Context(); + const queryClient = useQueryClient(); + const { mutateAsync: fetchParaswapTxParams } = useParaswapSellTxParams(state.chainId); + + const slippageInPercent = (Number(state.slippage) * 100).toString(); + + const { requiresApproval, requiresApprovalReset, signatureParams, approval, tryPermit } = + useSwapTokenApproval({ + chainId: state.chainId, + token: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + amount: state.inputAmount, + decimals: state.sourceToken.decimals, + spender: isParaswapRates(state.swapRate) + ? state?.swapRate?.optimalRateData?.tokenTransferProxy + : undefined, + setState, + }); + + // Use centralized gas estimation + useSwapGasEstimation({ + state, + setState, + requiresApproval, + requiresApprovalReset, + approvalTxState: { success: approvalTxState.success || false }, + }); + + const action = async () => { + setMainTxState({ ...mainTxState, loading: true }); + if (isParaswapRates(state.swapRate)) { + try { + // Normal switch using paraswap + const tx = await fetchParaswapTxParams({ + srcToken: state.sourceToken.addressToSwap, + srcDecimals: state.swapRate.srcDecimals, + destDecimals: state.swapRate.destDecimals, + destToken: state.destinationToken.addressToSwap, + route: state.swapRate.optimalRateData, + user, + maxSlippage: Number(slippageInPercent) * 10000, + permit: signatureParams && signatureParams.signature, + deadline: signatureParams && signatureParams.deadline, + partner: 'aave-widget', // TODO: Check with paraswap team if we can change it + }); + tx.chainId = state.chainId; + const txWithGasEstimation = await estimateGasLimit(tx, state.chainId); + const response = await sendTx(txWithGasEstimation); + try { + await response.wait(1); + addTransaction( + response.hash, + { + txState: 'success', + }, + { + chainId: state.chainId, + } + ); + setMainTxState({ + txHash: response.hash, + loading: false, + success: true, + }); + queryClient.invalidateQueries({ + queryKey: queryKeysFactory.poolTokens(user, currentMarketData), + }); + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.MAIN_ACTION, false); + setTxError(parsedError); + setMainTxState({ + txHash: response.hash, + loading: false, + }); + setState({ + actionsLoading: false, + }); + addTransaction( + response.hash, + { + txState: 'failed', + }, + { + chainId: state.chainId, + } + ); + } + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.MAIN_ACTION, false); + setTxError(parsedError); + setMainTxState({ + txHash: undefined, + loading: false, + }); + setState({ + actionsLoading: false, + }); + } + } else { + setTxError( + getErrorTextFromError(new Error('No sell rates found'), TxAction.MAIN_ACTION, true) + ); + setState({ + actionsLoading: false, + }); + } + + params.invalidateAppState(); + trackingHandlers.trackSwap(); + }; + + // Track execution state to pause rate updates during actions + useEffect(() => { + const isExecuting = mainTxState.loading || approvalTxState.loading; + + setState({ actionsLoading: isExecuting }); + }, [mainTxState.loading, approvalTxState.loading, state.actionsLoading]); + + return ( + approval()} + requiresApproval={!state.actionsBlocked && requiresApproval} + actionText={Swap} + actionInProgressText={Swapping} + errorParams={{ + loading: false, + disabled: state.actionsBlocked || (!approvalTxState.success && requiresApproval), + content: Swap, + handleClick: action, + }} + fetchingData={state.actionsLoading} + blocked={state.actionsBlocked} + tryPermit={tryPermit} + /> + ); +}; diff --git a/src/components/transactions/Swap/actions/SwapActions/index.tsx b/src/components/transactions/Swap/actions/SwapActions/index.tsx new file mode 100644 index 0000000000..bb327a39a0 --- /dev/null +++ b/src/components/transactions/Swap/actions/SwapActions/index.tsx @@ -0,0 +1,41 @@ +import { Dispatch } from 'react'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { SwapParams, SwapProvider, SwapState } from '../../types'; +import { SwapActionsViaCoW } from './SwapActionsViaCoW'; +import { SwapActionsViaParaswap } from './SwapActionsViaParaswap'; + +export const SwapActions = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + switch (state.provider) { + case SwapProvider.COW_PROTOCOL: + return ( + + ); + case SwapProvider.PARASWAP: + return ( + + ); + default: + return null; + } +}; diff --git a/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActions.tsx b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActions.tsx new file mode 100644 index 0000000000..5824f28dd4 --- /dev/null +++ b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActions.tsx @@ -0,0 +1,41 @@ +import { Dispatch } from 'react'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { ProtocolSwapParams, ProtocolSwapState, SwapProvider, SwapState } from '../../types'; +import { WithdrawAndSwapActionsViaCoW } from './WithdrawAndSwapActionsViaCoW'; +import { WithdrawAndSwapActionsViaParaswap } from './WithdrawAndSwapActionsViaParaswap'; + +export const WithdrawAndSwapActions = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + switch (state.provider) { + case SwapProvider.COW_PROTOCOL: + return ( + + ); + case SwapProvider.PARASWAP: + return ( + + ); + default: + return null; + } +}; diff --git a/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaCoW.tsx new file mode 100644 index 0000000000..ebc1fe8518 --- /dev/null +++ b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaCoW.tsx @@ -0,0 +1,28 @@ +import { Dispatch } from 'react'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { ProtocolSwapParams, ProtocolSwapState, SwapState } from '../../types'; +import { SwapActionsViaCoW } from '../SwapActions/SwapActionsViaCoW'; + +export const WithdrawAndSwapActionsViaCoW = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + // Essentially an aToken to token swap without a flashloan + + return ( + + ); +}; diff --git a/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx new file mode 100644 index 0000000000..fabaa4f675 --- /dev/null +++ b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx @@ -0,0 +1,301 @@ +import { ERC20Service, ProtocolAction } from '@aave/contract-helpers'; +import { valueToBigNumber } from '@aave/math-utils'; +import { SignatureLike } from '@ethersproject/bytes'; +import { Trans } from '@lingui/macro'; +import { useQueryClient } from '@tanstack/react-query'; +import { parseUnits } from 'ethers/lib/utils'; +import { Dispatch, useCallback, useEffect, useMemo, useState } from 'react'; +import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; +import { MOCK_SIGNED_HASH } from 'src/helpers/useTransactionHandler'; +import { calculateSignedAmount } from 'src/hooks/paraswap/common'; +import { useModalContext } from 'src/hooks/useModal'; +import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +import { useRootStore } from 'src/store/root'; +import { ApprovalMethod } from 'src/store/walletSlice'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { queryKeysFactory } from 'src/ui-config/queries'; +import { useShallow } from 'zustand/shallow'; + +import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { getTransactionParams } from '../../helpers/paraswap'; +import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; +import { isParaswapRates, ProtocolSwapParams, ProtocolSwapState, SwapState } from '../../types'; + +interface SignedParams { + signature: SignatureLike; + deadline: string; + amount: string; +} + +export const WithdrawAndSwapActionsViaParaswap = ({ + state, + setState, + trackingHandlers, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const [ + withdrawAndSwitch, + currentMarketData, + jsonRpcProvider, + account, + generateApproval, + estimateGasLimit, + walletApprovalMethodPreference, + generateSignatureRequest, + addTransaction, + ] = useRootStore( + useShallow((state) => [ + state.withdrawAndSwitch, + state.currentMarketData, + state.jsonRpcProvider, + state.account, + state.generateApproval, + state.estimateGasLimit, + state.walletApprovalMethodPreference, + state.generateSignatureRequest, + state.addTransaction, + ]) + ); + + const { + approvalTxState, + mainTxState, + loadingTxns, + setMainTxState, + setTxError, + setLoadingTxns, + setApprovalTxState, + } = useModalContext(); + + const { sendTx, signTxData } = useWeb3Context(); + const queryClient = useQueryClient(); + + const [approvedAmount, setApprovedAmount] = useState(undefined); + const [signatureParams, setSignatureParams] = useState(); + + const requiresApproval = useMemo(() => { + if ( + approvedAmount === undefined || + approvedAmount === -1 || + state.inputAmount === '0' || + state.isWrongNetwork + ) + return false; + else return approvedAmount <= Number(state.inputAmount); + }, [approvedAmount, state.inputAmount, state.isWrongNetwork]); + + // Use centralized gas estimation + useSwapGasEstimation({ + state, + setState, + requiresApproval, + requiresApprovalReset: state.requiresApprovalReset, + approvalTxState, + }); + + const useSignature = walletApprovalMethodPreference === ApprovalMethod.PERMIT; + + const action = async () => { + if (!state.swapRate || !isParaswapRates(state.swapRate)) { + console.error('No swap rate found'); + return; + } + + try { + setMainTxState({ ...mainTxState, loading: true }); + const { swapCallData, augustus } = await getTransactionParams( + state.side, + state.chainId, + state.sourceToken.addressToSwap, + state.sourceToken.decimals, + state.destinationToken.addressToSwap, + state.destinationToken.decimals, + state.user, + state.swapRate.optimalRateData, + Number(state.slippage) + ); + + // TODO: Fix this not working the tx builder via paraswap + + const tx = withdrawAndSwitch({ + poolReserve: state.sourceReserve.reserve, + targetReserve: state.destinationReserve.reserve, + isMaxSelected: state.isMaxSelected, + amountToSwap: parseUnits( + state.inputAmount, + state.sourceReserve.reserve.decimals + ).toString(), + amountToReceive: parseUnits( + state.minimumReceived ?? '0', + state.destinationReserve.reserve.decimals + ).toString(), + augustus: augustus, + txCalldata: swapCallData, + signatureParams, + }); + const txDataWithGasEstimation = await estimateGasLimit(tx); + const response = await sendTx(txDataWithGasEstimation); + await response.wait(1); + queryClient.invalidateQueries({ queryKey: queryKeysFactory.pool }); + queryClient.invalidateQueries({ queryKey: queryKeysFactory.gho }); + setMainTxState({ + txHash: response.hash, + loading: false, + success: true, + }); + addTransaction(response.hash, { + action: ProtocolAction.withdrawAndSwitch, + txState: 'success', + asset: state.sourceReserve.reserve.underlyingAsset, + amount: parseUnits(state.inputAmount, state.sourceReserve.reserve.decimals).toString(), + assetName: state.sourceReserve.reserve.name, + outAsset: state.destinationReserve.reserve.underlyingAsset, + outAssetName: state.destinationReserve.reserve.name, + outAmount: parseUnits( + state.minimumReceived ?? '0', + state.destinationReserve.reserve.decimals + ).toString(), + amountUsd: valueToBigNumber( + parseUnits(state.inputAmount, state.sourceReserve.reserve.decimals).toString() + ) + .multipliedBy(state.sourceReserve.reserve.priceInUSD) + .toString(), + outAmountUsd: valueToBigNumber( + parseUnits( + state.minimumReceived ?? '0', + state.destinationReserve.reserve.decimals + ).toString() + ) + .multipliedBy(state.destinationReserve.reserve.priceInUSD) + .toString(), + }); + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); + setTxError(parsedError); + setMainTxState({ + txHash: undefined, + loading: false, + }); + setState({ + actionsLoading: false, + }); + trackingHandlers.trackSwapFailed(); + } + }; + + const approval = async () => { + const amountToApprove = calculateSignedAmount( + state.inputAmount, + state.sourceReserve.reserve.decimals + ); + const approvalData = { + user: account, + token: state.sourceReserve.reserve.aTokenAddress, + spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER || '', + amount: amountToApprove, + }; + try { + if (useSignature) { + const deadline = Math.floor(Date.now() / 1000 + 3600).toString(); + const signatureRequest = await generateSignatureRequest({ + ...approvalData, + deadline, + }); + setApprovalTxState({ ...approvalTxState, loading: true }); + const response = await signTxData(signatureRequest); + setSignatureParams({ signature: response, deadline, amount: amountToApprove }); + setApprovalTxState({ + txHash: MOCK_SIGNED_HASH, + loading: false, + success: true, + }); + } else { + const tx = generateApproval(approvalData); + const txWithGasEstimation = await estimateGasLimit(tx); + setApprovalTxState({ ...approvalTxState, loading: true }); + const response = await sendTx(txWithGasEstimation); + await response.wait(1); + setApprovalTxState({ + txHash: response.hash, + loading: false, + success: true, + }); + addTransaction(response.hash, { + action: ProtocolAction.withdrawAndSwitch, + txState: 'success', + asset: state.sourceReserve.reserve.aTokenAddress, + amount: parseUnits(amountToApprove, state.sourceReserve.reserve.decimals).toString(), + assetName: `a${state.sourceReserve.reserve.symbol}`, + spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER, + }); + setTxError(undefined); + fetchApprovedAmount(state.sourceReserve.reserve.aTokenAddress); + } + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); + setTxError(parsedError); + if (!approvalTxState.success) { + setApprovalTxState({ + txHash: undefined, + loading: false, + }); + setState({ + actionsLoading: false, + }); + } + } + }; + + const fetchApprovedAmount = useCallback( + async (aTokenAddress: string) => { + setLoadingTxns(true); + const rpc = jsonRpcProvider(); + const erc20Service = new ERC20Service(rpc); + const approvedTargetAmount = await erc20Service.approvedAmount({ + user: account, + token: aTokenAddress, + spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER || '', + }); + setApprovedAmount(approvedTargetAmount); + setLoadingTxns(false); + setState({ + actionsLoading: false, + }); + }, + [jsonRpcProvider, account, currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER, setLoadingTxns] + ); + + useEffect(() => { + fetchApprovedAmount(state.sourceReserve.reserve.aTokenAddress); + }, [fetchApprovedAmount, state.sourceReserve.reserve.aTokenAddress]); + + return ( + approval()} + requiresApproval={requiresApproval} + actionText={Withdraw and Switch} + actionInProgressText={Withdrawing and Switching} + // sx={sx} + errorParams={{ + loading: false, + disabled: state.actionsBlocked || !approvalTxState?.success, + content: Withdraw and Switch, + handleClick: action, + }} + fetchingData={state.ratesLoading} + blocked={state.actionsBlocked} + tryPermit={true} + /> + ); +}; diff --git a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts new file mode 100644 index 0000000000..df9d128020 --- /dev/null +++ b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts @@ -0,0 +1,366 @@ +import { ERC20Service } from '@aave/contract-helpers'; +import { normalizeBN, valueToBigNumber } from '@aave/math-utils'; +import { ethers } from 'ethers'; +import { defaultAbiCoder, splitSignature } from 'ethers/lib/utils'; +import { Dispatch, useEffect, useMemo, useRef, useState } from 'react'; +import { MOCK_SIGNED_HASH } from 'src/helpers/useTransactionHandler'; +import { calculateSignedAmount } from 'src/hooks/paraswap/common'; +import { useModalContext } from 'src/hooks/useModal'; +import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +import { useRootStore } from 'src/store/root'; +import { ApprovalMethod } from 'src/store/walletSlice'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { permitByChainAndToken } from 'src/ui-config/permitConfig'; +import { getProvider } from 'src/utils/marketsAndNetworksConfig'; +import { needsUSDTApprovalReset } from 'src/utils/usdtHelpers'; +import { useShallow } from 'zustand/shallow'; + +import { isNativeToken } from '../../helpers/cow'; +import { SwapState } from '../../types'; + +export type SwapTokenApprovalParams = { + chainId: number; + token: string; + decimals: number; + symbol: string; + amount: string; + spender?: string; + setState: Dispatch>; + allowPermit?: boolean; + margin?: number; + type?: 'approval' | 'delegation'; +}; + +export type SignatureLike = { + r: string; + s: string; + _vs: string; + recoveryParam: number; + v: number; +}; +export interface SignedParams { + signature: string; + splitedSignature: SignatureLike; + deadline: string; + amount: string; + approvedToken: string; +} + +export const useSwapTokenApproval = ({ + chainId, + token, + symbol, + amount, + decimals, + spender, + setState, + allowPermit = true, + margin = 0, + type = 'approval', +}: SwapTokenApprovalParams) => { + const [approvedAmount, setApprovedAmount] = useState(); + const [requiresApprovalReset, setRequiresApprovalReset] = useState(false); + const [signatureParams, setSignatureParams] = useState(); + const lastFetchedSpenderRef = useRef(); + + const { approvalTxState, setLoadingTxns, setTxError, setApprovalTxState } = useModalContext(); + const { sendTx, signTxData } = useWeb3Context(); + + const [ + user, + generateApproval, + estimateGasLimit, + walletApprovalMethodPreference, + generateSignatureRequest, + getCreditDelegationApprovedAmount, + generateApproveDelegation, + generateCreditDelegationSignatureRequest, + ] = useRootStore( + useShallow((state) => [ + state.account, + state.generateApproval, + state.estimateGasLimit, + state.walletApprovalMethodPreference, + state.generateSignatureRequest, + state.getCreditDelegationApprovedAmount, + state.generateApproveDelegation, + state.generateCreditDelegationSignatureRequest, + state.currentMarketData, + ]) + ); + + const requiresApproval = useMemo(() => { + if (isNativeToken(token)) { + return false; + } + + if (approvedAmount === undefined) { + return true; + } + + if (approvedAmount === '-1' || amount === '0') { + return false; + } + + return valueToBigNumber(approvedAmount).isLessThan(valueToBigNumber(amount)); + }, [approvedAmount, amount, signatureParams, decimals]); + + // Clear status if amount changes + useEffect(() => { + if (signatureParams || approvalTxState.success) { + setSignatureParams(undefined); + setApprovedAmount(undefined); + setApprovalTxState({ + txHash: undefined, + loading: false, + success: false, + }); + } + }, [amount]); + + // Warning for USDT on Ethereum approval reset + useEffect(() => { + const amountToApprove = calculateSignedAmount(normalizeBN(amount, -decimals).toString(), 0); + const currentApproved = calculateSignedAmount(approvedAmount?.toString() || '0', decimals, 0); + + let needsApprovalReset = false; + if (needsUSDTApprovalReset(symbol, chainId, currentApproved, amountToApprove)) { + needsApprovalReset = true; + setRequiresApprovalReset(true); + } else { + needsApprovalReset = false; + } + + setRequiresApprovalReset(false); + setState({ requiresApprovalReset: needsApprovalReset }); + }, [symbol, chainId, approvedAmount, amount]); + + const fetchApprovedAmountFromContract = async () => { + if (!spender || signatureParams) { + return; + } + setApprovalTxState({ + txHash: undefined, + loading: false, + success: false, + }); + setLoadingTxns(true); + + const rpc = getProvider(chainId); + let approvedTargetAmount: string; + if (type === 'delegation') { + const creditDelegationApprovedAmount = await getCreditDelegationApprovedAmount({ + debtTokenAddress: token, + delegatee: spender ?? '', + }); + approvedTargetAmount = creditDelegationApprovedAmount.amount; + } else { + const erc20Service = new ERC20Service(rpc); + const erc20ApprovedAmount = await erc20Service.approvedAmount({ + user, + token, + spender, + }); + approvedTargetAmount = erc20ApprovedAmount.toString(); + } + console.log('approvedTargetAmount', approvedTargetAmount); + setApprovedAmount(approvedTargetAmount.toString()); + + setLoadingTxns(false); + setState({ + actionsLoading: false, + }); + }; + + useEffect(() => { + if (!spender) return; + if (signatureParams) return; // skip after permit path + if (approvalTxState.loading || approvalTxState.success) return; + if (lastFetchedSpenderRef.current === spender) return; // prevent duplicate fetches for same spender (e.g., StrictMode re-mount) + + lastFetchedSpenderRef.current = spender; + fetchApprovedAmountFromContract(); + }, [spender, signatureParams, approvalTxState.loading, approvalTxState.success]); + + const permitAvailable = permitByChainAndToken[chainId]?.[token.toLowerCase()]; + const tryPermit = allowPermit && permitAvailable; + const usePermit = tryPermit && walletApprovalMethodPreference === ApprovalMethod.PERMIT; + + const approval = async () => { + if (!spender) { + return; + } + + const amountToApprove = calculateSignedAmount( + normalizeBN(amount, -decimals).toString(), + 0, + margin + ); + + // If requires approval reset, reset the approval first + if (requiresApprovalReset) { + try { + // Create direct ERC20 approval transaction for reset to 0 as ERC20Service requires positive amount + const abi = new ethers.utils.Interface([ + 'function approve(address spender, uint256 amount)', + ]); + const encodedData = abi.encodeFunctionData('approve', [spender, '0']); + const resetTx = { + data: encodedData, + to: token, + from: spender, + }; + const resetTxWithGasEstimation = await estimateGasLimit(resetTx, chainId); + setApprovalTxState({ ...approvalTxState, loading: true }); + const resetResponse = await sendTx(resetTxWithGasEstimation); + await resetResponse.wait(1); + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.APPROVAL, false); + setTxError(parsedError); + setApprovalTxState({ + txHash: undefined, + loading: false, + }); + setState({ + actionsLoading: false, + }); + } + fetchApprovedAmountFromContract().then(() => { + setApprovalTxState({ + loading: false, + success: false, + }); + setState({ + actionsLoading: false, + }); + }); + + return; // Button will be updated to approve + } + + const approvalData = { + spender, + user, + token, + amount: amountToApprove, + }; + + if (usePermit) { + // Permit approval + try { + const deadline = Math.floor(Date.now() / 1000 + 3600).toString(); + let signatureRequest: string; + if (type === 'delegation') { + signatureRequest = await generateCreditDelegationSignatureRequest({ + underlyingAsset: token, + deadline, + amount: amountToApprove.toString(), + spender, + }); + } else { + signatureRequest = await generateSignatureRequest( + { + ...approvalData, + deadline, + }, + { chainId: chainId } + ); + } + setApprovalTxState({ ...approvalTxState, loading: true }); + const response = await signTxData(signatureRequest); + const splitedSignature = splitSignature(response); + const encodedSignature = defaultAbiCoder.encode( + ['address', 'address', 'uint256', 'uint256', 'uint8', 'bytes32', 'bytes32'], + [ + approvalData.user, + approvalData.spender, + approvalData.amount, + deadline, + splitedSignature.v, + splitedSignature.r, + splitedSignature.s, + ] + ); + const newSignatureParams = { + signature: encodedSignature, + splitedSignature, + deadline, + amount: approvalData.amount, + approvedToken: approvalData.spender, + }; + setSignatureParams(newSignatureParams); + setState({ + actionsLoading: false, + }); + setApprovedAmount(amountToApprove.toString()); + setTxError(undefined); + setApprovalTxState({ + txHash: MOCK_SIGNED_HASH, + loading: false, + success: true, + }); + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.APPROVAL, false); + setTxError(parsedError); + setApprovalTxState({ + txHash: undefined, + loading: false, + }); + setState({ + actionsLoading: false, + }); + } + } else { + // Direct ERC20 approval transaction + try { + let tx; + if (type === 'delegation') { + tx = generateApproveDelegation({ + debtTokenAddress: token, + delegatee: spender ?? '', + amount: amountToApprove.toString(), + }); + } else { + tx = generateApproval(approvalData, { + chainId: chainId, + amount: amountToApprove, + }); + } + const txWithGasEstimation = await estimateGasLimit(tx, chainId); + setApprovalTxState({ loading: true }); + const response = await sendTx(txWithGasEstimation); + await response.wait(1); + fetchApprovedAmountFromContract().then(() => { + setApprovalTxState({ + txHash: response.hash, + loading: false, + success: true, + }); + setTxError(undefined); + setState({ + actionsLoading: false, + }); + }); + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.APPROVAL, false); + setTxError(parsedError); + setApprovalTxState({ + txHash: undefined, + loading: false, + }); + setState({ + actionsLoading: false, + }); + } + } + }; + + return { + requiresApproval, + requiresApprovalReset, + signatureParams, + approval, + tryPermit, + approvedAmount, + }; +}; diff --git a/src/components/transactions/Swap/actions/index.ts b/src/components/transactions/Swap/actions/index.ts new file mode 100644 index 0000000000..79c7e79945 --- /dev/null +++ b/src/components/transactions/Swap/actions/index.ts @@ -0,0 +1,75 @@ +import React, { Dispatch } from 'react'; + +import { TrackAnalyticsHandlers } from '../analytics/useTrackAnalytics'; +import { + isProtocolSwapParams, + isProtocolSwapState, + isTokensSwapParams, + isTokensSwapState, + SwapParams, + SwapState, + SwapType, +} from '../types'; +import { ActionsBlocked } from './ActionsBlocked'; +import { ActionsLoading } from './ActionsSkeleton'; +import { CollateralSwapActions } from './CollateralSwap/CollateralSwapActions'; +import { DebtSwapActions } from './DebtSwap/DebtSwapActions'; +import { RepayWithCollateralActions } from './RepayWithCollateral/RepayWithCollateralActions'; +import { SwapActions } from './SwapActions'; +import { WithdrawAndSwapActions } from './WithdrawAndSwap/WithdrawAndSwapActions'; + +export const BaseSwapActions = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + if (state.ratesLoading || state.actionsLoading || !state.isSwapFlowSelected) { + return React.createElement(ActionsLoading, { state }); + } + + if (state.error?.actionBlocked || !state.swapRate) { + return React.createElement(ActionsBlocked, { state }); + } + + if (params.swapType === SwapType.Swap && isTokensSwapParams(params) && isTokensSwapState(state)) { + return React.createElement(SwapActions, { params, state, setState, trackingHandlers }); + } else if (isProtocolSwapParams(params) && isProtocolSwapState(state)) { + switch (params.swapType) { + case SwapType.CollateralSwap: + return React.createElement(CollateralSwapActions, { + params, + state, + setState, + trackingHandlers, + }); + case SwapType.DebtSwap: + return React.createElement(DebtSwapActions, { params, state, setState, trackingHandlers }); + case SwapType.RepayWithCollateral: + return React.createElement(RepayWithCollateralActions, { + params, + state, + setState, + trackingHandlers, + }); + case SwapType.WithdrawAndSwap: + return React.createElement(WithdrawAndSwapActions, { + params, + state, + setState, + trackingHandlers, + }); + default: + console.error(`Unsupported swap type`); + return null; + } + } else { + console.error(`Invalid swap params or state in actions`); + return null; + } +}; diff --git a/src/components/transactions/Swap/analytics/constants.ts b/src/components/transactions/Swap/analytics/constants.ts new file mode 100644 index 0000000000..625dd5bc27 --- /dev/null +++ b/src/components/transactions/Swap/analytics/constants.ts @@ -0,0 +1,40 @@ +// Re-export the SWAP enum from the events file, for clarity within the analytics folder +export { SWAP } from 'src/utils/events'; + +export enum SwapInputChanges { + /// The user has changed the input amount + INPUT_AMOUNT = 'INPUT_AMOUNT', + + /// The user has changed the output amount + OUTPUT_AMOUNT = 'OUTPUT_AMOUNT', + + /// The user has changed the rate + RATE_CHANGE = 'RATE_CHANGE', + + /// The user has switched the reserves + SWITCH_RESERVES = 'SWITCH_RESERVES', + + /// The user has changed the slippage + SLIPPAGE = 'SLIPPAGE', + + /// The user has changed the network + NETWORK = 'NETWORK', + + /// The user has changed the input token + INPUT_TOKEN = 'INPUT_TOKEN', + + /// The user has added a custom token + ADD_CUSTOM_TOKEN = 'ADD_CUSTOM_TOKEN', + + /// The user has changed the output token + OUTPUT_TOKEN = 'OUTPUT_TOKEN', + + /// The user has changed the order type + ORDER_TYPE = 'ORDER_TYPE', + + /// The user has changed the expiry + EXPIRY = 'EXPIRY', + + /// The user has changed the gas limit + GAS_LIMIT = 'GAS_LIMIT', +} diff --git a/src/components/transactions/Swap/analytics/state.helpers.ts b/src/components/transactions/Swap/analytics/state.helpers.ts new file mode 100644 index 0000000000..d2f11c3659 --- /dev/null +++ b/src/components/transactions/Swap/analytics/state.helpers.ts @@ -0,0 +1,117 @@ +import { TrackEventProperties } from 'src/store/analyticsSlice'; + +import { isCowProtocolRates, SwapError, SwapQuoteType, SwapState } from '../types'; +import { SwapInputChanges } from './constants'; + +export const swapStateToAnalyticsEventParams = (state: SwapState): TrackEventProperties => { + return { + chainId: state.chainId, + inputSymbol: state.sourceToken.symbol, + outputSymbol: state.destinationToken.symbol, + inputAmount: state.inputAmount, + inputAmountUSD: state.swapRate?.srcSpotUSD, + outputAmount: state.outputAmount, + outputAmountUSD: state.swapRate?.destSpotUSD, + afterFeesAmount: state.swapRate?.afterFeesAmount, + afterFeesUSD: state.swapRate?.afterFeesUSD, + minimumReceived: state.minimumReceived, + minimumReceivedUSD: state.minimumReceivedUSD, + slippage: state.slippage, + provider: state.provider, + expiry: state.expiry, + orderType: state.orderType, + gasLimit: state.gasLimit, + shouldUseFlashloan: state.useFlashloan, + useFlashloan: state.useFlashloan, + swapType: state.swapType, + txHash: state.mainTxState.txHash, + isMaxSelected: state.isMaxSelected, + pair: `${state.sourceToken.symbol}-${state.destinationToken.symbol}`, + side: state.side, + userIsSmartContractWallet: state.userIsSmartContractWallet, + userIsSafeWallet: state.userIsSafeWallet, + }; +}; + +export const swapErrorToAnalyticsEventParams = (error: SwapError): TrackEventProperties => { + return { + errorMessage: error.message, + isActionBlocked: error.actionBlocked, + stage: error.stage, + }; +}; + +export const swapQuoteToAnalyticsEventParams = ( + state: SwapState, + swapQuote: SwapQuoteType +): TrackEventProperties => { + return { + ...swapStateToAnalyticsEventParams(state), + + quoteProvider: swapQuote.provider, + quoteSrcAmount: swapQuote.srcSpotAmount, + quoteSrcUSD: swapQuote.srcSpotUSD, + quoteDestAmount: swapQuote.destSpotAmount, + quoteDestUSD: swapQuote.destSpotUSD, + quoteSuggestedSlippage: swapQuote.suggestedSlippage, + ...(isCowProtocolRates(swapQuote) + ? { + quoteQuoteId: swapQuote.quoteId, + } + : { + // any? + }), + }; +}; + +export const swapInputChangeToAnalyticsEventParams = ( + state: SwapState, + fieldChange: SwapInputChanges, + newValue: string +): TrackEventProperties => { + return { + ...swapStateToAnalyticsEventParams(state), + fieldChange, + newValue, + }; +}; + +export const swapTrackApprovalToAnalyticsEventParams = ( + state: SwapState, + approvalAmount: string, + viaPermit: boolean +): TrackEventProperties => { + return { + ...swapStateToAnalyticsEventParams(state), + approvalAmount, + viaPermit, + }; +}; + +export const swapTrackSwapToAnalyticsEventParams = (state: SwapState): TrackEventProperties => { + return { + ...swapStateToAnalyticsEventParams(state), + }; +}; + +export const swapTrackSwapFilledToAnalyticsEventParams = ( + state: SwapState, + executedSellAmount: string, + executedBuyAmount: string +): TrackEventProperties => { + return { + ...swapStateToAnalyticsEventParams(state), + executedSellAmount, + executedSellAmountUSD: state.swapRate?.srcSpotUSD, + executedBuyAmount, + executedBuyAmountUSD: state.swapRate?.destSpotUSD, + }; +}; + +export const swapTrackSwapFailedToAnalyticsEventParams = ( + state: SwapState +): TrackEventProperties => { + return { + ...swapStateToAnalyticsEventParams(state), + }; +}; diff --git a/src/components/transactions/Swap/analytics/useTrackAnalytics.ts b/src/components/transactions/Swap/analytics/useTrackAnalytics.ts new file mode 100644 index 0000000000..05902bb4cf --- /dev/null +++ b/src/components/transactions/Swap/analytics/useTrackAnalytics.ts @@ -0,0 +1,59 @@ +import { useRootStore } from 'src/store/root'; + +import { SwapError, SwapState } from '../types'; +import { SWAP, SwapInputChanges } from './constants'; +import { + swapErrorToAnalyticsEventParams, + swapInputChangeToAnalyticsEventParams, + swapStateToAnalyticsEventParams, + swapTrackApprovalToAnalyticsEventParams, + swapTrackSwapFailedToAnalyticsEventParams, + swapTrackSwapFilledToAnalyticsEventParams, + swapTrackSwapToAnalyticsEventParams, +} from './state.helpers'; + +export type TrackAnalyticsHandlers = { + trackSwapQuote: (isAutoRefreshed: boolean) => void; + trackSwapError: (error: SwapError) => void; + trackInputChange: (fieldChange: SwapInputChanges, newValue: string) => void; + trackApproval: (approvalAmount: string, viaPermit: boolean) => void; + trackSwap: () => void; + trackSwapFilled: (executedSellAmount: string, executedBuyAmount: string) => void; + trackSwapFailed: () => void; +}; + +/* + This hook handles all analytics for the swap component. + We track all the user journey through the swap component, including quote, input changes, errors, warnings, actions, etc. +*/ +export const useHandleAnalytics = ({ state }: { state: SwapState }) => { + const trackEvent = useRootStore((store) => store.trackEvent); + + return { + trackSwapQuote: (isAutoRefreshed: boolean) => + trackEvent( + isAutoRefreshed ? SWAP.QUOTE_REFRESHED : SWAP.QUOTE, + swapStateToAnalyticsEventParams(state) + ), + trackSwapError: (error: SwapError) => + trackEvent(SWAP.ERROR, swapErrorToAnalyticsEventParams(error)), + trackInputChange: (fieldChange: SwapInputChanges, newValue: string) => + trackEvent( + SWAP.INPUT_CHANGES, + swapInputChangeToAnalyticsEventParams(state, fieldChange, newValue) + ), + trackApproval: (approvalAmount: string, viaPermit: boolean) => + trackEvent( + SWAP.APPROVAL, + swapTrackApprovalToAnalyticsEventParams(state, approvalAmount, viaPermit) + ), + trackSwap: () => trackEvent(SWAP.SWAP, swapTrackSwapToAnalyticsEventParams(state)), + trackSwapFilled: (executedSellAmount: string, executedBuyAmount: string) => + trackEvent( + SWAP.SWAP_FILLED, + swapTrackSwapFilledToAnalyticsEventParams(state, executedSellAmount, executedBuyAmount) + ), + trackSwapFailed: () => + trackEvent(SWAP.SWAP_FAILED, swapTrackSwapFailedToAnalyticsEventParams(state)), + }; +}; diff --git a/src/components/transactions/Swap/backup/BaseSwitchModal.tsx b/src/components/transactions/Swap/backup/BaseSwitchModal.tsx new file mode 100644 index 0000000000..b4baa1e321 --- /dev/null +++ b/src/components/transactions/Swap/backup/BaseSwitchModal.tsx @@ -0,0 +1,133 @@ +// import { Box, CircularProgress } from '@mui/material'; +// import React, { useEffect, useMemo, useState } from 'react'; +// import { supportedNetworksWithEnabledMarket } from 'src/components/transactions/Switch/common'; +// import { TokenInfoWithBalance, useTokensBalance } from 'src/hooks/generic/useTokensBalance'; +// import { useModalContext } from 'src/hooks/useModal'; +// import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +// import { useRootStore } from 'src/store/root'; +// import { TOKEN_LIST } from 'src/ui-config/TokenList'; +// import { CustomMarket, getNetworkConfig, marketsData } from 'src/utils/marketsAndNetworksConfig'; + +// import { BaseSwitchModalContent, SwitchModalCustomizableProps } from './BaseSwitchModalContent'; + +// const defaultNetwork = marketsData[CustomMarket.proto_mainnet_v3]; + +// export const getFilteredTokensForSwitch = (chainId: number): TokenInfoWithBalance[] => { +// let customTokenList = TOKEN_LIST.tokens; +// const savedCustomTokens = localStorage.getItem('customTokens'); +// if (savedCustomTokens) { +// customTokenList = customTokenList.concat(JSON.parse(savedCustomTokens)); +// } + +// const transformedTokens = customTokenList.map((token) => { +// return { ...token, balance: '0' }; +// }); +// const realChainId = getNetworkConfig(chainId).underlyingChainId ?? chainId; + +// // Remove duplicates +// const seen = new Set(); +// return transformedTokens +// .filter((token) => token.chainId === realChainId) +// .filter((token) => { +// const key = `${token.chainId}:${token.address.toLowerCase()}`; +// if (seen.has(key)) return false; +// seen.add(key); +// return true; +// }); +// }; + +// export const BaseSwitchModal = ({ +// modalType, +// inputBalanceTitle: balanceTitle, +// forcedDefaultInputToken, +// forcedDefaultOutputToken, +// suggestedDefaultInputToken, +// suggestedDefaultOutputToken, +// tokensFrom: forcedTokensFrom, +// tokensTo: forcedTokensTo, +// showSwitchInputAndOutputAssetsButton = true, +// forcedChainId, +// }: SwitchModalCustomizableProps) => { +// const { +// args: { chainId }, +// } = useModalContext(); + +// const overallAppChainId = useRootStore((store) => store.currentChainId); +// const { chainId: connectedChainId } = useWeb3Context(); +// const user = useRootStore((store) => store.account); + +// const [selectedChainId, setSelectedChainId] = useState(() => { +// if (forcedChainId) { +// return forcedChainId; +// } +// if (supportedNetworksWithEnabledMarket.find((elem) => elem.chainId === overallAppChainId)) +// return overallAppChainId; +// return defaultNetwork.chainId; +// }); + +// useEffect(() => { +// if (forcedChainId) { +// setSelectedChainId(forcedChainId); +// return; +// } + +// // Passing chainId as prop will set default network for switch modal +// if (chainId && supportedNetworksWithEnabledMarket.find((elem) => elem.chainId === chainId)) { +// setSelectedChainId(chainId); +// } else if ( +// connectedChainId && +// supportedNetworksWithEnabledMarket.find((elem) => elem.chainId === connectedChainId) +// ) { +// const supportedFork = supportedNetworksWithEnabledMarket.find( +// (elem) => elem.underlyingChainId === connectedChainId +// ); +// setSelectedChainId(supportedFork ? supportedFork.chainId : connectedChainId); +// } else if ( +// supportedNetworksWithEnabledMarket.find((elem) => elem.chainId === overallAppChainId) +// ) { +// setSelectedChainId(overallAppChainId); +// } else { +// setSelectedChainId(defaultNetwork.chainId); +// } +// }, [overallAppChainId, chainId, connectedChainId, forcedChainId]); + +// const initialDefaultTokens = useMemo( +// () => getFilteredTokensForSwitch(selectedChainId), +// [selectedChainId] +// ); + +// const { +// data: initialTokens, +// refetch: refetchInitialTokens, +// isFetching: tokensLoading, +// } = useTokensBalance(initialDefaultTokens, selectedChainId, user); + +// if (tokensLoading) { +// return ( +// +// +// +// ); +// } + +// return ( +// <> +// refetchInitialTokens()} +// /> +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/BaseSwitchModalContent.tsx b/src/components/transactions/Swap/backup/BaseSwitchModalContent.tsx new file mode 100644 index 0000000000..157bebf838 --- /dev/null +++ b/src/components/transactions/Swap/backup/BaseSwitchModalContent.tsx @@ -0,0 +1,242 @@ +// import { normalize, normalizeBN, valueToBigNumber } from '@aave/math-utils'; +// import { OrderStatus, SupportedChainId, WRAPPED_NATIVE_CURRENCIES } from '@cowprotocol/cow-sdk'; +// import { SwitchVerticalIcon } from '@heroicons/react/outline'; +// import { Trans } from '@lingui/macro'; +// import { Box, Checkbox, CircularProgress, IconButton, SvgIcon, Typography } from '@mui/material'; +// import { useQueryClient } from '@tanstack/react-query'; +// import { BigNumber } from 'bignumber.js'; +// import { debounce } from 'lodash'; +// import React, { useEffect, useMemo, useState } from 'react'; +// import { BasicModal } from 'src/components/primitives/BasicModal'; +// import { Link } from 'src/components/primitives/Link'; +// import { Warning } from 'src/components/primitives/Warning'; +// import { isSafeWallet, isSmartContractWallet } from 'src/helpers/provider'; +// import { useAppDataContext } from 'src/hooks/app-data-provider/useAppDataProvider'; +// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; +// import { useMultiProviderSwitchRates } from 'src/hooks/switch/useMultiProviderSwitchRates'; +// import { useIsWrongNetwork } from 'src/hooks/useIsWrongNetwork'; +// import { ModalType, useModalContext } from 'src/hooks/useModal'; +// import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +// import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; +// import { useRootStore } from 'src/store/root'; +// import { findByChainId } from 'src/ui-config/marketsConfig'; +// import { queryKeysFactory } from 'src/ui-config/queries'; +// import { TokenInfo } from 'src/ui-config/TokenList'; +// import { wagmiConfig } from 'src/ui-config/wagmiConfig'; +// import { GENERAL } from 'src/utils/events'; +// import { calculateHFAfterSwap } from 'src/utils/hfUtils'; +// import { getNetworkConfig } from 'src/utils/marketsAndNetworksConfig'; +// import { parseUnits } from 'viem'; + +// import { TxModalTitle } from '../FlowCommons/TxModalTitle'; +// import { ChangeNetworkWarning } from '../Warnings/ChangeNetworkWarning'; +// import { ParaswapErrorDisplay } from '../Warnings/ParaswapErrorDisplay'; +// import { SupportedNetworkWithChainId } from './common'; +// import { getOrders, isNativeToken } from './cowprotocol/cowprotocol.helpers'; +// import { NetworkSelector } from './NetworkSelector'; +// import { getParaswapSlippage } from './slippage.helpers'; +// import { isCowProtocolRates } from './switch.types'; +// import { SwitchActions } from './SwitchActions'; +// import { SwitchAssetInput } from './SwitchAssetInput'; +// import { SwitchErrors } from './SwitchErrors'; +// import { SwitchModalTxDetails } from './SwitchModalTxDetails'; +// import { SwitchRates } from './SwitchRates'; +// import { SwitchSlippageSelector } from './SwitchSlippageSelector'; +// import { SwitchTxSuccessView } from './SwitchTxSuccessView'; +// import { validateSlippage, ValidationSeverity } from './validation.helpers'; + +// export interface SwitchModalCustomizableProps { +// modalType: ModalType; +// inputBalanceTitle?: string; +// outputBalanceTitle?: string; +// tokensFrom?: TokenInfoWithBalance[]; +// tokensTo?: TokenInfoWithBalance[]; +// forcedDefaultInputToken?: TokenInfoWithBalance; +// forcedDefaultOutputToken?: TokenInfoWithBalance; +// suggestedDefaultInputToken?: TokenInfoWithBalance; +// suggestedDefaultOutputToken?: TokenInfoWithBalance; +// showSwitchInputAndOutputAssetsButton?: boolean; +// forcedChainId?: number; +// } + +// export const BaseSwitchModalContent = ({ +// showSwitchInputAndOutputAssetsButton = true, +// showTitle = true, +// forcedDefaultInputToken, +// forcedDefaultOutputToken, +// suggestedDefaultInputToken, +// suggestedDefaultOutputToken, +// supportedNetworks, +// inputBalanceTitle, +// outputBalanceTitle, +// initialFromTokens, +// initialToTokens, +// showChangeNetworkWarning = true, +// modalType, +// selectedChainId, +// setSelectedChainId, +// refetchInitialTokens, +// }: { +// showTitle?: boolean; +// forcedChainId: number; +// showSwitchInputAndOutputAssetsButton?: boolean; +// forcedDefaultInputToken?: TokenInfoWithBalance; +// initialFromTokens: TokenInfoWithBalance[]; +// initialToTokens: TokenInfoWithBalance[]; +// forcedDefaultOutputToken?: TokenInfoWithBalance; +// suggestedDefaultInputToken?: TokenInfoWithBalance; +// suggestedDefaultOutputToken?: TokenInfoWithBalance; +// supportedNetworks: SupportedNetworkWithChainId[]; +// showChangeNetworkWarning?: boolean; +// modalType: ModalType; +// selectedChainId: number; +// setSelectedChainId: (chainId: number) => void; +// refetchInitialTokens: () => void; +// } & SwitchModalCustomizableProps) => { +// // State +// const [inputAmount, setInputAmount] = useState(''); +// const [debounceInputAmount, setDebounceInputAmount] = useState(''); +// const { mainTxState: switchTxState, close } = useModalContext(); +// const user = useRootStore((store) => store.account); +// const { readOnlyModeAddress, chainId: connectedChainId } = useWeb3Context(); +// const trackEvent = useRootStore((store) => store.trackEvent); +// const [showUSDTResetWarning, setShowUSDTResetWarning] = useState(false); +// const [highPriceImpactConfirmed, setHighPriceImpactConfirmed] = useState(false); +// const [lowHFConfirmed, setLowHFConfirmed] = useState(false); +// const selectedNetworkConfig = getNetworkConfig(selectedChainId); +// const isWrongNetwork = useIsWrongNetwork(selectedChainId); +// const [isSwapFlowSelected, setIsSwapFlowSelected] = useState(false); +// const [isExecutingActions, setIsExecutingActions] = useState(false); + +// const [userIsSmartContractWallet, setUserIsSmartContractWallet] = useState(false); +// const [userIsSafeWallet, setUserIsSafeWallet] = useState(false); + +// const debouncedInputChange = useMemo(() => { +// return debounce((value: string) => { +// setDebounceInputAmount(value); +// }, 1500); +// }, [setDebounceInputAmount]); + +// const [slippage, setSlippage] = useState(switchRates?.provider == 'cowprotocol' ? '0.5' : '0.10'); +// const [showGasStation, setShowGasStation] = useState(switchRates?.provider == 'paraswap'); + +// // Define default s + +// // No tokens found +// if ( +// (initialFromTokens !== undefined && initialFromTokens.length === 0) || +// (initialToTokens !== undefined && initialToTokens.length === 0) +// ) { +// return ( +// close()}> +// +// No eligible assets to swap. +// +// +// ); +// } + +// // Success View +// if (switchRates && switchTxState.success) { +// return ( +// +// ); +// } + +// // const swapDetailsComponent = ( +// // Minimum new collateral +// // } +// // /> +// // ); + +// // Component +// return ( +// <> +// {!selectedInputToken || !selectedOutputToken ? ( +// +// ) : ( +// <> +// <> +// {isSwapFlowSelected && ( +// Number(selectedInputToken.balance) || +// !user || +// slippageValidation?.severity === ValidationSeverity.ERROR || +// isSwappingSafetyModuleToken || +// (requireConfirmation && !highPriceImpactConfirmed) || +// (shouldUseFlashloan === true && !!poolReserve && !poolReserve.flashLoanEnabled) || +// (modalType === ModalType.CollateralSwap && isLiquidatable) || +// (modalType === ModalType.CollateralSwap && +// isHFLow && +// requireConfirmationHFlow && +// !lowHFConfirmed) +// } +// chainId={selectedChainId} +// switchRates={switchRates} +// modalType={modalType} +// setIsExecutingActions={setIsExecutingActions} +// /> +// )} +// +// +// )} +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapActions.tsx b/src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapActions.tsx new file mode 100644 index 0000000000..d13436f0f4 --- /dev/null +++ b/src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapActions.tsx @@ -0,0 +1,110 @@ +// import { +// API_ETH_MOCK_ADDRESS, +// gasLimitRecommendations, +// ProtocolAction, +// } from '@aave/contract-helpers'; +// import { SignatureLike } from '@ethersproject/bytes'; +// import { Trans } from '@lingui/macro'; +// import { BoxProps } from '@mui/material'; +// import { useParaSwapTransactionHandler } from 'src/helpers/useParaSwapTransactionHandler'; +// import { ComputedReserveData } from 'src/hooks/app-data-provider/useAppDataProvider'; +// import { calculateSignedAmount, SwapTransactionParams } from 'src/hooks/paraswap/common'; +// import { useRootStore } from 'src/store/root'; +// import { useShallow } from 'zustand/shallow'; + +// import { TxActionsWrapper } from '../../TxActionsWrapper'; + +// export const CollateralSwapActions = ({ +// amountToSwap, +// amountToReceive, +// isWrongNetwork, +// sx, +// poolReserve, +// targetReserve, +// isMaxSelected, +// useFlashLoan, +// loading, +// symbol, +// blocked, +// buildTxFn, +// ...props +// }: SwapBaseProps & { buildTxFn: () => Promise }) => { +// const [swapCollateral, currentMarketData] = useRootStore( +// useShallow((state) => [state.swapCollateral, state.currentMarketData]) +// ); + +// const { approval, action, approvalTxState, mainTxState, loadingTxns, requiresApproval } = +// useParaSwapTransactionHandler({ +// protocolAction: ProtocolAction.swapCollateral, +// handleGetTxns: async (signature, deadline) => { +// const route = await buildTxFn(); +// return swapCollateral({ +// amountToSwap, +// amountToReceive, +// poolReserve, +// targetReserve, +// isWrongNetwork, +// symbol, +// blocked, +// isMaxSelected, +// useFlashLoan, +// swapCallData: route.swapCallData, +// augustus: route.augustus, +// signature, +// deadline, +// signedAmount: calculateSignedAmount(amountToSwap, poolReserve.decimals), +// }); +// }, +// handleGetApprovalTxns: async () => { +// return swapCollateral({ +// amountToSwap, +// amountToReceive, +// poolReserve, +// targetReserve, +// isWrongNetwork, +// symbol, +// blocked, +// isMaxSelected, +// useFlashLoan: false, +// swapCallData: '0x', +// augustus: API_ETH_MOCK_ADDRESS, +// }); +// }, +// gasLimitRecommendation: gasLimitRecommendations[ProtocolAction.swapCollateral].limit, +// skip: loading || !amountToSwap || parseFloat(amountToSwap) === 0, +// spender: currentMarketData.addresses.SWAP_COLLATERAL_ADAPTER ?? '', +// deps: [targetReserve.symbol, amountToSwap], +// }); + +// return ( +// +// approval({ +// amount: calculateSignedAmount(amountToSwap, poolReserve.decimals), +// underlyingAsset: poolReserve.aTokenAddress, +// }) +// } +// requiresApproval={requiresApproval} +// actionText={Swap} +// actionInProgressText={Swapping} +// sx={sx} +// fetchingData={loading} +// errorParams={{ +// loading: false, +// disabled: blocked, +// content: Swap, +// handleClick: action, +// }} +// tryPermit +// {...props} +// /> +// ); +// }; diff --git a/src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapModal.tsx b/src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapModal.tsx new file mode 100644 index 0000000000..4e51df4316 --- /dev/null +++ b/src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapModal.tsx @@ -0,0 +1,29 @@ +// import { BasicModal } from 'src/components/primitives/BasicModal'; +// import { +// ComputedReserveData, +// useAppDataContext, +// } from 'src/hooks/app-data-provider/useAppDataProvider'; +// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; +// import { ModalContextType, ModalType, useModalContext } from 'src/hooks/useModal'; +// import { useRootStore } from 'src/store/root'; +// import { TOKEN_LIST, TokenInfo } from 'src/ui-config/TokenList'; +// import { displayGhoForMintableMarket } from 'src/utils/ghoUtilities'; + +// import { BaseSwitchModal } from '../BaseSwitchModal'; + +// export const CollateralSwapModal = () => { +// return ( +// +// +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapModalDetails.tsx b/src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapModalDetails.tsx new file mode 100644 index 0000000000..758d06d6a3 --- /dev/null +++ b/src/components/transactions/Swap/backup/CollateralSwap/CollateralSwapModalDetails.tsx @@ -0,0 +1,208 @@ +// import { valueToBigNumber } from '@aave/math-utils'; +// import { ArrowNarrowRightIcon } from '@heroicons/react/outline'; +// import { Trans } from '@lingui/macro'; +// import { Box, Skeleton, SvgIcon } from '@mui/material'; +// import React from 'react'; +// import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; +// import { Row } from 'src/components/primitives/Row'; +// import { TokenIcon } from 'src/components/primitives/TokenIcon'; +// import { +// CollateralState, +// DetailsHFLine, +// DetailsIncentivesLine, +// DetailsNumberLine, +// } from 'src/components/transactions/FlowCommons/TxModalDetails'; +// import { CollateralType } from 'src/helpers/types'; + +// import { ComputedUserReserveData } from '../../../../hooks/app-data-provider/useAppDataProvider'; + +// export type SupplyModalDetailsProps = { +// showHealthFactor: boolean; +// healthFactor: string; +// healthFactorAfterSwap: string; +// swapSource: ComputedUserReserveData & { collateralType: CollateralType }; +// swapTarget: ComputedUserReserveData & { collateralType: CollateralType }; +// toAmount: string; +// fromAmount: string; +// loading: boolean; +// showBalance?: boolean; +// }; + +// export const CollateralSwapModalDetails = ({ +// showHealthFactor, +// healthFactor, +// healthFactorAfterSwap, +// swapSource, +// swapTarget, +// toAmount, +// fromAmount, +// loading, +// showBalance = true, +// }: SupplyModalDetailsProps) => { +// const sourceAmountAfterSwap = valueToBigNumber(swapSource.underlyingBalance).minus( +// valueToBigNumber(fromAmount) +// ); + +// const targetAmountAfterSwap = valueToBigNumber(swapTarget.underlyingBalance).plus( +// valueToBigNumber(toAmount) +// ); + +// const skeleton: JSX.Element = ( +// <> +// +// +// +// ); + +// return ( +// <> +// {healthFactorAfterSwap && ( +// +// )} +// Supply apy} +// value={swapSource.reserve.supplyAPY} +// futureValue={swapTarget.reserve.supplyAPY} +// percent +// loading={loading} +// /> +// Collateralization} captionVariant="description" mb={4}> +// +// {loading ? ( +// +// ) : ( +// <> +// + +// +// +// +// + +// +// +// +// )} +// +// +// +// Liquidation threshold} +// value={swapSource.reserve.formattedReserveLiquidationThreshold} +// futureValue={swapTarget.reserve.formattedReserveLiquidationThreshold} +// percent +// visibleDecimals={0} +// loading={loading} +// /> + +// {showBalance && ( +// Supply balance after switch} +// captionVariant="description" +// mb={4} +// align="flex-start" +// > +// +// +// {loading ? ( +// skeleton +// ) : ( +// <> +// +// +// +// +// +// +// )} +// + +// +// {loading ? ( +// skeleton +// ) : ( +// <> +// +// +// +// +// +// +// )} +// +// +// +// )} +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/ExpirySelector.tsx b/src/components/transactions/Swap/backup/ExpirySelector.tsx new file mode 100644 index 0000000000..8475efa624 --- /dev/null +++ b/src/components/transactions/Swap/backup/ExpirySelector.tsx @@ -0,0 +1,78 @@ +// import { ChevronDownIcon } from '@heroicons/react/outline'; +// import { Trans } from '@lingui/macro'; +// import { +// Box, +// FormControl, +// MenuItem, +// Select, +// SelectChangeEvent, +// SvgIcon, +// Typography, +// } from '@mui/material'; + +// const ONE_MINUTE_IN_SECONDS = 60; +// const ONE_HOUR_IN_SECONDS = 3600; +// const ONE_DAY_IN_SECONDS = 86400; +// const ONE_MONTH_IN_SECONDS = 2592000; + +// export const Expiry: { [key: string]: number } = { +// 'Five minutes': ONE_MINUTE_IN_SECONDS * 5, +// 'Half hour': ONE_HOUR_IN_SECONDS / 2, +// 'One hour': ONE_HOUR_IN_SECONDS, +// 'One day': ONE_DAY_IN_SECONDS, +// 'One week': 7 * ONE_DAY_IN_SECONDS, +// 'One month': ONE_MONTH_IN_SECONDS, +// 'Three months': 3 * ONE_MONTH_IN_SECONDS, +// 'One year': 12 * ONE_MONTH_IN_SECONDS, +// }; + +// interface ExpirySelectorProps { +// selectedExpiry: number; +// setSelectedExpiry: (value: number) => void; +// } + +// export const ExpirySelector = ({ selectedExpiry, setSelectedExpiry }: ExpirySelectorProps) => { +// const handleChange = (event: SelectChangeEvent) => { +// setSelectedExpiry(Number(event.target.value)); +// }; +// return ( +// +// Expires in +// +// +// +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/NetworkSelector.tsx b/src/components/transactions/Swap/backup/NetworkSelector.tsx new file mode 100644 index 0000000000..c29fbd71cf --- /dev/null +++ b/src/components/transactions/Swap/backup/NetworkSelector.tsx @@ -0,0 +1,73 @@ +// import { ChevronDownIcon } from '@heroicons/react/outline'; +// import { +// Box, +// FormControl, +// MenuItem, +// Select, +// SelectChangeEvent, +// SvgIcon, +// Typography, +// } from '@mui/material'; +// import { MarketLogo } from 'src/components/MarketSwitcher'; + +// import { SupportedNetworkWithChainId } from './common'; + +// interface NetworkSelectorProps { +// networks: SupportedNetworkWithChainId[]; +// selectedNetwork: number; +// setSelectedNetwork: (value: number) => void; +// } + +// export const NetworkSelector = ({ +// networks, +// selectedNetwork, +// setSelectedNetwork, +// }: NetworkSelectorProps) => { +// const handleChange = (event: SelectChangeEvent) => { +// setSelectedNetwork(Number(event.target.value)); +// }; +// return ( +// +// +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/PriceInput.tsx b/src/components/transactions/Swap/backup/PriceInput.tsx new file mode 100644 index 0000000000..c55f857316 --- /dev/null +++ b/src/components/transactions/Swap/backup/PriceInput.tsx @@ -0,0 +1,204 @@ +// import { ExclamationIcon } from '@heroicons/react/outline'; +// import { Box, Button, CircularProgress, InputBase, SvgIcon, Typography } from '@mui/material'; +// import React, { useRef } from 'react'; +// import NumberFormat, { NumberFormatProps } from 'react-number-format'; +// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; +// import { StaticRate } from 'src/hooks/useStaticRate'; + +// import { FormattedNumber } from '../../primitives/FormattedNumber'; +// import { ExternalTokenIcon } from '../../primitives/TokenIcon'; + +// interface CustomProps { +// onChange: (event: { target: { name: string; value: string } }) => void; +// name: string; +// value: string; +// } + +// export const NumberFormatCustom = React.forwardRef( +// function NumberFormatCustom(props, ref) { +// const { onChange, ...other } = props; + +// return ( +// { +// if (values.value !== props.value) +// onChange({ +// target: { +// name: props.name, +// value: values.value || '', +// }, +// }); +// }} +// thousandSeparator +// isNumericString +// allowNegative={false} +// /> +// ); +// } +// ); + +// export interface AssetInputProps { +// loading?: boolean; +// originalRate?: StaticRate; +// rate: string; +// rateUsd: string; +// originAsset: TokenInfoWithBalance; +// targetAsset: TokenInfoWithBalance; +// disabled?: boolean; +// onChangeRate: (newRate: string) => void; +// isInvertedRate: boolean; +// setIsInvertedRate: (isInverted: boolean) => void; +// } + +// export const PriceInput = ({ +// loading = false, +// rate, +// rateUsd, +// originAsset, +// targetAsset, +// originalRate, +// onChangeRate, +// disabled = false, +// isInvertedRate, +// setIsInvertedRate, +// }: AssetInputProps) => { +// const inputRef = useRef(null); + +// const handleRateSwith = () => { +// setIsInvertedRate(!isInvertedRate); +// onChangeRate((Number(rate) === 0 ? 0 : 1 / Number(rate)).toString()); +// }; + +// const marketRate = originalRate +// ? isInvertedRate +// ? (1 / Number(originalRate.rate)).toString() +// : originalRate.rate +// : rate; + +// return ( +// +// +// When 1 {isInvertedRate ? targetAsset.symbol : originAsset.symbol} is worth: +// +// ({ +// border: `1px solid ${theme.palette.divider}`, +// borderRadius: '6px', +// overflow: 'hidden', +// px: 3, +// py: 2, +// width: '100%', +// })} +// > +// +// {loading ? ( +// +// +// +// ) : ( +// { +// onChangeRate(e.target.value); +// }} +// /> +// )} + +// +// + +// +// {loading ? ( +// +// ) : ( +// +// )} + +// +// +// +// +// +// +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchActions.tsx b/src/components/transactions/Swap/backup/SwitchActions.tsx new file mode 100644 index 0000000000..71fa83b075 --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchActions.tsx @@ -0,0 +1,144 @@ +// import { +// API_ETH_MOCK_ADDRESS, +// ERC20Service, +// gasLimitRecommendations, +// ProtocolAction, +// } from '@aave/contract-helpers'; +// import { normalize, valueToBigNumber } from '@aave/math-utils'; +// import { +// calculateUniqueOrderId, +// COW_PROTOCOL_VAULT_RELAYER_ADDRESS, +// OrderClass, +// SupportedChainId, +// } from '@cowprotocol/cow-sdk'; +// import { Trans } from '@lingui/macro'; +// import { useQueryClient } from '@tanstack/react-query'; +// import { BigNumber, ethers } from 'ethers'; +// import { defaultAbiCoder, splitSignature } from 'ethers/lib/utils'; +// import stringify from 'json-stringify-deterministic'; +// import { useCallback, useEffect, useMemo, useState } from 'react'; +// import { isSmartContractWallet } from 'src/helpers/provider'; +// import { useParaSwapTransactionHandler } from 'src/helpers/useParaSwapTransactionHandler'; +// import { MOCK_SIGNED_HASH } from 'src/helpers/useTransactionHandler'; +// import { ComputedReserveData } from 'src/hooks/app-data-provider/useAppDataProvider'; +// import { +// calculateSignedAmount, +// fetchExactInTxParams, +// minimumReceivedAfterSlippage, +// } from 'src/hooks/paraswap/common'; +// import { useParaswapSellTxParams } from 'src/hooks/paraswap/useParaswapRates'; +// import { ModalType, TxStateType, useModalContext } from 'src/hooks/useModal'; +// import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +// import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; +// import { useRootStore } from 'src/store/root'; +// import { TransactionContext, TransactionDetails } from 'src/store/transactionsSlice'; +// import { ApprovalMethod } from 'src/store/walletSlice'; +// import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +// import { findByChainId } from 'src/ui-config/marketsConfig'; +// import { permitByChainAndToken } from 'src/ui-config/permitConfig'; +// import { queryKeysFactory } from 'src/ui-config/queries'; +// import { wagmiConfig } from 'src/ui-config/wagmiConfig'; +// import { GENERAL } from 'src/utils/events'; +// import { getNetworkConfig, getProvider } from 'src/utils/marketsAndNetworksConfig'; +// import { needsUSDTApprovalReset } from 'src/utils/usdtHelpers'; +// import { useShallow } from 'zustand/shallow'; + +// import { TxActionsWrapper } from '../TxActionsWrapper'; +// import { APPROVAL_GAS_LIMIT } from '../utils'; +// import { +// ADAPTER_APP_CODE, +// COW_APP_DATA, +// getPreSignTransaction, +// getUnsignerOrder, +// HEADER_WIDGET_APP_CODE, +// isNativeToken, +// populateEthFlowTx, +// sendOrder, +// uploadAppData, +// } from './cowprotocol/cowprotocol.helpers'; +// import { +// isCowProtocolRates, +// isParaswapRates, +// ParaswapRatesType, +// SwitchRatesType, +// } from './switch.types'; + +// interface SwitchProps { +// inputAmount: string; +// inputToken: string; +// outputToken: string; +// setShowUSDTResetWarning: (showUSDTResetWarning: boolean) => void; +// slippage: string; +// blocked: boolean; +// loading?: boolean; +// isWrongNetwork: boolean; +// chainId: number; +// switchRates?: SwitchRatesType; +// inputSymbol: string; +// outputSymbol: string; +// setShowGasStation: (showGasStation: boolean) => void; +// modalType: ModalType; +// useFlashloan: boolean; +// poolReserve?: ComputedReserveData; +// targetReserve?: ComputedReserveData; +// isMaxSelected: boolean; +// setIsExecutingActions?: (isExecuting: boolean) => void; +// } + +// export const ParaswapSwitchActionsWrapper = ({ +// inputAmount: amountToSwap, +// inputSymbol, +// slippage, +// blocked, +// loading, +// isWrongNetwork, +// chainId, +// switchRates, +// poolReserve, +// targetReserve, +// isMaxSelected, +// addTransaction, +// setMainTxState, +// invalidate, +// }: { +// inputAmount: string; +// inputSymbol: string; +// slippage: string; +// blocked: boolean; +// loading?: boolean; +// isWrongNetwork: boolean; +// chainId: number; +// switchRates: ParaswapRatesType; +// poolReserve: ComputedReserveData; +// targetReserve: ComputedReserveData; +// isMaxSelected: boolean; +// addTransaction: ( +// txHash: string, +// transaction: TransactionDetails, +// context?: TransactionContext +// ) => void; +// setMainTxState: (txState: TxStateType) => void; +// invalidate: () => void; +// }) => {}; + +// export const SwitchActions = ({ +// inputAmount, +// inputToken, +// outputToken, +// inputSymbol, +// outputSymbol, +// setShowUSDTResetWarning, +// slippage: slippageInPercent, +// blocked, +// loading, +// isWrongNetwork, +// chainId, +// switchRates, +// setShowGasStation, +// modalType, +// useFlashloan, +// poolReserve, +// targetReserve, +// isMaxSelected, +// setIsExecutingActions, +// }: SwitchProps) => {}; diff --git a/src/components/transactions/Swap/backup/SwitchAssetInput.tsx b/src/components/transactions/Swap/backup/SwitchAssetInput.tsx new file mode 100644 index 0000000000..4ae92b5c97 --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchAssetInput.tsx @@ -0,0 +1,503 @@ +// import { isAddress } from '@ethersproject/address'; +// import { formatUnits } from '@ethersproject/units'; +// import { ExclamationIcon } from '@heroicons/react/outline'; +// import { XCircleIcon } from '@heroicons/react/solid'; +// import { Trans } from '@lingui/macro'; +// import { ExpandMore } from '@mui/icons-material'; +// import { +// Box, +// Button, +// CircularProgress, +// IconButton, +// InputBase, +// ListItemText, +// MenuItem, +// SvgIcon, +// Typography, +// useTheme, +// } from '@mui/material'; +// import React, { useEffect, useRef, useState } from 'react'; +// import NumberFormat, { NumberFormatProps } from 'react-number-format'; +// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; +// import { useRootStore } from 'src/store/root'; +// import { useSharedDependencies } from 'src/ui-config/SharedDependenciesProvider'; + +// import { COMMON_SWAPS } from '../../../ui-config/TokenList'; +// import { BasicModal } from '../../primitives/BasicModal'; +// import { FormattedNumber } from '../../primitives/FormattedNumber'; +// import { ExternalTokenIcon } from '../../primitives/TokenIcon'; +// import { SearchInput } from '../../SearchInput'; + +// interface CustomProps { +// onChange: (event: { target: { name: string; value: string } }) => void; +// name: string; +// value: string; +// } + +// export const NumberFormatCustom = React.forwardRef( +// function NumberFormatCustom(props, ref) { +// const { onChange, ...other } = props; + +// return ( +// { +// if (values.value !== props.value) +// onChange({ +// target: { +// name: props.name, +// value: values.value || '', +// }, +// }); +// }} +// thousandSeparator +// isNumericString +// allowNegative={false} +// /> +// ); +// } +// ); + +// export interface AssetInputProps { +// value: string; +// usdValue: string; +// chainId: number; +// onChange?: (value: string) => void; +// disabled?: boolean; +// disableInput?: boolean; +// onSelect?: (asset: TokenInfoWithBalance) => void; +// assets: TokenInfoWithBalance[]; +// maxValue?: string; +// forcedMaxValue?: string; +// loading?: boolean; +// selectedAsset: TokenInfoWithBalance; +// balanceTitle?: string; +// showBalance?: boolean; +// allowCustomTokens?: boolean; +// } + +// export const SwitchAssetInput = ({ +// value, +// usdValue, +// onChange, +// disabled, +// disableInput, +// onSelect, +// assets, +// maxValue, +// forcedMaxValue, +// loading = false, +// chainId, +// selectedAsset, +// balanceTitle, +// showBalance = true, +// allowCustomTokens = true, +// }: AssetInputProps) => { +// const theme = useTheme(); +// const handleSelect = (asset: TokenInfoWithBalance) => { +// onSelect && onSelect(asset); +// onChange && onChange(''); +// handleClose(); +// }; + +// const { erc20Service } = useSharedDependencies(); + +// const [openModal, setOpenModal] = useState(false); +// const inputRef = useRef(null); + +// const handleClick = () => { +// if (!allowCustomTokens && assets.length === 1) return; +// setOpenModal(true); +// }; + +// const handleClose = () => { +// setOpenModal(false); +// handleCleanSearch(); +// }; + +// const [filteredAssets, setFilteredAssets] = useState(assets); +// const [loadingNewAsset, setLoadingNewAsset] = useState(false); +// const user = useRootStore((store) => store.account); + +// useEffect(() => { +// setFilteredAssets(assets); +// }, [assets]); + +// const popularAssets = assets.filter((asset) => COMMON_SWAPS.includes(asset.symbol)); +// const handleSearchAssetChange = (value: string) => { +// const searchQuery = value.trim().toLowerCase(); +// const matchingAssets = assets.filter( +// (asset) => +// asset.symbol.toLowerCase().includes(searchQuery) || +// asset.name.toLowerCase().includes(searchQuery) || +// asset.address.toLowerCase() === searchQuery +// ); +// if (matchingAssets.length === 0) { +// // If custom tokens are not allowed, do not attempt to import by address +// if (!allowCustomTokens) { +// setLoadingNewAsset(false); +// setFilteredAssets([]); +// return; +// } + +// if (isAddress(value)) { +// setLoadingNewAsset(true); +// Promise.all([ +// erc20Service.getTokenInfo(value, chainId), +// erc20Service.getBalance(value, user, chainId), +// ]) +// .then(([tokenMetadata, userBalance]) => { +// const tokenInfo = { +// chainId: chainId, +// balance: formatUnits(userBalance, tokenMetadata.decimals), +// extensions: { +// isUserCustom: true, +// }, +// ...tokenMetadata, +// }; +// setFilteredAssets([tokenInfo]); +// }) +// .catch(() => setFilteredAssets([])) +// .finally(() => setLoadingNewAsset(false)); +// return; +// } + +// setFilteredAssets([]); +// } else { +// setFilteredAssets(matchingAssets); +// } +// }; + +// const handleCleanSearch = () => { +// setFilteredAssets(assets); +// setLoadingNewAsset(false); +// }; + +// return ( +// ({ +// border: `1px solid ${theme.palette.divider}`, +// borderRadius: '6px', +// overflow: 'hidden', +// px: 3, +// py: 2, +// width: '100%', +// })} +// > +// +// {loading ? ( +// +// +// +// ) : ( +// { +// if (!onChange) return; +// if (Number(e.target.value) > Number(maxValue)) { +// onChange('-1'); +// } else { +// onChange(e.target.value); +// } +// }} +// inputProps={{ +// 'aria-label': 'amount input', +// style: { +// width: '100%', +// fontSize: '21px', +// lineHeight: '28,01px', +// padding: 0, +// height: '28px', +// textOverflow: 'ellipsis', +// whiteSpace: 'nowrap', +// overflow: 'hidden', +// }, +// }} +// // eslint-disable-next-line +// inputComponent={NumberFormatCustom as any} +// /> +// )} +// {value !== '' && !disableInput && ( +// { +// onChange && onChange(''); +// }} +// disabled={disabled} +// > +// +// +// )} +// + +// +// +// +// Select token +// + +// +// +// {assets.length > 3 && ( +// +// {popularAssets.map((asset) => ( +// handleSelect(asset)} +// > +// +// +// {asset.symbol} +// +// +// ))} +// +// )} +// +// +// {loadingNewAsset ? ( +// +// +// +// ) : filteredAssets.length > 0 ? ( +// filteredAssets.map((asset) => ( +// handleSelect(asset)} +// > +// +// +// {asset.symbol} +// +// } +// /> +// {asset.extensions?.isUserCustom && ( +// +// +// +// )} +// {asset.balance && ( +// +// )} +// +// )) +// ) : ( +// +// {allowCustomTokens ? ( +// +// No results found. You can import a custom token with a contract address +// +// ) : ( +// No results found. +// )} +// +// )} +// +// +// +// + +// +// {loading ? ( +// +// ) : ( +// +// )} + +// {showBalance && selectedAsset.balance && ( +// <> +// +// {balanceTitle || 'Balance'} +// +// +// {!disableInput && ( +// +// )} +// +// )} +// +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchErrors.tsx b/src/components/transactions/Swap/backup/SwitchErrors.tsx new file mode 100644 index 0000000000..4515b70dc1 --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchErrors.tsx @@ -0,0 +1,27 @@ +// import { Trans } from '@lingui/macro'; +// import { SxProps, Typography } from '@mui/material'; +// import { Warning } from 'src/components/primitives/Warning'; + +// import { SwitchRatesError } from './SwitchRatesError'; + +// interface SwitchErrorsProps { +// ratesError: unknown; +// balance: string; +// inputAmount: string; +// sx?: SxProps; +// } + +// export const SwitchErrors = ({ ratesError, balance, inputAmount, sx }: SwitchErrorsProps) => { +// if (ratesError) { +// return ; +// } else if (Number(inputAmount) > Number(balance)) { +// return ( +// +// +// Your balance is lower than the selected amount. +// +// +// ); +// } +// return null; +// }; diff --git a/src/components/transactions/Swap/backup/SwitchLimitOrdersActions.tsx b/src/components/transactions/Swap/backup/SwitchLimitOrdersActions.tsx new file mode 100644 index 0000000000..ff3ce24c18 --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchLimitOrdersActions.tsx @@ -0,0 +1,243 @@ +// import { valueToBigNumber } from '@aave/math-utils'; +// import { +// COW_PROTOCOL_VAULT_RELAYER_ADDRESS, +// OrderClass, +// OrderKind, +// SupportedChainId, +// TradingSdk, +// } from '@cowprotocol/cow-sdk'; +// import { Trans } from '@lingui/macro'; +// import { useQueryClient } from '@tanstack/react-query'; +// import { ComputedReserveData } from 'src/hooks/app-data-provider/useAppDataProvider'; +// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; +// import { useApprovalTx } from 'src/hooks/useApprovalTx'; +// import { useApprovedAmount } from 'src/hooks/useApprovedAmount'; +// import { useModalContext } from 'src/hooks/useModal'; +// import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; +// import { useRootStore } from 'src/store/root'; +// import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +// import { findByChainId } from 'src/ui-config/marketsConfig'; +// import { queryKeysFactory } from 'src/ui-config/queries'; +// import { wagmiConfig } from 'src/ui-config/wagmiConfig'; +// import { GENERAL } from 'src/utils/events'; +// import { parseUnits } from 'viem'; +// import { useShallow } from 'zustand/shallow'; + +// import { TxActionsWrapper } from '../TxActionsWrapper'; +// import { checkRequiresApproval } from '../utils'; +// import { +// COW_APP_DATA, +// COW_PARTNER_FEE, +// HEADER_WIDGET_APP_CODE, +// } from './cowprotocol/cowprotocol.helpers'; + +// interface SwitchProps { +// inputAmount: string; +// inputToken: TokenInfoWithBalance; +// outputToken: TokenInfoWithBalance; +// outputAmount: string; +// setShowUSDTResetWarning?: (showUSDTResetWarning: boolean) => void; +// blocked: boolean; +// loading?: boolean; +// isWrongNetwork: boolean; +// chainId: number; +// //setShowGasStation: (showGasStation: boolean) => void; +// poolReserve?: ComputedReserveData; +// targetReserve?: ComputedReserveData; +// expirationTime: number; +// inputAmountUSD: number; +// outputAmountUSD: number; +// // setIsExecutingActions?: (isExecuting: boolean) => void; +// } + +// export const SwitchLimitOrdersActions = ({ +// inputAmount, +// inputToken, +// outputToken, +// setShowUSDTResetWarning, +// blocked, +// loading, +// isWrongNetwork, +// chainId, +// outputAmount, +// expirationTime, +// inputAmountUSD, +// outputAmountUSD, +// }: // setShowGasStation, +// // setIsExecutingActions, +// SwitchProps) => { +// const [ +// user, +// //addTransaction, +// currentMarketData, +// trackEvent, +// ] = useRootStore( +// useShallow((state) => [ +// state.account, +// //state.addTransaction, +// state.currentMarketData, +// state.trackEvent, +// ]) +// ); + +// const { approvalTxState, mainTxState, loadingTxns, setMainTxState, setLoadingTxns, setTxError } = +// useModalContext(); + +// const queryClient = useQueryClient(); + +// const { +// data: approvedAmount, +// isFetching: fetchingApprovedAmount, +// refetch: fetchApprovedAmount, +// } = useApprovedAmount({ +// chainId, +// token: inputToken.address, +// spender: COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId as SupportedChainId], +// }); + +// setLoadingTxns(fetchingApprovedAmount); + +// let requiresApproval = false; +// if (approvedAmount !== undefined) { +// requiresApproval = checkRequiresApproval({ +// approvedAmount: approvedAmount.toString(), +// amount: inputAmount, +// signedAmount: '0', +// }); +// } + +// const { approval, requiresApprovalReset } = useApprovalTx({ +// usePermit: false, +// approvedAmount: { +// amount: approvedAmount?.toString() || '0', +// spender: COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId as SupportedChainId], +// token: inputToken.address, +// user, +// }, +// requiresApproval, +// assetAddress: inputToken.address, +// symbol: inputToken.symbol, +// decimals: inputToken.decimals, +// signatureAmount: inputAmount, +// onApprovalTxConfirmed: () => fetchApprovedAmount(), +// setShowUSDTResetWarning, +// }); + +// const invalidate = () => { +// queryClient.invalidateQueries({ +// queryKey: queryKeysFactory.poolReservesDataHumanized( +// findByChainId(chainId) ?? currentMarketData +// ), +// }); + +// queryClient.invalidateQueries({ +// queryKey: queryKeysFactory.userPoolReservesDataHumanized( +// user, +// findByChainId(chainId) ?? currentMarketData +// ), +// }); + +// queryClient.invalidateQueries({ +// queryKey: queryKeysFactory.transactionHistory( +// user, +// findByChainId(chainId) ?? currentMarketData +// ), +// }); + +// queryClient.invalidateQueries({ +// queryKey: queryKeysFactory.poolTokens(user, currentMarketData), +// }); +// }; + +// const action = async () => { +// try { +// setMainTxState({ ...mainTxState, loading: true }); +// invalidate(); +// const provider = getEthersProvider(wagmiConfig, { chainId }); +// const signer = (await provider).getSigner(); +// const tradingSdk = new TradingSdk({ chainId, signer, appCode: HEADER_WIDGET_APP_CODE }); +// const receipt = await tradingSdk.postLimitOrder( +// { +// sellAmount: parseUnits(inputAmount, inputToken.decimals).toString(), +// buyAmount: parseUnits(outputAmount, outputToken.decimals).toString(), +// kind: OrderKind.SELL, +// sellToken: inputToken.address, +// buyToken: outputToken.address, +// sellTokenDecimals: inputToken.decimals, +// buyTokenDecimals: outputToken.decimals, +// slippageBps: 0, +// partnerFee: COW_PARTNER_FEE(inputToken.symbol, outputToken.symbol), +// validFor: expirationTime, +// }, +// { +// appData: COW_APP_DATA( +// inputToken.symbol, +// outputToken.symbol, +// 0, +// false, +// OrderClass.LIMIT, +// HEADER_WIDGET_APP_CODE +// ), +// } +// ); +// setMainTxState({ +// loading: false, +// success: true, +// txHash: receipt.orderId ?? undefined, +// }); +// try { +// const baseTrackingData: Record = { +// chainId, +// inputSymbol: inputToken.symbol, +// outputSymbol: outputToken.symbol, +// pair: `${inputToken.symbol}-${outputToken.symbol}`, +// inputAmount, +// outputAmount, +// provider: 'cowswap', +// inputAmountUSD, +// outputAmountUSD, +// rate: valueToBigNumber(inputAmount).div(outputAmount).toString(), +// }; + +// trackEvent(GENERAL.LIMIT_ORDER, { +// ...baseTrackingData, +// }); +// } catch (error) { +// console.error('Error tracking limit order event:', error); +// } +// } catch (error) { +// const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); +// setTxError(parsedError); +// setMainTxState({ +// txHash: undefined, +// loading: false, +// }); +// } +// }; + +// return ( +// approval()} +// requiresApproval={!blocked && requiresApproval} +// actionText={Create limit order} +// actionInProgressText={Creating limit order} +// errorParams={{ +// loading: false, +// disabled: blocked || (!approvalTxState.success && requiresApproval), +// content: Create limit order, +// handleClick: action, +// }} +// fetchingData={loading} +// blocked={blocked} +// tryPermit={false} +// requiresApprovalReset={requiresApprovalReset} +// /> +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchLimitOrdersModalContent.tsx b/src/components/transactions/Swap/backup/SwitchLimitOrdersModalContent.tsx new file mode 100644 index 0000000000..49a5f1c64a --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchLimitOrdersModalContent.tsx @@ -0,0 +1,374 @@ +// import { normalize, valueToBigNumber } from '@aave/math-utils'; +// import { SupportedChainId, WRAPPED_NATIVE_CURRENCIES } from '@cowprotocol/cow-sdk'; +// import { Trans } from '@lingui/macro'; +// import { Box, CircularProgress, Typography } from '@mui/material'; +// import { useEffect, useMemo, useState } from 'react'; +// import { TokenInfoWithBalance, useTokensBalance } from 'src/hooks/generic/useTokensBalance'; +// import { useCowSwitchRates } from 'src/hooks/switch/useCowSwitchRates'; +// import { useGetConnectedWalletType } from 'src/hooks/useGetConnectedWalletType'; +// import { useIsWrongNetwork } from 'src/hooks/useIsWrongNetwork'; +// import { useModalContext } from 'src/hooks/useModal'; +// import { StaticRate, useStaticRate } from 'src/hooks/useStaticRate'; +// import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +// import { useRootStore } from 'src/store/root'; +// import { CustomMarket, marketsData } from 'src/ui-config/marketsConfig'; +// import { GENERAL } from 'src/utils/events'; +// import { getNetworkConfig } from 'src/utils/marketsAndNetworksConfig'; +// import { parseUnits } from 'viem'; + +// import { TxModalDetails } from '../FlowCommons/TxModalDetails'; +// import { ChangeNetworkWarning } from '../Warnings/ChangeNetworkWarning'; +// import { CowLowerThanMarketWarning } from '../Warnings/CowLowerThanMarketWarning'; +// import { USDTResetWarning } from '../Warnings/USDTResetWarning'; +// import { getFilteredTokensForSwitch } from './BaseSwitchModal'; +// import { supportedNetworksWithEnabledMarketLimit } from './common'; +// import { isNativeToken } from './cowprotocol/cowprotocol.helpers'; +// import { Expiry, ExpirySelector } from './ExpirySelector'; +// import { NetworkSelector } from './NetworkSelector'; +// import { PriceInput } from './PriceInput'; +// import { SwitchAssetInput } from './SwitchAssetInput'; +// import { SwitchErrors } from './SwitchErrors'; +// import { SwitchLimitOrdersActions } from './SwitchLimitOrdersActions'; +// import { IntentTxDetails } from './SwitchModalTxDetails'; +// import { SwitchTxSuccessView } from './SwitchTxSuccessView'; + +// const calculateMaxAmount = (token: TokenInfoWithBalance, chainId: number) => { +// const nativeDecimals = 18; +// const gasRequiredForEthFlow = +// chainId === 1 ? parseUnits('0.01', nativeDecimals) : parseUnits('0.0001', nativeDecimals); // TODO: Ask for better value coming from the SDK +// const requiredAssetsLeftForGas = isNativeToken(token.address) ? gasRequiredForEthFlow : BigInt(0); +// const balance = parseUnits(token.balance || '0', nativeDecimals); +// const maxAmount = +// balance > requiredAssetsLeftForGas ? balance - requiredAssetsLeftForGas : balance; +// return normalize(maxAmount.toString(), nativeDecimals).toString(); +// }; + +// const defaultNetwork = marketsData[CustomMarket.proto_arbitrum_v3]; + +// interface SwitchLimitOrdersInputsProps { +// chainId: number; +// tokens: TokenInfoWithBalance[]; +// inputToken: TokenInfoWithBalance; +// inputAmount: string; +// outputAmount: string; +// handleInputAmountChange: (value: string) => void; +// handleInputTokenChange: (token: TokenInfoWithBalance) => void; +// outputToken: TokenInfoWithBalance; +// handleOutputTokenChange: (token: TokenInfoWithBalance) => void; +// rate: string; +// handleRateChange: (value: string) => void; +// initialRate?: StaticRate; +// rateLoading: boolean; +// isInvertedRate: boolean; +// setIsInvertedRate: (isInverted: boolean) => void; +// } + +// export const SwitchLimitOrdersInputs = ({ +// chainId, +// tokens, +// inputToken, +// inputAmount, +// handleInputAmountChange, +// handleInputTokenChange, +// outputToken, +// handleOutputTokenChange, +// rate, +// handleRateChange, +// initialRate, +// rateLoading, +// isInvertedRate, +// setIsInvertedRate, +// outputAmount, +// }: SwitchLimitOrdersInputsProps) => { +// const { isSmartContractWallet } = useGetConnectedWalletType(); +// const maxInputAmount = isSmartContractWallet +// ? calculateMaxAmount(inputToken, chainId) +// : inputToken.balance; + +// const rateUsd = isInvertedRate +// ? Number(rate) * Number(initialRate?.inputUsdPrice || '0') +// : Number(rate) * Number(initialRate?.outputUsdPrice || '0'); + +// return ( +// +// +// {Sell} +// token.address !== outputToken.address && !token.extensions?.isNative +// )} +// value={inputAmount} +// onChange={handleInputAmountChange} +// usdValue={(Number(initialRate?.inputUsdPrice) * Number(inputAmount)).toString() || '0'} +// onSelect={handleInputTokenChange} +// selectedAsset={inputToken} +// forcedMaxValue={maxInputAmount} +// allowCustomTokens={true} +// /> +// +// +// {Receive at least} +// +// token.address !== inputToken.address && +// // Avoid wrapping +// !( +// isNativeToken(inputToken.address) && +// token.address.toLowerCase() === +// WRAPPED_NATIVE_CURRENCIES[chainId as SupportedChainId]?.address.toLowerCase() +// ) +// )} +// value={outputAmount.toString()} +// usdValue={(Number(initialRate?.outputUsdPrice) * Number(outputAmount)).toString() || '0'} +// loading={rateLoading} +// onSelect={handleOutputTokenChange} +// disableInput={true} +// selectedAsset={outputToken} +// showBalance={false} +// allowCustomTokens={true} +// /> +// +// +// +// ); +// }; + +// interface SwitchLimitOrdersInnerProps { +// tokens: TokenInfoWithBalance[]; +// chainId: number; +// setChainId: (chainId: number) => void; +// } + +// export const SwitchLimitOrdersInner = ({ +// tokens, +// chainId, +// setChainId, +// }: SwitchLimitOrdersInnerProps) => { +// const { readOnlyModeAddress } = useWeb3Context(); + +// const [inputToken, setInputToken] = useState( +// tokens.find( +// (token) => token.balance !== '0' && !token.extensions?.isNative && token.symbol !== 'GHO' +// ) || tokens[0] +// ); + +// const { mainTxState } = useModalContext(); + +// const userAddress = useRootStore((store) => store.account); + +// const [expiry, setExpiry] = useState(Expiry['One week']); + +// const [inputAmount, setInputAmount] = useState(''); +// const [rate, setRate] = useState(''); +// const [isInvertedRate, setIsInvertedRate] = useState(false); + +// const [outputToken, setOutputToken] = useState( +// tokens.find((token) => token.symbol == 'GHO') || tokens[1] +// ); +// const [showUSDTResetWarning, setShowUSDTResetWarning] = useState(false); + +// const { data: staticRate, isLoading: staticRateLoading } = useStaticRate({ +// chainId, +// inputToken, +// outputToken, +// }); +// const { +// data: quote, +// isLoading: quoteLoading, +// error: quoteError, +// } = useCowSwitchRates({ +// chainId, +// amount: inputAmount ? parseUnits(inputAmount, inputToken.decimals).toString() : '0', +// srcUnderlyingToken: inputToken.address, +// destUnderlyingToken: outputToken.address, +// user: userAddress, +// inputSymbol: inputToken.symbol, +// isInputTokenCustom: !!inputToken.extensions?.isCustom, +// isOutputTokenCustom: !!outputToken.extensions?.isCustom, +// outputSymbol: outputToken.symbol, +// srcDecimals: inputToken.decimals, +// destDecimals: outputToken.decimals, +// isTxSuccess: false, +// }); + +// const outputAmount = +// inputAmount && rate +// ? isInvertedRate && Number(rate) !== 0 +// ? (Number(inputAmount) * (1 / Number(rate))).toString() +// : (Number(inputAmount) * Number(rate)).toString() +// : ''; + +// const isWrongNetwork = useIsWrongNetwork(chainId); +// const { isSmartContractWallet } = useGetConnectedWalletType(); + +// const showChangeNetworkWarning = isWrongNetwork.isWrongNetwork && !readOnlyModeAddress; +// const selectedNetworkConfig = getNetworkConfig(chainId); + +// const rateLowerThanMarket = +// staticRate && +// quote && +// (isInvertedRate +// ? valueToBigNumber(staticRate.rate).lt(valueToBigNumber(rate)) +// : valueToBigNumber(rate).lt(valueToBigNumber(staticRate.rate))); + +// useEffect(() => { +// if (staticRate) { +// setRate(staticRate.rate); +// } +// }, [staticRate]); + +// if (quote && mainTxState.success) { +// return ( +// +// ); +// } + +// return ( +// <> +// {showChangeNetworkWarning && ( +// +// )} +// +// +// +// +// +// {quote && ( +// +// +// +// )} +// {rateLowerThanMarket && } +// {showUSDTResetWarning && } +// +// +// +// ); +// }; + +// export const SwitchLimitOrdersModalContent = () => { +// const dashboardChainId = useRootStore((store) => store.currentChainId); +// const user = useRootStore((store) => store.account); + +// const [selectedChainId, setSelectedChainId] = useState(() => { +// if (supportedNetworksWithEnabledMarketLimit.find((elem) => elem.chainId === dashboardChainId)) +// return dashboardChainId; +// return defaultNetwork.chainId; +// }); +// const tokens = useMemo(() => getFilteredTokensForSwitch(selectedChainId), [selectedChainId]); + +// const { data: tokensWithBalance } = useTokensBalance(tokens, selectedChainId, user); +// if (!tokensWithBalance) { +// return ( +// +// +// +// ); +// } +// return ( +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchModal.tsx b/src/components/transactions/Swap/backup/SwitchModal.tsx new file mode 100644 index 0000000000..58f19bf867 --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchModal.tsx @@ -0,0 +1,37 @@ +// import { Trans } from '@lingui/macro'; +// import { Box, Typography } from '@mui/material'; +// import { useState } from 'react'; +// import { BasicModal } from 'src/components/primitives/BasicModal'; +// import { ConnectWalletButton } from 'src/components/WalletConnection/ConnectWalletButton'; +// import { ModalType, useModalContext } from 'src/hooks/useModal'; +// import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; + +// import { TxModalTitle } from '../FlowCommons/TxModalTitle'; +// import { BaseSwitchModal } from './BaseSwitchModal'; +// import { SwitchLimitOrdersModalContent } from './SwitchLimitOrdersModalContent'; +// import { SwitchType, SwitchTypeSelector } from './SwitchTypeSelector'; + +// export const SwitchModal = () => { +// const { type, close } = useModalContext(); +// const [switchType, setSwitchType] = useState(SwitchType.MARKET); +// const { currentAccount } = useWeb3Context(); +// return ( +// +// +// {currentAccount ? ( +// <> +// +// {switchType === SwitchType.MARKET && } +// {switchType === SwitchType.LIMIT && } +// +// ) : ( +// +// +// Please connect your wallet to swap tokens. +// +// close()} /> +// +// )} +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchModalTxDetails.tsx b/src/components/transactions/Swap/backup/SwitchModalTxDetails.tsx new file mode 100644 index 0000000000..6cbfa75350 --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchModalTxDetails.tsx @@ -0,0 +1,509 @@ +// import { normalize, normalizeBN, valueToBigNumber } from '@aave/math-utils'; +// import { Trans } from '@lingui/macro'; +// import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; +// import { +// Accordion, +// AccordionDetails, +// AccordionSummary, +// Box, +// Skeleton, +// Typography, +// } from '@mui/material'; +// import { BigNumber } from 'bignumber.js'; +// import { useState } from 'react'; +// import { NetworkCostTooltip } from 'src/components/infoTooltips/NetworkCostTooltip'; +// import { SwapFeeTooltip } from 'src/components/infoTooltips/SwapFeeTooltip'; +// import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; +// import { Row } from 'src/components/primitives/Row'; +// import { ExternalTokenIcon } from 'src/components/primitives/TokenIcon'; +// import { CollateralType } from 'src/helpers/types'; +// import { +// ComputedReserveData, +// ComputedUserReserveData, +// ExtendedFormattedUser, +// } from 'src/hooks/app-data-provider/useAppDataProvider'; +// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; +// import { getDebtCeilingData } from 'src/hooks/useAssetCaps'; +// import { ModalType } from 'src/hooks/useModal'; +// import { calculateHFAfterSwap } from 'src/utils/hfUtils'; + +// import { TxModalDetails } from '../FlowCommons/TxModalDetails'; +// import { getAssetCollateralType } from '../utils'; +// import { CollateralSwapModalDetails } from './CollateralSwap/CollateralSwapModalDetails'; +// import { SwitchRatesType } from './switch.types'; + +// export const SwitchModalTxDetails = ({ +// switchRates, +// selectedOutputToken, +// safeSlippage, +// gasLimit, +// selectedChainId, +// customReceivedTitle, +// reserves, +// user, +// selectedInputToken, +// modalType, +// loading, +// }: { +// switchRates?: SwitchRatesType; +// selectedOutputToken: TokenInfoWithBalance; +// safeSlippage: number; +// gasLimit: string; +// selectedChainId: number; +// showGasStation: boolean | undefined; +// customReceivedTitle?: React.ReactNode; +// reserves: ComputedReserveData[]; +// user?: ExtendedFormattedUser; +// selectedInputToken: TokenInfoWithBalance; +// modalType: ModalType; +// loading?: boolean; +// }) => { +// if (!switchRates || !user) return null; + +// if (loading) +// return ( +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// ); + +// return ( +// +// {modalType === ModalType.CollateralSwap && ( +// +// )} + +// {switchRates.provider === 'cowprotocol' ? ( +// +// ) : ( +// +// )} +// +// ); +// }; +// export const IntentTxDetails = ({ +// selectedOutputToken, +// selectedInputToken, +// safeSlippage, +// customReceivedTitle, +// networkFee, +// partnerFee, +// outputTokenPriceUsd, +// inputTokenPriceUsd, +// outputAmount, +// inputAmount, +// }: { +// selectedOutputToken: TokenInfoWithBalance; +// selectedInputToken: TokenInfoWithBalance; +// safeSlippage: number; +// customReceivedTitle?: React.ReactNode; +// networkFee: string; +// partnerFee: string; +// outputTokenPriceUsd: number; +// inputTokenPriceUsd: number; +// outputAmount: string; +// inputAmount: string; +// }) => { +// const [costBreakdownExpanded, setCostBreakdownExpanded] = useState(false); + +// const networkFeeFormatted = normalize(networkFee, selectedOutputToken.decimals); +// const networkFeeUsd = Number(networkFeeFormatted) * outputTokenPriceUsd; + +// const partnerFeeFormatted = normalize(partnerFee, selectedOutputToken.decimals); +// const partnerFeeUsd = Number(partnerFeeFormatted) * outputTokenPriceUsd; + +// const totalCostsInUsd = networkFeeUsd + partnerFeeUsd; // + costs.slippageInUsd; + +// const destUsd = normalizeBN(outputAmount, selectedOutputToken.decimals) +// .multipliedBy(outputTokenPriceUsd) +// .toNumber(); +// const srcUsd = normalizeBN(inputAmount, selectedInputToken.decimals) +// .multipliedBy(inputTokenPriceUsd) +// .toNumber(); + +// const receivingInUsd = destUsd * (1 - safeSlippage); +// const sendingInUsd = srcUsd; + +// const priceImpact = (1 - receivingInUsd / sendingInUsd) * 100; + +// const destAmountAfterSlippage = normalizeBN(outputAmount, selectedOutputToken.decimals) +// .multipliedBy(1 - safeSlippage) +// .decimalPlaces(selectedOutputToken.decimals, BigNumber.ROUND_UP) +// .toString(); + +// return ( +// <> +// { +// setCostBreakdownExpanded(expanded); +// }} +// > +// } +// sx={{ +// padding: 0, +// minHeight: '24px', +// height: '24px', +// '.MuiAccordionSummary-content': { margin: 0 }, +// }} +// > +// {`Costs & Fees`}} +// captionVariant="description" +// align="flex-start" +// width="100%" +// > +// {!costBreakdownExpanded && ( +// +// )} +// +// +// +// } +// captionVariant="caption" +// align="flex-start" +// > +// +// +// +// +// +// +// +// +// } +// captionVariant="caption" +// align="flex-start" +// > +// +// +// +// +// +// +// +// +// +// + +// {`Minimum ${selectedOutputToken.symbol} received`} +// } +// captionVariant="description" +// align="flex-start" +// > +// +// +// +// +// +// +// +// {priceImpact && priceImpact > 0 && priceImpact < 100 && ( +// 10 ? 'error' : priceImpact > 5 ? 'warning' : 'text.secondary'} +// > +// (-{priceImpact.toFixed(priceImpact > 3 ? 0 : priceImpact > 1 ? 1 : 2)}%) +// +// )} +// +// +// +// +// ); +// }; +// const MarketOrderTxDetails = ({ +// switchRates, +// selectedOutputToken, +// safeSlippage, +// customReceivedTitle, +// }: { +// switchRates: SwitchRatesType; +// selectedOutputToken: TokenInfoWithBalance; +// safeSlippage: number; +// customReceivedTitle?: React.ReactNode; +// }) => { +// return ( +// <> +// {`Minimum ${selectedOutputToken.symbol} received`} +// } +// captionVariant="description" +// align="flex-start" +// > +// +// +// +// +// +// +// +// +// +// ); +// }; + +// const CollateralSwapModalTxDetailsContent = ({ +// switchRates, +// selectedOutputToken, +// safeSlippage, +// reserves, +// user, +// selectedInputToken, +// }: { +// switchRates: SwitchRatesType; +// selectedOutputToken: TokenInfoWithBalance; +// safeSlippage: number; +// customReceivedTitle?: React.ReactNode; +// reserves: ComputedReserveData[]; +// user: ExtendedFormattedUser; +// selectedInputToken: TokenInfoWithBalance; +// }) => { +// // Map selected tokens to reserves and user reserves +// const poolReserve = reserves.find( +// (r) => r.underlyingAsset.toLowerCase() === selectedInputToken.address.toLowerCase() +// ) as ComputedReserveData | undefined; +// const targetReserve = reserves.find( +// (r) => r.underlyingAsset.toLowerCase() === selectedOutputToken.address.toLowerCase() +// ) as ComputedReserveData | undefined; + +// if (!poolReserve || !targetReserve || !user) return null; + +// const userReserve = user.userReservesData.find( +// (ur) => ur.underlyingAsset.toLowerCase() === poolReserve.underlyingAsset.toLowerCase() +// ) as ComputedUserReserveData | undefined; +// const userTargetReserve = user.userReservesData.find( +// (ur) => ur.underlyingAsset.toLowerCase() === targetReserve.underlyingAsset.toLowerCase() +// ) as ComputedUserReserveData | undefined; + +// if (!userReserve || !userTargetReserve) return null; + +// // Show HF only when there are borrows and source reserve is collateralizable +// const showHealthFactor = +// user.totalBorrowsMarketReferenceCurrency !== '0' && +// poolReserve.reserveLiquidationThreshold !== '0'; + +// // Amounts in human units (mirror other components: intent uses destSpot, market uses destAmount) +// const fromAmount = normalizeBN(switchRates.srcAmount, switchRates.srcDecimals).toString(); +// const toAmountRaw = normalizeBN( +// switchRates.provider === 'cowprotocol' ? switchRates.destSpot : switchRates.destAmount, +// switchRates.destDecimals +// ).toString(); +// const toAmountAfterSlippage = valueToBigNumber(toAmountRaw) +// .multipliedBy(1 - safeSlippage) +// .toString(); + +// // Compute collateral types +// const { debtCeilingReached: sourceDebtCeiling } = getDebtCeilingData(targetReserve); +// const swapSourceCollateralType: CollateralType = getAssetCollateralType( +// userReserve, +// user.totalCollateralUSD, +// user.isInIsolationMode, +// sourceDebtCeiling +// ); +// const { debtCeilingReached: targetDebtCeiling } = getDebtCeilingData(targetReserve); +// const swapTargetCollateralType: CollateralType = getAssetCollateralType( +// userTargetReserve, +// user.totalCollateralUSD, +// user.isInIsolationMode, +// targetDebtCeiling +// ); + +// // Health factor after swap using slippage-adjusted output amount +// const { hfAfterSwap } = calculateHFAfterSwap({ +// fromAmount, +// fromAssetData: poolReserve, +// fromAssetUserData: userReserve, +// user, +// toAmountAfterSlippage: toAmountAfterSlippage, +// toAssetData: targetReserve, +// }); + +// return ( +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchRates.tsx b/src/components/transactions/Swap/backup/SwitchRates.tsx new file mode 100644 index 0000000000..c13379bf72 --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchRates.tsx @@ -0,0 +1,82 @@ +// import { normalizeBN, valueToBigNumber } from '@aave/math-utils'; +// import { SwitchHorizontalIcon } from '@heroicons/react/outline'; +// import { Trans } from '@lingui/macro'; +// import { Box, ButtonBase, SvgIcon, Typography } from '@mui/material'; +// import { useMemo, useState } from 'react'; +// import { DarkTooltip } from 'src/components/infoTooltips/DarkTooltip'; +// import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; + +// import { SwitchRatesType } from './switch.types'; + +// type SwitchRatesProps = { +// rates: SwitchRatesType; +// srcSymbol: string; +// destSymbol: string; +// showPriceImpact?: boolean; +// }; + +// export const SwitchRates = ({ +// rates, +// srcSymbol, +// destSymbol, +// showPriceImpact = true, +// }: SwitchRatesProps) => { +// const [isSwitched, setIsSwitched] = useState(false); + +// const rate = useMemo(() => { +// const amount1 = normalizeBN(rates.srcAmount, rates.srcDecimals); +// const amount2 = normalizeBN(rates.destAmount, rates.destDecimals); +// return isSwitched ? amount1.div(amount2) : amount2.div(amount1); +// }, [isSwitched, rates.srcAmount, rates.destAmount]); + +// const priceImpact = useMemo(() => { +// const price1 = valueToBigNumber(rates.srcUSD); +// const price2 = valueToBigNumber(rates.destUSD); +// return price2.minus(price1).div(price1); +// }, [rates.srcUSD, rates.destUSD]); + +// return ( +// +// +// setIsSwitched((isSwitched) => !isSwitched)} +// disableTouchRipple +// sx={{ mx: 1 }} +// > +// +// +// +// +// +// {showPriceImpact && ( +// +// Price impact +// +// } +// > +// +// {'('} +// +// {')'} +// +// +// )} +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchRatesError.tsx b/src/components/transactions/Swap/backup/SwitchRatesError.tsx new file mode 100644 index 0000000000..731c5352ba --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchRatesError.tsx @@ -0,0 +1,35 @@ +// import { SxProps, Typography } from '@mui/material'; +// // import { Warning } from 'src/components/primitives/Warning'; +// // import { convertParaswapErrorMessage } from 'src/hooks/paraswap/common'; + +// import { convertCowProtocolErrorMessage } from './paraswap/paraswap.errors'; +// import { convertCowProtocolErrorMessage } from './cowprotocol/cowprotocol.errors'; + +// interface SwitchRatesErrorProps { +// error: unknown; +// sx?: SxProps; +// } + +// export const SwitchRatesError = ({ error, sx }: SwitchRatesErrorProps) => { +// let paraswapMessage; +// let cowProtocolMessage; + +// if (error instanceof Error) { +// paraswapMessage = convertParaswapErrorMessage(error.message); + +// if (!paraswapMessage) { +// cowProtocolMessage = convertCowProtocolErrorMessage(error.message); +// } +// } + +// const customErrorMessage = +// error instanceof Error +// ? paraswapMessage ?? cowProtocolMessage ?? error.message +// : 'There was an issue fetching rates.'; + +// return ( +// +// {customErrorMessage} +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchSlippageSelector.tsx b/src/components/transactions/Swap/backup/SwitchSlippageSelector.tsx new file mode 100644 index 0000000000..a5b921a3e4 --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchSlippageSelector.tsx @@ -0,0 +1,261 @@ +// import { CogIcon } from '@heroicons/react/solid'; +// import { Trans } from '@lingui/macro'; +// import { +// Box, +// Button, +// InputAdornment, +// InputBase, +// Menu, +// SvgIcon, +// ToggleButton, +// ToggleButtonGroup, +// Typography, +// } from '@mui/material'; +// import { MouseEvent, useEffect, useState } from 'react'; +// import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; +// import { Warning } from 'src/components/primitives/Warning'; + +// import { ValidationData } from './validation.helpers'; + +// type SwitchSlippageSelectorProps = { +// suggestedSlippage?: string; +// slippage: string; +// setSlippage: (value: string) => void; +// slippageValidation?: ValidationData; +// provider?: string; +// }; + +// const defaultSlippageOptions = (suggested?: string) => { +// if (!suggested) { +// return ['0.10', '0.50', '2.0']; +// } + +// const suggestedNumber = Number(suggested); +// if (suggestedNumber <= 0.1) { +// return ['0.03', '0.07', 'Auto']; +// } +// if (suggestedNumber < 1) { +// return ['0.10', '0.50', 'Auto']; +// } + +// if (suggestedNumber < 3) { +// return ['1.00', '2.00', 'Auto']; +// } + +// if (suggestedNumber < 5) { +// return ['2.00', '3.00', 'Auto']; +// } + +// if (suggestedNumber < 10) { +// return ['3.00', '5.00', 'Auto']; +// } + +// return ['5.00', '10.00', 'Auto']; +// }; + +// export const SwitchSlippageSelector = ({ +// suggestedSlippage, +// slippage, +// setSlippage, +// slippageValidation, +// provider, +// }: SwitchSlippageSelectorProps) => { +// const slippageOptions = defaultSlippageOptions(suggestedSlippage).map((option) => { +// if (Number(option) === Number(suggestedSlippage)) { +// return (Number(option) - 0.25).toString(); +// } +// return option; +// }); + +// const [anchorEl, setAnchorEl] = useState(); +// const [isCustomSlippage, setIsCustomSlippage] = useState(false); +// const [previousSlippage, setPreviousSlippage] = useState(slippage); +// const [userHasSetCustomSlippage, setUserHasSetCustomSlippage] = useState(false); +// const open = Boolean(anchorEl); + +// useEffect(() => { +// // Watch for slippage changes from outside the component +// if (previousSlippage !== slippage) { +// if (!userHasSetCustomSlippage) { +// setIsCustomSlippage(false); +// setPreviousSlippage(slippage); +// } else { +// setSlippage(previousSlippage); +// return; +// } +// } + +// // Update slippage to suggested if user has not set custom slippage +// if (suggestedSlippage && !userHasSetCustomSlippage && !isCustomSlippage) { +// setSlippage(suggestedSlippage); +// setPreviousSlippage(slippage); +// } +// }, [ +// slippage, +// suggestedSlippage, +// userHasSetCustomSlippage, +// isCustomSlippage, +// previousSlippage, +// setSlippage, +// ]); + +// const handleOpen = (event: MouseEvent) => { +// setAnchorEl(event.currentTarget); +// }; + +// const handleClose = () => { +// setAnchorEl(null); +// }; + +// const handleCustomSlippageChange = (event: React.ChangeEvent) => { +// setPreviousSlippage(event.target.value); +// setSlippage(event.target.value); +// setUserHasSetCustomSlippage(true); +// setIsCustomSlippage(true); +// }; + +// const handlePresetSlippageChange = (value: string) => { +// if (value === 'Auto' && suggestedSlippage) { +// setPreviousSlippage(suggestedSlippage); +// setSlippage(suggestedSlippage); +// setIsCustomSlippage(false); +// setUserHasSetCustomSlippage(false); +// } else { +// setPreviousSlippage(value); +// setSlippage(value); +// setIsCustomSlippage(true); +// setUserHasSetCustomSlippage(true); +// } +// }; + +// return ( +// +// +// {isCustomSlippage ? ( +// Custom slippage +// ) : provider === 'paraswap' ? ( +// Default slippage +// ) : ( +// Auto Slippage +// )} +// {':'} +// +// +// Max slippage +// +// +// handlePresetSlippageChange(value)} +// > +// {slippageOptions.map((option) => ( +// +// {isNaN(Number(option)) ? ( +// +// {provider === 'paraswap' ? Default : Auto} +// +// ) : ( +// +// )} +// +// ))} +// +// +// +// % +// +// +// } +// sx={{ +// fontSize: '12px', +// px: 2, +// width: '120px', +// border: 1, +// borderWidth: '1px', +// backgroundColor: 'background.surface', +// borderColor: slippageValidation +// ? `${slippageValidation.severity}.main` +// : 'background.surface', +// borderRadius: '4px', +// }} +// /> +// +// {slippageValidation && ( +// +// {slippageValidation.message} +// +// )} +// +// +// +// +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchTxSuccessView.tsx b/src/components/transactions/Swap/backup/SwitchTxSuccessView.tsx new file mode 100644 index 0000000000..aa755a296a --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchTxSuccessView.tsx @@ -0,0 +1,327 @@ +// import { normalize } from '@aave/math-utils'; +// import { Trans } from '@lingui/macro'; +// import { Box, CircularProgress, Divider, Typography } from '@mui/material'; +// import { BigNumber } from 'ethers'; +// import { useEffect, useMemo, useRef, useState } from 'react'; +// import { DarkTooltip } from 'src/components/infoTooltips/DarkTooltip'; +// import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; +// import { ExternalTokenIcon } from 'src/components/primitives/TokenIcon'; +// import { TextWithTooltip, TextWithTooltipProps } from 'src/components/TextWithTooltip'; +// import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; +// import { networkConfigs } from 'src/ui-config/networksConfig'; +// import { parseUnits } from 'viem'; + +// import { BaseCancelledView } from '../FlowCommons/BaseCancelled'; +// import { BaseSuccessView } from '../FlowCommons/BaseSuccess'; +// import { BaseWaitingView } from '../FlowCommons/BaseWaiting'; +// import { +// generateCoWExplorerLink, +// getOrder, +// isNativeToken, +// isOrderCancelled, +// isOrderFilled, +// isOrderLoading, +// } from './cowprotocol/cowprotocol.helpers'; +// import { SwitchProvider } from './switch.types'; + +// export type SwitchTxSuccessViewProps = { +// txHash?: string; +// amount: string; +// symbol: string; +// iconSymbol: string; +// outAmount: string; +// outSymbol: string; +// outIconSymbol: string; +// iconUri?: string; +// outIconUri?: string; +// provider: SwitchProvider; +// chainId: number; +// destDecimals: number; +// srcDecimals: number; +// }; + +// export const SwitchWithSurplusTooltip = ({ +// surplus, +// surplusPercent, +// baseAmount, +// ...rest +// }: TextWithTooltipProps & { surplus: number; surplusPercent: number; baseAmount: number }) => { +// return ( +// +// <> +// +// Base: +// +// +// Surplus: {' '} +// ( +// +// ) +// +// +// +// ); +// }; + +// export const SwitchTxSuccessView = ({ +// txHash: txHashOrOrderId, +// amount, +// symbol, +// iconSymbol, +// outAmount, +// outSymbol, +// outIconSymbol, +// iconUri, +// outIconUri, +// provider, +// chainId, +// destDecimals, +// srcDecimals, +// }: SwitchTxSuccessViewProps) => { +// const { trackOrder, setHasActiveOrders } = useCowOrderToast(); + +// // Do polling each 10 seconds until the order get's filled +// const [orderStatus, setOrderStatus] = useState<'succeed' | 'failed' | 'open'>('open'); +// const [surplus, setSurplus] = useState(undefined); +// const [inAmount, setInAmount] = useState(amount); +// const [outFinalAmount, setOutFinalAmount] = useState(outAmount); + +// // Market for chain id +// const networkConfig = networkConfigs[chainId].explorerLink; + +// // Start tracking the order when the component mounts +// useEffect(() => { +// if (provider === 'cowprotocol' && txHashOrOrderId) { +// trackOrder(txHashOrOrderId, chainId); +// } else if (provider === 'cowprotocol' && orderStatus === 'open') { +// // If the order is open, force the spinner to show, waiting for order details e.g. eth flow +// setHasActiveOrders(true); +// } +// }, [txHashOrOrderId, chainId, provider, trackOrder, setHasActiveOrders]); + +// // Poll the order status for UI updates +// const interval = useRef(null); +// const pollOrder = async () => { +// if (provider === 'cowprotocol' && txHashOrOrderId) { +// getOrder(txHashOrOrderId, chainId) +// .then((order) => { +// if (isOrderFilled(order.status)) { +// setOrderStatus('succeed'); +// setSurplus( +// BigNumber.from(order.executedBuyAmount) +// .sub(BigNumber.from(parseUnits(outAmount, destDecimals))) +// .toBigInt() +// ); +// setOutFinalAmount(normalize(order.executedBuyAmount, destDecimals)); +// setInAmount(normalize(order.executedSellAmount, srcDecimals)); +// if (interval.current) { +// clearInterval(interval.current); +// } +// } else if (isOrderCancelled(order.status)) { +// setOrderStatus('failed'); +// if (interval.current) { +// clearInterval(interval.current); +// } +// } else if (isOrderLoading(order.status)) { +// setOrderStatus('open'); +// } +// }) +// .catch(console.error); +// } else if (provider === 'paraswap' && txHashOrOrderId) { +// console.error('Paraswap! Implement tracking of hash.'); +// } +// }; +// useEffect(() => { +// if ( +// txHashOrOrderId && +// provider === 'cowprotocol' && +// chainId && +// destDecimals && +// interval.current === null +// ) { +// interval.current = setInterval(pollOrder, 10000); +// } +// }, [txHashOrOrderId, chainId, provider, destDecimals]); + +// const View = useMemo(() => { +// if (provider === 'cowprotocol' && orderStatus === 'open') { +// return BaseWaitingView; +// } else if (provider === 'cowprotocol' && orderStatus === 'failed') { +// return BaseCancelledView; +// } +// return BaseSuccessView; // Default case +// }, [orderStatus, provider]); + +// const surplusFormatted = surplus +// ? Number(normalize(surplus.toString(), destDecimals)) +// : undefined; +// const surplusDisplay = +// surplusFormatted && surplusFormatted > 0 +// ? surplusFormatted <= 0.0001 +// ? `Includes small ${outSymbol} Surplus` +// : `Includes +${surplusFormatted.toLocaleString(undefined, { +// minimumFractionDigits: 2, +// maximumFractionDigits: surplusFormatted < 0.01 ? 4 : 2, +// })} ${outSymbol} Surplus` +// : undefined; + +// const customExplorerLink = useMemo(() => { +// return provider === 'cowprotocol' +// ? generateCoWExplorerLink(chainId, txHashOrOrderId) +// : `${networkConfig}/tx/${txHashOrOrderId}`; +// }, [provider, chainId, txHashOrOrderId]); + +// const customExplorerLinkText = useMemo(() => { +// return provider === 'cowprotocol' ? ( +// txHashOrOrderId ? ( +// <>View details +// ) : ( +// <> +// theme.palette.grey[400], +// }} +// /> +// Details will be available soon +// +// ) +// ) : undefined; +// }, [provider, txHashOrOrderId]); + +// return ( +// +// +// +// {provider === 'cowprotocol' ? ( +// <> +// {orderStatus === 'open' ? ( +// You've successfully submitted an order. +// ) : orderStatus === 'failed' ? ( +// The order could't be filled. +// ) : ( +// You've successfully swapped tokens. +// )} +// +// ) : ( +// You've successfully swapped tokens. +// )} +// +// + +// +// +// +// {provider == 'cowprotocol' && +// ((orderStatus == 'open' && !isNativeToken(symbol)) || orderStatus == 'failed') +// ? 'Send' +// : 'Sent'} +// +// +// +// +// {inAmount} {symbol} +// +// } +// arrow +// placement="top" +// enterTouchDelay={100} +// leaveTouchDelay={500} +// > +// +// +// {Number(inAmount).toLocaleString(undefined, { +// minimumFractionDigits: 2, +// maximumFractionDigits: Number(inAmount) < 0.01 ? 4 : 2, +// })}{' '} +// +// +// +// +// {symbol} +// +// +// +// +// +// +// {provider == 'cowprotocol' && (orderStatus == 'open' || orderStatus == 'failed') +// ? 'Receive' +// : 'Received'} +// +// +// +// +// {outFinalAmount} {outSymbol} +// +// } +// arrow +// placement="top" +// enterTouchDelay={100} +// leaveTouchDelay={500} +// > +// +// +// {Number(outFinalAmount).toLocaleString(undefined, { +// minimumFractionDigits: 2, +// maximumFractionDigits: Number(outFinalAmount) < 0.01 ? 4 : 2, +// })} +// +// +// +// +// {outSymbol} +// +// +// +// {surplusDisplay && ( +// +// {surplusDisplay} +// +// )} +// +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/SwitchTypeSelector.tsx b/src/components/transactions/Swap/backup/SwitchTypeSelector.tsx new file mode 100644 index 0000000000..bb5f3045e3 --- /dev/null +++ b/src/components/transactions/Swap/backup/SwitchTypeSelector.tsx @@ -0,0 +1,54 @@ +// import { Trans } from '@lingui/macro'; +// import { Box, Typography } from '@mui/material'; +// import { StyledTxModalToggleButton } from 'src/components/StyledToggleButton'; +// import { StyledTxModalToggleGroup } from 'src/components/StyledToggleButtonGroup'; +// import { useRootStore } from 'src/store/root'; +// import { SWITCH_MODAL } from 'src/utils/events'; +// import { useShallow } from 'zustand/shallow'; + +// export enum SwitchType { +// MARKET, +// LIMIT, +// } +// export function SwitchTypeSelector({ +// switchType, +// setSwitchType, +// }: { +// switchType: SwitchType; +// setSwitchType: (type: SwitchType) => void; +// }) { +// const [trackEvent] = useRootStore( +// useShallow((store) => [store.trackEvent, store.currentMarketData]) +// ); + +// return ( +// +// setSwitchType(value)} +// > +// trackEvent(SWITCH_MODAL.SWITCH_TYPE, { repayType: 'Market order' })} +// > +// +// Market +// +// + +// trackEvent(SWITCH_MODAL.SWITCH_TYPE, { repayType: 'Limit order' })} +// > +// +// Limit +// +// +// +// +// ); +// } diff --git a/src/components/transactions/Swap/backup/assetCorrelation.helpers.ts b/src/components/transactions/Swap/backup/assetCorrelation.helpers.ts new file mode 100644 index 0000000000..172df50cba --- /dev/null +++ b/src/components/transactions/Swap/backup/assetCorrelation.helpers.ts @@ -0,0 +1,49 @@ +// // Until CoW shares a more sophisticated way to recognize token groups, we'll maintain a lists with popular tokens +// // Same Categories will be used to determine slippage for Paraswap +// // Set all tokens to uppercase to avoid case sensitivity issues +// export const TOKEN_GROUPS: Record<'stable' | 'correlatedEth' | 'correlatedBtc', string[]> = { +// stable: [ +// 'USDC', +// 'USDT', +// 'DAI', +// 'GHO', +// 'EURC', +// 'USDBC', +// 'USDE', +// 'USDS', +// 'SUSDE', +// 'RLUSD', +// 'PYUSD', +// 'LUSD', +// 'SDAI', +// 'CRVUSD', +// 'USD₮0', +// 'USDC.E', +// 'EURE', +// 'XDAI', +// 'WXDAI', +// ], +// correlatedEth: [ +// 'WEETH', +// 'ETH', +// 'WETH', +// 'WSTETH', +// 'CBETH', +// 'EZETH', +// 'WRSETH', +// 'OSETH', +// 'RETH', +// 'ETHX', +// ], +// correlatedBtc: ['CBBTC', 'WBTC', 'LBTC', 'TBTC', 'EBTC'], +// } as const; + +// export const getAssetGroup = (symbol: string): keyof typeof TOKEN_GROUPS | 'unknown' => { +// for (const [groupName, tokens] of Object.entries(TOKEN_GROUPS)) { +// // Allow for prefix matching e.g. aTokens +// if (tokens.some((token) => symbol.toUpperCase().endsWith(token))) { +// return groupName as keyof typeof TOKEN_GROUPS; +// } +// } +// return 'unknown'; +// }; diff --git a/src/components/transactions/Swap/backup/common.ts b/src/components/transactions/Swap/backup/common.ts new file mode 100644 index 0000000000..3c6a57defe --- /dev/null +++ b/src/components/transactions/Swap/backup/common.ts @@ -0,0 +1,28 @@ +// import { BaseNetworkConfig } from 'src/ui-config/networksConfig'; +// import { +// getSupportedChainIds, +// marketsData, +// networkConfigs, +// } from 'src/utils/marketsAndNetworksConfig'; + +// export interface SupportedNetworkWithChainId extends BaseNetworkConfig { +// chainId: number; +// } + +// export const supportedNetworksConfig: SupportedNetworkWithChainId[] = getSupportedChainIds().map( +// (chainId) => ({ +// ...networkConfigs[chainId], +// chainId, +// }) +// ); +// export const supportedNetworksWithEnabledMarket = supportedNetworksConfig.filter((elem) => +// Object.values(marketsData).find( +// (market) => market.chainId === elem.chainId && market.enabledFeatures?.switch +// ) +// ); + +// export const supportedNetworksWithEnabledMarketLimit = supportedNetworksConfig.filter((elem) => +// Object.values(marketsData).find( +// (market) => market.chainId === elem.chainId && market.enabledFeatures?.limit +// ) +// ); diff --git a/src/components/transactions/Swap/backup/cowprotocol/CowOrderToast.tsx b/src/components/transactions/Swap/backup/cowprotocol/CowOrderToast.tsx new file mode 100644 index 0000000000..54eee00553 --- /dev/null +++ b/src/components/transactions/Swap/backup/cowprotocol/CowOrderToast.tsx @@ -0,0 +1,20 @@ +// import { useTheme } from '@mui/material'; +// import { Toaster } from 'sonner'; + +// export const CowOrderToast = () => { +// const theme = useTheme(); + +// return ( +// +// ); +// }; diff --git a/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.constants.ts b/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.constants.ts new file mode 100644 index 0000000000..68409f3516 --- /dev/null +++ b/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.constants.ts @@ -0,0 +1,28 @@ +// import { SupportedChainId } from '@cowprotocol/cow-sdk'; +// import { ModalType } from 'src/hooks/useModal'; + +// export const COW_UNSUPPORTED_ASSETS: Partial< +// Record>> +// > = { +// [ModalType.CollateralSwap]: { +// [SupportedChainId.POLYGON]: 'ALL', // Polygon not supported for collateral swap, waiting better solvers support +// [SupportedChainId.AVALANCHE]: 'ALL', // Disabled until we have better solvers liquidity +// [SupportedChainId.BNB]: 'ALL', // Disabled until we have better solvers liquidity +// [SupportedChainId.GNOSIS_CHAIN]: [ +// '0xedbc7449a9b594ca4e053d9737ec5dc4cbccbfb2'.toLowerCase(), // EURe USD Price not supported +// ], +// [SupportedChainId.ARBITRUM_ONE]: [ +// '0x62fC96b27a510cF4977B59FF952Dc32378Cc221d'.toLowerCase(), // atBTC does not have good solver liquidity +// ], +// [SupportedChainId.BASE]: [ +// '0x90072A4aA69B5Eb74984Ab823EFC5f91e90b3a72'.toLowerCase(), // alBTC does not have good solver liquidity +// ], +// [SupportedChainId.MAINNET]: [ +// '0x00907f9921424583e7ffBfEdf84F92B7B2Be4977'.toLowerCase(), // aGHO not supported +// '0x18eFE565A5373f430e2F809b97De30335B3ad96A'.toLowerCase(), // aGHO not supported +// ], +// [SupportedChainId.SEPOLIA]: [ +// '0xd190eF37dB51Bb955A680fF1A85763CC72d083D4'.toLowerCase(), // aGHO not supported +// ], +// }, +// }; diff --git a/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.errors.ts b/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.errors.ts new file mode 100644 index 0000000000..8791e35236 --- /dev/null +++ b/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.errors.ts @@ -0,0 +1,21 @@ +// const MESSAGE_MAP: { [key: string]: string } = { +// NoLiquidity: 'No liquidity found for the given amount and asset pair.', +// NoRoutesFound: 'No routes found with enough liquidity.', +// SellAmountDoesNotCoverFee: 'Sell amount is too small to cover the fee.', +// }; + +// const MESSAGE_REGEX_MAP: Array<{ regex: RegExp; message: string }> = [ +// { +// regex: /^Source and destination tokens cannot be the same$/, +// message: 'Source and destination tokens cannot be the same', +// }, +// ]; + +// export function convertCowProtocolErrorMessage(message: string): string | undefined { +// if (message in MESSAGE_MAP) { +// return MESSAGE_MAP[message]; +// } + +// const newMessage = MESSAGE_REGEX_MAP.find((mapping) => mapping.regex.test(message))?.message; +// return newMessage; +// } diff --git a/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.helpers.ts b/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.helpers.ts new file mode 100644 index 0000000000..5f1ee1f765 --- /dev/null +++ b/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.helpers.ts @@ -0,0 +1,376 @@ +// import { API_ETH_MOCK_ADDRESS } from '@aave/contract-helpers'; +// import { MetadataApi } from '@cowprotocol/app-data'; +// import { +// BuyTokenDestination, +// MAX_VALID_TO_EPOCH, +// OrderBookApi, +// OrderClass, +// OrderKind, +// OrderParameters, +// OrderStatus, +// QuoteAndPost, +// SellTokenSource, +// SigningScheme, +// SupportedChainId, +// TradingSdk, +// UnsignedOrder, +// WRAPPED_NATIVE_CURRENCIES, +// } from '@cowprotocol/cow-sdk'; +// import { JsonRpcProvider } from '@ethersproject/providers'; +// import { BigNumber, ethers, PopulatedTransaction } from 'ethers'; +// import { isSmartContractWallet } from 'src/helpers/provider'; + +// import { getAssetGroup } from '../assetCorrelation.helpers'; +// import { isChainIdSupportedByCoWProtocol } from '../switch.constants'; + +// export const COW_EVM_RECIPIENT = '0xC542C2F197c4939154017c802B0583C596438380'; +// // export const COW_LENS_RECIPIENT = '0xce4eB8a1f6Bd0e0B9282102DC056B11E9D83b7CA'; +// export const COW_PROTOCOL_ETH_FLOW_ADDRESS = '0xbA3cB449bD2B4ADddBc894D8697F5170800EAdeC'; +// const COW_CREATE_ORDER_ABI = +// 'function createOrder((address,address,uint256,uint256,bytes32,uint256,uint32,bool,int64)) returns (bytes32)'; + +// export const HEADER_WIDGET_APP_CODE = 'aave-v3-interface-widget'; +// export const ADAPTER_APP_CODE = 'aave-v3-interface-aps'; // Use this one for contract adapters so we have different dashboards +// export const COW_PARTNER_FEE = (tokenFromSymbol: string, tokenToSymbol: string) => ({ +// volumeBps: getAssetGroup(tokenFromSymbol) == getAssetGroup(tokenToSymbol) ? 15 : 25, +// recipient: COW_EVM_RECIPIENT, +// }); + +// export const COW_APP_DATA = ( +// tokenFromSymbol: string, +// tokenToSymbol: string, +// slippageBips: number, +// smartSlippage: boolean, +// orderClass: OrderClass, +// appCode?: string +// ) => ({ +// appCode: appCode || HEADER_WIDGET_APP_CODE, // todo: use ADAPTER_APP_CODE for contract adapters +// version: '1.4.0', +// metadata: { +// orderClass: { orderClass: orderClass }, // for CoW Swap UI & Analytics +// quote: { +// slippageBips, +// smartSlippage, +// }, +// partnerFee: COW_PARTNER_FEE(tokenFromSymbol, tokenToSymbol), +// }, +// }); + +// export type CowProtocolActionParams = { +// quote: OrderParameters; +// provider: JsonRpcProvider; +// chainId: number; +// user: string; +// amount: string; +// tokenDest: string; +// tokenSrc: string; +// tokenSrcDecimals: number; +// tokenDestDecimals: number; +// inputSymbol: string; +// outputSymbol: string; +// afterNetworkCostsBuyAmount: string; +// slippageBps: number; +// smartSlippage: boolean; +// appCode?: string; +// orderBookQuote: QuoteAndPost; +// }; + +// export const getPreSignTransaction = async ({ +// provider, +// chainId, +// user, +// slippageBps, +// smartSlippage, +// inputSymbol, +// outputSymbol, +// appCode, +// orderBookQuote, +// }: CowProtocolActionParams) => { +// if (!isChainIdSupportedByCoWProtocol(chainId)) { +// throw new Error('Chain not supported.'); +// } + +// const signer = provider?.getSigner(); +// if (!signer) { +// throw new Error('No signer found in provider'); +// } + +// const tradingSdk = new TradingSdk({ +// chainId, +// signer, +// appCode: appCode || HEADER_WIDGET_APP_CODE, +// }); + +// const isSmartContract = await isSmartContractWallet(user, provider); +// if (!isSmartContract) { +// throw new Error('Only smart contract wallets should use presign.'); +// } + +// const orderResult = await orderBookQuote.postSwapOrderFromQuote({ +// additionalParams: { +// signingScheme: SigningScheme.PRESIGN, +// }, +// appData: COW_APP_DATA( +// inputSymbol, +// outputSymbol, +// slippageBps, +// smartSlippage, +// OrderClass.MARKET, +// appCode +// ), +// }); + +// const preSignTransaction = await tradingSdk.getPreSignTransaction({ +// orderId: orderResult.orderId, +// account: user as `0x${string}`, +// }); + +// return { +// ...preSignTransaction, +// orderId: orderResult.orderId, +// }; +// }; + +// // Only for EOA wallets +// export const sendOrder = async ({ +// provider, +// chainId, +// user, +// slippageBps, +// inputSymbol, +// outputSymbol, +// smartSlippage, +// appCode, +// orderBookQuote, +// }: CowProtocolActionParams) => { +// const signer = provider?.getSigner(); + +// if (!isChainIdSupportedByCoWProtocol(chainId)) { +// throw new Error('Chain not supported.'); +// } + +// if (!signer) { +// throw new Error('No signer found in provider'); +// } + +// const isSmartContract = await isSmartContractWallet(user, provider); +// if (isSmartContract) { +// throw new Error('Smart contract wallets should use presign.'); +// } + +// return orderBookQuote +// .postSwapOrderFromQuote({ +// appData: COW_APP_DATA( +// inputSymbol, +// outputSymbol, +// slippageBps, +// smartSlippage, +// OrderClass.MARKET, +// appCode +// ), +// }) +// .then((orderResult) => orderResult.orderId); +// }; + +// export const getOrderStatus = async (orderId: string, chainId: number) => { +// const orderBookApi = new OrderBookApi({ chainId: chainId }); +// const status = await orderBookApi.getOrderCompetitionStatus(orderId, { +// chainId, +// }); +// return status.type; +// }; + +// export const getOrder = async (orderId: string, chainId: number) => { +// const orderBookApi = new OrderBookApi({ chainId }); +// const order = await orderBookApi.getOrder(orderId, { +// chainId, +// }); +// return order; +// }; + +// export const getOrders = async (chainId: number, account: string) => { +// const orderBookApi = new OrderBookApi({ chainId }); +// const orders = await orderBookApi.getOrders({ +// owner: account, +// }); + +// return orders; +// }; + +// export const isOrderLoading = (status: OrderStatus) => { +// return status === OrderStatus.OPEN || status === OrderStatus.PRESIGNATURE_PENDING; +// }; + +// export const isOrderFilled = (status: OrderStatus) => { +// return status === OrderStatus.FULFILLED; +// }; + +// export const isOrderExpired = (status: OrderStatus) => { +// return status === OrderStatus.EXPIRED; +// }; + +// export const isOrderCancelled = (status: OrderStatus) => { +// return status === OrderStatus.CANCELLED; +// }; + +// export const isNativeToken = (token?: string) => { +// return token?.toLowerCase() === API_ETH_MOCK_ADDRESS.toLowerCase(); +// }; + +// export const getUnsignerOrder = async ( +// sellAmount: string, +// buyAmount: string, +// dstToken: string, +// user: string, +// chainId: number, +// tokenFromSymbol: string, +// tokenToSymbol: string, +// slippageBps: number, +// smartSlippage: boolean, +// appCode?: string +// ): Promise => { +// const metadataApi = new MetadataApi(); +// const { appDataHex } = await metadataApi.getAppDataInfo( +// COW_APP_DATA( +// tokenFromSymbol, +// tokenToSymbol, +// slippageBps, +// smartSlippage, +// OrderClass.MARKET, +// appCode +// ) +// ); + +// return { +// buyToken: dstToken, +// receiver: user, +// sellAmount, +// buyAmount, +// appData: appDataHex, +// feeAmount: '0', +// validTo: MAX_VALID_TO_EPOCH, +// partiallyFillable: false, +// kind: OrderKind.SELL, +// sellToken: WRAPPED_NATIVE_CURRENCIES[chainId as SupportedChainId].address.toLowerCase(), +// buyTokenBalance: BuyTokenDestination.ERC20, +// sellTokenBalance: SellTokenSource.ERC20, +// }; +// }; + +// export const populateEthFlowTx = async ( +// sellAmount: string, +// buyAmount: string, +// dstToken: string, +// user: string, +// validTo: number, +// tokenFromSymbol: string, +// tokenToSymbol: string, +// slippageBps: number, +// smartSlippage: boolean, +// quoteId?: number, +// appCode?: string +// ): Promise => { +// const metadataApi = new MetadataApi(); +// const { appDataHex } = await metadataApi.getAppDataInfo( +// COW_APP_DATA( +// tokenFromSymbol, +// tokenToSymbol, +// slippageBps, +// smartSlippage, +// OrderClass.MARKET, +// appCode +// ) +// ); + +// const orderData = { +// buyToken: dstToken, +// receiver: user, +// sellAmount, +// buyAmount, +// appData: appDataHex, +// feeAmount: '0', +// validTo, +// partiallyFillable: false, +// quoteId: quoteId || 0, +// }; + +// const value = BigNumber.from(sellAmount); + +// // Create the contract interface +// const iface = new ethers.utils.Interface([COW_CREATE_ORDER_ABI]); + +// // Encode the function call +// const data = iface.encodeFunctionData('createOrder', [ +// [ +// orderData.buyToken, +// orderData.receiver, +// orderData.sellAmount, +// orderData.buyAmount, +// orderData.appData, +// orderData.feeAmount, +// orderData.validTo, +// orderData.partiallyFillable, +// orderData.quoteId, +// ], +// ]); + +// return { +// to: COW_PROTOCOL_ETH_FLOW_ADDRESS, +// value, +// data, +// }; +// }; + +// export const getRecommendedSlippage = (srcUSD: string) => { +// try { +// if (Number(srcUSD) <= 0) { +// return Number(0.5); +// } + +// if (Number(srcUSD) <= 1) { +// return Number(5.0); +// } else if (Number(srcUSD) <= 5) { +// return Number(2.5); +// } else if (Number(srcUSD) <= 10) { +// return Number(1.5); +// } else { +// return Number(0.5); +// } +// } catch (e) { +// return Number(0.5); +// } +// }; + +// export const uploadAppData = async (orderId: string, appDataHex: string, chainId: number) => { +// const orderBookApi = new OrderBookApi({ chainId }); + +// return orderBookApi.uploadAppData(orderId, appDataHex); +// }; + +// export const generateCoWExplorerLink = (chainId: SupportedChainId, orderId?: string) => { +// if (!orderId) { +// return undefined; +// } + +// const base = 'https://explorer.cow.fi'; +// switch (chainId) { +// case SupportedChainId.MAINNET: +// return `${base}/orders/${orderId}`; +// case SupportedChainId.GNOSIS_CHAIN: +// return `${base}/gc/orders/${orderId}`; +// case SupportedChainId.BASE: +// return `${base}/base/orders/${orderId}`; +// case SupportedChainId.ARBITRUM_ONE: +// return `${base}/arb1/orders/${orderId}`; +// case SupportedChainId.SEPOLIA: +// return `${base}/sepolia/orders/${orderId}`; +// case SupportedChainId.AVALANCHE: +// return `${base}/avax/orders/${orderId}`; +// case SupportedChainId.POLYGON: +// return `${base}/pol/orders/${orderId}`; +// case SupportedChainId.BNB: +// return `${base}/bnb/orders/${orderId}`; +// default: +// throw new Error('Define explorer link for chainId: ' + chainId); +// } +// }; diff --git a/src/components/transactions/Swap/backup/slippage.helpers.ts b/src/components/transactions/Swap/backup/slippage.helpers.ts new file mode 100644 index 0000000000..1cd300a14e --- /dev/null +++ b/src/components/transactions/Swap/backup/slippage.helpers.ts @@ -0,0 +1,8 @@ +// import { getAssetGroup } from 'src/components/transactions/Switch/assetCorrelation.helpers'; + +// export const getParaswapSlippage = (inputSymbol: string, outputSymbol: string): string => { +// const inputGroup = getAssetGroup(inputSymbol); +// const outputGroup = getAssetGroup(outputSymbol); + +// return inputGroup === outputGroup ? '0.10' : '0.20'; +// }; diff --git a/src/components/transactions/Swap/backup/switch.constants.ts b/src/components/transactions/Swap/backup/switch.constants.ts new file mode 100644 index 0000000000..3c4b20ee18 --- /dev/null +++ b/src/components/transactions/Swap/backup/switch.constants.ts @@ -0,0 +1,39 @@ +// import { ChainId } from '@aave/contract-helpers'; +// import { SupportedChainId } from '@cowprotocol/cow-sdk'; + +// // In the future, we may fetch these configs from our features flag service + +// export const ParaswapSupportedNetworks = [ +// ChainId.mainnet, +// ChainId.polygon, +// ChainId.avalanche, +// ChainId.sepolia, +// ChainId.base, +// ChainId.arbitrum_one, +// ChainId.optimism, +// ChainId.xdai, +// ChainId.bnb, +// ChainId.sonic, +// ]; + +// SupportedChainId; + +// export const CoWProtocolSupportedNetworks = [ +// SupportedChainId.MAINNET, +// SupportedChainId.GNOSIS_CHAIN, +// SupportedChainId.ARBITRUM_ONE, +// SupportedChainId.BASE, +// SupportedChainId.SEPOLIA, +// SupportedChainId.AVALANCHE, +// SupportedChainId.POLYGON, +// SupportedChainId.BNB, +// ] as const; + +// export const isChainIdSupportedByCoWProtocol = (chainId: number): chainId is SupportedChainId => { +// return CoWProtocolSupportedNetworks.includes(chainId); +// }; + +// export enum SwitchType { +// CollateralSwap = 'collateralSwap', +// TokenSwap = 'tokenSwap', +// } diff --git a/src/components/transactions/Swap/backup/switch.types.ts b/src/components/transactions/Swap/backup/switch.types.ts new file mode 100644 index 0000000000..ac43b3844a --- /dev/null +++ b/src/components/transactions/Swap/backup/switch.types.ts @@ -0,0 +1,79 @@ +// import { OrderParameters, QuoteAmountsAndCosts, QuoteAndPost } from '@cowprotocol/cow-sdk'; +// import { OptimalRate } from '@paraswap/core'; +// import { TxErrorType } from 'src/ui-config/errorMapping'; + +// export type SwitchProvider = 'cowprotocol' | 'paraswap'; + +// export type ProviderRatesParams = { +// amount: string; +// srcToken: string; +// srcDecimals: number; + +// destToken: string; +// destDecimals: number; + +// chainId: number; +// user: string; +// options?: Record; + +// inputSymbol?: string; +// outputSymbol?: string; + +// isInputTokenCustom?: boolean; +// isOutputTokenCustom?: boolean; +// appCode?: string; + +// setError?: (error: TxErrorType) => void; +// }; + +// export type MultiProviderRatesParams = Omit & { +// srcUnderlyingToken: string; +// srcAToken?: string; +// destUnderlyingToken: string; +// destAToken?: string; +// }; + +// export type BaseSwitchRates = { +// // Source token +// srcToken: string; +// srcUSD: string; +// srcAmount: string; +// srcDecimals: number; + +// // Destination token +// destToken: string; +// destUSD: string; +// destAmount: string; +// destDecimals: number; + +// provider: SwitchProvider; +// }; + +// export type ParaswapRatesType = BaseSwitchRates & { +// optimalRateData: OptimalRate; +// provider: 'paraswap'; +// suggestedSlippage?: number; +// }; + +// export type CowProtocolRatesType = BaseSwitchRates & { +// provider: 'cowprotocol'; +// order: OrderParameters; +// quoteId?: number; +// suggestedSlippage: number; +// amountAndCosts: QuoteAmountsAndCosts; +// srcTokenPriceUsd: number; +// destTokenPriceUsd: number; +// destSpot: string; +// destSpotInUsd: string; +// orderBookQuote: QuoteAndPost; +// }; + +// export const isParaswapRates = (rates?: SwitchRatesType): rates is ParaswapRatesType => { +// return rates?.provider === 'paraswap'; +// }; + +// export const isCowProtocolRates = (rates?: SwitchRatesType): rates is CowProtocolRatesType => { +// return rates?.provider === 'cowprotocol'; +// }; + +// export type SwitchRatesType = ParaswapRatesType | CowProtocolRatesType; diff --git a/src/components/transactions/Swap/backup/validation.helpers.ts b/src/components/transactions/Swap/backup/validation.helpers.ts new file mode 100644 index 0000000000..8337712ea5 --- /dev/null +++ b/src/components/transactions/Swap/backup/validation.helpers.ts @@ -0,0 +1 @@ +// diff --git a/src/components/transactions/Swap/constants/cow.constants.ts b/src/components/transactions/Swap/constants/cow.constants.ts new file mode 100644 index 0000000000..67c39f8db3 --- /dev/null +++ b/src/components/transactions/Swap/constants/cow.constants.ts @@ -0,0 +1,112 @@ +import { OrderClass, SupportedChainId } from '@cowprotocol/cow-sdk'; + +import { getAssetGroup } from '../helpers/shared/assetCorrelation.helpers'; +import { OrderType, SwapType } from '../types'; + +export const COW_UNSUPPORTED_ASSETS: Partial< + Record>> +> = { + [SwapType.CollateralSwap]: { + [SupportedChainId.POLYGON]: 'ALL', // Polygon not supported for collateral swap, waiting better solvers support + [SupportedChainId.AVALANCHE]: 'ALL', // Disabled until we have better solvers liquidity + [SupportedChainId.BNB]: 'ALL', // Disabled until we have better solvers liquidity + [SupportedChainId.GNOSIS_CHAIN]: [ + '0xedbc7449a9b594ca4e053d9737ec5dc4cbccbfb2'.toLowerCase(), // EURe USD Price not supported + ], + [SupportedChainId.ARBITRUM_ONE]: [ + '0x62fC96b27a510cF4977B59FF952Dc32378Cc221d'.toLowerCase(), // atBTC does not have good solver liquidity + ], + [SupportedChainId.BASE]: [ + '0x90072A4aA69B5Eb74984Ab823EFC5f91e90b3a72'.toLowerCase(), // alBTC does not have good solver liquidity + ], + [SupportedChainId.MAINNET]: [ + '0x00907f9921424583e7ffBfEdf84F92B7B2Be4977'.toLowerCase(), // aGHO not supported + '0x18eFE565A5373f430e2F809b97De30335B3ad96A'.toLowerCase(), // aGHO not supported + ], + [SupportedChainId.SEPOLIA]: [ + '0xd190eF37dB51Bb955A680fF1A85763CC72d083D4'.toLowerCase(), // aGHO not supported + ], + }, + [SwapType.DebtSwap]: { + [SupportedChainId.MAINNET]: 'ALL', + [SupportedChainId.GNOSIS_CHAIN]: 'ALL', + [SupportedChainId.ARBITRUM_ONE]: 'ALL', + [SupportedChainId.BASE]: 'ALL', + [SupportedChainId.SEPOLIA]: 'ALL', + [SupportedChainId.AVALANCHE]: 'ALL', + [SupportedChainId.POLYGON]: 'ALL', + [SupportedChainId.BNB]: 'ALL', + }, + [SwapType.RepayWithCollateral]: { + [SupportedChainId.MAINNET]: 'ALL', + [SupportedChainId.GNOSIS_CHAIN]: 'ALL', + [SupportedChainId.ARBITRUM_ONE]: 'ALL', + [SupportedChainId.BASE]: 'ALL', + [SupportedChainId.SEPOLIA]: 'ALL', + [SupportedChainId.AVALANCHE]: 'ALL', + [SupportedChainId.POLYGON]: 'ALL', + [SupportedChainId.BNB]: 'ALL', + }, +}; + +export const CoWProtocolSupportedNetworks = [ + SupportedChainId.MAINNET, + SupportedChainId.GNOSIS_CHAIN, + SupportedChainId.ARBITRUM_ONE, + SupportedChainId.BASE, + SupportedChainId.SEPOLIA, + SupportedChainId.AVALANCHE, + SupportedChainId.POLYGON, + SupportedChainId.BNB, +] as const; + +export const isChainIdSupportedByCoWProtocol = (chainId: number): chainId is SupportedChainId => { + return CoWProtocolSupportedNetworks.includes(chainId); +}; + +export const COW_EVM_RECIPIENT = '0xC542C2F197c4939154017c802B0583C596438380'; +// export const COW_LENS_RECIPIENT = '0xce4eB8a1f6Bd0e0B9282102DC056B11E9D83b7CA'; +export const COW_PROTOCOL_ETH_FLOW_ADDRESS = '0xbA3cB449bD2B4ADddBc894D8697F5170800EAdeC'; +export const COW_CREATE_ORDER_ABI = + 'function createOrder((address,address,uint256,uint256,bytes32,uint256,uint32,bool,int64)) returns (bytes32)'; + +export const HEADER_WIDGET_APP_CODE = 'aave-v3-interface-widget'; +export const ADAPTER_APP_CODE = 'aave-v3-interface-aps'; // Use this one for contract adapters so we have different dashboards +export const COW_PARTNER_FEE = (tokenFromSymbol: string, tokenToSymbol: string) => ({ + volumeBps: getAssetGroup(tokenFromSymbol) == getAssetGroup(tokenToSymbol) ? 15 : 25, + recipient: COW_EVM_RECIPIENT, +}); + +export const FLASH_LOAN_FEE_BPS = 5; // 0.05% +export const VALID_TO_HALF_HOUR = Math.floor(Date.now() / 1000) + 60 * 30; // 30 minutes + +export const COW_APP_DATA = ( + tokenFromSymbol: string, + tokenToSymbol: string, + slippageBips: number, + smartSlippage: boolean, + orderType: OrderType, + appCode: string +) => ({ + appCode: appCode, + version: '1.4.0', + metadata: { + orderClass: { + orderClass: orderType === OrderType.LIMIT ? OrderClass.LIMIT : OrderClass.MARKET, + }, // for CoW Swap UI & Analytics + quote: { + slippageBips, + smartSlippage, + }, + partnerFee: COW_PARTNER_FEE(tokenFromSymbol, tokenToSymbol), + }, +}); + +// TODO: Optimize CoW Values +export const COW_PROTOCOL_GAS_LIMITS: Record = { + [SwapType.Swap]: 1000000, // only eth-flow and smart contract wallets + [SwapType.CollateralSwap]: 1000000, // only if non-flashloan + [SwapType.DebtSwap]: 0, + [SwapType.RepayWithCollateral]: 0, + [SwapType.WithdrawAndSwap]: 0, +}; diff --git a/src/components/transactions/Swap/constants/limitOrders.constants.ts b/src/components/transactions/Swap/constants/limitOrders.constants.ts new file mode 100644 index 0000000000..b953c19210 --- /dev/null +++ b/src/components/transactions/Swap/constants/limitOrders.constants.ts @@ -0,0 +1,15 @@ +const ONE_MINUTE_IN_SECONDS = 60; +const ONE_HOUR_IN_SECONDS = 3600; +const ONE_DAY_IN_SECONDS = 86400; +const ONE_MONTH_IN_SECONDS = 2592000; + +export const Expiry: { [key: string]: number } = { + 'Five minutes': ONE_MINUTE_IN_SECONDS * 5, + 'Half hour': ONE_HOUR_IN_SECONDS / 2, + 'One hour': ONE_HOUR_IN_SECONDS, + 'One day': ONE_DAY_IN_SECONDS, + 'One week': 7 * ONE_DAY_IN_SECONDS, + 'One month': ONE_MONTH_IN_SECONDS, + 'Three months': 3 * ONE_MONTH_IN_SECONDS, + 'One year': 12 * ONE_MONTH_IN_SECONDS, +}; diff --git a/src/components/transactions/Swap/constants/paraswap.constants.ts b/src/components/transactions/Swap/constants/paraswap.constants.ts new file mode 100644 index 0000000000..a89b3702d1 --- /dev/null +++ b/src/components/transactions/Swap/constants/paraswap.constants.ts @@ -0,0 +1,25 @@ +import { ChainId } from '@aave/contract-helpers'; + +import { SwapType } from '../types'; + +export const ParaswapSupportedNetworks = [ + ChainId.mainnet, + ChainId.polygon, + ChainId.avalanche, + ChainId.sepolia, + ChainId.base, + ChainId.arbitrum_one, + ChainId.optimism, + ChainId.xdai, + ChainId.bnb, + ChainId.sonic, +]; + +// TODO: Optimize Paraswap Values +export const PARASWAP_GAS_LIMITS: Record = { + [SwapType.Swap]: 1000000, + [SwapType.CollateralSwap]: 1000000, + [SwapType.DebtSwap]: 400000, + [SwapType.RepayWithCollateral]: 700000, + [SwapType.WithdrawAndSwap]: 1000000, +}; diff --git a/src/components/transactions/Swap/constants/shared.constants.ts b/src/components/transactions/Swap/constants/shared.constants.ts new file mode 100644 index 0000000000..3bf8a2aa45 --- /dev/null +++ b/src/components/transactions/Swap/constants/shared.constants.ts @@ -0,0 +1,25 @@ +import { SwapType } from '../types'; + +export const SAFETY_MODULE_TOKENS = [ + 'stkgho', + 'stkaave', + 'stkaavewstethbptv2', + 'stkbptv2', + 'stkbpt', + 'stkabpt', +]; + +export const LIQUIDATION_SAFETY_THRESHOLD = 1.05; +export const LIQUIDATION_DANGER_THRESHOLD = 1.01; +export const SESSION_STORAGE_EXPIRY_MS = 15 * 60 * 1000; + +// TODO: Do we want one per swap type to analyze analytics? +export const APP_CODE_PER_SWAP_TYPE: Record = { + [SwapType.Swap]: 'aave-v3-interface-widget', + [SwapType.CollateralSwap]: 'aave-v3-interface-collateral-swap', + [SwapType.DebtSwap]: 'aave-v3-interface-debt-swap', + [SwapType.RepayWithCollateral]: 'aave-v3-interface-repay-with-collateral', + [SwapType.WithdrawAndSwap]: 'aave-v3-interface-withdraw-and-swap', +}; + +export const APP_CODE_VALUES = Object.values(APP_CODE_PER_SWAP_TYPE); diff --git a/src/components/transactions/Swap/details/CollateralSwapDetails.tsx b/src/components/transactions/Swap/details/CollateralSwapDetails.tsx new file mode 100644 index 0000000000..dc073e371f --- /dev/null +++ b/src/components/transactions/Swap/details/CollateralSwapDetails.tsx @@ -0,0 +1,280 @@ +import { valueToBigNumber } from '@aave/math-utils'; +import { ArrowNarrowRightIcon } from '@heroicons/react/outline'; +import { Trans } from '@lingui/macro'; +import { Box, Skeleton, SvgIcon } from '@mui/material'; +import React from 'react'; +import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; +import { Row } from 'src/components/primitives/Row'; +import { TokenIcon } from 'src/components/primitives/TokenIcon'; +import { CollateralType } from 'src/helpers/types'; +import { + ComputedReserveData, + ComputedUserReserveData, + useAppDataContext, +} from 'src/hooks/app-data-provider/useAppDataProvider'; +import { getDebtCeilingData } from 'src/hooks/useAssetCaps'; +import { calculateHFAfterSwap } from 'src/utils/hfUtils'; + +import { + CollateralState, + DetailsHFLine, + DetailsIncentivesLine, + DetailsNumberLine, + TxModalDetails, +} from '../../FlowCommons/TxModalDetails'; +import { getAssetCollateralType } from '../../utils'; +import { SwapParams, SwapProvider, SwapState } from '../types'; +import { CowCostsDetails } from './CowCostsDetails'; + +export const ColalteralSwapDetails = ({ state }: { params: SwapParams; state: SwapState }) => { + const { user, reserves } = useAppDataContext(); + + if (!state.swapRate || !user) { + return null; + } + + // Map selected tokens to reserves and user reserves + const poolReserve = reserves.find( + (r) => r.underlyingAsset.toLowerCase() === state.sourceToken.underlyingAddress.toLowerCase() + ) as ComputedReserveData | undefined; + const targetReserve = reserves.find( + (r) => + r.underlyingAsset.toLowerCase() === state.destinationToken.underlyingAddress.toLowerCase() + ) as ComputedReserveData | undefined; + + if (!poolReserve || !targetReserve || !user) { + console.error( + 'Pool reserve or target reserve or user not found', + state.sourceToken.underlyingAddress, + state.destinationToken.underlyingAddress + ); + return null; + } + + const userReserve = user.userReservesData.find( + (ur) => ur.underlyingAsset.toLowerCase() === poolReserve.underlyingAsset.toLowerCase() + ) as ComputedUserReserveData | undefined; + const userTargetReserve = user.userReservesData.find( + (ur) => ur.underlyingAsset.toLowerCase() === targetReserve.underlyingAsset.toLowerCase() + ) as ComputedUserReserveData | undefined; + + if (!userReserve || !userTargetReserve) { + return null; + } + + // Show HF only when there are borrows and source reserve is collateralizable + const showHealthFactor = + user.totalBorrowsMarketReferenceCurrency !== '0' && + poolReserve.reserveLiquidationThreshold !== '0'; + + const fromAmount = state.inputAmount; + const toAmount = state.minimumReceived; + + // Compute collateral types + const { debtCeilingReached: sourceDebtCeiling } = getDebtCeilingData(targetReserve); + const swapSourceCollateralType: CollateralType = getAssetCollateralType( + userReserve, + user.totalCollateralUSD, + user.isInIsolationMode, + sourceDebtCeiling + ); + const { debtCeilingReached: targetDebtCeiling } = getDebtCeilingData(targetReserve); + const swapTargetCollateralType: CollateralType = getAssetCollateralType( + userTargetReserve, + user.totalCollateralUSD, + user.isInIsolationMode, + targetDebtCeiling + ); + + // Health factor after swap using slippage-adjusted output amount + const { hfAfterSwap } = calculateHFAfterSwap({ + fromAmount, + fromAssetData: poolReserve, + fromAssetUserData: userReserve, + user, + toAmountAfterSlippage: valueToBigNumber(toAmount || '0'), + toAssetData: targetReserve, + }); + + const sourceAmountAfterSwap = valueToBigNumber(userReserve.underlyingBalance).minus( + valueToBigNumber(fromAmount) + ); + + const targetAmountAfterSwap = valueToBigNumber(userTargetReserve.underlyingBalance).plus( + valueToBigNumber(toAmount || '0') + ); + + const skeleton: JSX.Element = ( + <> + + + + ); + + const showBalance = true; + + return ( + + {state.provider === SwapProvider.COW_PROTOCOL && } + + {hfAfterSwap && ( + + )} + Supply apy} + value={userReserve.reserve.supplyAPY} + futureValue={userTargetReserve.reserve.supplyAPY} + percent + loading={state.ratesLoading} + /> + {swapSourceCollateralType !== swapTargetCollateralType && ( + Collateralization} captionVariant="description" mb={4}> + + {state.ratesLoading ? ( + + ) : ( + <> + + + + + + + + + + + )} + + + )} + + Liquidation threshold} + value={userReserve.reserve.formattedReserveLiquidationThreshold} + futureValue={userTargetReserve.reserve.formattedReserveLiquidationThreshold} + percent + visibleDecimals={0} + loading={state.ratesLoading} + /> + + {showBalance && ( + Supply balance after switch} + captionVariant="description" + mb={4} + align="flex-start" + > + + + {state.ratesLoading ? ( + skeleton + ) : ( + <> + + + + + + + )} + + + + {state.ratesLoading ? ( + skeleton + ) : ( + <> + + + + + + + )} + + + + )} + + ); +}; diff --git a/src/components/transactions/Swap/details/CowCostsDetails.tsx b/src/components/transactions/Swap/details/CowCostsDetails.tsx new file mode 100644 index 0000000000..69357ceddb --- /dev/null +++ b/src/components/transactions/Swap/details/CowCostsDetails.tsx @@ -0,0 +1,220 @@ +import { normalize } from '@aave/math-utils'; +import { Trans } from '@lingui/macro'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; +import { Accordion, AccordionDetails, AccordionSummary, Box } from '@mui/material'; +import { useState } from 'react'; +import { EstimatedCostsForLimitSwapTooltip } from 'src/components/infoTooltips/EstimatedCostsForLimitSwap'; +import { ExecutionFeeTooltip } from 'src/components/infoTooltips/ExecutionFeeTooltip'; +import { NetworkCostTooltip } from 'src/components/infoTooltips/NetworkCostTooltip'; +import { SwapFeeTooltip } from 'src/components/infoTooltips/SwapFeeTooltip'; +import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; +import { Row } from 'src/components/primitives/Row'; +import { ExternalTokenIcon } from 'src/components/primitives/TokenIcon'; + +import { calculateFlashLoanAmounts } from '../helpers/cow/adapters.helpers'; +import { isCowProtocolRates, OrderType, SwapState } from '../types'; + +export const CowCostsDetails = ({ state }: { state: SwapState }) => { + const [costBreakdownExpanded, setCostBreakdownExpanded] = useState(false); + + if (!state.swapRate || !isCowProtocolRates(state.swapRate)) return null; + + let networkFeeFormatted, + networkFeeUsd, + networkFeeToken, + flashloanFeeFormatted, + flashloanFeeUsd, + flashloanFeeToken; + if (state.side === 'sell') { + networkFeeFormatted = normalize( + state.swapRate.amountAndCosts.costs.networkFee.amountInBuyCurrency.toString(), + state.destinationToken.decimals + ); + networkFeeUsd = Number(networkFeeFormatted) * state.swapRate.destTokenPriceUsd; + networkFeeToken = state.destinationToken; + + // If using flash-loan via CoW we need to account for the flash-loan fee + flashloanFeeFormatted = normalize( + calculateFlashLoanAmounts(state).flashLoanFeeAmount.toString(), + state.sourceToken.decimals + ); + flashloanFeeUsd = Number(flashloanFeeFormatted) * state.swapRate.srcTokenPriceUsd; + flashloanFeeToken = state.sourceToken; + } else { + networkFeeFormatted = normalize( + state.swapRate.amountAndCosts.costs.networkFee.amountInSellCurrency.toString(), + state.sourceToken.decimals + ); + networkFeeUsd = Number(networkFeeFormatted) * state.swapRate.srcTokenPriceUsd; + networkFeeToken = state.sourceToken; + } + + // Partner fee always in buy currency + const partnerFeeFormatted = normalize( + state.swapRate.amountAndCosts.costs.partnerFee.amount.toString(), + state.destinationToken.decimals + ); + const partnerFeeUsd = Number(partnerFeeFormatted) * state.swapRate.destTokenPriceUsd; + const partnerFeeToken = state.destinationToken; + + const totalCostsInUsd = networkFeeUsd + partnerFeeUsd + (flashloanFeeUsd ?? 0); // + costs.slippageInUsd; + + return ( + { + setCostBreakdownExpanded(expanded); + }} + > + } + sx={{ + padding: 0, + minHeight: '24px', + height: '24px', + '.MuiAccordionSummary-content': { margin: 0 }, + }} + > + + ) : ( + Costs & Fees + ) + } + captionVariant="description" + align="flex-start" + width="100%" + minHeight="24px" + maxHeight="24px" + > + {!costBreakdownExpanded && ( + + )} + + + + } + captionVariant="caption" + align="flex-start" + > + + + + + + + + + {!!(flashloanFeeFormatted && flashloanFeeToken && flashloanFeeUsd) && ( + } + captionVariant="caption" + align="flex-start" + > + + + + + + + + + )} + } captionVariant="caption" align="flex-start"> + + + + + + + + + + + ); +}; diff --git a/src/components/transactions/Swap/details/DebtSwapDetails.tsx b/src/components/transactions/Swap/details/DebtSwapDetails.tsx new file mode 100644 index 0000000000..3fb0490a04 --- /dev/null +++ b/src/components/transactions/Swap/details/DebtSwapDetails.tsx @@ -0,0 +1,164 @@ +import { valueToBigNumber } from '@aave/math-utils'; +import { ArrowNarrowRightIcon } from '@heroicons/react/solid'; +import { Trans } from '@lingui/macro'; +import { Box, Skeleton, SvgIcon } from '@mui/material'; +import React from 'react'; +import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; +import { Row } from 'src/components/primitives/Row'; +import { TokenIcon } from 'src/components/primitives/TokenIcon'; +import { + DetailsIncentivesLine, + TxModalDetails, +} from 'src/components/transactions/FlowCommons/TxModalDetails'; + +import { ProtocolSwapParams, ProtocolSwapState } from '../types'; + +export const DebtSwapDetails = ({ + state, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; +}) => { + const sourceAmountAfterSwap = valueToBigNumber(state.sourceReserve.variableBorrows).minus( + valueToBigNumber(state.inputAmount) + ); + const targetAmountAfterSwap = valueToBigNumber(state.destinationReserve.variableBorrows).plus( + valueToBigNumber(state.minimumReceived ?? '0') + ); + + const skeleton: JSX.Element = ( + <> + + + + ); + + return ( + + Borrow apy} captionVariant="description" mb={4}> + + {state.ratesLoading ? ( + + ) : ( + <> + + {ArrowRightIcon} + + + )} + + + + + + Borrow balance after switch} + captionVariant="description" + mb={4} + align="flex-start" + > + + + {state.ratesLoading ? ( + skeleton + ) : ( + <> + + + + + + + )} + + + + {state.ratesLoading ? ( + skeleton + ) : ( + <> + + + + + + + )} + + + + + ); +}; + +const ArrowRightIcon = ( + + + +); diff --git a/src/components/transactions/Swap/details/DetailsSkeleton.tsx b/src/components/transactions/Swap/details/DetailsSkeleton.tsx new file mode 100644 index 0000000000..357e437ec4 --- /dev/null +++ b/src/components/transactions/Swap/details/DetailsSkeleton.tsx @@ -0,0 +1,37 @@ +import { Box, Skeleton } from '@mui/material'; + +import { TxModalDetails } from '../../FlowCommons/TxModalDetails'; +import { SwapState } from '../types'; + +export const DetailsSkeleton: React.FC<{ state: SwapState }> = ({ + state, +}: { + state: SwapState; +}) => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/src/components/transactions/Swap/details/RepayWithCollateralDetails.tsx b/src/components/transactions/Swap/details/RepayWithCollateralDetails.tsx new file mode 100644 index 0000000000..543710c87a --- /dev/null +++ b/src/components/transactions/Swap/details/RepayWithCollateralDetails.tsx @@ -0,0 +1,97 @@ +import { valueToBigNumber } from '@aave/math-utils'; +import { Trans } from '@lingui/macro'; +import { useMemo } from 'react'; +import { useAppDataContext } from 'src/hooks/app-data-provider/useAppDataProvider'; +import { calculateHFAfterRepay } from 'src/utils/hfUtils'; + +import { + DetailsHFLine, + DetailsNumberLineWithSub, + TxModalDetails, +} from '../../FlowCommons/TxModalDetails'; +import { ProtocolSwapParams, ProtocolSwapState } from '../types'; + +export const RepayWithCollateralDetails = ({ + state, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; +}) => { + const { user } = useAppDataContext(); + + const currentDebt = state.sourceReserve.variableBorrows; + + // // If the selected collateral asset is frozen, a flashloan must be used. When a flashloan isn't used, + // // the remaining amount after the swap is deposited into the pool, which will fail for frozen assets. + // const shouldUseFlashloan = + // useFlashloan(user.healthFactor, hfEffectOfFromAmount.toString()) || + // state.destinationReserve.reserve.isFrozen; + + const inputAmount = state.inputAmount; + + // we need to get the min as minimumReceived can be greater than debt as we are swapping + // a safe amount to repay all. When this happens amountAfterRepay would be < 0 and + // this would show as certain amount left to repay when we are actually repaying all debt + const tokenToRepayWithBalance = state.destinationReserve.underlyingBalance; + const debtAmountAfterRepay = useMemo(() => { + if (!state.minimumReceived || !currentDebt) return valueToBigNumber('0'); + + return valueToBigNumber(currentDebt).minus( + valueToBigNumber(state.minimumReceived) < valueToBigNumber(currentDebt) + ? valueToBigNumber(state.minimumReceived) + : valueToBigNumber(currentDebt) + ); + }, [currentDebt, state.minimumReceived]); + + if (!user || !state.minimumReceived) { + return null; + } + + const { hfAfterSwap } = calculateHFAfterRepay({ + amountToReceiveAfterSwap: state.minimumReceived, + amountToSwap: state.inputAmount, + fromAssetData: state.destinationReserve.reserve, // used as collateral + user, + toAssetData: state.sourceReserve.reserve, + repayWithUserReserve: state.sourceReserve, + debt: currentDebt, + }); + + const displayAmountAfterRepayInUsd = debtAmountAfterRepay.multipliedBy( + state.sourceReserve.reserve.priceInUSD + ); + const collateralAmountAfterRepay = tokenToRepayWithBalance + ? valueToBigNumber(tokenToRepayWithBalance).minus(inputAmount) + : valueToBigNumber('0'); + const collateralAmountAfterRepayUSD = collateralAmountAfterRepay.multipliedBy( + state.destinationReserve.reserve.priceInUSD + ); + + return ( + + + Borrow balance after repay} + futureValue={debtAmountAfterRepay.toString()} + futureValueUSD={displayAmountAfterRepayInUsd.toString()} + symbol={state.sourceReserve.reserve.symbol} + tokenIcon={state.sourceReserve.reserve.iconSymbol} + loading={state.ratesLoading} + hideSymbolSuffix + /> + Collateral balance after repay} + futureValue={collateralAmountAfterRepay.toString()} + futureValueUSD={collateralAmountAfterRepayUSD.toString()} + symbol={state.destinationReserve.reserve.symbol} + tokenIcon={state.destinationReserve.reserve.iconSymbol} + loading={state.ratesLoading} + hideSymbolSuffix + /> + + ); +}; diff --git a/src/components/transactions/Swap/details/SwapDetails.tsx b/src/components/transactions/Swap/details/SwapDetails.tsx new file mode 100644 index 0000000000..e1ab566c0c --- /dev/null +++ b/src/components/transactions/Swap/details/SwapDetails.tsx @@ -0,0 +1,255 @@ +import { normalizeBN } from '@aave/math-utils'; +import { Trans } from '@lingui/macro'; +import { Box, Typography } from '@mui/material'; +import { DarkTooltip } from 'src/components/infoTooltips/DarkTooltip'; +import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; +import { Row } from 'src/components/primitives/Row'; +import { ExternalTokenIcon } from 'src/components/primitives/TokenIcon'; + +import { TxModalDetails } from '../../FlowCommons/TxModalDetails'; +import { SwappableToken, SwapParams, SwapProvider, SwapQuoteType, SwapState } from '../types'; +import { CowCostsDetails } from './CowCostsDetails'; + +export const SwapDetails = ({ params, state }: { params: SwapParams; state: SwapState }) => { + if (!state.swapRate || !state.minimumReceived || !state.minimumReceivedUSD) return null; + + return ( + + + + ); +}; + +export const SwapModalTxDetails = ({ + switchRates, + selectedOutputToken, + safeSlippage, + customReceivedTitle, + selectedInputToken, + minimumReceived, + minimumReceivedUSD, + state, +}: { + switchRates: SwapQuoteType; + safeSlippage: number; + customReceivedTitle?: React.ReactNode; + selectedInputToken: SwappableToken; + selectedOutputToken: SwappableToken; + minimumReceived: string; + minimumReceivedUSD: string; + state: SwapState; +}) => { + return switchRates.provider === SwapProvider.COW_PROTOCOL ? ( + + ) : ( + + ); +}; + +export const IntentTxDetails = ({ + state, + selectedOutputToken, + selectedInputToken, + customReceivedTitle, + inputTokenPriceUsd, + inputAmount, + minimumReceived, + minimumReceivedUSD, +}: { + state: SwapState; + selectedOutputToken: SwappableToken; + selectedInputToken: SwappableToken; + safeSlippage: number; + customReceivedTitle?: React.ReactNode; + inputTokenPriceUsd: number; + inputAmount: string; + minimumReceived: string; + minimumReceivedUSD: string; +}) => { + const srcUsd = normalizeBN(inputAmount, selectedInputToken.decimals) + .multipliedBy(inputTokenPriceUsd) + .toNumber(); + + const receivingInUsd = Number(minimumReceivedUSD); + const sendingInUsd = srcUsd; + + const priceImpact = (1 - receivingInUsd / sendingInUsd) * 100; + + return ( + <> + {state.provider === SwapProvider.COW_PROTOCOL && } + + {`Minimum ${selectedOutputToken.symbol} received`} + } + captionVariant="description" + align="flex-start" + > + + + + + {minimumReceived} {selectedOutputToken.symbol} + + } + arrow + placement="top" + enterTouchDelay={100} + leaveTouchDelay={500} + > + + + + + + + + {priceImpact && priceImpact > 0 && priceImpact < 100 && ( + 10 ? 'error' : priceImpact > 5 ? 'warning' : 'text.secondary'} + > + (-{priceImpact.toFixed(priceImpact > 3 ? 0 : priceImpact > 1 ? 1 : 2)}%) + + )} + + + + + ); +}; + +const MarketOrderTxDetails = ({ + selectedOutputToken, + customReceivedTitle, + minimumReceived, + minimumReceivedUSD, +}: { + switchRates: SwapQuoteType; + selectedOutputToken: SwappableToken; + safeSlippage: number; + customReceivedTitle?: React.ReactNode; + minimumReceived: string; + minimumReceivedUSD: string; +}) => { + return ( + <> + {`Minimum ${selectedOutputToken.symbol} received`} + } + captionVariant="description" + align="flex-start" + > + + + + + {minimumReceived} {selectedOutputToken.symbol} + + } + arrow + placement="top" + enterTouchDelay={100} + leaveTouchDelay={500} + > + + + + + + + + + + ); +}; diff --git a/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx b/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx new file mode 100644 index 0000000000..a3e9f97727 --- /dev/null +++ b/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx @@ -0,0 +1,63 @@ +import { valueToBigNumber } from '@aave/math-utils'; +import { Trans } from '@lingui/macro'; +import { useAppDataContext } from 'src/hooks/app-data-provider/useAppDataProvider'; +import { useRootStore } from 'src/store/root'; +import { calculateHFAfterWithdraw } from 'src/utils/hfUtils'; +import { useShallow } from 'zustand/shallow'; + +import { DetailsHFLine, DetailsNumberLine, TxModalDetails } from '../../FlowCommons/TxModalDetails'; +import { ProtocolSwapParams, ProtocolSwapState } from '../types'; +import { SwapModalTxDetails } from './SwapDetails'; + +export const WithdrawAndSwapDetails = ({ + state, + params, +}: { + params: ProtocolSwapParams; + state: ProtocolSwapState; +}) => { + const { user } = useAppDataContext(); + const { currentNetworkConfig } = useRootStore( + useShallow((store) => ({ currentNetworkConfig: store.currentNetworkConfig })) + ); + + const underlyingBalance = valueToBigNumber(state.sourceReserve.underlyingBalance); + const withdrawAmount = state.inputAmount; + const poolReserve = state.sourceReserve.reserve; + + if (!user || !state.swapRate || !state.minimumReceived || !state.minimumReceivedUSD) return null; + const healthFactorAfterWithdraw = calculateHFAfterWithdraw({ + user, + userReserve: state.sourceReserve, + poolReserve, + withdrawAmount, + }); + + return ( + + {/* TODO: Clean params */} + + Remaining supply} + value={underlyingBalance.minus(withdrawAmount || '0').toString(10)} + symbol={ + poolReserve.isWrappedBaseAsset ? currentNetworkConfig.baseAssetSymbol : poolReserve.symbol + } + /> + + + ); +}; diff --git a/src/components/transactions/Swap/details/index.ts b/src/components/transactions/Swap/details/index.ts new file mode 100644 index 0000000000..c1998e9c3f --- /dev/null +++ b/src/components/transactions/Swap/details/index.ts @@ -0,0 +1,49 @@ +import React from 'react'; + +import { + isProtocolSwapParams, + isProtocolSwapState, + isTokensSwapParams, + isTokensSwapState, + SwapParams, + SwapState, + SwapType, +} from '../types'; +import { ColalteralSwapDetails } from './CollateralSwapDetails'; +import { DebtSwapDetails } from './DebtSwapDetails'; +import { DetailsSkeleton } from './DetailsSkeleton'; +import { RepayWithCollateralDetails } from './RepayWithCollateralDetails'; +import { SwapDetails } from './SwapDetails'; +import { WithdrawAndSwapDetails } from './WithdrawAndSwapDetails'; + +export const BaseSwapDetails = ({ params, state }: { params: SwapParams; state: SwapState }) => { + if (state.ratesLoading) { + // TODO: any other loading state? + return React.createElement(DetailsSkeleton, { state }); + } + + if (!state.swapRate) { + return null; + } + + if (params.swapType === SwapType.Swap && isTokensSwapParams(params) && isTokensSwapState(state)) { + return React.createElement(SwapDetails, { params, state }); + } else if (isProtocolSwapParams(params) && isProtocolSwapState(state)) { + switch (params.swapType) { + case SwapType.CollateralSwap: + return React.createElement(ColalteralSwapDetails, { params, state }); + case SwapType.DebtSwap: + return React.createElement(DebtSwapDetails, { params, state }); + case SwapType.RepayWithCollateral: + return React.createElement(RepayWithCollateralDetails, { params, state }); + case SwapType.WithdrawAndSwap: + return React.createElement(WithdrawAndSwapDetails, { params, state }); + default: + console.error(`Unsupported swap type`); + return null; + } + } else { + console.error(`Invalid swap params or state in details`); + return null; + } +}; diff --git a/src/components/transactions/Swap/errors/SwapErrors.tsx b/src/components/transactions/Swap/errors/SwapErrors.tsx new file mode 100644 index 0000000000..96b8dc4bfa --- /dev/null +++ b/src/components/transactions/Swap/errors/SwapErrors.tsx @@ -0,0 +1,103 @@ +import React, { Dispatch, useEffect } from 'react'; + +import { useModalContext } from '../../../../hooks/useModal'; +import { TrackAnalyticsHandlers } from '../analytics/useTrackAnalytics'; +import { SwapError, SwapParams, SwapState } from '../types'; +import { errorToConsole } from './shared/console.helpers'; +import { GasEstimationError } from './shared/GasEstimationError'; +import { GenericError } from './shared/GenericError'; +import { + hasInsufficientBalance, + InsufficientBalanceGuard, +} from './shared/InsufficientBalanceGuard'; +import { ProviderError } from './shared/ProviderError'; +import { hasUserDenied, UserDenied } from './shared/UserDenied'; +import { hasZeroLTVBlocking, ZeroLTVBlockingGuard } from './shared/ZeroLTVBlockingGuard'; + +export const SwapErrors = ({ + state, + setState, + trackingHandlers, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const { txError } = useModalContext(); + + useEffect(() => { + if (txError) { + const swapError: SwapError = { + rawError: txError.rawError, + message: `Error: ${txError.error} on ${txError.txAction}`, + actionBlocked: txError.actionBlocked || txError.blocking, + }; + + setState({ + error: swapError, + }); + trackingHandlers.trackSwapError(swapError); + + // Human readable error for user to share with support team + // Avoid wrapping in console.error to prevent dev overlay "undefined Error" noise + errorToConsole(state, { + rawError: txError.rawError, + message: `Error: ${txError.error} on ${txError.txAction}`, + actionBlocked: txError.actionBlocked || txError.blocking, + }); + } + }, [txError]); + + if (hasInsufficientBalance(state)) { + return ( + + ); + } + + if (hasZeroLTVBlocking(state, [])) { + return ( + + ); + } + + if (!state.error) { + return null; + } + + if (hasUserDenied(state.error)) { + return ; + } + + const provider = state.provider; + if (!provider) { + return ( + + ); + } + + const providerError = React.createElement(ProviderError, { + error: state.error, + state, + provider, + sx: { mb: !state.isSwapFlowSelected ? 0 : 4 }, + key: `provider-error`, + }); + + if (providerError) { + return providerError; + } + + return ; +}; diff --git a/src/components/transactions/Switch/cowprotocol/cowprotocol.errors.ts b/src/components/transactions/Swap/errors/cow/quote.helpers.ts similarity index 82% rename from src/components/transactions/Switch/cowprotocol/cowprotocol.errors.ts rename to src/components/transactions/Swap/errors/cow/quote.helpers.ts index 287c45882b..9077d5283a 100644 --- a/src/components/transactions/Switch/cowprotocol/cowprotocol.errors.ts +++ b/src/components/transactions/Swap/errors/cow/quote.helpers.ts @@ -1,10 +1,10 @@ -const MESSAGE_MAP: { [key: string]: string } = { +export const MESSAGE_MAP: { [key: string]: string } = { NoLiquidity: 'No liquidity found for the given amount and asset pair.', NoRoutesFound: 'No routes found with enough liquidity.', SellAmountDoesNotCoverFee: 'Sell amount is too small to cover the fee.', }; -const MESSAGE_REGEX_MAP: Array<{ regex: RegExp; message: string }> = [ +export const MESSAGE_REGEX_MAP: Array<{ regex: RegExp; message: string }> = [ { regex: /^Source and destination tokens cannot be the same$/, message: 'Source and destination tokens cannot be the same', diff --git a/src/components/transactions/Swap/errors/paraswap/quote.helpers.ts b/src/components/transactions/Swap/errors/paraswap/quote.helpers.ts new file mode 100644 index 0000000000..537e4a21ea --- /dev/null +++ b/src/components/transactions/Swap/errors/paraswap/quote.helpers.ts @@ -0,0 +1,27 @@ +export const MESSAGE_MAP: { [key: string]: string } = { + ESTIMATED_LOSS_GREATER_THAN_MAX_IMPACT: + 'Price impact too high. Please try a different amount or asset pair.', + // not sure why this error-code is not upper-cased + 'No routes found with enough liquidity': 'No routes found with enough liquidity.', +}; + +export const MESSAGE_REGEX_MAP: Array<{ regex: RegExp; message: string }> = [ + { + regex: /^Amount \d+ is too small to proceed$/, + message: 'Amount is too small. Please try larger amount.', + }, +]; + +/** + * Converts Paraswap error message to message for displaying in interface + * @param message Paraswap error message + * @returns Message for displaying in interface + */ +export function convertParaswapErrorMessage(message: string): string | undefined { + if (message in MESSAGE_MAP) { + return MESSAGE_MAP[message]; + } + + const newMessage = MESSAGE_REGEX_MAP.find((mapping) => mapping.regex.test(message))?.message; + return newMessage; +} diff --git a/src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx b/src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx new file mode 100644 index 0000000000..6dde871b11 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx @@ -0,0 +1,13 @@ +import { Trans } from '@lingui/macro'; +import { SxProps, Typography } from '@mui/material'; +import { Warning } from 'src/components/primitives/Warning'; + +export const BalanceLowerThanInput = ({ sx }: { sx?: SxProps }) => { + return ( + + + Your balance is lower than the selected amount. + + + ); +}; diff --git a/src/components/transactions/Swap/errors/shared/GasEstimationError.tsx b/src/components/transactions/Swap/errors/shared/GasEstimationError.tsx new file mode 100644 index 0000000000..b2c87cbc75 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/GasEstimationError.tsx @@ -0,0 +1,43 @@ +import { Trans } from '@lingui/macro'; +import { Box, Typography } from '@mui/material'; +import { Warning } from 'src/components/primitives/Warning'; +import { TxAction, TxErrorType } from 'src/ui-config/errorMapping'; + +import { GasEstimationError as GasEstimationErrorComponent } from '../../../FlowCommons/GasEstimationError'; + +interface ErrorProps { + error?: Error; + isLimitOrder?: boolean; +} + +export const GasEstimationError: React.FC = ({ error, isLimitOrder }) => { + if (!error) { + return null; + } + + const txErrorType: TxErrorType = { + blocking: false, + actionBlocked: false, + rawError: error, + error: Gas estimation error, + txAction: TxAction.GAS_ESTIMATION, + }; + + return ( + + + + + + {' '} + {isLimitOrder ? ( + Tip: Try increasing slippage or reduce input amount + ) : ( + Tip: Try improving your order parameters + )} + + + + + ); +}; diff --git a/src/components/transactions/Swap/errors/shared/GenericError.tsx b/src/components/transactions/Swap/errors/shared/GenericError.tsx new file mode 100644 index 0000000000..89fd15b888 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/GenericError.tsx @@ -0,0 +1,48 @@ +import { Trans } from '@lingui/macro'; +import { ContentCopy } from '@mui/icons-material'; +import { IconButton, SxProps, Tooltip, Typography } from '@mui/material'; +import React, { useState } from 'react'; +import { Warning } from 'src/components/primitives/Warning'; + +interface GenericErrorProps { + sx?: SxProps; + message: string; + copyText?: string; +} + +export const GenericError = ({ sx, message, copyText }: GenericErrorProps) => { + const [copyTooltip, setCopyTooltip] = useState<'Copy' | 'Copied!'>('Copy'); + + const handleCopy = async () => { + if (copyText) { + try { + await navigator.clipboard.writeText(copyText); + setCopyTooltip('Copied!'); + setTimeout(() => setCopyTooltip('Copy'), 1200); + } catch (e) { + setCopyTooltip('Copy'); + setTimeout(() => setCopyTooltip('Copy'), 1200); + } + } + }; + + return ( + + + {message} + {copyText ? ( + + + + + + ) : null} + + + ); +}; diff --git a/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx b/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx new file mode 100644 index 0000000000..1173d1a7c6 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx @@ -0,0 +1,56 @@ +import { SxProps } from '@mui/material'; +import React, { Dispatch, useEffect } from 'react'; + +import { SwapError, SwapState } from '../../types'; +import { BalanceLowerThanInput } from './BalanceLowerThanInput'; + +export const hasInsufficientBalance = (state: SwapState) => { + return Number(state.debouncedInputAmount) > Number(state.sourceToken.balance); +}; + +export const InsufficientBalanceGuard = ({ + state, + setState, + sx, + isSwapFlowSelected, +}: { + state: SwapState; + setState: Dispatch>; + sx?: SxProps; + isSwapFlowSelected: boolean; +}) => { + useEffect(() => { + const hasInsufficientBalance = + Number(state.debouncedInputAmount) > Number(state.sourceToken.balance); + + if (hasInsufficientBalance) { + const isAlreadyBalanceError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'BalanceLowerThanInput'; + + if (!isAlreadyBalanceError || !state.actionsBlocked) { + const balanceError: SwapError = { + rawError: new Error('BalanceLowerThanInput'), + message: 'Your balance is lower than the selected amount.', + actionBlocked: true, + }; + setState({ error: balanceError, actionsBlocked: true }); + } + } else { + const isBalanceError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'BalanceLowerThanInput'; + if (isBalanceError) { + setState({ error: undefined, actionsBlocked: false }); + } else if (state.actionsBlocked && !state.error?.actionBlocked) { + setState({ actionsBlocked: false }); + } + } + }, [state.debouncedInputAmount, state.sourceToken.balance]); + + if (Number(state.debouncedInputAmount) > Number(state.sourceToken.balance)) { + return ; + } + + return null; +}; diff --git a/src/components/transactions/Swap/errors/shared/ProviderError.tsx b/src/components/transactions/Swap/errors/shared/ProviderError.tsx new file mode 100644 index 0000000000..83d31fa712 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/ProviderError.tsx @@ -0,0 +1,47 @@ +import { SxProps, Typography } from '@mui/material'; +import { Warning } from 'src/components/primitives/Warning'; + +import { SwapError, SwapProvider, SwapState } from '../../types'; +import { convertCowProtocolErrorMessage } from '../cow/quote.helpers'; +import { convertParaswapErrorMessage } from '../paraswap/quote.helpers'; +import { errorToConsoleString } from '../shared/console.helpers'; +import { GenericError } from './GenericError'; + +interface QuoteErrorProps { + error: SwapError; + provider: SwapProvider; + sx?: SxProps; + state: SwapState; +} + +export const ProviderError = ({ error, sx, provider, state }: QuoteErrorProps) => { + let customErrorMessage; + + switch (provider) { + case SwapProvider.PARASWAP: + customErrorMessage = convertParaswapErrorMessage(error.message); + break; + case SwapProvider.COW_PROTOCOL: + customErrorMessage = convertCowProtocolErrorMessage(error.message); + break; + default: + console.error('No provider error mapping found for', provider, error); + break; + } + + if (!customErrorMessage) { + const errorToCopy = errorToConsoleString(state, error); + return ( + + ); + } + + return ( + + {customErrorMessage} + + ); +}; diff --git a/src/components/transactions/Swap/errors/shared/UserDenied.tsx b/src/components/transactions/Swap/errors/shared/UserDenied.tsx new file mode 100644 index 0000000000..e5b362c943 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/UserDenied.tsx @@ -0,0 +1,95 @@ +import { Trans } from '@lingui/macro'; +import { Box, CircularProgress, Typography } from '@mui/material'; +import React, { Dispatch, useEffect, useState } from 'react'; +import { Warning } from 'src/components/primitives/Warning'; + +import { SwapError, SwapState } from '../../types'; + +const USER_DENIED_MESSAGES = [ + 'user denied message signature', + 'user denied message', + 'user denied transaction signature', + 'user denied transaction', + 'user denied the request', + 'user denied request', + 'user rejected the request', + 'user rejected request', + 'user rejected the transaction', + 'user rejected transaction', + 'you cancelled the transaction', +]; + +export const hasUserDenied = (txError: SwapError) => { + return USER_DENIED_MESSAGES.some((message) => + txError.rawError.message.toLowerCase().includes(message.toLowerCase()) + ); +}; + +export const UserDenied = ({ + state, + setState, +}: { + state: SwapState; + setState: Dispatch>; +}) => { + // Show info message for 10 seconds with progress circle at the end, then remove + const [visible, setVisible] = useState(true); + const [progress, setProgress] = useState(0); + + useEffect(() => { + // Progress increments every 50ms (100 * 50ms = 5s to reach 100) + const interval = setInterval(() => { + setProgress((prevProgress) => { + if (prevProgress >= 100) { + clearInterval(interval); + + if (state.actionsLoading) { + setState({ + actionsLoading: false, + }); + } + + // Hide after short delay to allow circle to show full (e.g. 250ms) + setTimeout(() => { + setVisible(false); + setProgress(0); + setState({ + error: undefined, + }); + }, 100); + + return 100; + } + return prevProgress + 1; + }); + }, 50); + + return () => { + clearInterval(interval); + }; + }, []); + + return ( + + + } + > + + User denied the operation. + + + + ); +}; diff --git a/src/components/transactions/Swap/errors/shared/ZeroLTVBlockingError.tsx b/src/components/transactions/Swap/errors/shared/ZeroLTVBlockingError.tsx new file mode 100644 index 0000000000..426d0ae562 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/ZeroLTVBlockingError.tsx @@ -0,0 +1,16 @@ +import { Trans } from '@lingui/macro'; +import { SxProps, Typography } from '@mui/material'; +import { Warning } from 'src/components/primitives/Warning'; + +export const ZeroLTVBlockingError = ({ sx }: { sx?: SxProps }) => { + return ( + + + + You have assets with zero LTV that are blocking this operation. Please disable them as + collateral first. + + + + ); +}; diff --git a/src/components/transactions/Swap/errors/shared/ZeroLTVBlockingGuard.tsx b/src/components/transactions/Swap/errors/shared/ZeroLTVBlockingGuard.tsx new file mode 100644 index 0000000000..645940bfce --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/ZeroLTVBlockingGuard.tsx @@ -0,0 +1,59 @@ +import { SxProps } from '@mui/material'; +import React, { Dispatch, useEffect } from 'react'; +import { useZeroLTVBlockingWithdraw } from 'src/hooks/useZeroLTVBlockingWithdraw'; + +import { SwapError, SwapState } from '../../types'; +import { ZeroLTVBlockingError } from './ZeroLTVBlockingError'; + +export const hasZeroLTVBlocking = (state: SwapState, blockingAssets: string[]) => { + return blockingAssets.length > 0 && !blockingAssets.includes(state.sourceToken.symbol); +}; + +export const ZeroLTVBlockingGuard = ({ + state, + setState, + sx, + isSwapFlowSelected, +}: { + state: SwapState; + setState: Dispatch>; + sx?: SxProps; + isSwapFlowSelected: boolean; +}) => { + const assetsBlockingWithdraw = useZeroLTVBlockingWithdraw(); + + useEffect(() => { + const isBlocking = hasZeroLTVBlocking(state, assetsBlockingWithdraw); + + if (isBlocking) { + const isAlreadyBlockingError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'ZeroLTVBlockingError'; + + if (!isAlreadyBlockingError || !state.actionsBlocked) { + const blockingError: SwapError = { + rawError: new Error('ZeroLTVBlockingError'), + message: + 'You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.', + actionBlocked: true, + }; + setState({ error: blockingError, actionsBlocked: true }); + } + } else { + const isBlockingError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'ZeroLTVBlockingError'; + if (isBlockingError) { + setState({ error: undefined, actionsBlocked: false }); + } else if (state.actionsBlocked && !state.error?.actionBlocked) { + setState({ actionsBlocked: false }); + } + } + }, [assetsBlockingWithdraw, state.sourceToken.symbol]); + + if (hasZeroLTVBlocking(state, assetsBlockingWithdraw)) { + return ; + } + + return null; +}; diff --git a/src/components/transactions/Swap/errors/shared/console.helpers.ts b/src/components/transactions/Swap/errors/shared/console.helpers.ts new file mode 100644 index 0000000000..f166f79ea3 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/console.helpers.ts @@ -0,0 +1,62 @@ +import { SwapError, SwapState } from '../../types'; + +function serializeError(raw: unknown) { + if (!raw) return undefined; + try { + const err = raw as Record; + const base: Record = { + name: err?.name, + message: err?.message, + stack: err?.stack, + }; + const props: Record = {}; + try { + for (const key of Object.getOwnPropertyNames(err)) { + if (!(key in base)) props[key] = err[key]; + } + } catch (_) { + // ignore + } + return { ...base, ...props }; + } catch (_) { + return { message: String(raw) }; + } +} + +function buildErrorPayload(state: SwapState, error: SwapError) { + return { + timestamp: new Date().toISOString(), + chainId: state.chainId, + provider: state.provider, + useFlashloan: state.useFlashloan ?? false, + side: state.side, + orderType: state.orderType, + slippage: state.slippage, + input: { + token: state.sourceToken.symbol, + amount: state.debouncedInputAmount, + usd: state.swapRate?.srcSpotUSD, + }, + output: { + token: state.destinationToken.symbol, + amount: state.debouncedOutputAmount, + usd: state.swapRate?.destSpotUSD, + }, + error: { + message: error.message, + actionBlocked: error.actionBlocked, + stage: error.stage, + raw: serializeError(error.rawError), + }, + }; +} + +export const errorToConsoleString = (state: SwapState, error: SwapError): string => { + const payload = buildErrorPayload(state, error); + return JSON.stringify(payload, null, 2); +}; + +export const errorToConsole = (state: SwapState, error: SwapError) => { + const pretty = errorToConsoleString(state, error); + console.error('Aave Swap Error\n' + pretty); +}; diff --git a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts new file mode 100644 index 0000000000..cba239cfbd --- /dev/null +++ b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts @@ -0,0 +1,98 @@ +import { normalize } from '@aave/math-utils'; +import { + getOrderToSign, + LimitTradeParameters, + OrderKind, + OrderSigningUtils, +} from '@cowprotocol/cow-sdk'; +import { + AaveCollateralSwapSdk, + EncodedOrder, + FlashLoanHookAmounts, + HASH_ZERO, +} from '@cowprotocol/sdk-flash-loans'; + +import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; +import { OrderType, SwapProvider, SwapState, SwapType } from '../../types'; + +export const calculateInstanceAddress = async (state: SwapState, user: string, validTo: number) => { + if (!state.minimumReceived || !user) return; + + const flashLoanSdk = new AaveCollateralSwapSdk(); + const sellAmount = normalize(state.inputAmount, -state.sourceToken.decimals); + const buyAmount = normalize(state.minimumReceived, -state.destinationToken.decimals); + const partnerFee = COW_PARTNER_FEE(state.sourceToken.symbol, state.destinationToken.symbol); + const slippageBps = + state.orderType === OrderType.LIMIT ? 0 : Math.round(Number(state.slippage) * 100); // percent to bps + + const { flashLoanFeeAmount, sellAmountToSign } = flashLoanSdk.calculateFlashLoanAmounts({ + flashLoanFeePercent: FLASH_LOAN_FEE_BPS / 100, + sellAmount: BigInt(sellAmount), + }); + + const limitOrder: LimitTradeParameters = { + sellToken: state.sourceToken.underlyingAddress, + sellTokenDecimals: state.sourceToken.decimals, + buyToken: state.destinationToken.underlyingAddress, + buyTokenDecimals: state.destinationToken.decimals, + sellAmount: sellAmountToSign.toString(), + buyAmount: buyAmount.toString(), + kind: state.side === 'buy' ? OrderKind.BUY : OrderKind.SELL, + validTo, + slippageBps, + partnerFee, + }; + + const orderToSign = getOrderToSign( + { chainId: state.chainId, from: user, networkCostsAmount: '0', isEthFlow: false }, + limitOrder, + HASH_ZERO + ); + + const encodedOrder: EncodedOrder = { + ...OrderSigningUtils.encodeUnsignedOrder(orderToSign), + appData: HASH_ZERO, + validTo, + }; + + const hookAmounts: FlashLoanHookAmounts = { + flashLoanAmount: sellAmount, + flashLoanFeeAmount: flashLoanFeeAmount.toString(), + sellAssetAmount: sellAmount, + buyAssetAmount: buyAmount.toString(), + }; + + return await flashLoanSdk.getExpectedInstanceAddress( + state.chainId, + user as `0x${string}`, + hookAmounts, + encodedOrder + ); +}; + +export const calculateFlashLoanAmounts = ( + state: SwapState +): { + flashLoanFeeAmount: bigint; + finalSellAmount: bigint; +} => { + const flashLoanSdk = new AaveCollateralSwapSdk(); + const sellAmount = normalize(state.inputAmount, -state.sourceToken.decimals); + + if (state.swapType !== SwapType.CollateralSwap || state.provider !== SwapProvider.COW_PROTOCOL) { + return { + flashLoanFeeAmount: BigInt(0), + finalSellAmount: BigInt(sellAmount), + }; + } + + const { flashLoanFeeAmount, sellAmountToSign } = flashLoanSdk.calculateFlashLoanAmounts({ + sellAmount: BigInt(sellAmount), + flashLoanFeePercent: FLASH_LOAN_FEE_BPS / 100, + }); + + return { + flashLoanFeeAmount: flashLoanFeeAmount, + finalSellAmount: sellAmountToSign, + }; +}; diff --git a/src/components/transactions/Swap/helpers/cow/index.ts b/src/components/transactions/Swap/helpers/cow/index.ts new file mode 100644 index 0000000000..849915ee02 --- /dev/null +++ b/src/components/transactions/Swap/helpers/cow/index.ts @@ -0,0 +1,3 @@ +export * from './orders.helpers'; +export * from './rates.helpers'; +// export * from './signatures.helpers'; diff --git a/src/components/transactions/Swap/helpers/cow/orders.helpers.ts b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts new file mode 100644 index 0000000000..a5f824245f --- /dev/null +++ b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts @@ -0,0 +1,643 @@ +import { API_ETH_MOCK_ADDRESS } from '@aave/contract-helpers'; +import { BigNumberValue, normalizeBN, valueToBigNumber } from '@aave/math-utils'; +import { + BuyTokenDestination, + OrderBookApi, + OrderKind, + OrderParameters, + OrderStatus, + QuoteAndPost, + SellTokenSource, + SigningScheme, + SupportedChainId, + TradingSdk, + WRAPPED_NATIVE_CURRENCIES, +} from '@cowprotocol/cow-sdk'; +import { AnyAppDataDocVersion, MetadataApi } from '@cowprotocol/sdk-app-data'; +import { ViemAdapter } from '@cowprotocol/sdk-viem-adapter'; +import { JsonRpcProvider } from '@ethersproject/providers'; +import { BigNumber, ethers, PopulatedTransaction } from 'ethers'; +import { isSmartContractWallet } from 'src/helpers/provider'; +import { wagmiConfig } from 'src/ui-config/wagmiConfig'; +import { getPublicClient, getWalletClient } from 'wagmi/actions'; + +import { + COW_APP_DATA, + COW_CREATE_ORDER_ABI, + COW_PARTNER_FEE, + COW_PROTOCOL_ETH_FLOW_ADDRESS, + isChainIdSupportedByCoWProtocol, +} from '../../constants/cow.constants'; +import { isCowProtocolRates, OrderType, SwapState } from '../../types'; + +export type CowProtocolActionParams = { + orderType: OrderType; + quote: OrderParameters; + provider: JsonRpcProvider; + chainId: number; + user: string; + sellAmount: string; + buyAmount: string; + tokenDest: string; + tokenSrc: string; + tokenSrcDecimals: number; + tokenDestDecimals: number; + inputSymbol: string; + outputSymbol: string; + slippageBps: number; + smartSlippage: boolean; + appCode: string; + kind: OrderKind; + orderBookQuote: QuoteAndPost; +}; + +export const getCowAdapter = async (chainId: number) => { + const walletClient = await getWalletClient(wagmiConfig, { chainId }); + const publicClient = getPublicClient(wagmiConfig, { chainId }); + if (!publicClient || !walletClient) { + throw new Error('Wallet not connected'); + } + return new ViemAdapter({ provider: publicClient, walletClient }); +}; + +export const getPreSignTransaction = async ({ + provider, + chainId, + user, + slippageBps, + smartSlippage, + inputSymbol, + outputSymbol, + appCode, + orderBookQuote, + orderType, + sellAmount, + buyAmount, + tokenSrc, + tokenDest, + tokenSrcDecimals, + tokenDestDecimals, + kind, +}: CowProtocolActionParams) => { + if (!isChainIdSupportedByCoWProtocol(chainId)) { + throw new Error('Chain not supported.'); + } + + const tradingSdk = new TradingSdk( + { + chainId, + appCode, + }, + {}, + await getCowAdapter(chainId) + ); + + const isSmartContract = await isSmartContractWallet(user, provider); + if (!isSmartContract) { + throw new Error('Only smart contract wallets should use presign.'); + } + + let orderResult; + if (orderType === OrderType.LIMIT) { + orderResult = await tradingSdk.postLimitOrder( + { + sellAmount, + buyAmount, + kind: kind == OrderKind.SELL ? OrderKind.SELL : OrderKind.BUY, + sellToken: tokenSrc, + buyToken: tokenDest, + sellTokenDecimals: tokenSrcDecimals, + buyTokenDecimals: tokenDestDecimals, + owner: user as `0x${string}`, + }, + { + appData: COW_APP_DATA( + inputSymbol, + outputSymbol, + slippageBps, + smartSlippage, + orderType, + appCode + ), + additionalParams: { + signingScheme: SigningScheme.PRESIGN, + }, + } + ); + } else { + orderResult = await orderBookQuote.postSwapOrderFromQuote({ + additionalParams: { + signingScheme: SigningScheme.PRESIGN, + }, + appData: COW_APP_DATA( + inputSymbol, + outputSymbol, + slippageBps, + smartSlippage, + orderType, + appCode + ), + }); + } + + const preSignTransaction = await tradingSdk.getPreSignTransaction({ + orderUid: orderResult.orderId, + signer: provider?.getSigner(), + }); + + return { + ...preSignTransaction, + orderId: orderResult.orderId, + }; +}; + +// Only for EOA wallets +export const sendOrder = async ({ + provider, + chainId, + user, + slippageBps, + inputSymbol, + outputSymbol, + smartSlippage, + appCode, + orderBookQuote, + orderType, + sellAmount, + buyAmount, + tokenSrc, + tokenDest, + tokenSrcDecimals, + tokenDestDecimals, + kind, +}: CowProtocolActionParams) => { + const signer = provider?.getSigner(); + + if (!isChainIdSupportedByCoWProtocol(chainId)) { + throw new Error('Chain not supported.'); + } + + if (!signer) { + throw new Error('No signer found in provider'); + } + + const isSmartContract = await isSmartContractWallet(user, provider); + if (isSmartContract) { + throw new Error('Smart contract wallets should use presign.'); + } + + if (orderType === OrderType.LIMIT) { + const tradingSdk = new TradingSdk( + { + chainId, + appCode, + }, + {}, + await getCowAdapter(chainId) + ); + + return tradingSdk + .postLimitOrder( + { + sellAmount, + buyAmount, + kind: kind == OrderKind.SELL ? OrderKind.SELL : OrderKind.BUY, + sellToken: tokenSrc, + buyToken: tokenDest, + sellTokenDecimals: tokenSrcDecimals, + buyTokenDecimals: tokenDestDecimals, + owner: user as `0x${string}`, + }, + { + appData: COW_APP_DATA( + inputSymbol, + outputSymbol, + slippageBps, + smartSlippage, + orderType, + appCode + ), + } + ) + .then((orderResult) => orderResult.orderId); + } else { + return orderBookQuote + .postSwapOrderFromQuote({ + appData: COW_APP_DATA( + inputSymbol, + outputSymbol, + slippageBps, + smartSlippage, + orderType, + appCode + ), + }) + .then((orderResult) => orderResult.orderId); + } +}; + +export const getOrderStatus = async (orderId: string, chainId: number) => { + const orderBookApi = new OrderBookApi({ chainId: chainId }); + const status = await orderBookApi.getOrderCompetitionStatus(orderId, { + chainId, + }); + return status.type; +}; + +export const getOrder = async (orderId: string, chainId: number) => { + const orderBookApi = new OrderBookApi({ chainId }); + const order = await orderBookApi.getOrder(orderId, { + chainId, + }); + return order; +}; + +export const getOrders = async (chainId: number, account: string) => { + const orderBookApi = new OrderBookApi({ chainId }); + const orders = await orderBookApi.getOrders({ + owner: account, + }); + + return orders; +}; + +export const isOrderLoading = (status: OrderStatus) => { + return status === OrderStatus.OPEN || status === OrderStatus.PRESIGNATURE_PENDING; +}; + +export const isOrderFilled = (status: OrderStatus) => { + return status === OrderStatus.FULFILLED; +}; + +export const isOrderExpired = (status: OrderStatus) => { + return status === OrderStatus.EXPIRED; +}; + +export const isOrderCancelled = (status: OrderStatus) => { + return status === OrderStatus.CANCELLED; +}; + +export const isNativeToken = (token?: string) => { + return token?.toLowerCase() === API_ETH_MOCK_ADDRESS.toLowerCase(); +}; + +// TODO: make object param +export const getUnsignerOrder = async ({ + sellAmount, + buyAmount, + dstToken, + user, + chainId, + tokenFromSymbol, + tokenToSymbol, + slippageBps, + smartSlippage, + appCode, + orderType, + validTo, + srcToken, + receiver, +}: { + sellAmount: string; + buyAmount: string; + dstToken: string; + user: string; + chainId: number; + tokenFromSymbol: string; + tokenToSymbol: string; + slippageBps: number; + smartSlippage: boolean; + appCode: string; + orderType: OrderType; + validTo: number; + srcToken?: string; + receiver?: string; +}) => { + const metadataApi = new MetadataApi(); + const { appDataHex } = await metadataApi.getAppDataInfo( + COW_APP_DATA(tokenFromSymbol, tokenToSymbol, slippageBps, smartSlippage, orderType, appCode) + ); + + return { + buyToken: dstToken, + receiver: receiver || user, + sellAmount, + buyAmount, + appData: appDataHex, + feeAmount: '0', + validTo: validTo, + partiallyFillable: false, + kind: OrderKind.SELL, + sellToken: srcToken + ? srcToken.toLowerCase() + : WRAPPED_NATIVE_CURRENCIES[chainId as SupportedChainId].address.toLowerCase(), + buyTokenBalance: BuyTokenDestination.ERC20, + sellTokenBalance: SellTokenSource.ERC20, + }; +}; + +export const hashAppData = async (appData: AnyAppDataDocVersion) => { + const metadataApi = new MetadataApi(); + const { appDataHex } = await metadataApi.getAppDataInfo(appData); + return appDataHex; +}; + +export const populateEthFlowTx = async ( + sellAmount: string, + buyAmount: string, + dstToken: string, + user: string, + validTo: number, + tokenFromSymbol: string, + tokenToSymbol: string, + slippageBps: number, + smartSlippage: boolean, + appCode: string, + orderType: OrderType, + quoteId?: number +): Promise => { + const appDataHex = await hashAppData( + COW_APP_DATA(tokenFromSymbol, tokenToSymbol, slippageBps, smartSlippage, orderType, appCode) + ); + + const orderData = { + buyToken: dstToken, + receiver: user, + sellAmount, + buyAmount, + appData: appDataHex, + feeAmount: '0', + validTo, + partiallyFillable: false, + quoteId: quoteId || 0, + }; + + const value = BigNumber.from(sellAmount); + + // Create the contract interface + const iface = new ethers.utils.Interface([COW_CREATE_ORDER_ABI]); + + // Encode the function call + const data = iface.encodeFunctionData('createOrder', [ + [ + orderData.buyToken, + orderData.receiver, + orderData.sellAmount, + orderData.buyAmount, + orderData.appData, + orderData.feeAmount, + orderData.validTo, + orderData.partiallyFillable, + orderData.quoteId, + ], + ]); + + return { + to: COW_PROTOCOL_ETH_FLOW_ADDRESS, + value, + data, + }; +}; + +export const getRecommendedSlippage = (srcUSD: string) => { + try { + if (Number(srcUSD) <= 0) { + return Number(0.5); + } + + if (Number(srcUSD) <= 1) { + return Number(5.0); + } else if (Number(srcUSD) <= 5) { + return Number(2.5); + } else if (Number(srcUSD) <= 10) { + return Number(1.5); + } else { + return Number(0.5); + } + } catch (e) { + return Number(0.5); + } +}; + +export const uploadAppData = async (orderId: string, appDataHex: string, chainId: number) => { + const orderBookApi = new OrderBookApi({ chainId }); + + return orderBookApi.uploadAppData(orderId, appDataHex); +}; + +export const generateCoWExplorerLink = (chainId: SupportedChainId, orderId?: string) => { + if (!orderId) { + return undefined; + } + + const base = 'https://explorer.cow.fi'; + switch (chainId) { + case SupportedChainId.MAINNET: + return `${base}/orders/${orderId}`; + case SupportedChainId.GNOSIS_CHAIN: + return `${base}/gc/orders/${orderId}`; + case SupportedChainId.BASE: + return `${base}/base/orders/${orderId}`; + case SupportedChainId.ARBITRUM_ONE: + return `${base}/arb1/orders/${orderId}`; + case SupportedChainId.SEPOLIA: + return `${base}/sepolia/orders/${orderId}`; + case SupportedChainId.AVALANCHE: + return `${base}/avax/orders/${orderId}`; + case SupportedChainId.POLYGON: + return `${base}/pol/orders/${orderId}`; + case SupportedChainId.BNB: + return `${base}/bnb/orders/${orderId}`; + default: + throw new Error('Define explorer link for chainId: ' + chainId); + } +}; + +export const adjustedBps = (sdkFeeBps: number) => { + const f = sdkFeeBps / 10000; + const effective = f / (1 + f); + return effective * 10000; +}; + +export const sellAmountBeforeCostsIncluded = ( + state: SwapState, + extraAmountToAdd?: BigNumberValue +) => { + if (!state.swapRate || !isCowProtocolRates(state.swapRate)) return ''; + + const extraAmount = extraAmountToAdd + ? valueToBigNumber(extraAmountToAdd.toString()) + : valueToBigNumber('0'); + + if (state.orderType === OrderType.MARKET) { + return valueToBigNumber(state.swapRate.srcSpotAmount).plus(extraAmount).toString(); + } else { + if (state.side === 'sell') { + return normalizeBN(state.inputAmount, -state.sourceToken.decimals) + .minus(extraAmount) + .toString(); + } else { + const sellAmount = valueToBigNumber( + normalizeBN(state.inputAmount, -state.sourceToken.decimals) + ); + const sellAmountBeforeNetworkCosts = sellAmount; + const originalPartnerFeeBps = COW_PARTNER_FEE( + state.sourceToken.symbol, + state.destinationToken.symbol + ).volumeBps; + const adjustedPartnerFeeBps = adjustedBps(originalPartnerFeeBps); + const partnerFeeAmount = sellAmountBeforeNetworkCosts + .multipliedBy(adjustedPartnerFeeBps) + .dividedBy(10000) + .toFixed(0); + + return valueToBigNumber(normalizeBN(state.inputAmount, -state.sourceToken.decimals)) + .plus(partnerFeeAmount) + .plus(extraAmount) + .toString(); + } + } +}; + +export const sellAmountWithCostsIncluded = ( + state: SwapState, + extraAmountToAdd?: BigNumberValue +) => { + if (!state.swapRate || !isCowProtocolRates(state.swapRate)) return ''; + + const extraAmount = extraAmountToAdd + ? valueToBigNumber(extraAmountToAdd.toString()) + : valueToBigNumber('0'); + + if (state.orderType === OrderType.MARKET) { + return valueToBigNumber(state.swapRate.srcSpotAmount).plus(extraAmount).toString(); + } else { + if (state.side === 'sell') { + return normalizeBN(state.inputAmount, -state.sourceToken.decimals) + .plus(extraAmount) + .toString(); + } else { + const sellAmount = valueToBigNumber( + normalizeBN(state.inputAmount, -state.sourceToken.decimals) + ); + const sellAmountBeforeNetworkCosts = sellAmount; + const originalPartnerFeeBps = COW_PARTNER_FEE( + state.sourceToken.symbol, + state.destinationToken.symbol + ).volumeBps; + const adjustedPartnerFeeBps = adjustedBps(originalPartnerFeeBps); + const partnerFeeAmount = sellAmountBeforeNetworkCosts + .multipliedBy(adjustedPartnerFeeBps) + .dividedBy(10000) + .toFixed(0); + + return valueToBigNumber(normalizeBN(state.inputAmount, -state.sourceToken.decimals)) + .minus(partnerFeeAmount) + .plus(extraAmount) + .toString(); + } + } +}; + +export const buyAmountWithCostsIncluded = (state: SwapState, extraAmountToAdd?: BigNumberValue) => { + if (!state.swapRate || !isCowProtocolRates(state.swapRate)) return ''; + const extraAmount = extraAmountToAdd + ? valueToBigNumber(extraAmountToAdd.toString()) + : valueToBigNumber('0'); + + if (state.orderType === OrderType.MARKET) { + if (isNativeToken(state.destinationToken.addressToSwap)) { + const destAmountWithSlippage = valueToBigNumber(state.swapRate.destSpotAmount) + .multipliedBy(valueToBigNumber(1).minus(valueToBigNumber(state.slippage).dividedBy(100))) + .toFixed(0); + return valueToBigNumber(destAmountWithSlippage).plus(extraAmount).toString(); + } else { + return valueToBigNumber(state.swapRate.amountAndCosts.afterNetworkCosts.buyAmount.toString()) + .plus(extraAmount) + .toString(); + } + } else { + if (state.side === 'sell') { + const buyAmount = normalizeBN(state.outputAmount, -state.destinationToken.decimals); + const sellAmount = normalizeBN(state.inputAmount, -state.sourceToken.decimals); + const sellAmountBeforeNetworkCosts = sellAmount; + const buyAmountAfterNetworkCosts = buyAmount; + const networkCostsAmount = valueToBigNumber('0'); + const sellAmountAfterNetworkCosts = sellAmountBeforeNetworkCosts.plus(networkCostsAmount); + const buyAmountBeforeNetworkCosts = buyAmountAfterNetworkCosts + .dividedBy(sellAmountBeforeNetworkCosts) + .multipliedBy(sellAmountAfterNetworkCosts); + const partnerFeeBps = COW_PARTNER_FEE( + state.sourceToken.symbol, + state.destinationToken.symbol + ).volumeBps; + const adjustedPartnerFeeBps = adjustedBps(partnerFeeBps); + const partnerFeeAmount = buyAmountBeforeNetworkCosts + .multipliedBy(adjustedPartnerFeeBps) + .dividedBy(10000) + .toFixed(0); + + return valueToBigNumber(normalizeBN(state.outputAmount, -state.destinationToken.decimals)) + .plus(partnerFeeAmount) + .plus(extraAmount) + .toString(); + } else { + return normalizeBN(state.outputAmount, -state.destinationToken.decimals) + .plus(extraAmount) + .toString(); + } + } +}; + +export const buyAmountBeforeCostsIncluded = ( + state: SwapState, + extraAmountToAdd?: BigNumberValue +) => { + if (!state.swapRate || !isCowProtocolRates(state.swapRate)) return ''; + const extraAmount = extraAmountToAdd + ? valueToBigNumber(extraAmountToAdd.toString()) + : valueToBigNumber('0'); + + if (state.orderType === OrderType.MARKET) { + if (isNativeToken(state.destinationToken.addressToSwap)) { + const destAmountWithSlippage = valueToBigNumber(state.swapRate.destSpotAmount) + .multipliedBy(valueToBigNumber(1).minus(valueToBigNumber(state.slippage).dividedBy(100))) + .toFixed(0); + return valueToBigNumber(destAmountWithSlippage).plus(extraAmount).toString(); + } else { + return valueToBigNumber(state.swapRate.amountAndCosts.afterNetworkCosts.buyAmount.toString()) + .plus(extraAmount) + .toString(); + } + } else { + if (state.side === 'sell') { + const buyAmount = normalizeBN(state.outputAmount, -state.destinationToken.decimals); + const sellAmount = normalizeBN(state.inputAmount, -state.sourceToken.decimals); + const sellAmountBeforeNetworkCosts = sellAmount; + const buyAmountAfterNetworkCosts = buyAmount; + const networkCostsAmount = valueToBigNumber('0'); + const sellAmountAfterNetworkCosts = sellAmountBeforeNetworkCosts.plus(networkCostsAmount); + const buyAmountBeforeNetworkCosts = buyAmountAfterNetworkCosts + .dividedBy(sellAmountBeforeNetworkCosts) + .multipliedBy(sellAmountAfterNetworkCosts); + const partnerFeeBps = COW_PARTNER_FEE( + state.sourceToken.symbol, + state.destinationToken.symbol + ).volumeBps; + const adjustedPartnerFeeBps = adjustedBps(partnerFeeBps); + const partnerFeeAmount = buyAmountBeforeNetworkCosts + .multipliedBy(adjustedPartnerFeeBps) + .dividedBy(10000) + .toFixed(0); + + return valueToBigNumber(normalizeBN(state.outputAmount, -state.destinationToken.decimals)) + .minus(partnerFeeAmount) + .plus(extraAmount) + .toString(); + } else { + return normalizeBN(state.outputAmount, -state.destinationToken.decimals) + .plus(extraAmount) + .toString(); + } + } +}; diff --git a/src/components/transactions/Swap/helpers/cow/rates.helpers.ts b/src/components/transactions/Swap/helpers/cow/rates.helpers.ts new file mode 100644 index 0000000000..a130dacc02 --- /dev/null +++ b/src/components/transactions/Swap/helpers/cow/rates.helpers.ts @@ -0,0 +1,237 @@ +import { ChainId } from '@aave/contract-helpers'; +import { + OrderKind, + QuoteAndPost, + TradingSdk, + WRAPPED_NATIVE_CURRENCIES, +} from '@cowprotocol/cow-sdk'; +import { BigNumber } from 'bignumber.js'; +import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; +import { CoWProtocolPricesService } from 'src/services/CoWProtocolPricesService'; +import { FamilyPricesService } from 'src/services/FamilyPricesService'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { wagmiConfig } from 'src/ui-config/wagmiConfig'; +import { getNetworkConfig } from 'src/utils/marketsAndNetworksConfig'; + +import { COW_PARTNER_FEE, isChainIdSupportedByCoWProtocol } from '../../constants/cow.constants'; +import { getCowAdapter, isNativeToken } from '../../helpers/cow'; +import { CowProtocolRatesType, ProviderRatesParams, SwapProvider } from '../../types'; + +export const getTokenUsdPrice = async ( + chainId: number, + tokenAddress: string, + isTokenCustom: boolean, + isMainnet: boolean +) => { + const cowProtocolPricesService = new CoWProtocolPricesService(); + const familyPricesService = new FamilyPricesService(); + + try { + let price; + + if (!isTokenCustom && isMainnet) { + price = await familyPricesService.getTokenUsdPrice(chainId, tokenAddress); + } + + if (price) { + return price; + } + + return await cowProtocolPricesService.getTokenUsdPrice(chainId, tokenAddress); + } catch (familyError) { + console.error(familyError); + return undefined; + } +}; + +export async function getCowProtocolSellRates({ + chainId, + amount, + srcToken, + srcDecimals, + destToken, + destDecimals, + user, + inputSymbol, + outputSymbol, + isInputTokenCustom, + isOutputTokenCustom, + appCode, + setError, + side = 'sell', + invertedQuoteRoute = false, +}: ProviderRatesParams): Promise { + const tradingSdk = new TradingSdk({ chainId }, {}, await getCowAdapter(chainId)); + + let orderBookQuote: QuoteAndPost | undefined; + let srcTokenPriceUsd: string | undefined; + let destTokenPriceUsd: string | undefined; + try { + if (!isChainIdSupportedByCoWProtocol(chainId)) { + throw new Error('Chain not supported by CowProtocol'); + } + + // If srcToken is native, we need to use the wrapped token for the quote + let srcTokenWrapped = srcToken; + if (isNativeToken(srcToken)) { + srcTokenWrapped = WRAPPED_NATIVE_CURRENCIES[chainId].address; + } + + let destTokenWrapped = destToken; + if (isNativeToken(destToken)) { + destTokenWrapped = WRAPPED_NATIVE_CURRENCIES[chainId].address; + } + + const provider = await getEthersProvider(wagmiConfig, { chainId }); + const signer = provider?.getSigner(); + const isMainnet = + !getNetworkConfig(chainId as unknown as ChainId).isTestnet && + !getNetworkConfig(chainId as unknown as ChainId).isFork; + + if (!inputSymbol || !outputSymbol) { + throw new Error('No input or output symbol provided'); + } + + [orderBookQuote, srcTokenPriceUsd, destTokenPriceUsd] = await Promise.all([ + tradingSdk + .getQuote({ + owner: user as `0x${string}`, + kind: side === 'buy' ? OrderKind.BUY : OrderKind.SELL, + amount, + sellToken: srcTokenWrapped, + sellTokenDecimals: srcDecimals, + buyToken: destTokenWrapped, + buyTokenDecimals: destDecimals, + signer, + appCode: appCode, + partnerFee: COW_PARTNER_FEE(inputSymbol, outputSymbol), + }) + .catch((cowError) => { + console.error(cowError); + throw new Error(cowError?.body?.errorType); + }), + getTokenUsdPrice(chainId, srcTokenWrapped, isInputTokenCustom ?? false, isMainnet), + getTokenUsdPrice(chainId, destTokenWrapped, isOutputTokenCustom ?? false, isMainnet), + ]); + + if (!srcTokenPriceUsd || !destTokenPriceUsd) { + console.error('No price found for token'); + const error = getErrorTextFromError( + new Error('No price found for token, please try another token'), + TxAction.MAIN_ACTION, + true + ); + setError?.(error); + console.error(error); + throw new Error('No price found for token, please try another token'); + } + } catch (error) { + console.error('generate error', error); + setError?.({ + error, + blocking: true, + actionBlocked: true, + rawError: error, + txAction: TxAction.MAIN_ACTION, + }); + + throw error; + } + + const srcAmountInUsd = BigNumber(srcTokenPriceUsd).multipliedBy( + BigNumber(amount).dividedBy(10 ** srcDecimals) + ); + const destAmountInUsd = BigNumber(destTokenPriceUsd).multipliedBy( + BigNumber( + orderBookQuote.quoteResults.amountsAndCosts.afterPartnerFees.buyAmount.toString() + ).dividedBy(10 ** destDecimals) + ); + + const destSpotInUsd = BigNumber(destTokenPriceUsd) + .multipliedBy( + BigNumber(orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.buyAmount.toString()) + ) + .dividedBy(10 ** destDecimals); + + if (!orderBookQuote.quoteResults.suggestedSlippageBps) { + console.error('No suggested slippage found'); + const error = getErrorTextFromError( + new Error('No suggested slippage found'), + TxAction.MAIN_ACTION, + true + ); + setError?.(error); + console.error(error); + throw new Error('No suggested slippage found'); + } + + if (!orderBookQuote.quoteResults.amountsAndCosts.afterPartnerFees.buyAmount) { + console.error('No buy amount found'); + const error = getErrorTextFromError( + new Error('No buy amount found'), + TxAction.MAIN_ACTION, + true + ); + setError?.(error); + console.error(error); + throw new Error('No buy amount found'); + } + + let suggestedSlippage = (orderBookQuote.quoteResults.suggestedSlippageBps ?? 100) / 100; // E.g. 100 bps -> 1% 100 / 100 = 1 + + if (isNativeToken(srcToken)) { + // Recommended by CoW for potential reimbursments + if (chainId == 1 && suggestedSlippage < 2) { + suggestedSlippage = 2; + } else if (chainId != 1 && suggestedSlippage < 0.5) { + suggestedSlippage = 0.5; + } + } + + if (invertedQuoteRoute) { + return { + srcToken: destToken, + srcSpotUSD: destAmountInUsd.toString(), + srcSpotAmount: + orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.buyAmount.toString(), + srcDecimals: destDecimals, + destToken: srcToken, + destSpotAmount: amount, + destSpotUSD: srcAmountInUsd.toString(), + afterFeesUSD: destAmountInUsd.toString(), + afterFeesAmount: amount.toString(), + destDecimals: srcDecimals, + orderBookQuote, + provider: SwapProvider.COW_PROTOCOL, + order: orderBookQuote.quoteResults.orderToSign, + quoteId: orderBookQuote.quoteResults.quoteResponse.id, + suggestedSlippage, + amountAndCosts: orderBookQuote.quoteResults.amountsAndCosts, + srcTokenPriceUsd: Number(destTokenPriceUsd), + destTokenPriceUsd: Number(srcTokenPriceUsd), + }; + } else { + return { + srcToken, + srcSpotUSD: srcAmountInUsd.toString(), + srcSpotAmount: amount, + srcDecimals, + destToken, + destSpotAmount: + orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.buyAmount.toString(), + destSpotUSD: destSpotInUsd.toString(), + afterFeesUSD: destAmountInUsd.toString(), + afterFeesAmount: + orderBookQuote.quoteResults.amountsAndCosts.afterPartnerFees.buyAmount.toString(), + destDecimals, + orderBookQuote, + provider: SwapProvider.COW_PROTOCOL, + order: orderBookQuote.quoteResults.orderToSign, + quoteId: orderBookQuote.quoteResults.quoteResponse.id, + suggestedSlippage, + amountAndCosts: orderBookQuote.quoteResults.amountsAndCosts, + srcTokenPriceUsd: Number(srcTokenPriceUsd), + destTokenPriceUsd: Number(destTokenPriceUsd), + }; + } +} diff --git a/src/components/transactions/Swap/helpers/cow/signatures.helpers.ts b/src/components/transactions/Swap/helpers/cow/signatures.helpers.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/components/transactions/Swap/helpers/gasEstimation.helpers.ts b/src/components/transactions/Swap/helpers/gasEstimation.helpers.ts new file mode 100644 index 0000000000..d347b67066 --- /dev/null +++ b/src/components/transactions/Swap/helpers/gasEstimation.helpers.ts @@ -0,0 +1,151 @@ +import { APPROVAL_GAS_LIMIT } from 'src/components/transactions/utils'; +import { TxStateType } from 'src/hooks/useModal'; + +import { COW_PROTOCOL_GAS_LIMITS } from '../constants/cow.constants'; +import { PARASWAP_GAS_LIMITS } from '../constants/paraswap.constants'; +import { SwapProvider, SwapType, TokenType } from '../types'; + +// Helper function to check if token is native +const isNativeToken = (address: string): boolean => { + return ( + address === '0x0000000000000000000000000000000000000000' || + address === '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' + ); +}; + +export interface GasEstimationParams { + swapType: SwapType; + provider: SwapProvider; + sourceToken: { addressToSwap: string; tokenType: TokenType }; + userIsSmartContractWallet: boolean; + requiresApproval: boolean; + requiresApprovalReset: boolean; + approvalTxState: TxStateType; + useFlashloan: boolean; + usePermit: boolean; +} + +export interface GasEstimationResult { + gasLimit: string; + showGasStation: boolean; + breakdown: { + baseGas: number; + approvalGas: number; + resetApprovalGas: number; + total: number; + }; +} + +/** + * Centralized gas estimation logic for all swap types and providers + */ +export const estimateSwapGas = (params: GasEstimationParams): GasEstimationResult => { + const { + swapType, + provider, + sourceToken, + userIsSmartContractWallet, + requiresApproval, + requiresApprovalReset, + approvalTxState, + useFlashloan, + usePermit, + } = params; + + let baseGas = 0; + let approvalGas = 0; + let resetApprovalGas = 0; + let showGasStation = false; + // Drastically reduced version of base gas estimation + if (provider === SwapProvider.PARASWAP) { + baseGas = PARASWAP_GAS_LIMITS[swapType] ?? 0; + showGasStation = true; + } else if (provider === SwapProvider.COW_PROTOCOL) { + const isEthNativeSwap = isNativeToken(sourceToken.addressToSwap); + if ( + (swapType === SwapType.Swap && (isEthNativeSwap || userIsSmartContractWallet)) || + (swapType === SwapType.CollateralSwap && !useFlashloan) + ) { + baseGas = COW_PROTOCOL_GAS_LIMITS[swapType] ?? 0; + showGasStation = true; + } else { + baseGas = 0; + showGasStation = false; + } + } else { + baseGas = 0; + showGasStation = false; + } + + // Add approval gas if needed + if (requiresApproval && !approvalTxState.success && !usePermit) { + approvalGas = Number(APPROVAL_GAS_LIMIT); + showGasStation = true; + } + + // Add reset approval gas if needed + if (requiresApprovalReset && !usePermit) { + resetApprovalGas = Number(APPROVAL_GAS_LIMIT); + showGasStation = true; + } + + const total = baseGas + approvalGas + resetApprovalGas; + + return { + gasLimit: total.toString(), + showGasStation, + breakdown: { + baseGas, + approvalGas, + resetApprovalGas, + total, + }, + }; +}; + +/** + * Determines if a swap requires gas based on provider and token types + */ +export const shouldShowGasStation = ( + provider: SwapProvider, + sourceToken: { addressToSwap: string; tokenType: TokenType }, + userIsSmartContractWallet: boolean, + requiresApproval: boolean +): boolean => { + // Always show gas station for Paraswap + if (provider === SwapProvider.PARASWAP) { + return true; + } + + // For CoW Protocol, only show gas station for ETH-native swaps or smart contract wallets + if (provider === SwapProvider.COW_PROTOCOL) { + const isEthNativeSwap = isNativeToken(sourceToken.addressToSwap); + return isEthNativeSwap || userIsSmartContractWallet || requiresApproval; + } + + // For other providers, show gas station if approval is required + return requiresApproval; +}; + +/** + * Gets gas estimation for native token swaps (ETH, MATIC, etc.) + */ +export const getNativeTokenGasEstimation = ( + chainId: number, + tokenType: TokenType +): { gasRequired: string; showWarning: boolean } => { + // Different gas requirements for different chains + const gasRequirements = { + 1: '0.01', // Ethereum mainnet + 137: '0.001', // Polygon + 42161: '0.001', // Arbitrum + 10: '0.001', // Optimism + 56: '0.001', // BSC + 43114: '0.001', // Avalanche + }; + + const gasRequired = gasRequirements[chainId as keyof typeof gasRequirements] || '0.001'; + const showWarning = tokenType === TokenType.NATIVE; + + return { gasRequired, showWarning }; +}; diff --git a/src/components/transactions/Swap/helpers/paraswap/index.ts b/src/components/transactions/Swap/helpers/paraswap/index.ts new file mode 100644 index 0000000000..3b4e920c50 --- /dev/null +++ b/src/components/transactions/Swap/helpers/paraswap/index.ts @@ -0,0 +1,3 @@ +export * from './misc.helpers'; +export * from './order.helpers'; +export * from './rates.helpers'; diff --git a/src/components/transactions/Switch/slippage.helpers.ts b/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts similarity index 73% rename from src/components/transactions/Switch/slippage.helpers.ts rename to src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts index 95cdcfb963..0b433c5ca4 100644 --- a/src/components/transactions/Switch/slippage.helpers.ts +++ b/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts @@ -1,4 +1,4 @@ -import { getAssetGroup } from 'src/components/transactions/Switch/assetCorrelation.helpers'; +import { getAssetGroup } from '../shared/assetCorrelation.helpers'; export const getParaswapSlippage = (inputSymbol: string, outputSymbol: string): string => { const inputGroup = getAssetGroup(inputSymbol); diff --git a/src/components/transactions/Swap/helpers/paraswap/order.helpers.ts b/src/components/transactions/Swap/helpers/paraswap/order.helpers.ts new file mode 100644 index 0000000000..813fa559d1 --- /dev/null +++ b/src/components/transactions/Swap/helpers/paraswap/order.helpers.ts @@ -0,0 +1,95 @@ +import { SignatureLike } from '@ethersproject/bytes'; +import { BoxProps } from '@mui/material'; +import { OptimalRate, TransactionParams } from '@paraswap/sdk'; +import { ComputedReserveData } from 'src/hooks/app-data-provider/useAppDataProvider'; +import { getParaswap } from 'src/hooks/paraswap/common'; + +import { SwapKind } from '../../types'; + +export const getTransactionParams = async ( + kind: SwapKind, + chainId: number, + srcToken: string, + srcDecimals: number, + destToken: string, + destDecimals: number, + user: string, + route: OptimalRate, + maxSlippage: number +) => { + const { paraswap, feeTarget } = getParaswap(chainId); + + console.log('route', route); + try { + // console.log('buildTx', { + // srcToken, + // destToken, + // ...(kind === 'buy' ? { destAmount: route.destAmount } : { srcAmount: route.srcAmount }), + // priceRoute: route, + // userAddress: user, + // partnerAddress: feeTarget, + // takeSurplus: true, + // slippage: maxSlippage * 100, + // srcDecimals, + // destDecimals, + // isDirectFeeTransfer: true, + // }); + + const params = await paraswap.buildTx( + { + srcToken, + destToken, + ...(kind === 'buy' ? { destAmount: route.destAmount } : { srcAmount: route.srcAmount }), + slippage: maxSlippage * 100, + priceRoute: route, + userAddress: user, + partnerAddress: feeTarget, + srcDecimals, + destDecimals, + isDirectFeeTransfer: true, + takeSurplus: true, + }, + { ignoreChecks: true } + ); + + return { + swapCallData: (params as TransactionParams).data, + augustus: (params as TransactionParams).to, + }; + } catch (e) { + console.error(e, { + srcToken, + destToken, + ...(kind === 'buy' ? { destAmount: route.destAmount } : { srcAmount: route.srcAmount }), + priceRoute: route, + userAddress: user, + partnerAddress: feeTarget, + takeSurplus: true, + slippage: maxSlippage * 100, + srcDecimals, + }); + throw new Error('Error building transaction parameters'); + } +}; + +export interface SwapBaseProps extends BoxProps { + amountToSwap: string; + amountToReceive: string; + poolReserve: ComputedReserveData; + targetReserve: ComputedReserveData; + isWrongNetwork: boolean; + customGasPrice?: string; + symbol: string; + blocked: boolean; + isMaxSelected: boolean; + useFlashLoan: boolean; + loading?: boolean; + signature?: SignatureLike; + deadline?: string; + signedAmount?: string; +} + +export interface SwapActionProps extends SwapBaseProps { + swapCallData: string; + augustus: string; +} diff --git a/src/components/transactions/Swap/helpers/paraswap/rates.helpers.ts b/src/components/transactions/Swap/helpers/paraswap/rates.helpers.ts new file mode 100644 index 0000000000..d1b10a5cf7 --- /dev/null +++ b/src/components/transactions/Swap/helpers/paraswap/rates.helpers.ts @@ -0,0 +1,77 @@ +import { OptimalRate, SwapSide } from '@paraswap/sdk'; +import { constants } from 'ethers'; + +import { getParaswap } from '../../../../../hooks/paraswap/common'; +import { ParaswapRatesType, ProviderRatesParams, SwapProvider } from '../../types'; + +export async function getParaswapSellRates({ + chainId, + amount, + srcToken, + srcDecimals, + destToken, + destDecimals, + user, + side = 'sell', + options = {}, + invertedQuoteRoute = false, +}: ProviderRatesParams): Promise { + const { paraswap } = getParaswap(chainId); + return paraswap + .getRate({ + amount, + srcToken, + srcDecimals, + destToken, + destDecimals, + userAddress: user ? user : constants.AddressZero, + side: side === 'buy' ? SwapSide.BUY : SwapSide.SELL, + options: { + ...options, + includeContractMethods: [ + // side === "buy" ? ContractMethod.swapExactAmountIn : ContractMethod.swapExactAmountOut, + ], + excludeDEXS: [ + 'ParaSwapPool', + 'ParaSwapLimitOrders', + 'SwaapV2', + 'Hashflow', + 'Dexalot', + 'Bebop', + ], + }, + }) + .then((paraSwapResponse: OptimalRate) => { + if (invertedQuoteRoute) { + return { + srcToken: destToken, + srcSpotUSD: paraSwapResponse.destUSD, + srcSpotAmount: paraSwapResponse.destAmount, + srcDecimals: destDecimals, + destToken: srcToken, + destSpotUSD: paraSwapResponse.srcUSD, + destSpotAmount: paraSwapResponse.srcAmount, + afterFeesUSD: paraSwapResponse.srcUSD, + afterFeesAmount: paraSwapResponse.srcAmount, + destDecimals: srcDecimals, + provider: SwapProvider.PARASWAP, + optimalRateData: paraSwapResponse, + }; + } else { + return { + srcToken, + srcSpotUSD: paraSwapResponse.srcUSD, + srcSpotAmount: paraSwapResponse.srcAmount, + srcDecimals, + destToken, + destSpotUSD: paraSwapResponse.destUSD, + destSpotAmount: paraSwapResponse.destAmount, + afterFeesUSD: paraSwapResponse.destUSD, + afterFeesAmount: paraSwapResponse.destAmount, + destDecimals, + provider: SwapProvider.PARASWAP, + optimalRateData: paraSwapResponse, + }; + } + }); +} diff --git a/src/components/transactions/Switch/assetCorrelation.helpers.ts b/src/components/transactions/Swap/helpers/shared/assetCorrelation.helpers.ts similarity index 100% rename from src/components/transactions/Switch/assetCorrelation.helpers.ts rename to src/components/transactions/Swap/helpers/shared/assetCorrelation.helpers.ts diff --git a/src/components/transactions/Swap/helpers/shared/index.ts b/src/components/transactions/Swap/helpers/shared/index.ts new file mode 100644 index 0000000000..2dee80620f --- /dev/null +++ b/src/components/transactions/Swap/helpers/shared/index.ts @@ -0,0 +1,4 @@ +export * from './assetCorrelation.helpers'; +export * from './misc.helpers'; +export * from './provider.helpers'; +export * from './slippage.helpers'; diff --git a/src/components/transactions/Switch/common.ts b/src/components/transactions/Swap/helpers/shared/misc.helpers.ts similarity index 89% rename from src/components/transactions/Switch/common.ts rename to src/components/transactions/Swap/helpers/shared/misc.helpers.ts index 2f173d7ab2..45631d7535 100644 --- a/src/components/transactions/Switch/common.ts +++ b/src/components/transactions/Swap/helpers/shared/misc.helpers.ts @@ -15,9 +15,11 @@ export const supportedNetworksConfig: SupportedNetworkWithChainId[] = getSupport chainId, }) ); + +// TODO: join and make sure at least one provider supports it export const supportedNetworksWithEnabledMarket = supportedNetworksConfig.filter((elem) => Object.values(marketsData).find( - (market) => market.chainId === elem.chainId && market.enabledFeatures?.switch + (market) => market.chainId === elem.chainId && market.enabledFeatures?.switch // TODO: change to swap ) ); diff --git a/src/components/transactions/Swap/helpers/shared/provider.helpers.ts b/src/components/transactions/Swap/helpers/shared/provider.helpers.ts new file mode 100644 index 0000000000..d16298dd8f --- /dev/null +++ b/src/components/transactions/Swap/helpers/shared/provider.helpers.ts @@ -0,0 +1,59 @@ +import { ChainId } from '@aave/contract-helpers'; + +import { + COW_UNSUPPORTED_ASSETS, + isChainIdSupportedByCoWProtocol, +} from '../../constants/cow.constants'; +import { SwapProvider, SwapType } from '../../types'; + +export const isSwapSupportedByCowProtocol = ( + chainId: number, + assetFrom: string, + assetTo: string, + swapType: SwapType +) => { + if (!isChainIdSupportedByCoWProtocol(chainId)) return false; + + const unsupportedAssetsPerChainAndModalType = + COW_UNSUPPORTED_ASSETS[swapType] && COW_UNSUPPORTED_ASSETS[swapType][chainId]; + + if (unsupportedAssetsPerChainAndModalType === undefined) return true; // No unsupported assets for this chain and modal type + + if (unsupportedAssetsPerChainAndModalType === 'ALL') return false; // All assets are unsupported + + if ( + unsupportedAssetsPerChainAndModalType.includes(assetFrom.toLowerCase()) || + unsupportedAssetsPerChainAndModalType.includes(assetTo.toLowerCase()) + ) + return false; + + return true; +}; + +export const getSwitchProvider = ({ + chainId, + assetFrom, + assetTo, + shouldUseFlashloan, + swapType, +}: { + chainId: number; + assetFrom: string; + assetTo: string; + shouldUseFlashloan?: boolean; + swapType: SwapType; +}): SwapProvider | undefined => { + // TODO: REMOVE + if (shouldUseFlashloan) { + // CoW Adapters only deployed on Gnosis for now + if (chainId !== ChainId.xdai) { + return SwapProvider.PARASWAP; + } + } + + if (isSwapSupportedByCowProtocol(chainId, assetFrom, assetTo, swapType)) { + return SwapProvider.COW_PROTOCOL; + } + + return SwapProvider.PARASWAP; +}; diff --git a/src/components/transactions/Switch/validation.helpers.ts b/src/components/transactions/Swap/helpers/shared/slippage.helpers.ts similarity index 96% rename from src/components/transactions/Switch/validation.helpers.ts rename to src/components/transactions/Swap/helpers/shared/slippage.helpers.ts index fa3e5d3d21..d0c9d3f6df 100644 --- a/src/components/transactions/Switch/validation.helpers.ts +++ b/src/components/transactions/Swap/helpers/shared/slippage.helpers.ts @@ -1,4 +1,4 @@ -import { SwitchProvider } from './switch.types'; +import { SwapProvider } from '../../types'; export enum ValidationSeverity { ERROR = 'error', @@ -14,7 +14,7 @@ export const validateSlippage = ( slippage: string, chainId: number, isNativeToken = false, - provider?: SwitchProvider + provider?: SwapProvider ): ValidationData | undefined => { try { const numberSlippage = Number(slippage); diff --git a/src/components/transactions/Swap/hooks/useFlowSelector.ts b/src/components/transactions/Swap/hooks/useFlowSelector.ts new file mode 100644 index 0000000000..00e2e2aa34 --- /dev/null +++ b/src/components/transactions/Swap/hooks/useFlowSelector.ts @@ -0,0 +1,132 @@ +import { valueToBigNumber } from '@aave/math-utils'; +import { Dispatch, useEffect } from 'react'; +import { + ComputedReserveData, + ExtendedFormattedUser, + useAppDataContext, +} from 'src/hooks/app-data-provider/useAppDataProvider'; +import { calculateHFAfterSwap } from 'src/utils/hfUtils'; + +import { + LIQUIDATION_DANGER_THRESHOLD, + LIQUIDATION_SAFETY_THRESHOLD, +} from '../constants/shared.constants'; +import { isProtocolSwapState, SwapParams, SwapState, SwapType } from '../types'; + +export const useFlowSelector = ({ + params, + state, + setState, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; +}) => { + const { user: extendedUser, reserves } = useAppDataContext(); + + useEffect(() => { + if (params.swapType === SwapType.Swap) { + // For non-collateral swaps, set isSwapFlowSelected to true + setState({ isSwapFlowSelected: true }); + } else { + return healthFactorSensibleSwapFlowSelector({ + params, + state, + setState, + extendedUser, + reserves, + }); + } + }, [ + params.swapType, + state.sourceToken, + state.destinationToken, + state.inputAmount, + state.outputAmount, + extendedUser, + reserves, + state.swapRate, + ]); +}; + +export const healthFactorSensibleSwapFlowSelector = ({ + state, + setState, + extendedUser, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + extendedUser: ExtendedFormattedUser | undefined; + reserves: ComputedReserveData[]; +}) => { + const userReserve = extendedUser?.userReservesData.find( + (ur) => ur.underlyingAsset.toLowerCase() === state.sourceToken?.underlyingAddress.toLowerCase() + ); + + if (!userReserve || !extendedUser || !state.swapRate) return; + + if (!isProtocolSwapState(state)) { + return; + } + + // Compute HF effect of withdrawing inputAmount (copied from SwitchModalTxDetails) + const calculateHfEffectOfFromAmount = () => { + try { + if (!state.swapRate) return { hfEffectOfFromAmount: '0', hfAfterSwap: undefined }; + + // Amounts in human units (mirror SwitchModalTxDetails: intent uses destSpot, market uses destAmount) + const fromAmount = state.inputAmount; + const toAmountAfterSlippage = state.minimumReceived; + + const { hfEffectOfFromAmount, hfAfterSwap } = calculateHFAfterSwap({ + fromAmount, + fromAssetData: state.sourceReserve.reserve, + fromAssetUserData: userReserve, + user: extendedUser, + toAmountAfterSlippage: valueToBigNumber(toAmountAfterSlippage || '0'), + toAssetData: state.destinationReserve.reserve, + }); + + return { + hfEffectOfFromAmount: hfEffectOfFromAmount.toString(), + hfAfterSwap: hfAfterSwap.toString(), + }; + } catch { + return { hfEffectOfFromAmount: '0', hfAfterSwap: undefined }; + } + }; + + const { hfEffectOfFromAmount, hfAfterSwap } = calculateHfEffectOfFromAmount(); + + const isHFLow = () => { + if (!hfAfterSwap) return false; + + const hfNumber = valueToBigNumber(hfAfterSwap); + + if (hfNumber.lt(0)) return false; + + return hfNumber.lt(LIQUIDATION_SAFETY_THRESHOLD) && hfNumber.gte(LIQUIDATION_DANGER_THRESHOLD); + }; + + const isLiquidatable = hfAfterSwap + ? valueToBigNumber(hfAfterSwap).lt(LIQUIDATION_DANGER_THRESHOLD) && hfAfterSwap !== '-1' + : false; + + const useFlashloan = + extendedUser?.healthFactor !== '-1' && + valueToBigNumber(extendedUser?.healthFactor || 0) + .minus(valueToBigNumber(hfEffectOfFromAmount || 0)) + .lt(LIQUIDATION_SAFETY_THRESHOLD); + + if (!state.ratesLoading && !!state.provider) { + setState({ + isHFLow: isHFLow(), + isLiquidatable, + hfAfterSwap: Number(hfAfterSwap || '0'), + useFlashloan, + isSwapFlowSelected: true, + actionsBlocked: state.actionsBlocked || isLiquidatable, + }); + } +}; diff --git a/src/components/transactions/Swap/hooks/useMaxNativeAmount.ts b/src/components/transactions/Swap/hooks/useMaxNativeAmount.ts new file mode 100644 index 0000000000..f8552dd5a6 --- /dev/null +++ b/src/components/transactions/Swap/hooks/useMaxNativeAmount.ts @@ -0,0 +1,41 @@ +import { normalize } from '@aave/math-utils'; +import { parseUnits } from 'ethers/lib/utils'; +import { Dispatch, useEffect } from 'react'; + +import { SwapParams, SwapState, SwapType, TokenType } from '../types'; + +export const useMaxNativeAmount = ({ + params, + state, + setState, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; +}) => { + // Eth-Flow requires to leave some assets for gas + const nativeDecimals = 18; + const gasRequiredForEthFlow = + state.chainId === 1 ? parseUnits('0.01', nativeDecimals) : parseUnits('0.0001', nativeDecimals); // TODO: Ask for better value coming from the SDK + + const requiredAssetsLeftForGas = + state.sourceToken.tokenType === TokenType.NATIVE && + !state.userIsSmartContractWallet && + params.swapType === SwapType.Swap + ? gasRequiredForEthFlow + : undefined; + + const maxAmount = (() => { + const balance = parseUnits(state.sourceToken.balance, nativeDecimals); + if (!requiredAssetsLeftForGas) return balance; + return balance.gt(requiredAssetsLeftForGas) ? balance.sub(requiredAssetsLeftForGas) : balance; + })(); + + const maxAmountFormatted = maxAmount + ? normalize(maxAmount.toString(), nativeDecimals).toString() + : undefined; + + useEffect(() => { + setState({ forcedMaxValue: maxAmountFormatted }); + }, [maxAmountFormatted]); +}; diff --git a/src/components/transactions/Swap/hooks/useMinimumReceived.ts b/src/components/transactions/Swap/hooks/useMinimumReceived.ts new file mode 100644 index 0000000000..334af7c9ba --- /dev/null +++ b/src/components/transactions/Swap/hooks/useMinimumReceived.ts @@ -0,0 +1,44 @@ +import { normalize, valueToBigNumber } from '@aave/math-utils'; +import { Dispatch, useEffect } from 'react'; +import { minimumReceivedAfterSlippage } from 'src/hooks/paraswap/common'; + +import { OrderType, SwapParams, SwapState } from '../types'; + +export const useMinimumReceived = ({ + state, + setState, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; +}) => { + useEffect(() => { + if (!state.swapRate?.afterFeesAmount) return; + + let minimumReceived; + if (state.orderType === OrderType.MARKET) { + minimumReceived = normalize( + minimumReceivedAfterSlippage(state.swapRate?.afterFeesAmount, state.slippage, 0), + state.destinationToken.decimals + ); + } else if (state.orderType === OrderType.LIMIT) { + minimumReceived = state.outputAmount; // TODO: check if with cow we need to account partner fees + } + + if (!minimumReceived) return; + const outputTokenPriceUsd = valueToBigNumber(state.outputAmountUSD) + .dividedBy(valueToBigNumber(state.outputAmount)) + .toNumber(); + const minimumReceivedUSD = valueToBigNumber(minimumReceived) + .multipliedBy(outputTokenPriceUsd) + .toString(); + + setState({ minimumReceived, minimumReceivedUSD }); + }, [ + state.swapRate?.afterFeesAmount, + state.outputAmount, + state.slippage, + state.destinationToken.decimals, + state.orderType, + ]); +}; diff --git a/src/components/transactions/Swap/hooks/useProtocolReserves.ts b/src/components/transactions/Swap/hooks/useProtocolReserves.ts new file mode 100644 index 0000000000..782c9974ca --- /dev/null +++ b/src/components/transactions/Swap/hooks/useProtocolReserves.ts @@ -0,0 +1,41 @@ +import { Dispatch, useEffect } from 'react'; +import { useAppDataContext } from 'src/hooks/app-data-provider/useAppDataProvider'; + +import { isProtocolSwapParams, SwapParams, SwapState } from '../types'; + +export const useProtocolReserves = ({ + state, + params, + setState, +}: { + state: SwapState; + params: SwapParams; + setState: Dispatch>; +}) => { + const { user } = useAppDataContext(); + + const userReserves = user?.userReservesData; + + useEffect(() => { + if (state.sourceToken && isProtocolSwapParams(params)) { + const reserve = userReserves?.find( + (r) => r.underlyingAsset.toLowerCase() === state.sourceToken.underlyingAddress.toLowerCase() + ); + if (reserve) { + setState({ sourceReserve: reserve }); + } + } + }, [state.sourceToken, userReserves]); + + useEffect(() => { + if (state.destinationToken && isProtocolSwapParams(params)) { + const reserve = userReserves?.find( + (r) => + r.underlyingAsset.toLowerCase() === state.destinationToken.underlyingAddress.toLowerCase() + ); + if (reserve) { + setState({ destinationReserve: reserve }); + } + } + }, [state.destinationToken, userReserves]); +}; diff --git a/src/components/transactions/Swap/hooks/useSlippageSelector.ts b/src/components/transactions/Swap/hooks/useSlippageSelector.ts new file mode 100644 index 0000000000..e0b9cc2cff --- /dev/null +++ b/src/components/transactions/Swap/hooks/useSlippageSelector.ts @@ -0,0 +1,46 @@ +import { Dispatch, useEffect } from 'react'; + +import { validateSlippage, ValidationSeverity } from '../helpers/shared/slippage.helpers'; +import { isCowProtocolRates, SwapParams, SwapState, TokenType } from '../types'; + +// TODO: move to warning and delete hook +export const useSlippageSelector = ({ + state, + setState, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; +}) => { + useEffect(() => { + // Debounce to avoid race condition + const timeout = setTimeout(() => { + setState({ + showSlippageWarning: + isCowProtocolRates(state.swapRate) && + Number(state.slippage) < state.swapRate?.suggestedSlippage, + }); + }, 500); + + return () => clearTimeout(timeout); + }, [state.slippage]); + + useEffect(() => { + const slippageValidation = validateSlippage( + state.slippage, + state.chainId, + state.sourceToken.tokenType === TokenType.NATIVE, + state.provider + ); + + const safeSlippage = + slippageValidation && slippageValidation.severity === ValidationSeverity.ERROR + ? 0 + : Number(state.slippage) / 100; + + setState({ + slippageValidation, + safeSlippage, + }); + }, [state.slippage]); +}; diff --git a/src/components/transactions/Swap/hooks/useSwapGasEstimation.ts b/src/components/transactions/Swap/hooks/useSwapGasEstimation.ts new file mode 100644 index 0000000000..f830a1e9e8 --- /dev/null +++ b/src/components/transactions/Swap/hooks/useSwapGasEstimation.ts @@ -0,0 +1,80 @@ +import { Dispatch, useEffect, useMemo, useRef } from 'react'; +import { TxStateType } from 'src/hooks/useModal'; +import { useRootStore } from 'src/store/root'; +import { ApprovalMethod } from 'src/store/walletSlice'; +import { useShallow } from 'zustand/react/shallow'; + +import { estimateSwapGas, GasEstimationParams } from '../helpers/gasEstimation.helpers'; +import { SwapState, TokenType } from '../types'; + +export const useSwapGasEstimation = ({ + state, + setState, + requiresApproval, + requiresApprovalReset, + approvalTxState, +}: { + state: SwapState; + setState: Dispatch>; + requiresApproval: boolean; + requiresApprovalReset: boolean; + approvalTxState: TxStateType; +}) => { + const walletApprovalMethodPreference = useRootStore( + useShallow((store) => store.walletApprovalMethodPreference) + ); + const usePermit = walletApprovalMethodPreference === ApprovalMethod.PERMIT; + + // Memoize gas estimation parameters to prevent unnecessary recalculations + const gasEstimationParams: GasEstimationParams = useMemo( + () => ({ + swapType: state.swapType, + provider: state.provider, + sourceToken: { + addressToSwap: state.sourceToken.addressToSwap, + tokenType: state.sourceToken.tokenType || TokenType.ERC20, + }, + userIsSmartContractWallet: state.userIsSmartContractWallet, + requiresApproval, + requiresApprovalReset, + approvalTxState, + useFlashloan: state.useFlashloan ?? false, + usePermit, + }), + [ + state.swapType, + state.provider, + state.sourceToken.addressToSwap, + state.sourceToken.tokenType, + state.userIsSmartContractWallet, + requiresApproval, + requiresApprovalReset, + approvalTxState.success, + state.useFlashloan, + usePermit, + ] + ); + + // Memoize gas estimation result + const gasEstimation = useMemo(() => estimateSwapGas(gasEstimationParams), [gasEstimationParams]); + + // Use ref to track previous values and prevent unnecessary updates + const previousGasEstimation = useRef<{ gasLimit: string; showGasStation: boolean } | null>(null); + + useEffect(() => { + const currentGasEstimation = { + gasLimit: gasEstimation.gasLimit, + showGasStation: gasEstimation.showGasStation, + }; + + // Only update if the values have actually changed + if ( + !previousGasEstimation.current || + previousGasEstimation.current.gasLimit !== currentGasEstimation.gasLimit || + previousGasEstimation.current.showGasStation !== currentGasEstimation.showGasStation + ) { + setState(currentGasEstimation); + previousGasEstimation.current = currentGasEstimation; + } + }, [gasEstimation.gasLimit, gasEstimation.showGasStation, setState]); +}; diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts new file mode 100644 index 0000000000..83fe17e64f --- /dev/null +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -0,0 +1,378 @@ +import { normalizeBN } from '@aave/math-utils'; +import { useQuery } from '@tanstack/react-query'; +import { Dispatch, useEffect, useMemo } from 'react'; +import { isTxErrorType, TxErrorType } from 'src/ui-config/errorMapping'; +import { queryKeysFactory } from 'src/ui-config/queries'; + +import { APP_CODE_PER_SWAP_TYPE } from '../constants/shared.constants'; +import { getCowProtocolSellRates } from '../helpers/cow'; +import { getParaswapSellRates, getParaswapSlippage } from '../helpers/paraswap'; +import { getSwitchProvider } from '../helpers/shared/provider.helpers'; +import { + SwapParams, + SwapProvider, + SwapQuoteType as SwapQuoteType, + SwapState, + SwapType, + TokenType, +} from '../types'; + +interface TokenSelectionParams { + srcToken: string; + destToken: string; + srcDecimals: number; + destDecimals: number; + inputSymbol: string; + outputSymbol: string; + isInputTokenCustom: boolean; + isOutputTokenCustom: boolean; + side: 'buy' | 'sell'; +} + +const swapTypesThatRequiresInvertedQuote: SwapType[] = [SwapType.DebtSwap]; + +const getTokenSelectionForQuote = ( + invertedQuoteRoute: boolean, + provider: SwapProvider, + state: SwapState +): TokenSelectionParams => { + const srcTokenObj = invertedQuoteRoute ? state.destinationToken : state.sourceToken; + const srcToken = + provider === SwapProvider.PARASWAP ? srcTokenObj.underlyingAddress : srcTokenObj.addressToSwap; + const destTokenObj = invertedQuoteRoute ? state.sourceToken : state.destinationToken; + const destToken = + provider === SwapProvider.PARASWAP + ? destTokenObj.underlyingAddress + : destTokenObj.addressToSwap; + const srcDecimals = invertedQuoteRoute + ? state.destinationToken.decimals + : state.sourceToken.decimals; + const destDecimals = invertedQuoteRoute + ? state.sourceToken.decimals + : state.destinationToken.decimals; + const inputSymbol = invertedQuoteRoute ? state.destinationToken.symbol : state.sourceToken.symbol; + const outputSymbol = invertedQuoteRoute + ? state.sourceToken.symbol + : state.destinationToken.symbol; + const isInputTokenCustom = invertedQuoteRoute + ? state.destinationToken.tokenType === TokenType.USER_CUSTOM + : state.sourceToken.tokenType === TokenType.USER_CUSTOM; + const isOutputTokenCustom = invertedQuoteRoute + ? state.sourceToken.tokenType === TokenType.USER_CUSTOM + : state.destinationToken.tokenType === TokenType.USER_CUSTOM; + const side = invertedQuoteRoute ? (state.side === 'buy' ? 'sell' : 'buy') : state.side; + + return { + srcToken, + destToken, + srcDecimals, + destDecimals, + inputSymbol, + outputSymbol, + isInputTokenCustom, + isOutputTokenCustom, + side, + }; +}; + +export const QUOTE_REFETCH_INTERVAL = 30000; // 30 seconds + +export const useSwapQuote = ({ + params, + state, + setState, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; +}) => { + const provider = useMemo( + () => + getSwitchProvider({ + chainId: state.chainId, + assetFrom: state.sourceToken.addressToSwap, + assetTo: state.destinationToken.addressToSwap, + swapType: params.swapType, + shouldUseFlashloan: state.useFlashloan, + }), + [ + state.chainId, + state.sourceToken.addressToSwap, + state.destinationToken.addressToSwap, + params.swapType, + state.useFlashloan, + ] + ); + + const requiresQuoteInverted = useMemo( + () => + provider === SwapProvider.PARASWAP && + swapTypesThatRequiresInvertedQuote.includes(params.swapType) && + state.useFlashloan === true, + [provider, params.swapType, state.useFlashloan] + ); + + const { + data: swapQuote, + isLoading: ratesLoading, + error: ratesError, + } = useMultiProviderSwapQuoteQuery({ + provider: provider ?? SwapProvider.NONE, + params, + state, + setState, + requiresQuoteInverted, + }); + + const quoteToState = (quote: SwapQuoteType | null | undefined) => { + if (!quote) return; + + const nextInputAmount = normalizeBN(quote.srcSpotAmount, quote.srcDecimals).toString(); + const nextOutputAmount = normalizeBN(quote.destSpotAmount, quote.destDecimals).toString(); + const nextInputAmountUSD = quote.srcSpotUSD; + const nextOutputAmountUSD = quote.destSpotUSD; + + // Skip update if nothing changed to avoid re-render loops + if ( + state.provider === quote.provider && + state.swapRate?.srcSpotAmount === quote.srcSpotAmount && + state.swapRate?.destSpotAmount === quote.destSpotAmount && + state.inputAmount === nextInputAmount && + state.outputAmount === nextOutputAmount && + state.inputAmountUSD === nextInputAmountUSD && + state.outputAmountUSD === nextOutputAmountUSD + ) { + return; + } + + let slippage, autoSlippage; + if (state.provider === 'cowprotocol' && quote?.suggestedSlippage !== undefined) { + slippage = quote.suggestedSlippage.toString(); + autoSlippage = quote.suggestedSlippage.toString(); + } else if (state.provider === 'paraswap') { + const paraswapSlippage = getParaswapSlippage( + state.sourceToken.symbol || '', + state.destinationToken.symbol || '' + ); + + slippage = paraswapSlippage; + autoSlippage = paraswapSlippage; + } + + return { + swapRate: quote, + inputAmount: nextInputAmount, + outputAmount: nextOutputAmount, + inputAmountUSD: nextInputAmountUSD, + outputAmountUSD: nextOutputAmountUSD, + slippage, + autoSlippage, + }; + }; + + useEffect(() => { + if (provider) { + setState({ + provider, + swapRate: undefined, // Clear the old swap rate to force new quote + quoteRefreshPaused: false, // Ensure quotes can be fetched + }); + } + }, [provider]); + + useEffect(() => { + if (ratesLoading != state.ratesLoading) { + setState({ ratesLoading: ratesLoading }); + } + }, [ratesLoading]); + + useEffect(() => { + if (ratesError) { + setState({ + error: { rawError: ratesError, message: ratesError.message, actionBlocked: true }, + ratesLoading: false, + swapRate: undefined, + }); + } + }, [ratesError]); + + useEffect(() => { + if (swapQuote) { + setState({ + provider: swapQuote.provider, + ...quoteToState(swapQuote), + quoteLastUpdatedAt: Date.now(), + // Reset pause bookkeeping on new quote + quoteTimerPausedAt: null, + quoteTimerPausedAccumMs: 0, + + error: undefined, + actionsBlocked: false, + warnings: [], + actionsLoading: false, + }); + } + }, [swapQuote]); + + // Pause/resume timer bookkeeping when actions are loading + useEffect(() => { + if (state.actionsLoading) { + if (!state.quoteTimerPausedAt) { + setState({ quoteTimerPausedAt: Date.now() }); + } + } else { + if (state.quoteTimerPausedAt) { + const pausedDelta = Date.now() - state.quoteTimerPausedAt; + setState({ + quoteTimerPausedAt: null, + quoteTimerPausedAccumMs: (state.quoteTimerPausedAccumMs || 0) + pausedDelta, + }); + } + } + }, [state.actionsLoading]); +}; + +export const useMultiProviderSwapQuoteQuery = ({ + params, + state, + setState, + provider, + requiresQuoteInverted, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + provider: SwapProvider; + requiresQuoteInverted: boolean; +}) => { + // Amount to quote depends on side (sell uses input amount, buy uses output amount) + const amount = useMemo(() => { + if (state.side === 'sell') { + return normalizeBN(state.debouncedInputAmount, -1 * state.sourceToken.decimals).toFixed(0); + } else { + return normalizeBN(state.debouncedOutputAmount, -1 * state.destinationToken.decimals).toFixed( + 0 + ); + } + }, [ + state.debouncedInputAmount, + state.debouncedOutputAmount, + requiresQuoteInverted, + state.side, + state.sourceToken.decimals, + state.destinationToken.decimals, + ]); + + const appCode = APP_CODE_PER_SWAP_TYPE[params.swapType]; + + const { + srcToken, + destToken, + srcDecimals, + destDecimals, + inputSymbol, + outputSymbol, + isInputTokenCustom, + isOutputTokenCustom, + side, + } = useMemo( + () => getTokenSelectionForQuote(requiresQuoteInverted, provider, state), + [provider, state.sourceToken, state.destinationToken, state.side, requiresQuoteInverted] + ); + + return useQuery({ + queryFn: async () => { + if (!provider) { + setState({ + error: { + rawError: new Error('No swap provider found in the selected chain for this pair'), + message: 'No swap provider found in the selected chain for this pair', + actionBlocked: true, + }, + }); + return null; + } + + if (state.sourceToken.addressToSwap === state.destinationToken.addressToSwap) { + setState({ + error: { + rawError: new Error('Source and destination tokens cannot be the same'), + message: 'Source and destination tokens cannot be the same', + actionBlocked: true, + }, + }); + return null; + } + + const setError = (error: Error | TxErrorType) => { + setState({ + error: { + rawError: isTxErrorType(error) ? error.rawError : error, + message: isTxErrorType(error) ? 'Error in Swap Quote' : error.message, + actionBlocked: true, + }, + }); + }; + + switch (provider) { + case SwapProvider.COW_PROTOCOL: + return await getCowProtocolSellRates({ + chainId: state.chainId, + amount, + srcToken, + destToken, + user: state.user, + srcDecimals, + destDecimals, + inputSymbol, + outputSymbol, + isInputTokenCustom, + isOutputTokenCustom, + appCode, + setError, + side, + invertedQuoteRoute: requiresQuoteInverted, + }); + case SwapProvider.PARASWAP: + return await getParaswapSellRates({ + chainId: state.chainId, + amount, + srcToken, + destToken, + user: state.user, + srcDecimals, + destDecimals, + side, + options: { + partner: 'aave-widget', // TODO: Check with paraswap team if we can change it + }, + invertedQuoteRoute: requiresQuoteInverted, + }); + default: + // Error + setError(new Error('No swap provider found in the selected chain for this pair')); + return null; + } + }, + queryKey: queryKeysFactory.swapQuote( + state.chainId, + provider, + amount, + requiresQuoteInverted, + srcToken, + destToken, + state.user + ), + enabled: + amount != 'NaN' && + amount !== '0' && + !state.mainTxState.success && + provider !== SwapProvider.NONE && + !state.quoteRefreshPaused, + retry: 0, + throwOnError: false, + refetchOnWindowFocus: (query) => (query.state.error ? false : true), + refetchInterval: + !state.actionsLoading && !state.quoteRefreshPaused ? QUOTE_REFETCH_INTERVAL : false, // 30 seconds, but pause during action execution or when paused + }); +}; diff --git a/src/components/transactions/Swap/hooks/useUserContext.ts b/src/components/transactions/Swap/hooks/useUserContext.ts new file mode 100644 index 0000000000..25ba020976 --- /dev/null +++ b/src/components/transactions/Swap/hooks/useUserContext.ts @@ -0,0 +1,31 @@ +import { Dispatch, useEffect } from 'react'; +import { isSafeWallet, isSmartContractWallet } from 'src/helpers/provider'; +import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; +import { useRootStore } from 'src/store/root'; +import { wagmiConfig } from 'src/ui-config/wagmiConfig'; + +import { SwapState } from '../types'; + +export const useUserContext = ({ setState }: { setState: Dispatch> }) => { + const user = useRootStore((store) => store.account); + const { chainId: connectedChainId } = useWeb3Context(); + + useEffect(() => { + try { + if (user && connectedChainId) { + setState({ user }); + getEthersProvider(wagmiConfig, { chainId: connectedChainId }).then((provider) => { + Promise.all([isSmartContractWallet(user, provider), isSafeWallet(user, provider)]).then( + ([isSmartContract, isSafe]) => { + setState({ userIsSmartContractWallet: isSmartContract }); + setState({ userIsSafeWallet: isSafe }); + } + ); + }); + } + } catch (error) { + console.error(error); + } + }, [user, connectedChainId]); +}; diff --git a/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx b/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx new file mode 100644 index 0000000000..8ced04ab39 --- /dev/null +++ b/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx @@ -0,0 +1,187 @@ +import { ArrowDownIcon, SwitchVerticalIcon } from '@heroicons/react/outline'; +import { Box, IconButton, SvgIcon } from '@mui/material'; +import { Dispatch } from 'react'; + +import { QUOTE_REFETCH_INTERVAL } from '../hooks/useSwapQuote'; +import { SwapParams, SwapState } from '../types'; +import { SwitchAssetInput } from './primitives/SwapAssetInput'; +import { ExpirySelector } from './shared/ExpirySelector'; +import { NetworkSelector } from './shared/NetworkSelector'; +import { PriceInput } from './shared/PriceInput'; +import { QuoteProgressRing } from './shared/QuoteProgressRing'; +import { SwapInputState } from './SwapInputs'; + +export const LimitOrderInputs = ({ + params, + state, + swapState, + setState, +}: { + params: SwapParams; + state: SwapState; + swapState: SwapInputState; + setState: Dispatch>; +}) => { + return ( + <> + + {swapState.showNetworkSelector && ( + + )} + + { + const remaining = expiry; + const fromNow = Math.floor(Date.now() / 1000) + remaining; + setState({ expiry: fromNow }); + }} + /> + + + + + + {params.showSwitchInputAndOutputAssetsButton && !params.outputInputTitle ? ( + + + + + + + {!state.quoteRefreshPaused && ( + + )} + + ) : ( + !params.outputInputTitle && ( + + + + + + + {!state.quoteRefreshPaused && ( + + )} + + ) + )} + + { + swapState.handleOutputChange(value); + }} + onSelect={swapState.handleSelectedOutputToken} + disableInput={false} + selectedAsset={state.destinationToken} + showBalance={false} + allowCustomTokens={params.allowCustomTokens} + /> + + + + + ); +}; diff --git a/src/components/transactions/Swap/inputs/MarketOrderInputs.tsx b/src/components/transactions/Swap/inputs/MarketOrderInputs.tsx new file mode 100644 index 0000000000..bb7cc71586 --- /dev/null +++ b/src/components/transactions/Swap/inputs/MarketOrderInputs.tsx @@ -0,0 +1,175 @@ +import { ArrowDownIcon, SwitchVerticalIcon } from '@heroicons/react/outline'; +import { Box, IconButton, SvgIcon } from '@mui/material'; +import { Dispatch } from 'react'; + +import { QUOTE_REFETCH_INTERVAL } from '../hooks/useSwapQuote'; +import { isCowProtocolRates, SwapParams, SwapState } from '../types'; +import { SwitchAssetInput } from './primitives/SwapAssetInput'; +import { NetworkSelector } from './shared/NetworkSelector'; +import { QuoteProgressRing } from './shared/QuoteProgressRing'; +import { SwitchRates } from './shared/SwitchRates'; +import { SwitchSlippageSelector } from './shared/SwitchSlippageSelector'; +import { SwapInputState } from './SwapInputs'; + +export const MarketOrderInputs = ({ + params, + state, + swapState, +}: { + params: SwapParams; + state: SwapState; + swapState: SwapInputState; + setState: Dispatch>; +}) => { + return ( + <> + + {swapState.showNetworkSelector && ( + + )} + + + + + + + + {params.showSwitchInputAndOutputAssetsButton && !params.outputInputTitle ? ( + + + + + + + {!state.quoteRefreshPaused && ( + + )} + + ) : ( + !params.outputInputTitle && ( + + + + + + + {!state.quoteRefreshPaused && ( + + )} + + ) + )} + + + + + {state.swapRate && state.isSwapFlowSelected && ( + <> + + + )} + + ); +}; diff --git a/src/components/transactions/Swap/inputs/SwapInputs.tsx b/src/components/transactions/Swap/inputs/SwapInputs.tsx new file mode 100644 index 0000000000..8b923fd461 --- /dev/null +++ b/src/components/transactions/Swap/inputs/SwapInputs.tsx @@ -0,0 +1,517 @@ +import { BigNumberValue, normalizeBN, valueToBigNumber } from '@aave/math-utils'; +import { WRAPPED_NATIVE_CURRENCIES } from '@cowprotocol/cow-sdk'; +import { useQueryClient } from '@tanstack/react-query'; +import { Dispatch, useEffect, useMemo } from 'react'; +import { useRootStore } from 'src/store/root'; +import { queryKeysFactory } from 'src/ui-config/queries'; + +import { SwapInputChanges } from '../analytics/constants'; +import { TrackAnalyticsHandlers } from '../analytics/useTrackAnalytics'; +import { SESSION_STORAGE_EXPIRY_MS } from '../constants/shared.constants'; +import { + OrderType, + SwappableToken, + swappableTokenToTokenInfo, + SwapParams, + SwapState, + SwapType, + TokenType, +} from '../types'; +import { LimitOrderInputs } from './LimitOrderInputs'; +import { MarketOrderInputs } from './MarketOrderInputs'; + +export type SwapInputState = { + handleSelectedInputToken: (token: SwappableToken) => void; + handleSelectedOutputToken: (token: SwappableToken) => void; + handleSelectedNetworkChange: (value: number) => void; + setSlippage: (value: string) => void; + showNetworkSelector: boolean; + inputAssets: SwappableToken[]; + outputAssets: SwappableToken[]; + handleInputChange: (value: string) => void; + handleOutputChange: (value: string) => void; + handleRateChange: (rateFromAsset: SwappableToken, newRate: BigNumberValue) => void; + onSwitchReserves: () => void; +}; + +export const SwapInputs = ({ + params, + state, + setState, + trackingHandlers, +}: { + params: SwapParams; + state: SwapState; + setState: Dispatch>; + trackingHandlers: TrackAnalyticsHandlers; +}) => { + const resetErrorsAndWarnings = () => { + setState({ + error: undefined, + warnings: [], + actionsBlocked: false, + actionsLoading: false, + }); + }; + + const handleInputChange = (value: string) => { + resetErrorsAndWarnings(); + + if (state.orderType === OrderType.LIMIT && state.swapRate) { + // Manual edit should pause quote refresh + setState({ quoteRefreshPaused: true }); + } + + if (value === '-1') { + // Max Selected + setState({ + inputAmount: state.sourceToken.balance, + debouncedInputAmount: state.sourceToken.balance, + isMaxSelected: true, + side: 'sell', + }); + } else { + setState({ + inputAmount: value, + debouncedInputAmount: value, + isMaxSelected: value === state.forcedMaxValue, + side: 'sell', + }); + } + + trackingHandlers.trackInputChange(SwapInputChanges.INPUT_AMOUNT, value); + resetErrorsAndWarnings(); + }; + + const handleOutputChange = (value: string) => { + if (state.swapRate) { + // Block quote refreshs if user is changing the output amount after getting quotes + setState({ quoteRefreshPaused: true }); + } + + if (value === '-1') { + setState({ + outputAmount: state.destinationToken.balance, + debouncedOutputAmount: state.destinationToken.balance, + isMaxSelected: true, + side: 'buy', + }); + } else { + setState({ + outputAmount: value, + debouncedOutputAmount: value, + isMaxSelected: false, + side: 'buy', + }); + } + + trackingHandlers.trackInputChange(SwapInputChanges.OUTPUT_AMOUNT, value); + resetErrorsAndWarnings(); + setState({ + outputAmount: value, + debouncedOutputAmount: value, + }); + }; + + const handleRateChange = (rateFromAsset: SwappableToken, newRate: BigNumberValue) => { + // User changed custom price, pause quote refresh in limit orders + setState({ quoteRefreshPaused: true }); + + // When rate is changed, new output amount is calculated based on the input amount + let newOutputAmount: string; + if (rateFromAsset.addressToSwap === state.sourceToken.addressToSwap) { + newOutputAmount = valueToBigNumber(state.inputAmount).multipliedBy(newRate).toString(); + } else { + newOutputAmount = valueToBigNumber(state.outputAmount).dividedBy(newRate).toString(); + } + + setState({ + outputAmount: newOutputAmount, + debouncedOutputAmount: newOutputAmount, + isMaxSelected: false, + side: 'sell', + }); + + trackingHandlers.trackInputChange(SwapInputChanges.RATE_CHANGE, newRate.toString()); + resetErrorsAndWarnings(); + }; + + const onSwitchReserves = () => { + const fromToken = state.sourceToken; + const toToken = state.destinationToken; + const toInput = state.swapRate + ? normalizeBN(state.swapRate.destSpotAmount, state.swapRate.destDecimals).toString() + : '0'; + + setState({ + sourceToken: toToken, + destinationToken: fromToken, + inputAmount: '', + debouncedInputAmount: '', + outputAmount: toInput, + debouncedOutputAmount: toInput, + inputAmountUSD: '', + outputAmountUSD: '', + ratesLoading: false, + swapRate: undefined, + actionsLoading: false, + slippage: '0.1', + actionsBlocked: false, + error: undefined, + warnings: [], + }); + + trackingHandlers.trackInputChange(SwapInputChanges.SWITCH_RESERVES, 'switched'); + resetErrorsAndWarnings(); + resetSwap('both'); + }; + + const queryClient = useQueryClient(); + const user = useRootStore((store) => store.account); + + const addNewToken = async (token: SwappableToken) => { + queryClient.setQueryData( + queryKeysFactory.tokensBalance( + state.sourceTokens.concat(state.destinationTokens).map(swappableTokenToTokenInfo) ?? [], + state.chainId, + user + ), + (oldData) => { + if (oldData) + return [...oldData, token].sort((a, b) => Number(b.balance) - Number(a.balance)); + return [token]; + } + ); + const customTokens = localStorage.getItem('customTokens'); + const newTokenInfo: SwappableToken = { + addressToSwap: token.addressToSwap, + addressForUsdPrice: token.addressForUsdPrice, + underlyingAddress: token.underlyingAddress, + name: token.name, + symbol: token.symbol, + decimals: token.decimals, + chainId: token.chainId, + balance: token.balance, + logoURI: token.logoURI, + tokenType: TokenType.USER_CUSTOM, + }; + if (customTokens) { + const parsedCustomTokens: SwappableToken[] = JSON.parse(customTokens); + parsedCustomTokens.push(newTokenInfo); + localStorage.setItem('customTokens', JSON.stringify(parsedCustomTokens)); + } else { + localStorage.setItem('customTokens', JSON.stringify([newTokenInfo])); + } + trackingHandlers.trackInputChange(SwapInputChanges.ADD_CUSTOM_TOKEN, token.symbol); + }; + + const handleSelectedInputToken = (token: SwappableToken) => { + console.log('handleSelectedInputToken', token); + if (!state.sourceTokens?.find((t) => t.addressToSwap === token.addressToSwap)) { + addNewToken(token).then(() => { + setState({ + sourceToken: token, + inputAmount: '', + debouncedInputAmount: '', + inputAmountUSD: '', + quoteRefreshPaused: false, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, + error: undefined, + warnings: [], + actionsBlocked: false, + actionsLoading: false, + }); + saveTokenSelection(token, state.destinationToken); + resetErrorsAndWarnings(); + }); + } else { + setState({ + sourceToken: token, + inputAmount: '', + debouncedInputAmount: '', + inputAmountUSD: '', + quoteRefreshPaused: false, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, + error: undefined, + warnings: [], + actionsBlocked: false, + actionsLoading: false, + }); + saveTokenSelection(token, state.destinationToken); + resetErrorsAndWarnings(); + } + trackingHandlers.trackInputChange(SwapInputChanges.INPUT_TOKEN, token.symbol); + }; + + // Persist selected tokens in session storage to retain them on modal close/open but differentiating by modalType + const getStorageKey = (swapType: SwapType, chainId: number) => { + // if (SwapType.CollateralSwap === swapType) { + // return `aave_switch_tokens_${swapType}_${chainId}_${state.sourceToken?.addressToSwap?.toLowerCase()}`; + // } else { + return `aave_switch_tokens_${swapType}_${chainId}`; + // } + }; + + const handleSelectedOutputToken = (token: SwappableToken) => { + if (!state.destinationTokens?.find((t) => t.addressToSwap === token.addressToSwap)) { + addNewToken(token).then(() => { + setState({ + destinationToken: token, + outputAmount: '', + debouncedOutputAmount: '', + outputAmountUSD: '', + quoteRefreshPaused: false, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, + error: undefined, + warnings: [], + actionsBlocked: false, + actionsLoading: false, + }); + saveTokenSelection(state.sourceToken, token); + resetErrorsAndWarnings(); + }); + } else { + setState({ + destinationToken: token, + outputAmount: '', + debouncedOutputAmount: '', + outputAmountUSD: '', + quoteRefreshPaused: false, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, + error: undefined, + warnings: [], + actionsBlocked: false, + actionsLoading: false, + }); + saveTokenSelection(state.sourceToken, token); + resetErrorsAndWarnings(); + } + trackingHandlers.trackInputChange(SwapInputChanges.OUTPUT_TOKEN, token.symbol); + }; + + const saveTokenSelection = (inputToken: SwappableToken, outputToken: SwappableToken) => { + try { + sessionStorage.setItem( + getStorageKey(params.swapType, state.chainId), + JSON.stringify({ + inputToken: params.forcedInputToken ? null : inputToken, + outputToken: params.forcedOutputToken ? null : outputToken, + timestamp: Date.now(), + }) + ); + } catch (e) { + console.error('Error saving token selection', e); + } + }; + + const loadTokenSelection = () => { + try { + const savedTokenSelection = sessionStorage.getItem( + getStorageKey(params.swapType, state.chainId) + ); + if (!savedTokenSelection) return null; + + const parsedTokenSelection = JSON.parse(savedTokenSelection); + if ( + parsedTokenSelection.timestamp && + Date.now() - parsedTokenSelection.timestamp > SESSION_STORAGE_EXPIRY_MS + ) { + sessionStorage.removeItem(getStorageKey(params.swapType, state.chainId)); + return null; + } + return parsedTokenSelection; + } catch (e) { + return null; + } + }; + + // TODO: Can we simplify? + const { defaultInputToken: fallbackInputToken, defaultOutputToken: fallbackOutputToken } = + useMemo(() => { + let auxInputToken = params.forcedInputToken || params.suggestedDefaultInputToken; + let auxOutputToken = params.forcedOutputToken || params.suggestedDefaultOutputToken; + + const fromList = params.sourceTokens; + const toList = params.destinationTokens; + + if (!auxInputToken) { + auxInputToken = fromList.find( + (token) => + (token.balance !== '0' || token.tokenType === TokenType.NATIVE) && + token.symbol !== 'GHO' + ); + } + + if (!auxOutputToken) { + auxOutputToken = toList.find((token) => token.symbol === 'GHO'); + } + + return { + defaultInputToken: auxInputToken ?? fromList[0], + defaultOutputToken: auxOutputToken ?? toList[1], + }; + }, [params.sourceTokens, params.destinationTokens]); + + // Update selected tokens when defaults change (e.g., after network change) + useEffect(() => { + if (params.forcedInputToken) { + setState({ sourceToken: params.forcedInputToken }); + } else { + // If saved use it + const saved = loadTokenSelection(); + if (saved?.inputToken) { + setState({ sourceToken: saved.inputToken }); + } else { + setState({ sourceToken: fallbackInputToken }); + } + } + + if (params.forcedOutputToken) { + setState({ destinationToken: params.forcedOutputToken }); + } else { + // If saved use it + const saved = loadTokenSelection(); + if (saved?.outputToken) { + setState({ destinationToken: saved.outputToken }); + } else { + setState({ destinationToken: fallbackOutputToken }); + } + } + }, [ + params.forcedInputToken, + params.forcedOutputToken, + fallbackInputToken, + fallbackOutputToken, + state.chainId, + ]); + + const resetSwap = (side: 'source' | 'destination' | 'both') => { + setState({ error: undefined }); + // Reset input amount when changing networks + if (side === 'source') { + setState({ inputAmount: '' }); + setState({ debouncedInputAmount: '' }); + } else if (side === 'destination') { + setState({ outputAmount: '' }); + setState({ debouncedOutputAmount: '' }); + } else { + setState({ debouncedInputAmount: '' }); + setState({ debouncedOutputAmount: '' }); + } + resetErrorsAndWarnings(); + }; + + const handleSelectedNetworkChange = (value: number) => { + setState({ chainId: value }); + resetSwap('both'); + + params.refreshTokens(value); + trackingHandlers.trackInputChange(SwapInputChanges.NETWORK, value.toString()); + }; + + const setSlippage = (value: string) => { + setState({ slippage: value }); + if (state.slippage !== state.autoSlippage) { + // Pause automatic quote refresh only in market orders when slippage is edited by user + setState({ quoteRefreshPaused: true }); + } + trackingHandlers.trackInputChange(SwapInputChanges.SLIPPAGE, value); + }; + + const showNetworkSelector = params.showNetworkSelector && !!params.supportedNetworks.length; + + const inputAssets = useMemo( + () => + state.sourceTokens.filter( + (token) => + token.addressToSwap !== state.destinationToken.addressToSwap && + Number(token.balance) !== 0 && + // Remove native tokens for non-Safe smart contract wallets + !( + state.userIsSmartContractWallet && + !state.userIsSafeWallet && + token.tokenType === TokenType.NATIVE + ) && + // Avoid wrapping + !( + state.destinationToken.tokenType === TokenType.NATIVE && + typeof state.chainId === 'number' && + token.addressToSwap.toLowerCase() === + WRAPPED_NATIVE_CURRENCIES[ + state.chainId as keyof typeof WRAPPED_NATIVE_CURRENCIES + ]?.address.toLowerCase() + ) && + !( + state.destinationToken.addressToSwap.toLowerCase() === + WRAPPED_NATIVE_CURRENCIES[ + state.chainId as keyof typeof WRAPPED_NATIVE_CURRENCIES + ]?.address.toLowerCase() && token.tokenType === TokenType.NATIVE + ) + ), + [ + state.sourceTokens, + state.destinationToken.addressToSwap, + state.destinationToken.tokenType, + state.userIsSmartContractWallet, + state.userIsSafeWallet, + state.chainId, + ] + ); + + const outputAssets = useMemo( + () => + state.destinationTokens.filter( + (token) => + token.addressToSwap !== state.sourceToken.addressToSwap && + // Avoid wrapping + !( + state.sourceToken.tokenType === TokenType.NATIVE && + typeof state.chainId === 'number' && + token.addressToSwap.toLowerCase() === + WRAPPED_NATIVE_CURRENCIES[ + state.chainId as keyof typeof WRAPPED_NATIVE_CURRENCIES + ]?.address.toLowerCase() + ) && + !( + state.sourceToken.addressToSwap.toLowerCase() === + WRAPPED_NATIVE_CURRENCIES[ + state.chainId as keyof typeof WRAPPED_NATIVE_CURRENCIES + ]?.address.toLowerCase() && token.tokenType === TokenType.NATIVE + ) + ), + [ + state.destinationTokens, + state.sourceToken.addressToSwap, + state.sourceToken.tokenType, + state.chainId, + ] + ); + + const swapState: SwapInputState = { + handleSelectedInputToken, + handleSelectedOutputToken, + handleSelectedNetworkChange, + setSlippage, + showNetworkSelector, + inputAssets, + outputAssets, + handleInputChange, + handleOutputChange, + handleRateChange, + onSwitchReserves, + }; + + if (state.orderType === OrderType.MARKET) { + return ( + + ); + } else if (state.orderType === OrderType.LIMIT) { + return ( + + ); + } +}; diff --git a/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx b/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx new file mode 100644 index 0000000000..2c223f27e5 --- /dev/null +++ b/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx @@ -0,0 +1,519 @@ +import { isAddress } from '@ethersproject/address'; +import { formatUnits } from '@ethersproject/units'; +import { ExclamationIcon } from '@heroicons/react/outline'; +import { XCircleIcon } from '@heroicons/react/solid'; +import { Trans } from '@lingui/macro'; +import { ExpandMore } from '@mui/icons-material'; +import { + Box, + Button, + CircularProgress, + IconButton, + InputBase, + ListItemText, + MenuItem, + SvgIcon, + Typography, + useTheme, +} from '@mui/material'; +import React, { useEffect, useRef, useState } from 'react'; +import NumberFormat, { NumberFormatProps } from 'react-number-format'; +import { useRootStore } from 'src/store/root'; +import { useSharedDependencies } from 'src/ui-config/SharedDependenciesProvider'; + +import { COMMON_SWAPS } from '../../../../../ui-config/TokenList'; +import { BasicModal } from '../../../../primitives/BasicModal'; +import { FormattedNumber } from '../../../../primitives/FormattedNumber'; +import { ExternalTokenIcon } from '../../../../primitives/TokenIcon'; +import { SearchInput } from '../../../../SearchInput'; +import { SwappableToken, TokenType } from '../../types'; + +interface CustomProps { + onChange: (event: { target: { name: string; value: string } }) => void; + name: string; + value: string; +} + +export const NumberFormatCustom = React.forwardRef( + function NumberFormatCustom(props, ref) { + const { onChange, ...other } = props; + + return ( + { + if (values.value !== props.value) + onChange({ + target: { + name: props.name, + value: values.value || '', + }, + }); + }} + thousandSeparator + isNumericString + allowNegative={false} + /> + ); + } +); + +export interface AssetInputProps { + value: string; + usdValue: string; + chainId: number; + onChange?: (value: string) => void; + disabled?: boolean; + disableInput?: boolean; + onSelect?: (asset: SwappableToken) => void; + assets: SwappableToken[]; + maxValue?: string; + forcedMaxValue?: string; + loading?: boolean; + selectedAsset: SwappableToken; + balanceTitle?: string; + showBalance?: boolean; + allowCustomTokens?: boolean; + title?: string; +} + +export const SwitchAssetInput = ({ + value, + usdValue, + onChange, + disabled, + disableInput, + onSelect, + assets, + maxValue, + forcedMaxValue, + loading = false, + chainId, + selectedAsset, + balanceTitle, + showBalance = true, + allowCustomTokens = true, + title, +}: AssetInputProps) => { + const theme = useTheme(); + const handleSelect = (asset: SwappableToken) => { + onSelect && onSelect(asset); + onChange && onChange(''); + handleClose(); + }; + + const { erc20Service } = useSharedDependencies(); + + const [openModal, setOpenModal] = useState(false); + const inputRef = useRef(null); + + const handleClick = () => { + if (assets.length === 1) return; + setOpenModal(true); + }; + + const handleClose = () => { + setOpenModal(false); + handleCleanSearch(); + }; + + const [filteredAssets, setFilteredAssets] = useState(assets); + const [loadingNewAsset, setLoadingNewAsset] = useState(false); + const user = useRootStore((store) => store.account); + + useEffect(() => { + setFilteredAssets(assets); + }, [assets]); + + const popularAssets = assets.filter((asset) => COMMON_SWAPS.includes(asset.symbol)); + const handleSearchAssetChange = (value: string) => { + const searchQuery = value.trim().toLowerCase(); + const matchingAssets = assets.filter( + (asset) => + asset.symbol.toLowerCase().includes(searchQuery) || + asset.name.toLowerCase().includes(searchQuery) || + asset.addressToSwap.toLowerCase() === searchQuery + ); + if (matchingAssets.length === 0) { + // If custom tokens are not allowed, do not attempt to import by address + if (!allowCustomTokens) { + setLoadingNewAsset(false); + setFilteredAssets([]); + return; + } + + if (isAddress(value)) { + setLoadingNewAsset(true); + Promise.all([ + erc20Service.getTokenInfo(value, chainId), + erc20Service.getBalance(value, user, chainId), + ]) + .then(([tokenMetadata, userBalance]) => { + const tokenInfo = { + chainId: chainId, + balance: formatUnits(userBalance, tokenMetadata.decimals), + addressToSwap: tokenMetadata.address, + addressForUsdPrice: tokenMetadata.address, + underlyingAddress: tokenMetadata.address, + decimals: tokenMetadata.decimals, + symbol: tokenMetadata.symbol, + name: tokenMetadata.name, + tokenType: TokenType.USER_CUSTOM, + }; + setFilteredAssets([tokenInfo]); + }) + .catch(() => setFilteredAssets([])) + .finally(() => setLoadingNewAsset(false)); + return; + } + + setFilteredAssets([]); + } else { + setFilteredAssets(matchingAssets); + } + }; + + const handleCleanSearch = () => { + setFilteredAssets(assets); + setLoadingNewAsset(false); + }; + + return ( + + {title && ( + + {title} + + )} + ({ + border: `1px solid ${theme.palette.divider}`, + borderRadius: '6px', + overflow: 'hidden', + px: 3, + py: 2, + width: '100%', + })} + > + + {loading ? ( + + + + ) : ( + { + if (!onChange) return; + if (Number(e.target.value) > Number(maxValue)) { + onChange('-1'); + } else { + onChange(e.target.value); + } + }} + inputProps={{ + 'aria-label': 'amount input', + style: { + width: '100%', + fontSize: '21px', + lineHeight: '28,01px', + padding: 0, + height: '28px', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + overflow: 'hidden', + }, + }} + // eslint-disable-next-line + inputComponent={NumberFormatCustom as any} + /> + )} + {value !== '' && !disableInput && ( + { + onChange && onChange(''); + }} + disabled={disabled} + > + + + )} + + + + + + Select token + + + + + {assets.length > 3 && ( + + {popularAssets.map((asset) => ( + handleSelect(asset)} + > + + + {asset.symbol} + + + ))} + + )} + + + {loadingNewAsset ? ( + + + + ) : filteredAssets.length > 0 ? ( + filteredAssets.map((asset) => ( + handleSelect(asset)} + > + + + {asset.symbol} + + } + /> + {asset.tokenType === TokenType.USER_CUSTOM && ( + + + + )} + {asset.balance && ( + + )} + + )) + ) : ( + + {allowCustomTokens ? ( + + No results found. You can import a custom token with a contract address + + ) : ( + No results found. + )} + + )} + + + + + + + {loading ? ( + + ) : ( + + )} + + {showBalance && selectedAsset.balance && ( + <> + + {balanceTitle || 'Balance'} + + + {!disableInput && ( + + )} + + )} + + + + ); +}; diff --git a/src/components/transactions/Switch/ExpirySelector.tsx b/src/components/transactions/Swap/inputs/shared/ExpirySelector.tsx similarity index 71% rename from src/components/transactions/Switch/ExpirySelector.tsx rename to src/components/transactions/Swap/inputs/shared/ExpirySelector.tsx index 000cc46c15..f641b65d41 100644 --- a/src/components/transactions/Switch/ExpirySelector.tsx +++ b/src/components/transactions/Swap/inputs/shared/ExpirySelector.tsx @@ -10,21 +10,7 @@ import { Typography, } from '@mui/material'; -const ONE_MINUTE_IN_SECONDS = 60; -const ONE_HOUR_IN_SECONDS = 3600; -const ONE_DAY_IN_SECONDS = 86400; -const ONE_MONTH_IN_SECONDS = 2592000; - -export const Expiry: { [key: string]: number } = { - 'Five minutes': ONE_MINUTE_IN_SECONDS * 5, - 'Half hour': ONE_HOUR_IN_SECONDS / 2, - 'One hour': ONE_HOUR_IN_SECONDS, - 'One day': ONE_DAY_IN_SECONDS, - 'One week': 7 * ONE_DAY_IN_SECONDS, - 'One month': ONE_MONTH_IN_SECONDS, - 'Three months': 3 * ONE_MONTH_IN_SECONDS, - 'One year': 12 * ONE_MONTH_IN_SECONDS, -}; +import { Expiry } from '../../types'; interface ExpirySelectorProps { selectedExpiry: number; @@ -37,7 +23,15 @@ export const ExpirySelector = ({ selectedExpiry, setSelectedExpiry }: ExpirySele }; return ( - Expires in + + + Expires in + + ( -// -// -// -// )} -// sx={{ -// '&.MuiInputBase-root': { -// border: 0, -// '.MuiSelect-select': { -// display: 'flex', -// backgroundColor: 'transparent', -// border: 0, -// }, -// }, -// '& .MuiOutlinedInput-notchedOutline': { -// border: 'none', -// }, -// }} -// > -// {Object.entries(Expiry).map(([key, value]) => ( -// -// -// -// {key} -// -// -// -// ))} -// -// -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/NetworkSelector.tsx b/src/components/transactions/Swap/backup/NetworkSelector.tsx deleted file mode 100644 index c29fbd71cf..0000000000 --- a/src/components/transactions/Swap/backup/NetworkSelector.tsx +++ /dev/null @@ -1,73 +0,0 @@ -// import { ChevronDownIcon } from '@heroicons/react/outline'; -// import { -// Box, -// FormControl, -// MenuItem, -// Select, -// SelectChangeEvent, -// SvgIcon, -// Typography, -// } from '@mui/material'; -// import { MarketLogo } from 'src/components/MarketSwitcher'; - -// import { SupportedNetworkWithChainId } from './common'; - -// interface NetworkSelectorProps { -// networks: SupportedNetworkWithChainId[]; -// selectedNetwork: number; -// setSelectedNetwork: (value: number) => void; -// } - -// export const NetworkSelector = ({ -// networks, -// selectedNetwork, -// setSelectedNetwork, -// }: NetworkSelectorProps) => { -// const handleChange = (event: SelectChangeEvent) => { -// setSelectedNetwork(Number(event.target.value)); -// }; -// return ( -// -// -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/PriceInput.tsx b/src/components/transactions/Swap/backup/PriceInput.tsx deleted file mode 100644 index c55f857316..0000000000 --- a/src/components/transactions/Swap/backup/PriceInput.tsx +++ /dev/null @@ -1,204 +0,0 @@ -// import { ExclamationIcon } from '@heroicons/react/outline'; -// import { Box, Button, CircularProgress, InputBase, SvgIcon, Typography } from '@mui/material'; -// import React, { useRef } from 'react'; -// import NumberFormat, { NumberFormatProps } from 'react-number-format'; -// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; -// import { StaticRate } from 'src/hooks/useStaticRate'; - -// import { FormattedNumber } from '../../primitives/FormattedNumber'; -// import { ExternalTokenIcon } from '../../primitives/TokenIcon'; - -// interface CustomProps { -// onChange: (event: { target: { name: string; value: string } }) => void; -// name: string; -// value: string; -// } - -// export const NumberFormatCustom = React.forwardRef( -// function NumberFormatCustom(props, ref) { -// const { onChange, ...other } = props; - -// return ( -// { -// if (values.value !== props.value) -// onChange({ -// target: { -// name: props.name, -// value: values.value || '', -// }, -// }); -// }} -// thousandSeparator -// isNumericString -// allowNegative={false} -// /> -// ); -// } -// ); - -// export interface AssetInputProps { -// loading?: boolean; -// originalRate?: StaticRate; -// rate: string; -// rateUsd: string; -// originAsset: TokenInfoWithBalance; -// targetAsset: TokenInfoWithBalance; -// disabled?: boolean; -// onChangeRate: (newRate: string) => void; -// isInvertedRate: boolean; -// setIsInvertedRate: (isInverted: boolean) => void; -// } - -// export const PriceInput = ({ -// loading = false, -// rate, -// rateUsd, -// originAsset, -// targetAsset, -// originalRate, -// onChangeRate, -// disabled = false, -// isInvertedRate, -// setIsInvertedRate, -// }: AssetInputProps) => { -// const inputRef = useRef(null); - -// const handleRateSwith = () => { -// setIsInvertedRate(!isInvertedRate); -// onChangeRate((Number(rate) === 0 ? 0 : 1 / Number(rate)).toString()); -// }; - -// const marketRate = originalRate -// ? isInvertedRate -// ? (1 / Number(originalRate.rate)).toString() -// : originalRate.rate -// : rate; - -// return ( -// -// -// When 1 {isInvertedRate ? targetAsset.symbol : originAsset.symbol} is worth: -// -// ({ -// border: `1px solid ${theme.palette.divider}`, -// borderRadius: '6px', -// overflow: 'hidden', -// px: 3, -// py: 2, -// width: '100%', -// })} -// > -// -// {loading ? ( -// -// -// -// ) : ( -// { -// onChangeRate(e.target.value); -// }} -// /> -// )} - -// -// - -// -// {loading ? ( -// -// ) : ( -// -// )} - -// -// -// -// -// -// -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchActions.tsx b/src/components/transactions/Swap/backup/SwitchActions.tsx deleted file mode 100644 index 71fa83b075..0000000000 --- a/src/components/transactions/Swap/backup/SwitchActions.tsx +++ /dev/null @@ -1,144 +0,0 @@ -// import { -// API_ETH_MOCK_ADDRESS, -// ERC20Service, -// gasLimitRecommendations, -// ProtocolAction, -// } from '@aave/contract-helpers'; -// import { normalize, valueToBigNumber } from '@aave/math-utils'; -// import { -// calculateUniqueOrderId, -// COW_PROTOCOL_VAULT_RELAYER_ADDRESS, -// OrderClass, -// SupportedChainId, -// } from '@cowprotocol/cow-sdk'; -// import { Trans } from '@lingui/macro'; -// import { useQueryClient } from '@tanstack/react-query'; -// import { BigNumber, ethers } from 'ethers'; -// import { defaultAbiCoder, splitSignature } from 'ethers/lib/utils'; -// import stringify from 'json-stringify-deterministic'; -// import { useCallback, useEffect, useMemo, useState } from 'react'; -// import { isSmartContractWallet } from 'src/helpers/provider'; -// import { useParaSwapTransactionHandler } from 'src/helpers/useParaSwapTransactionHandler'; -// import { MOCK_SIGNED_HASH } from 'src/helpers/useTransactionHandler'; -// import { ComputedReserveData } from 'src/hooks/app-data-provider/useAppDataProvider'; -// import { -// calculateSignedAmount, -// fetchExactInTxParams, -// minimumReceivedAfterSlippage, -// } from 'src/hooks/paraswap/common'; -// import { useParaswapSellTxParams } from 'src/hooks/paraswap/useParaswapRates'; -// import { ModalType, TxStateType, useModalContext } from 'src/hooks/useModal'; -// import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; -// import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; -// import { useRootStore } from 'src/store/root'; -// import { TransactionContext, TransactionDetails } from 'src/store/transactionsSlice'; -// import { ApprovalMethod } from 'src/store/walletSlice'; -// import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; -// import { findByChainId } from 'src/ui-config/marketsConfig'; -// import { permitByChainAndToken } from 'src/ui-config/permitConfig'; -// import { queryKeysFactory } from 'src/ui-config/queries'; -// import { wagmiConfig } from 'src/ui-config/wagmiConfig'; -// import { GENERAL } from 'src/utils/events'; -// import { getNetworkConfig, getProvider } from 'src/utils/marketsAndNetworksConfig'; -// import { needsUSDTApprovalReset } from 'src/utils/usdtHelpers'; -// import { useShallow } from 'zustand/shallow'; - -// import { TxActionsWrapper } from '../TxActionsWrapper'; -// import { APPROVAL_GAS_LIMIT } from '../utils'; -// import { -// ADAPTER_APP_CODE, -// COW_APP_DATA, -// getPreSignTransaction, -// getUnsignerOrder, -// HEADER_WIDGET_APP_CODE, -// isNativeToken, -// populateEthFlowTx, -// sendOrder, -// uploadAppData, -// } from './cowprotocol/cowprotocol.helpers'; -// import { -// isCowProtocolRates, -// isParaswapRates, -// ParaswapRatesType, -// SwitchRatesType, -// } from './switch.types'; - -// interface SwitchProps { -// inputAmount: string; -// inputToken: string; -// outputToken: string; -// setShowUSDTResetWarning: (showUSDTResetWarning: boolean) => void; -// slippage: string; -// blocked: boolean; -// loading?: boolean; -// isWrongNetwork: boolean; -// chainId: number; -// switchRates?: SwitchRatesType; -// inputSymbol: string; -// outputSymbol: string; -// setShowGasStation: (showGasStation: boolean) => void; -// modalType: ModalType; -// useFlashloan: boolean; -// poolReserve?: ComputedReserveData; -// targetReserve?: ComputedReserveData; -// isMaxSelected: boolean; -// setIsExecutingActions?: (isExecuting: boolean) => void; -// } - -// export const ParaswapSwitchActionsWrapper = ({ -// inputAmount: amountToSwap, -// inputSymbol, -// slippage, -// blocked, -// loading, -// isWrongNetwork, -// chainId, -// switchRates, -// poolReserve, -// targetReserve, -// isMaxSelected, -// addTransaction, -// setMainTxState, -// invalidate, -// }: { -// inputAmount: string; -// inputSymbol: string; -// slippage: string; -// blocked: boolean; -// loading?: boolean; -// isWrongNetwork: boolean; -// chainId: number; -// switchRates: ParaswapRatesType; -// poolReserve: ComputedReserveData; -// targetReserve: ComputedReserveData; -// isMaxSelected: boolean; -// addTransaction: ( -// txHash: string, -// transaction: TransactionDetails, -// context?: TransactionContext -// ) => void; -// setMainTxState: (txState: TxStateType) => void; -// invalidate: () => void; -// }) => {}; - -// export const SwitchActions = ({ -// inputAmount, -// inputToken, -// outputToken, -// inputSymbol, -// outputSymbol, -// setShowUSDTResetWarning, -// slippage: slippageInPercent, -// blocked, -// loading, -// isWrongNetwork, -// chainId, -// switchRates, -// setShowGasStation, -// modalType, -// useFlashloan, -// poolReserve, -// targetReserve, -// isMaxSelected, -// setIsExecutingActions, -// }: SwitchProps) => {}; diff --git a/src/components/transactions/Swap/backup/SwitchAssetInput.tsx b/src/components/transactions/Swap/backup/SwitchAssetInput.tsx deleted file mode 100644 index 4ae92b5c97..0000000000 --- a/src/components/transactions/Swap/backup/SwitchAssetInput.tsx +++ /dev/null @@ -1,503 +0,0 @@ -// import { isAddress } from '@ethersproject/address'; -// import { formatUnits } from '@ethersproject/units'; -// import { ExclamationIcon } from '@heroicons/react/outline'; -// import { XCircleIcon } from '@heroicons/react/solid'; -// import { Trans } from '@lingui/macro'; -// import { ExpandMore } from '@mui/icons-material'; -// import { -// Box, -// Button, -// CircularProgress, -// IconButton, -// InputBase, -// ListItemText, -// MenuItem, -// SvgIcon, -// Typography, -// useTheme, -// } from '@mui/material'; -// import React, { useEffect, useRef, useState } from 'react'; -// import NumberFormat, { NumberFormatProps } from 'react-number-format'; -// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; -// import { useRootStore } from 'src/store/root'; -// import { useSharedDependencies } from 'src/ui-config/SharedDependenciesProvider'; - -// import { COMMON_SWAPS } from '../../../ui-config/TokenList'; -// import { BasicModal } from '../../primitives/BasicModal'; -// import { FormattedNumber } from '../../primitives/FormattedNumber'; -// import { ExternalTokenIcon } from '../../primitives/TokenIcon'; -// import { SearchInput } from '../../SearchInput'; - -// interface CustomProps { -// onChange: (event: { target: { name: string; value: string } }) => void; -// name: string; -// value: string; -// } - -// export const NumberFormatCustom = React.forwardRef( -// function NumberFormatCustom(props, ref) { -// const { onChange, ...other } = props; - -// return ( -// { -// if (values.value !== props.value) -// onChange({ -// target: { -// name: props.name, -// value: values.value || '', -// }, -// }); -// }} -// thousandSeparator -// isNumericString -// allowNegative={false} -// /> -// ); -// } -// ); - -// export interface AssetInputProps { -// value: string; -// usdValue: string; -// chainId: number; -// onChange?: (value: string) => void; -// disabled?: boolean; -// disableInput?: boolean; -// onSelect?: (asset: TokenInfoWithBalance) => void; -// assets: TokenInfoWithBalance[]; -// maxValue?: string; -// forcedMaxValue?: string; -// loading?: boolean; -// selectedAsset: TokenInfoWithBalance; -// balanceTitle?: string; -// showBalance?: boolean; -// allowCustomTokens?: boolean; -// } - -// export const SwitchAssetInput = ({ -// value, -// usdValue, -// onChange, -// disabled, -// disableInput, -// onSelect, -// assets, -// maxValue, -// forcedMaxValue, -// loading = false, -// chainId, -// selectedAsset, -// balanceTitle, -// showBalance = true, -// allowCustomTokens = true, -// }: AssetInputProps) => { -// const theme = useTheme(); -// const handleSelect = (asset: TokenInfoWithBalance) => { -// onSelect && onSelect(asset); -// onChange && onChange(''); -// handleClose(); -// }; - -// const { erc20Service } = useSharedDependencies(); - -// const [openModal, setOpenModal] = useState(false); -// const inputRef = useRef(null); - -// const handleClick = () => { -// if (!allowCustomTokens && assets.length === 1) return; -// setOpenModal(true); -// }; - -// const handleClose = () => { -// setOpenModal(false); -// handleCleanSearch(); -// }; - -// const [filteredAssets, setFilteredAssets] = useState(assets); -// const [loadingNewAsset, setLoadingNewAsset] = useState(false); -// const user = useRootStore((store) => store.account); - -// useEffect(() => { -// setFilteredAssets(assets); -// }, [assets]); - -// const popularAssets = assets.filter((asset) => COMMON_SWAPS.includes(asset.symbol)); -// const handleSearchAssetChange = (value: string) => { -// const searchQuery = value.trim().toLowerCase(); -// const matchingAssets = assets.filter( -// (asset) => -// asset.symbol.toLowerCase().includes(searchQuery) || -// asset.name.toLowerCase().includes(searchQuery) || -// asset.address.toLowerCase() === searchQuery -// ); -// if (matchingAssets.length === 0) { -// // If custom tokens are not allowed, do not attempt to import by address -// if (!allowCustomTokens) { -// setLoadingNewAsset(false); -// setFilteredAssets([]); -// return; -// } - -// if (isAddress(value)) { -// setLoadingNewAsset(true); -// Promise.all([ -// erc20Service.getTokenInfo(value, chainId), -// erc20Service.getBalance(value, user, chainId), -// ]) -// .then(([tokenMetadata, userBalance]) => { -// const tokenInfo = { -// chainId: chainId, -// balance: formatUnits(userBalance, tokenMetadata.decimals), -// extensions: { -// isUserCustom: true, -// }, -// ...tokenMetadata, -// }; -// setFilteredAssets([tokenInfo]); -// }) -// .catch(() => setFilteredAssets([])) -// .finally(() => setLoadingNewAsset(false)); -// return; -// } - -// setFilteredAssets([]); -// } else { -// setFilteredAssets(matchingAssets); -// } -// }; - -// const handleCleanSearch = () => { -// setFilteredAssets(assets); -// setLoadingNewAsset(false); -// }; - -// return ( -// ({ -// border: `1px solid ${theme.palette.divider}`, -// borderRadius: '6px', -// overflow: 'hidden', -// px: 3, -// py: 2, -// width: '100%', -// })} -// > -// -// {loading ? ( -// -// -// -// ) : ( -// { -// if (!onChange) return; -// if (Number(e.target.value) > Number(maxValue)) { -// onChange('-1'); -// } else { -// onChange(e.target.value); -// } -// }} -// inputProps={{ -// 'aria-label': 'amount input', -// style: { -// width: '100%', -// fontSize: '21px', -// lineHeight: '28,01px', -// padding: 0, -// height: '28px', -// textOverflow: 'ellipsis', -// whiteSpace: 'nowrap', -// overflow: 'hidden', -// }, -// }} -// // eslint-disable-next-line -// inputComponent={NumberFormatCustom as any} -// /> -// )} -// {value !== '' && !disableInput && ( -// { -// onChange && onChange(''); -// }} -// disabled={disabled} -// > -// -// -// )} -// - -// -// -// -// Select token -// - -// -// -// {assets.length > 3 && ( -// -// {popularAssets.map((asset) => ( -// handleSelect(asset)} -// > -// -// -// {asset.symbol} -// -// -// ))} -// -// )} -// -// -// {loadingNewAsset ? ( -// -// -// -// ) : filteredAssets.length > 0 ? ( -// filteredAssets.map((asset) => ( -// handleSelect(asset)} -// > -// -// -// {asset.symbol} -// -// } -// /> -// {asset.extensions?.isUserCustom && ( -// -// -// -// )} -// {asset.balance && ( -// -// )} -// -// )) -// ) : ( -// -// {allowCustomTokens ? ( -// -// No results found. You can import a custom token with a contract address -// -// ) : ( -// No results found. -// )} -// -// )} -// -// -// -// - -// -// {loading ? ( -// -// ) : ( -// -// )} - -// {showBalance && selectedAsset.balance && ( -// <> -// -// {balanceTitle || 'Balance'} -// -// -// {!disableInput && ( -// -// )} -// -// )} -// -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchErrors.tsx b/src/components/transactions/Swap/backup/SwitchErrors.tsx deleted file mode 100644 index 4515b70dc1..0000000000 --- a/src/components/transactions/Swap/backup/SwitchErrors.tsx +++ /dev/null @@ -1,27 +0,0 @@ -// import { Trans } from '@lingui/macro'; -// import { SxProps, Typography } from '@mui/material'; -// import { Warning } from 'src/components/primitives/Warning'; - -// import { SwitchRatesError } from './SwitchRatesError'; - -// interface SwitchErrorsProps { -// ratesError: unknown; -// balance: string; -// inputAmount: string; -// sx?: SxProps; -// } - -// export const SwitchErrors = ({ ratesError, balance, inputAmount, sx }: SwitchErrorsProps) => { -// if (ratesError) { -// return ; -// } else if (Number(inputAmount) > Number(balance)) { -// return ( -// -// -// Your balance is lower than the selected amount. -// -// -// ); -// } -// return null; -// }; diff --git a/src/components/transactions/Swap/backup/SwitchLimitOrdersActions.tsx b/src/components/transactions/Swap/backup/SwitchLimitOrdersActions.tsx deleted file mode 100644 index ff3ce24c18..0000000000 --- a/src/components/transactions/Swap/backup/SwitchLimitOrdersActions.tsx +++ /dev/null @@ -1,243 +0,0 @@ -// import { valueToBigNumber } from '@aave/math-utils'; -// import { -// COW_PROTOCOL_VAULT_RELAYER_ADDRESS, -// OrderClass, -// OrderKind, -// SupportedChainId, -// TradingSdk, -// } from '@cowprotocol/cow-sdk'; -// import { Trans } from '@lingui/macro'; -// import { useQueryClient } from '@tanstack/react-query'; -// import { ComputedReserveData } from 'src/hooks/app-data-provider/useAppDataProvider'; -// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; -// import { useApprovalTx } from 'src/hooks/useApprovalTx'; -// import { useApprovedAmount } from 'src/hooks/useApprovedAmount'; -// import { useModalContext } from 'src/hooks/useModal'; -// import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; -// import { useRootStore } from 'src/store/root'; -// import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; -// import { findByChainId } from 'src/ui-config/marketsConfig'; -// import { queryKeysFactory } from 'src/ui-config/queries'; -// import { wagmiConfig } from 'src/ui-config/wagmiConfig'; -// import { GENERAL } from 'src/utils/events'; -// import { parseUnits } from 'viem'; -// import { useShallow } from 'zustand/shallow'; - -// import { TxActionsWrapper } from '../TxActionsWrapper'; -// import { checkRequiresApproval } from '../utils'; -// import { -// COW_APP_DATA, -// COW_PARTNER_FEE, -// HEADER_WIDGET_APP_CODE, -// } from './cowprotocol/cowprotocol.helpers'; - -// interface SwitchProps { -// inputAmount: string; -// inputToken: TokenInfoWithBalance; -// outputToken: TokenInfoWithBalance; -// outputAmount: string; -// setShowUSDTResetWarning?: (showUSDTResetWarning: boolean) => void; -// blocked: boolean; -// loading?: boolean; -// isWrongNetwork: boolean; -// chainId: number; -// //setShowGasStation: (showGasStation: boolean) => void; -// poolReserve?: ComputedReserveData; -// targetReserve?: ComputedReserveData; -// expirationTime: number; -// inputAmountUSD: number; -// outputAmountUSD: number; -// // setIsExecutingActions?: (isExecuting: boolean) => void; -// } - -// export const SwitchLimitOrdersActions = ({ -// inputAmount, -// inputToken, -// outputToken, -// setShowUSDTResetWarning, -// blocked, -// loading, -// isWrongNetwork, -// chainId, -// outputAmount, -// expirationTime, -// inputAmountUSD, -// outputAmountUSD, -// }: // setShowGasStation, -// // setIsExecutingActions, -// SwitchProps) => { -// const [ -// user, -// //addTransaction, -// currentMarketData, -// trackEvent, -// ] = useRootStore( -// useShallow((state) => [ -// state.account, -// //state.addTransaction, -// state.currentMarketData, -// state.trackEvent, -// ]) -// ); - -// const { approvalTxState, mainTxState, loadingTxns, setMainTxState, setLoadingTxns, setTxError } = -// useModalContext(); - -// const queryClient = useQueryClient(); - -// const { -// data: approvedAmount, -// isFetching: fetchingApprovedAmount, -// refetch: fetchApprovedAmount, -// } = useApprovedAmount({ -// chainId, -// token: inputToken.address, -// spender: COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId as SupportedChainId], -// }); - -// setLoadingTxns(fetchingApprovedAmount); - -// let requiresApproval = false; -// if (approvedAmount !== undefined) { -// requiresApproval = checkRequiresApproval({ -// approvedAmount: approvedAmount.toString(), -// amount: inputAmount, -// signedAmount: '0', -// }); -// } - -// const { approval, requiresApprovalReset } = useApprovalTx({ -// usePermit: false, -// approvedAmount: { -// amount: approvedAmount?.toString() || '0', -// spender: COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId as SupportedChainId], -// token: inputToken.address, -// user, -// }, -// requiresApproval, -// assetAddress: inputToken.address, -// symbol: inputToken.symbol, -// decimals: inputToken.decimals, -// signatureAmount: inputAmount, -// onApprovalTxConfirmed: () => fetchApprovedAmount(), -// setShowUSDTResetWarning, -// }); - -// const invalidate = () => { -// queryClient.invalidateQueries({ -// queryKey: queryKeysFactory.poolReservesDataHumanized( -// findByChainId(chainId) ?? currentMarketData -// ), -// }); - -// queryClient.invalidateQueries({ -// queryKey: queryKeysFactory.userPoolReservesDataHumanized( -// user, -// findByChainId(chainId) ?? currentMarketData -// ), -// }); - -// queryClient.invalidateQueries({ -// queryKey: queryKeysFactory.transactionHistory( -// user, -// findByChainId(chainId) ?? currentMarketData -// ), -// }); - -// queryClient.invalidateQueries({ -// queryKey: queryKeysFactory.poolTokens(user, currentMarketData), -// }); -// }; - -// const action = async () => { -// try { -// setMainTxState({ ...mainTxState, loading: true }); -// invalidate(); -// const provider = getEthersProvider(wagmiConfig, { chainId }); -// const signer = (await provider).getSigner(); -// const tradingSdk = new TradingSdk({ chainId, signer, appCode: HEADER_WIDGET_APP_CODE }); -// const receipt = await tradingSdk.postLimitOrder( -// { -// sellAmount: parseUnits(inputAmount, inputToken.decimals).toString(), -// buyAmount: parseUnits(outputAmount, outputToken.decimals).toString(), -// kind: OrderKind.SELL, -// sellToken: inputToken.address, -// buyToken: outputToken.address, -// sellTokenDecimals: inputToken.decimals, -// buyTokenDecimals: outputToken.decimals, -// slippageBps: 0, -// partnerFee: COW_PARTNER_FEE(inputToken.symbol, outputToken.symbol), -// validFor: expirationTime, -// }, -// { -// appData: COW_APP_DATA( -// inputToken.symbol, -// outputToken.symbol, -// 0, -// false, -// OrderClass.LIMIT, -// HEADER_WIDGET_APP_CODE -// ), -// } -// ); -// setMainTxState({ -// loading: false, -// success: true, -// txHash: receipt.orderId ?? undefined, -// }); -// try { -// const baseTrackingData: Record = { -// chainId, -// inputSymbol: inputToken.symbol, -// outputSymbol: outputToken.symbol, -// pair: `${inputToken.symbol}-${outputToken.symbol}`, -// inputAmount, -// outputAmount, -// provider: 'cowswap', -// inputAmountUSD, -// outputAmountUSD, -// rate: valueToBigNumber(inputAmount).div(outputAmount).toString(), -// }; - -// trackEvent(GENERAL.LIMIT_ORDER, { -// ...baseTrackingData, -// }); -// } catch (error) { -// console.error('Error tracking limit order event:', error); -// } -// } catch (error) { -// const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); -// setTxError(parsedError); -// setMainTxState({ -// txHash: undefined, -// loading: false, -// }); -// } -// }; - -// return ( -// approval()} -// requiresApproval={!blocked && requiresApproval} -// actionText={Create limit order} -// actionInProgressText={Creating limit order} -// errorParams={{ -// loading: false, -// disabled: blocked || (!approvalTxState.success && requiresApproval), -// content: Create limit order, -// handleClick: action, -// }} -// fetchingData={loading} -// blocked={blocked} -// tryPermit={false} -// requiresApprovalReset={requiresApprovalReset} -// /> -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchLimitOrdersModalContent.tsx b/src/components/transactions/Swap/backup/SwitchLimitOrdersModalContent.tsx deleted file mode 100644 index 49a5f1c64a..0000000000 --- a/src/components/transactions/Swap/backup/SwitchLimitOrdersModalContent.tsx +++ /dev/null @@ -1,374 +0,0 @@ -// import { normalize, valueToBigNumber } from '@aave/math-utils'; -// import { SupportedChainId, WRAPPED_NATIVE_CURRENCIES } from '@cowprotocol/cow-sdk'; -// import { Trans } from '@lingui/macro'; -// import { Box, CircularProgress, Typography } from '@mui/material'; -// import { useEffect, useMemo, useState } from 'react'; -// import { TokenInfoWithBalance, useTokensBalance } from 'src/hooks/generic/useTokensBalance'; -// import { useCowSwitchRates } from 'src/hooks/switch/useCowSwitchRates'; -// import { useGetConnectedWalletType } from 'src/hooks/useGetConnectedWalletType'; -// import { useIsWrongNetwork } from 'src/hooks/useIsWrongNetwork'; -// import { useModalContext } from 'src/hooks/useModal'; -// import { StaticRate, useStaticRate } from 'src/hooks/useStaticRate'; -// import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; -// import { useRootStore } from 'src/store/root'; -// import { CustomMarket, marketsData } from 'src/ui-config/marketsConfig'; -// import { GENERAL } from 'src/utils/events'; -// import { getNetworkConfig } from 'src/utils/marketsAndNetworksConfig'; -// import { parseUnits } from 'viem'; - -// import { TxModalDetails } from '../FlowCommons/TxModalDetails'; -// import { ChangeNetworkWarning } from '../Warnings/ChangeNetworkWarning'; -// import { CowLowerThanMarketWarning } from '../Warnings/CowLowerThanMarketWarning'; -// import { USDTResetWarning } from '../Warnings/USDTResetWarning'; -// import { getFilteredTokensForSwitch } from './BaseSwitchModal'; -// import { supportedNetworksWithEnabledMarketLimit } from './common'; -// import { isNativeToken } from './cowprotocol/cowprotocol.helpers'; -// import { Expiry, ExpirySelector } from './ExpirySelector'; -// import { NetworkSelector } from './NetworkSelector'; -// import { PriceInput } from './PriceInput'; -// import { SwitchAssetInput } from './SwitchAssetInput'; -// import { SwitchErrors } from './SwitchErrors'; -// import { SwitchLimitOrdersActions } from './SwitchLimitOrdersActions'; -// import { IntentTxDetails } from './SwitchModalTxDetails'; -// import { SwitchTxSuccessView } from './SwitchTxSuccessView'; - -// const calculateMaxAmount = (token: TokenInfoWithBalance, chainId: number) => { -// const nativeDecimals = 18; -// const gasRequiredForEthFlow = -// chainId === 1 ? parseUnits('0.01', nativeDecimals) : parseUnits('0.0001', nativeDecimals); // TODO: Ask for better value coming from the SDK -// const requiredAssetsLeftForGas = isNativeToken(token.address) ? gasRequiredForEthFlow : BigInt(0); -// const balance = parseUnits(token.balance || '0', nativeDecimals); -// const maxAmount = -// balance > requiredAssetsLeftForGas ? balance - requiredAssetsLeftForGas : balance; -// return normalize(maxAmount.toString(), nativeDecimals).toString(); -// }; - -// const defaultNetwork = marketsData[CustomMarket.proto_arbitrum_v3]; - -// interface SwitchLimitOrdersInputsProps { -// chainId: number; -// tokens: TokenInfoWithBalance[]; -// inputToken: TokenInfoWithBalance; -// inputAmount: string; -// outputAmount: string; -// handleInputAmountChange: (value: string) => void; -// handleInputTokenChange: (token: TokenInfoWithBalance) => void; -// outputToken: TokenInfoWithBalance; -// handleOutputTokenChange: (token: TokenInfoWithBalance) => void; -// rate: string; -// handleRateChange: (value: string) => void; -// initialRate?: StaticRate; -// rateLoading: boolean; -// isInvertedRate: boolean; -// setIsInvertedRate: (isInverted: boolean) => void; -// } - -// export const SwitchLimitOrdersInputs = ({ -// chainId, -// tokens, -// inputToken, -// inputAmount, -// handleInputAmountChange, -// handleInputTokenChange, -// outputToken, -// handleOutputTokenChange, -// rate, -// handleRateChange, -// initialRate, -// rateLoading, -// isInvertedRate, -// setIsInvertedRate, -// outputAmount, -// }: SwitchLimitOrdersInputsProps) => { -// const { isSmartContractWallet } = useGetConnectedWalletType(); -// const maxInputAmount = isSmartContractWallet -// ? calculateMaxAmount(inputToken, chainId) -// : inputToken.balance; - -// const rateUsd = isInvertedRate -// ? Number(rate) * Number(initialRate?.inputUsdPrice || '0') -// : Number(rate) * Number(initialRate?.outputUsdPrice || '0'); - -// return ( -// -// -// {Sell} -// token.address !== outputToken.address && !token.extensions?.isNative -// )} -// value={inputAmount} -// onChange={handleInputAmountChange} -// usdValue={(Number(initialRate?.inputUsdPrice) * Number(inputAmount)).toString() || '0'} -// onSelect={handleInputTokenChange} -// selectedAsset={inputToken} -// forcedMaxValue={maxInputAmount} -// allowCustomTokens={true} -// /> -// -// -// {Receive at least} -// -// token.address !== inputToken.address && -// // Avoid wrapping -// !( -// isNativeToken(inputToken.address) && -// token.address.toLowerCase() === -// WRAPPED_NATIVE_CURRENCIES[chainId as SupportedChainId]?.address.toLowerCase() -// ) -// )} -// value={outputAmount.toString()} -// usdValue={(Number(initialRate?.outputUsdPrice) * Number(outputAmount)).toString() || '0'} -// loading={rateLoading} -// onSelect={handleOutputTokenChange} -// disableInput={true} -// selectedAsset={outputToken} -// showBalance={false} -// allowCustomTokens={true} -// /> -// -// -// -// ); -// }; - -// interface SwitchLimitOrdersInnerProps { -// tokens: TokenInfoWithBalance[]; -// chainId: number; -// setChainId: (chainId: number) => void; -// } - -// export const SwitchLimitOrdersInner = ({ -// tokens, -// chainId, -// setChainId, -// }: SwitchLimitOrdersInnerProps) => { -// const { readOnlyModeAddress } = useWeb3Context(); - -// const [inputToken, setInputToken] = useState( -// tokens.find( -// (token) => token.balance !== '0' && !token.extensions?.isNative && token.symbol !== 'GHO' -// ) || tokens[0] -// ); - -// const { mainTxState } = useModalContext(); - -// const userAddress = useRootStore((store) => store.account); - -// const [expiry, setExpiry] = useState(Expiry['One week']); - -// const [inputAmount, setInputAmount] = useState(''); -// const [rate, setRate] = useState(''); -// const [isInvertedRate, setIsInvertedRate] = useState(false); - -// const [outputToken, setOutputToken] = useState( -// tokens.find((token) => token.symbol == 'GHO') || tokens[1] -// ); -// const [showUSDTResetWarning, setShowUSDTResetWarning] = useState(false); - -// const { data: staticRate, isLoading: staticRateLoading } = useStaticRate({ -// chainId, -// inputToken, -// outputToken, -// }); -// const { -// data: quote, -// isLoading: quoteLoading, -// error: quoteError, -// } = useCowSwitchRates({ -// chainId, -// amount: inputAmount ? parseUnits(inputAmount, inputToken.decimals).toString() : '0', -// srcUnderlyingToken: inputToken.address, -// destUnderlyingToken: outputToken.address, -// user: userAddress, -// inputSymbol: inputToken.symbol, -// isInputTokenCustom: !!inputToken.extensions?.isCustom, -// isOutputTokenCustom: !!outputToken.extensions?.isCustom, -// outputSymbol: outputToken.symbol, -// srcDecimals: inputToken.decimals, -// destDecimals: outputToken.decimals, -// isTxSuccess: false, -// }); - -// const outputAmount = -// inputAmount && rate -// ? isInvertedRate && Number(rate) !== 0 -// ? (Number(inputAmount) * (1 / Number(rate))).toString() -// : (Number(inputAmount) * Number(rate)).toString() -// : ''; - -// const isWrongNetwork = useIsWrongNetwork(chainId); -// const { isSmartContractWallet } = useGetConnectedWalletType(); - -// const showChangeNetworkWarning = isWrongNetwork.isWrongNetwork && !readOnlyModeAddress; -// const selectedNetworkConfig = getNetworkConfig(chainId); - -// const rateLowerThanMarket = -// staticRate && -// quote && -// (isInvertedRate -// ? valueToBigNumber(staticRate.rate).lt(valueToBigNumber(rate)) -// : valueToBigNumber(rate).lt(valueToBigNumber(staticRate.rate))); - -// useEffect(() => { -// if (staticRate) { -// setRate(staticRate.rate); -// } -// }, [staticRate]); - -// if (quote && mainTxState.success) { -// return ( -// -// ); -// } - -// return ( -// <> -// {showChangeNetworkWarning && ( -// -// )} -// -// -// -// -// -// {quote && ( -// -// -// -// )} -// {rateLowerThanMarket && } -// {showUSDTResetWarning && } -// -// -// -// ); -// }; - -// export const SwitchLimitOrdersModalContent = () => { -// const dashboardChainId = useRootStore((store) => store.currentChainId); -// const user = useRootStore((store) => store.account); - -// const [selectedChainId, setSelectedChainId] = useState(() => { -// if (supportedNetworksWithEnabledMarketLimit.find((elem) => elem.chainId === dashboardChainId)) -// return dashboardChainId; -// return defaultNetwork.chainId; -// }); -// const tokens = useMemo(() => getFilteredTokensForSwitch(selectedChainId), [selectedChainId]); - -// const { data: tokensWithBalance } = useTokensBalance(tokens, selectedChainId, user); -// if (!tokensWithBalance) { -// return ( -// -// -// -// ); -// } -// return ( -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchModal.tsx b/src/components/transactions/Swap/backup/SwitchModal.tsx deleted file mode 100644 index 58f19bf867..0000000000 --- a/src/components/transactions/Swap/backup/SwitchModal.tsx +++ /dev/null @@ -1,37 +0,0 @@ -// import { Trans } from '@lingui/macro'; -// import { Box, Typography } from '@mui/material'; -// import { useState } from 'react'; -// import { BasicModal } from 'src/components/primitives/BasicModal'; -// import { ConnectWalletButton } from 'src/components/WalletConnection/ConnectWalletButton'; -// import { ModalType, useModalContext } from 'src/hooks/useModal'; -// import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; - -// import { TxModalTitle } from '../FlowCommons/TxModalTitle'; -// import { BaseSwitchModal } from './BaseSwitchModal'; -// import { SwitchLimitOrdersModalContent } from './SwitchLimitOrdersModalContent'; -// import { SwitchType, SwitchTypeSelector } from './SwitchTypeSelector'; - -// export const SwitchModal = () => { -// const { type, close } = useModalContext(); -// const [switchType, setSwitchType] = useState(SwitchType.MARKET); -// const { currentAccount } = useWeb3Context(); -// return ( -// -// -// {currentAccount ? ( -// <> -// -// {switchType === SwitchType.MARKET && } -// {switchType === SwitchType.LIMIT && } -// -// ) : ( -// -// -// Please connect your wallet to swap tokens. -// -// close()} /> -// -// )} -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchModalTxDetails.tsx b/src/components/transactions/Swap/backup/SwitchModalTxDetails.tsx deleted file mode 100644 index 6cbfa75350..0000000000 --- a/src/components/transactions/Swap/backup/SwitchModalTxDetails.tsx +++ /dev/null @@ -1,509 +0,0 @@ -// import { normalize, normalizeBN, valueToBigNumber } from '@aave/math-utils'; -// import { Trans } from '@lingui/macro'; -// import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; -// import { -// Accordion, -// AccordionDetails, -// AccordionSummary, -// Box, -// Skeleton, -// Typography, -// } from '@mui/material'; -// import { BigNumber } from 'bignumber.js'; -// import { useState } from 'react'; -// import { NetworkCostTooltip } from 'src/components/infoTooltips/NetworkCostTooltip'; -// import { SwapFeeTooltip } from 'src/components/infoTooltips/SwapFeeTooltip'; -// import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; -// import { Row } from 'src/components/primitives/Row'; -// import { ExternalTokenIcon } from 'src/components/primitives/TokenIcon'; -// import { CollateralType } from 'src/helpers/types'; -// import { -// ComputedReserveData, -// ComputedUserReserveData, -// ExtendedFormattedUser, -// } from 'src/hooks/app-data-provider/useAppDataProvider'; -// import { TokenInfoWithBalance } from 'src/hooks/generic/useTokensBalance'; -// import { getDebtCeilingData } from 'src/hooks/useAssetCaps'; -// import { ModalType } from 'src/hooks/useModal'; -// import { calculateHFAfterSwap } from 'src/utils/hfUtils'; - -// import { TxModalDetails } from '../FlowCommons/TxModalDetails'; -// import { getAssetCollateralType } from '../utils'; -// import { CollateralSwapModalDetails } from './CollateralSwap/CollateralSwapModalDetails'; -// import { SwitchRatesType } from './switch.types'; - -// export const SwitchModalTxDetails = ({ -// switchRates, -// selectedOutputToken, -// safeSlippage, -// gasLimit, -// selectedChainId, -// customReceivedTitle, -// reserves, -// user, -// selectedInputToken, -// modalType, -// loading, -// }: { -// switchRates?: SwitchRatesType; -// selectedOutputToken: TokenInfoWithBalance; -// safeSlippage: number; -// gasLimit: string; -// selectedChainId: number; -// showGasStation: boolean | undefined; -// customReceivedTitle?: React.ReactNode; -// reserves: ComputedReserveData[]; -// user?: ExtendedFormattedUser; -// selectedInputToken: TokenInfoWithBalance; -// modalType: ModalType; -// loading?: boolean; -// }) => { -// if (!switchRates || !user) return null; - -// if (loading) -// return ( -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// ); - -// return ( -// -// {modalType === ModalType.CollateralSwap && ( -// -// )} - -// {switchRates.provider === 'cowprotocol' ? ( -// -// ) : ( -// -// )} -// -// ); -// }; -// export const IntentTxDetails = ({ -// selectedOutputToken, -// selectedInputToken, -// safeSlippage, -// customReceivedTitle, -// networkFee, -// partnerFee, -// outputTokenPriceUsd, -// inputTokenPriceUsd, -// outputAmount, -// inputAmount, -// }: { -// selectedOutputToken: TokenInfoWithBalance; -// selectedInputToken: TokenInfoWithBalance; -// safeSlippage: number; -// customReceivedTitle?: React.ReactNode; -// networkFee: string; -// partnerFee: string; -// outputTokenPriceUsd: number; -// inputTokenPriceUsd: number; -// outputAmount: string; -// inputAmount: string; -// }) => { -// const [costBreakdownExpanded, setCostBreakdownExpanded] = useState(false); - -// const networkFeeFormatted = normalize(networkFee, selectedOutputToken.decimals); -// const networkFeeUsd = Number(networkFeeFormatted) * outputTokenPriceUsd; - -// const partnerFeeFormatted = normalize(partnerFee, selectedOutputToken.decimals); -// const partnerFeeUsd = Number(partnerFeeFormatted) * outputTokenPriceUsd; - -// const totalCostsInUsd = networkFeeUsd + partnerFeeUsd; // + costs.slippageInUsd; - -// const destUsd = normalizeBN(outputAmount, selectedOutputToken.decimals) -// .multipliedBy(outputTokenPriceUsd) -// .toNumber(); -// const srcUsd = normalizeBN(inputAmount, selectedInputToken.decimals) -// .multipliedBy(inputTokenPriceUsd) -// .toNumber(); - -// const receivingInUsd = destUsd * (1 - safeSlippage); -// const sendingInUsd = srcUsd; - -// const priceImpact = (1 - receivingInUsd / sendingInUsd) * 100; - -// const destAmountAfterSlippage = normalizeBN(outputAmount, selectedOutputToken.decimals) -// .multipliedBy(1 - safeSlippage) -// .decimalPlaces(selectedOutputToken.decimals, BigNumber.ROUND_UP) -// .toString(); - -// return ( -// <> -// { -// setCostBreakdownExpanded(expanded); -// }} -// > -// } -// sx={{ -// padding: 0, -// minHeight: '24px', -// height: '24px', -// '.MuiAccordionSummary-content': { margin: 0 }, -// }} -// > -// {`Costs & Fees`}} -// captionVariant="description" -// align="flex-start" -// width="100%" -// > -// {!costBreakdownExpanded && ( -// -// )} -// -// -// -// } -// captionVariant="caption" -// align="flex-start" -// > -// -// -// -// -// -// -// -// -// } -// captionVariant="caption" -// align="flex-start" -// > -// -// -// -// -// -// -// -// -// -// - -// {`Minimum ${selectedOutputToken.symbol} received`} -// } -// captionVariant="description" -// align="flex-start" -// > -// -// -// -// -// -// -// -// {priceImpact && priceImpact > 0 && priceImpact < 100 && ( -// 10 ? 'error' : priceImpact > 5 ? 'warning' : 'text.secondary'} -// > -// (-{priceImpact.toFixed(priceImpact > 3 ? 0 : priceImpact > 1 ? 1 : 2)}%) -// -// )} -// -// -// -// -// ); -// }; -// const MarketOrderTxDetails = ({ -// switchRates, -// selectedOutputToken, -// safeSlippage, -// customReceivedTitle, -// }: { -// switchRates: SwitchRatesType; -// selectedOutputToken: TokenInfoWithBalance; -// safeSlippage: number; -// customReceivedTitle?: React.ReactNode; -// }) => { -// return ( -// <> -// {`Minimum ${selectedOutputToken.symbol} received`} -// } -// captionVariant="description" -// align="flex-start" -// > -// -// -// -// -// -// -// -// -// -// ); -// }; - -// const CollateralSwapModalTxDetailsContent = ({ -// switchRates, -// selectedOutputToken, -// safeSlippage, -// reserves, -// user, -// selectedInputToken, -// }: { -// switchRates: SwitchRatesType; -// selectedOutputToken: TokenInfoWithBalance; -// safeSlippage: number; -// customReceivedTitle?: React.ReactNode; -// reserves: ComputedReserveData[]; -// user: ExtendedFormattedUser; -// selectedInputToken: TokenInfoWithBalance; -// }) => { -// // Map selected tokens to reserves and user reserves -// const poolReserve = reserves.find( -// (r) => r.underlyingAsset.toLowerCase() === selectedInputToken.address.toLowerCase() -// ) as ComputedReserveData | undefined; -// const targetReserve = reserves.find( -// (r) => r.underlyingAsset.toLowerCase() === selectedOutputToken.address.toLowerCase() -// ) as ComputedReserveData | undefined; - -// if (!poolReserve || !targetReserve || !user) return null; - -// const userReserve = user.userReservesData.find( -// (ur) => ur.underlyingAsset.toLowerCase() === poolReserve.underlyingAsset.toLowerCase() -// ) as ComputedUserReserveData | undefined; -// const userTargetReserve = user.userReservesData.find( -// (ur) => ur.underlyingAsset.toLowerCase() === targetReserve.underlyingAsset.toLowerCase() -// ) as ComputedUserReserveData | undefined; - -// if (!userReserve || !userTargetReserve) return null; - -// // Show HF only when there are borrows and source reserve is collateralizable -// const showHealthFactor = -// user.totalBorrowsMarketReferenceCurrency !== '0' && -// poolReserve.reserveLiquidationThreshold !== '0'; - -// // Amounts in human units (mirror other components: intent uses destSpot, market uses destAmount) -// const fromAmount = normalizeBN(switchRates.srcAmount, switchRates.srcDecimals).toString(); -// const toAmountRaw = normalizeBN( -// switchRates.provider === 'cowprotocol' ? switchRates.destSpot : switchRates.destAmount, -// switchRates.destDecimals -// ).toString(); -// const toAmountAfterSlippage = valueToBigNumber(toAmountRaw) -// .multipliedBy(1 - safeSlippage) -// .toString(); - -// // Compute collateral types -// const { debtCeilingReached: sourceDebtCeiling } = getDebtCeilingData(targetReserve); -// const swapSourceCollateralType: CollateralType = getAssetCollateralType( -// userReserve, -// user.totalCollateralUSD, -// user.isInIsolationMode, -// sourceDebtCeiling -// ); -// const { debtCeilingReached: targetDebtCeiling } = getDebtCeilingData(targetReserve); -// const swapTargetCollateralType: CollateralType = getAssetCollateralType( -// userTargetReserve, -// user.totalCollateralUSD, -// user.isInIsolationMode, -// targetDebtCeiling -// ); - -// // Health factor after swap using slippage-adjusted output amount -// const { hfAfterSwap } = calculateHFAfterSwap({ -// fromAmount, -// fromAssetData: poolReserve, -// fromAssetUserData: userReserve, -// user, -// toAmountAfterSlippage: toAmountAfterSlippage, -// toAssetData: targetReserve, -// }); - -// return ( -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchRates.tsx b/src/components/transactions/Swap/backup/SwitchRates.tsx deleted file mode 100644 index c13379bf72..0000000000 --- a/src/components/transactions/Swap/backup/SwitchRates.tsx +++ /dev/null @@ -1,82 +0,0 @@ -// import { normalizeBN, valueToBigNumber } from '@aave/math-utils'; -// import { SwitchHorizontalIcon } from '@heroicons/react/outline'; -// import { Trans } from '@lingui/macro'; -// import { Box, ButtonBase, SvgIcon, Typography } from '@mui/material'; -// import { useMemo, useState } from 'react'; -// import { DarkTooltip } from 'src/components/infoTooltips/DarkTooltip'; -// import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; - -// import { SwitchRatesType } from './switch.types'; - -// type SwitchRatesProps = { -// rates: SwitchRatesType; -// srcSymbol: string; -// destSymbol: string; -// showPriceImpact?: boolean; -// }; - -// export const SwitchRates = ({ -// rates, -// srcSymbol, -// destSymbol, -// showPriceImpact = true, -// }: SwitchRatesProps) => { -// const [isSwitched, setIsSwitched] = useState(false); - -// const rate = useMemo(() => { -// const amount1 = normalizeBN(rates.srcAmount, rates.srcDecimals); -// const amount2 = normalizeBN(rates.destAmount, rates.destDecimals); -// return isSwitched ? amount1.div(amount2) : amount2.div(amount1); -// }, [isSwitched, rates.srcAmount, rates.destAmount]); - -// const priceImpact = useMemo(() => { -// const price1 = valueToBigNumber(rates.srcUSD); -// const price2 = valueToBigNumber(rates.destUSD); -// return price2.minus(price1).div(price1); -// }, [rates.srcUSD, rates.destUSD]); - -// return ( -// -// -// setIsSwitched((isSwitched) => !isSwitched)} -// disableTouchRipple -// sx={{ mx: 1 }} -// > -// -// -// -// -// -// {showPriceImpact && ( -// -// Price impact -// -// } -// > -// -// {'('} -// -// {')'} -// -// -// )} -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchRatesError.tsx b/src/components/transactions/Swap/backup/SwitchRatesError.tsx deleted file mode 100644 index 731c5352ba..0000000000 --- a/src/components/transactions/Swap/backup/SwitchRatesError.tsx +++ /dev/null @@ -1,35 +0,0 @@ -// import { SxProps, Typography } from '@mui/material'; -// // import { Warning } from 'src/components/primitives/Warning'; -// // import { convertParaswapErrorMessage } from 'src/hooks/paraswap/common'; - -// import { convertCowProtocolErrorMessage } from './paraswap/paraswap.errors'; -// import { convertCowProtocolErrorMessage } from './cowprotocol/cowprotocol.errors'; - -// interface SwitchRatesErrorProps { -// error: unknown; -// sx?: SxProps; -// } - -// export const SwitchRatesError = ({ error, sx }: SwitchRatesErrorProps) => { -// let paraswapMessage; -// let cowProtocolMessage; - -// if (error instanceof Error) { -// paraswapMessage = convertParaswapErrorMessage(error.message); - -// if (!paraswapMessage) { -// cowProtocolMessage = convertCowProtocolErrorMessage(error.message); -// } -// } - -// const customErrorMessage = -// error instanceof Error -// ? paraswapMessage ?? cowProtocolMessage ?? error.message -// : 'There was an issue fetching rates.'; - -// return ( -// -// {customErrorMessage} -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchSlippageSelector.tsx b/src/components/transactions/Swap/backup/SwitchSlippageSelector.tsx deleted file mode 100644 index a5b921a3e4..0000000000 --- a/src/components/transactions/Swap/backup/SwitchSlippageSelector.tsx +++ /dev/null @@ -1,261 +0,0 @@ -// import { CogIcon } from '@heroicons/react/solid'; -// import { Trans } from '@lingui/macro'; -// import { -// Box, -// Button, -// InputAdornment, -// InputBase, -// Menu, -// SvgIcon, -// ToggleButton, -// ToggleButtonGroup, -// Typography, -// } from '@mui/material'; -// import { MouseEvent, useEffect, useState } from 'react'; -// import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; -// import { Warning } from 'src/components/primitives/Warning'; - -// import { ValidationData } from './validation.helpers'; - -// type SwitchSlippageSelectorProps = { -// suggestedSlippage?: string; -// slippage: string; -// setSlippage: (value: string) => void; -// slippageValidation?: ValidationData; -// provider?: string; -// }; - -// const defaultSlippageOptions = (suggested?: string) => { -// if (!suggested) { -// return ['0.10', '0.50', '2.0']; -// } - -// const suggestedNumber = Number(suggested); -// if (suggestedNumber <= 0.1) { -// return ['0.03', '0.07', 'Auto']; -// } -// if (suggestedNumber < 1) { -// return ['0.10', '0.50', 'Auto']; -// } - -// if (suggestedNumber < 3) { -// return ['1.00', '2.00', 'Auto']; -// } - -// if (suggestedNumber < 5) { -// return ['2.00', '3.00', 'Auto']; -// } - -// if (suggestedNumber < 10) { -// return ['3.00', '5.00', 'Auto']; -// } - -// return ['5.00', '10.00', 'Auto']; -// }; - -// export const SwitchSlippageSelector = ({ -// suggestedSlippage, -// slippage, -// setSlippage, -// slippageValidation, -// provider, -// }: SwitchSlippageSelectorProps) => { -// const slippageOptions = defaultSlippageOptions(suggestedSlippage).map((option) => { -// if (Number(option) === Number(suggestedSlippage)) { -// return (Number(option) - 0.25).toString(); -// } -// return option; -// }); - -// const [anchorEl, setAnchorEl] = useState(); -// const [isCustomSlippage, setIsCustomSlippage] = useState(false); -// const [previousSlippage, setPreviousSlippage] = useState(slippage); -// const [userHasSetCustomSlippage, setUserHasSetCustomSlippage] = useState(false); -// const open = Boolean(anchorEl); - -// useEffect(() => { -// // Watch for slippage changes from outside the component -// if (previousSlippage !== slippage) { -// if (!userHasSetCustomSlippage) { -// setIsCustomSlippage(false); -// setPreviousSlippage(slippage); -// } else { -// setSlippage(previousSlippage); -// return; -// } -// } - -// // Update slippage to suggested if user has not set custom slippage -// if (suggestedSlippage && !userHasSetCustomSlippage && !isCustomSlippage) { -// setSlippage(suggestedSlippage); -// setPreviousSlippage(slippage); -// } -// }, [ -// slippage, -// suggestedSlippage, -// userHasSetCustomSlippage, -// isCustomSlippage, -// previousSlippage, -// setSlippage, -// ]); - -// const handleOpen = (event: MouseEvent) => { -// setAnchorEl(event.currentTarget); -// }; - -// const handleClose = () => { -// setAnchorEl(null); -// }; - -// const handleCustomSlippageChange = (event: React.ChangeEvent) => { -// setPreviousSlippage(event.target.value); -// setSlippage(event.target.value); -// setUserHasSetCustomSlippage(true); -// setIsCustomSlippage(true); -// }; - -// const handlePresetSlippageChange = (value: string) => { -// if (value === 'Auto' && suggestedSlippage) { -// setPreviousSlippage(suggestedSlippage); -// setSlippage(suggestedSlippage); -// setIsCustomSlippage(false); -// setUserHasSetCustomSlippage(false); -// } else { -// setPreviousSlippage(value); -// setSlippage(value); -// setIsCustomSlippage(true); -// setUserHasSetCustomSlippage(true); -// } -// }; - -// return ( -// -// -// {isCustomSlippage ? ( -// Custom slippage -// ) : provider === 'paraswap' ? ( -// Default slippage -// ) : ( -// Auto Slippage -// )} -// {':'} -// -// -// Max slippage -// -// -// handlePresetSlippageChange(value)} -// > -// {slippageOptions.map((option) => ( -// -// {isNaN(Number(option)) ? ( -// -// {provider === 'paraswap' ? Default : Auto} -// -// ) : ( -// -// )} -// -// ))} -// -// -// -// % -// -// -// } -// sx={{ -// fontSize: '12px', -// px: 2, -// width: '120px', -// border: 1, -// borderWidth: '1px', -// backgroundColor: 'background.surface', -// borderColor: slippageValidation -// ? `${slippageValidation.severity}.main` -// : 'background.surface', -// borderRadius: '4px', -// }} -// /> -// -// {slippageValidation && ( -// -// {slippageValidation.message} -// -// )} -// -// -// -// -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchTxSuccessView.tsx b/src/components/transactions/Swap/backup/SwitchTxSuccessView.tsx deleted file mode 100644 index aa755a296a..0000000000 --- a/src/components/transactions/Swap/backup/SwitchTxSuccessView.tsx +++ /dev/null @@ -1,327 +0,0 @@ -// import { normalize } from '@aave/math-utils'; -// import { Trans } from '@lingui/macro'; -// import { Box, CircularProgress, Divider, Typography } from '@mui/material'; -// import { BigNumber } from 'ethers'; -// import { useEffect, useMemo, useRef, useState } from 'react'; -// import { DarkTooltip } from 'src/components/infoTooltips/DarkTooltip'; -// import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; -// import { ExternalTokenIcon } from 'src/components/primitives/TokenIcon'; -// import { TextWithTooltip, TextWithTooltipProps } from 'src/components/TextWithTooltip'; -// import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; -// import { networkConfigs } from 'src/ui-config/networksConfig'; -// import { parseUnits } from 'viem'; - -// import { BaseCancelledView } from '../FlowCommons/BaseCancelled'; -// import { BaseSuccessView } from '../FlowCommons/BaseSuccess'; -// import { BaseWaitingView } from '../FlowCommons/BaseWaiting'; -// import { -// generateCoWExplorerLink, -// getOrder, -// isNativeToken, -// isOrderCancelled, -// isOrderFilled, -// isOrderLoading, -// } from './cowprotocol/cowprotocol.helpers'; -// import { SwitchProvider } from './switch.types'; - -// export type SwitchTxSuccessViewProps = { -// txHash?: string; -// amount: string; -// symbol: string; -// iconSymbol: string; -// outAmount: string; -// outSymbol: string; -// outIconSymbol: string; -// iconUri?: string; -// outIconUri?: string; -// provider: SwitchProvider; -// chainId: number; -// destDecimals: number; -// srcDecimals: number; -// }; - -// export const SwitchWithSurplusTooltip = ({ -// surplus, -// surplusPercent, -// baseAmount, -// ...rest -// }: TextWithTooltipProps & { surplus: number; surplusPercent: number; baseAmount: number }) => { -// return ( -// -// <> -// -// Base: -// -// -// Surplus: {' '} -// ( -// -// ) -// -// -// -// ); -// }; - -// export const SwitchTxSuccessView = ({ -// txHash: txHashOrOrderId, -// amount, -// symbol, -// iconSymbol, -// outAmount, -// outSymbol, -// outIconSymbol, -// iconUri, -// outIconUri, -// provider, -// chainId, -// destDecimals, -// srcDecimals, -// }: SwitchTxSuccessViewProps) => { -// const { trackOrder, setHasActiveOrders } = useCowOrderToast(); - -// // Do polling each 10 seconds until the order get's filled -// const [orderStatus, setOrderStatus] = useState<'succeed' | 'failed' | 'open'>('open'); -// const [surplus, setSurplus] = useState(undefined); -// const [inAmount, setInAmount] = useState(amount); -// const [outFinalAmount, setOutFinalAmount] = useState(outAmount); - -// // Market for chain id -// const networkConfig = networkConfigs[chainId].explorerLink; - -// // Start tracking the order when the component mounts -// useEffect(() => { -// if (provider === 'cowprotocol' && txHashOrOrderId) { -// trackOrder(txHashOrOrderId, chainId); -// } else if (provider === 'cowprotocol' && orderStatus === 'open') { -// // If the order is open, force the spinner to show, waiting for order details e.g. eth flow -// setHasActiveOrders(true); -// } -// }, [txHashOrOrderId, chainId, provider, trackOrder, setHasActiveOrders]); - -// // Poll the order status for UI updates -// const interval = useRef(null); -// const pollOrder = async () => { -// if (provider === 'cowprotocol' && txHashOrOrderId) { -// getOrder(txHashOrOrderId, chainId) -// .then((order) => { -// if (isOrderFilled(order.status)) { -// setOrderStatus('succeed'); -// setSurplus( -// BigNumber.from(order.executedBuyAmount) -// .sub(BigNumber.from(parseUnits(outAmount, destDecimals))) -// .toBigInt() -// ); -// setOutFinalAmount(normalize(order.executedBuyAmount, destDecimals)); -// setInAmount(normalize(order.executedSellAmount, srcDecimals)); -// if (interval.current) { -// clearInterval(interval.current); -// } -// } else if (isOrderCancelled(order.status)) { -// setOrderStatus('failed'); -// if (interval.current) { -// clearInterval(interval.current); -// } -// } else if (isOrderLoading(order.status)) { -// setOrderStatus('open'); -// } -// }) -// .catch(console.error); -// } else if (provider === 'paraswap' && txHashOrOrderId) { -// console.error('Paraswap! Implement tracking of hash.'); -// } -// }; -// useEffect(() => { -// if ( -// txHashOrOrderId && -// provider === 'cowprotocol' && -// chainId && -// destDecimals && -// interval.current === null -// ) { -// interval.current = setInterval(pollOrder, 10000); -// } -// }, [txHashOrOrderId, chainId, provider, destDecimals]); - -// const View = useMemo(() => { -// if (provider === 'cowprotocol' && orderStatus === 'open') { -// return BaseWaitingView; -// } else if (provider === 'cowprotocol' && orderStatus === 'failed') { -// return BaseCancelledView; -// } -// return BaseSuccessView; // Default case -// }, [orderStatus, provider]); - -// const surplusFormatted = surplus -// ? Number(normalize(surplus.toString(), destDecimals)) -// : undefined; -// const surplusDisplay = -// surplusFormatted && surplusFormatted > 0 -// ? surplusFormatted <= 0.0001 -// ? `Includes small ${outSymbol} Surplus` -// : `Includes +${surplusFormatted.toLocaleString(undefined, { -// minimumFractionDigits: 2, -// maximumFractionDigits: surplusFormatted < 0.01 ? 4 : 2, -// })} ${outSymbol} Surplus` -// : undefined; - -// const customExplorerLink = useMemo(() => { -// return provider === 'cowprotocol' -// ? generateCoWExplorerLink(chainId, txHashOrOrderId) -// : `${networkConfig}/tx/${txHashOrOrderId}`; -// }, [provider, chainId, txHashOrOrderId]); - -// const customExplorerLinkText = useMemo(() => { -// return provider === 'cowprotocol' ? ( -// txHashOrOrderId ? ( -// <>View details -// ) : ( -// <> -// theme.palette.grey[400], -// }} -// /> -// Details will be available soon -// -// ) -// ) : undefined; -// }, [provider, txHashOrOrderId]); - -// return ( -// -// -// -// {provider === 'cowprotocol' ? ( -// <> -// {orderStatus === 'open' ? ( -// You've successfully submitted an order. -// ) : orderStatus === 'failed' ? ( -// The order could't be filled. -// ) : ( -// You've successfully swapped tokens. -// )} -// -// ) : ( -// You've successfully swapped tokens. -// )} -// -// - -// -// -// -// {provider == 'cowprotocol' && -// ((orderStatus == 'open' && !isNativeToken(symbol)) || orderStatus == 'failed') -// ? 'Send' -// : 'Sent'} -// -// -// -// -// {inAmount} {symbol} -// -// } -// arrow -// placement="top" -// enterTouchDelay={100} -// leaveTouchDelay={500} -// > -// -// -// {Number(inAmount).toLocaleString(undefined, { -// minimumFractionDigits: 2, -// maximumFractionDigits: Number(inAmount) < 0.01 ? 4 : 2, -// })}{' '} -// -// -// -// -// {symbol} -// -// -// -// -// -// -// {provider == 'cowprotocol' && (orderStatus == 'open' || orderStatus == 'failed') -// ? 'Receive' -// : 'Received'} -// -// -// -// -// {outFinalAmount} {outSymbol} -// -// } -// arrow -// placement="top" -// enterTouchDelay={100} -// leaveTouchDelay={500} -// > -// -// -// {Number(outFinalAmount).toLocaleString(undefined, { -// minimumFractionDigits: 2, -// maximumFractionDigits: Number(outFinalAmount) < 0.01 ? 4 : 2, -// })} -// -// -// -// -// {outSymbol} -// -// -// -// {surplusDisplay && ( -// -// {surplusDisplay} -// -// )} -// -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/SwitchTypeSelector.tsx b/src/components/transactions/Swap/backup/SwitchTypeSelector.tsx deleted file mode 100644 index bb5f3045e3..0000000000 --- a/src/components/transactions/Swap/backup/SwitchTypeSelector.tsx +++ /dev/null @@ -1,54 +0,0 @@ -// import { Trans } from '@lingui/macro'; -// import { Box, Typography } from '@mui/material'; -// import { StyledTxModalToggleButton } from 'src/components/StyledToggleButton'; -// import { StyledTxModalToggleGroup } from 'src/components/StyledToggleButtonGroup'; -// import { useRootStore } from 'src/store/root'; -// import { SWITCH_MODAL } from 'src/utils/events'; -// import { useShallow } from 'zustand/shallow'; - -// export enum SwitchType { -// MARKET, -// LIMIT, -// } -// export function SwitchTypeSelector({ -// switchType, -// setSwitchType, -// }: { -// switchType: SwitchType; -// setSwitchType: (type: SwitchType) => void; -// }) { -// const [trackEvent] = useRootStore( -// useShallow((store) => [store.trackEvent, store.currentMarketData]) -// ); - -// return ( -// -// setSwitchType(value)} -// > -// trackEvent(SWITCH_MODAL.SWITCH_TYPE, { repayType: 'Market order' })} -// > -// -// Market -// -// - -// trackEvent(SWITCH_MODAL.SWITCH_TYPE, { repayType: 'Limit order' })} -// > -// -// Limit -// -// -// -// -// ); -// } diff --git a/src/components/transactions/Swap/backup/assetCorrelation.helpers.ts b/src/components/transactions/Swap/backup/assetCorrelation.helpers.ts deleted file mode 100644 index 172df50cba..0000000000 --- a/src/components/transactions/Swap/backup/assetCorrelation.helpers.ts +++ /dev/null @@ -1,49 +0,0 @@ -// // Until CoW shares a more sophisticated way to recognize token groups, we'll maintain a lists with popular tokens -// // Same Categories will be used to determine slippage for Paraswap -// // Set all tokens to uppercase to avoid case sensitivity issues -// export const TOKEN_GROUPS: Record<'stable' | 'correlatedEth' | 'correlatedBtc', string[]> = { -// stable: [ -// 'USDC', -// 'USDT', -// 'DAI', -// 'GHO', -// 'EURC', -// 'USDBC', -// 'USDE', -// 'USDS', -// 'SUSDE', -// 'RLUSD', -// 'PYUSD', -// 'LUSD', -// 'SDAI', -// 'CRVUSD', -// 'USD₮0', -// 'USDC.E', -// 'EURE', -// 'XDAI', -// 'WXDAI', -// ], -// correlatedEth: [ -// 'WEETH', -// 'ETH', -// 'WETH', -// 'WSTETH', -// 'CBETH', -// 'EZETH', -// 'WRSETH', -// 'OSETH', -// 'RETH', -// 'ETHX', -// ], -// correlatedBtc: ['CBBTC', 'WBTC', 'LBTC', 'TBTC', 'EBTC'], -// } as const; - -// export const getAssetGroup = (symbol: string): keyof typeof TOKEN_GROUPS | 'unknown' => { -// for (const [groupName, tokens] of Object.entries(TOKEN_GROUPS)) { -// // Allow for prefix matching e.g. aTokens -// if (tokens.some((token) => symbol.toUpperCase().endsWith(token))) { -// return groupName as keyof typeof TOKEN_GROUPS; -// } -// } -// return 'unknown'; -// }; diff --git a/src/components/transactions/Swap/backup/common.ts b/src/components/transactions/Swap/backup/common.ts deleted file mode 100644 index 3c6a57defe..0000000000 --- a/src/components/transactions/Swap/backup/common.ts +++ /dev/null @@ -1,28 +0,0 @@ -// import { BaseNetworkConfig } from 'src/ui-config/networksConfig'; -// import { -// getSupportedChainIds, -// marketsData, -// networkConfigs, -// } from 'src/utils/marketsAndNetworksConfig'; - -// export interface SupportedNetworkWithChainId extends BaseNetworkConfig { -// chainId: number; -// } - -// export const supportedNetworksConfig: SupportedNetworkWithChainId[] = getSupportedChainIds().map( -// (chainId) => ({ -// ...networkConfigs[chainId], -// chainId, -// }) -// ); -// export const supportedNetworksWithEnabledMarket = supportedNetworksConfig.filter((elem) => -// Object.values(marketsData).find( -// (market) => market.chainId === elem.chainId && market.enabledFeatures?.switch -// ) -// ); - -// export const supportedNetworksWithEnabledMarketLimit = supportedNetworksConfig.filter((elem) => -// Object.values(marketsData).find( -// (market) => market.chainId === elem.chainId && market.enabledFeatures?.limit -// ) -// ); diff --git a/src/components/transactions/Swap/backup/cowprotocol/CowOrderToast.tsx b/src/components/transactions/Swap/backup/cowprotocol/CowOrderToast.tsx deleted file mode 100644 index 54eee00553..0000000000 --- a/src/components/transactions/Swap/backup/cowprotocol/CowOrderToast.tsx +++ /dev/null @@ -1,20 +0,0 @@ -// import { useTheme } from '@mui/material'; -// import { Toaster } from 'sonner'; - -// export const CowOrderToast = () => { -// const theme = useTheme(); - -// return ( -// -// ); -// }; diff --git a/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.constants.ts b/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.constants.ts deleted file mode 100644 index 68409f3516..0000000000 --- a/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.constants.ts +++ /dev/null @@ -1,28 +0,0 @@ -// import { SupportedChainId } from '@cowprotocol/cow-sdk'; -// import { ModalType } from 'src/hooks/useModal'; - -// export const COW_UNSUPPORTED_ASSETS: Partial< -// Record>> -// > = { -// [ModalType.CollateralSwap]: { -// [SupportedChainId.POLYGON]: 'ALL', // Polygon not supported for collateral swap, waiting better solvers support -// [SupportedChainId.AVALANCHE]: 'ALL', // Disabled until we have better solvers liquidity -// [SupportedChainId.BNB]: 'ALL', // Disabled until we have better solvers liquidity -// [SupportedChainId.GNOSIS_CHAIN]: [ -// '0xedbc7449a9b594ca4e053d9737ec5dc4cbccbfb2'.toLowerCase(), // EURe USD Price not supported -// ], -// [SupportedChainId.ARBITRUM_ONE]: [ -// '0x62fC96b27a510cF4977B59FF952Dc32378Cc221d'.toLowerCase(), // atBTC does not have good solver liquidity -// ], -// [SupportedChainId.BASE]: [ -// '0x90072A4aA69B5Eb74984Ab823EFC5f91e90b3a72'.toLowerCase(), // alBTC does not have good solver liquidity -// ], -// [SupportedChainId.MAINNET]: [ -// '0x00907f9921424583e7ffBfEdf84F92B7B2Be4977'.toLowerCase(), // aGHO not supported -// '0x18eFE565A5373f430e2F809b97De30335B3ad96A'.toLowerCase(), // aGHO not supported -// ], -// [SupportedChainId.SEPOLIA]: [ -// '0xd190eF37dB51Bb955A680fF1A85763CC72d083D4'.toLowerCase(), // aGHO not supported -// ], -// }, -// }; diff --git a/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.errors.ts b/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.errors.ts deleted file mode 100644 index 8791e35236..0000000000 --- a/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.errors.ts +++ /dev/null @@ -1,21 +0,0 @@ -// const MESSAGE_MAP: { [key: string]: string } = { -// NoLiquidity: 'No liquidity found for the given amount and asset pair.', -// NoRoutesFound: 'No routes found with enough liquidity.', -// SellAmountDoesNotCoverFee: 'Sell amount is too small to cover the fee.', -// }; - -// const MESSAGE_REGEX_MAP: Array<{ regex: RegExp; message: string }> = [ -// { -// regex: /^Source and destination tokens cannot be the same$/, -// message: 'Source and destination tokens cannot be the same', -// }, -// ]; - -// export function convertCowProtocolErrorMessage(message: string): string | undefined { -// if (message in MESSAGE_MAP) { -// return MESSAGE_MAP[message]; -// } - -// const newMessage = MESSAGE_REGEX_MAP.find((mapping) => mapping.regex.test(message))?.message; -// return newMessage; -// } diff --git a/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.helpers.ts b/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.helpers.ts deleted file mode 100644 index 5f1ee1f765..0000000000 --- a/src/components/transactions/Swap/backup/cowprotocol/cowprotocol.helpers.ts +++ /dev/null @@ -1,376 +0,0 @@ -// import { API_ETH_MOCK_ADDRESS } from '@aave/contract-helpers'; -// import { MetadataApi } from '@cowprotocol/app-data'; -// import { -// BuyTokenDestination, -// MAX_VALID_TO_EPOCH, -// OrderBookApi, -// OrderClass, -// OrderKind, -// OrderParameters, -// OrderStatus, -// QuoteAndPost, -// SellTokenSource, -// SigningScheme, -// SupportedChainId, -// TradingSdk, -// UnsignedOrder, -// WRAPPED_NATIVE_CURRENCIES, -// } from '@cowprotocol/cow-sdk'; -// import { JsonRpcProvider } from '@ethersproject/providers'; -// import { BigNumber, ethers, PopulatedTransaction } from 'ethers'; -// import { isSmartContractWallet } from 'src/helpers/provider'; - -// import { getAssetGroup } from '../assetCorrelation.helpers'; -// import { isChainIdSupportedByCoWProtocol } from '../switch.constants'; - -// export const COW_EVM_RECIPIENT = '0xC542C2F197c4939154017c802B0583C596438380'; -// // export const COW_LENS_RECIPIENT = '0xce4eB8a1f6Bd0e0B9282102DC056B11E9D83b7CA'; -// export const COW_PROTOCOL_ETH_FLOW_ADDRESS = '0xbA3cB449bD2B4ADddBc894D8697F5170800EAdeC'; -// const COW_CREATE_ORDER_ABI = -// 'function createOrder((address,address,uint256,uint256,bytes32,uint256,uint32,bool,int64)) returns (bytes32)'; - -// export const HEADER_WIDGET_APP_CODE = 'aave-v3-interface-widget'; -// export const ADAPTER_APP_CODE = 'aave-v3-interface-aps'; // Use this one for contract adapters so we have different dashboards -// export const COW_PARTNER_FEE = (tokenFromSymbol: string, tokenToSymbol: string) => ({ -// volumeBps: getAssetGroup(tokenFromSymbol) == getAssetGroup(tokenToSymbol) ? 15 : 25, -// recipient: COW_EVM_RECIPIENT, -// }); - -// export const COW_APP_DATA = ( -// tokenFromSymbol: string, -// tokenToSymbol: string, -// slippageBips: number, -// smartSlippage: boolean, -// orderClass: OrderClass, -// appCode?: string -// ) => ({ -// appCode: appCode || HEADER_WIDGET_APP_CODE, // todo: use ADAPTER_APP_CODE for contract adapters -// version: '1.4.0', -// metadata: { -// orderClass: { orderClass: orderClass }, // for CoW Swap UI & Analytics -// quote: { -// slippageBips, -// smartSlippage, -// }, -// partnerFee: COW_PARTNER_FEE(tokenFromSymbol, tokenToSymbol), -// }, -// }); - -// export type CowProtocolActionParams = { -// quote: OrderParameters; -// provider: JsonRpcProvider; -// chainId: number; -// user: string; -// amount: string; -// tokenDest: string; -// tokenSrc: string; -// tokenSrcDecimals: number; -// tokenDestDecimals: number; -// inputSymbol: string; -// outputSymbol: string; -// afterNetworkCostsBuyAmount: string; -// slippageBps: number; -// smartSlippage: boolean; -// appCode?: string; -// orderBookQuote: QuoteAndPost; -// }; - -// export const getPreSignTransaction = async ({ -// provider, -// chainId, -// user, -// slippageBps, -// smartSlippage, -// inputSymbol, -// outputSymbol, -// appCode, -// orderBookQuote, -// }: CowProtocolActionParams) => { -// if (!isChainIdSupportedByCoWProtocol(chainId)) { -// throw new Error('Chain not supported.'); -// } - -// const signer = provider?.getSigner(); -// if (!signer) { -// throw new Error('No signer found in provider'); -// } - -// const tradingSdk = new TradingSdk({ -// chainId, -// signer, -// appCode: appCode || HEADER_WIDGET_APP_CODE, -// }); - -// const isSmartContract = await isSmartContractWallet(user, provider); -// if (!isSmartContract) { -// throw new Error('Only smart contract wallets should use presign.'); -// } - -// const orderResult = await orderBookQuote.postSwapOrderFromQuote({ -// additionalParams: { -// signingScheme: SigningScheme.PRESIGN, -// }, -// appData: COW_APP_DATA( -// inputSymbol, -// outputSymbol, -// slippageBps, -// smartSlippage, -// OrderClass.MARKET, -// appCode -// ), -// }); - -// const preSignTransaction = await tradingSdk.getPreSignTransaction({ -// orderId: orderResult.orderId, -// account: user as `0x${string}`, -// }); - -// return { -// ...preSignTransaction, -// orderId: orderResult.orderId, -// }; -// }; - -// // Only for EOA wallets -// export const sendOrder = async ({ -// provider, -// chainId, -// user, -// slippageBps, -// inputSymbol, -// outputSymbol, -// smartSlippage, -// appCode, -// orderBookQuote, -// }: CowProtocolActionParams) => { -// const signer = provider?.getSigner(); - -// if (!isChainIdSupportedByCoWProtocol(chainId)) { -// throw new Error('Chain not supported.'); -// } - -// if (!signer) { -// throw new Error('No signer found in provider'); -// } - -// const isSmartContract = await isSmartContractWallet(user, provider); -// if (isSmartContract) { -// throw new Error('Smart contract wallets should use presign.'); -// } - -// return orderBookQuote -// .postSwapOrderFromQuote({ -// appData: COW_APP_DATA( -// inputSymbol, -// outputSymbol, -// slippageBps, -// smartSlippage, -// OrderClass.MARKET, -// appCode -// ), -// }) -// .then((orderResult) => orderResult.orderId); -// }; - -// export const getOrderStatus = async (orderId: string, chainId: number) => { -// const orderBookApi = new OrderBookApi({ chainId: chainId }); -// const status = await orderBookApi.getOrderCompetitionStatus(orderId, { -// chainId, -// }); -// return status.type; -// }; - -// export const getOrder = async (orderId: string, chainId: number) => { -// const orderBookApi = new OrderBookApi({ chainId }); -// const order = await orderBookApi.getOrder(orderId, { -// chainId, -// }); -// return order; -// }; - -// export const getOrders = async (chainId: number, account: string) => { -// const orderBookApi = new OrderBookApi({ chainId }); -// const orders = await orderBookApi.getOrders({ -// owner: account, -// }); - -// return orders; -// }; - -// export const isOrderLoading = (status: OrderStatus) => { -// return status === OrderStatus.OPEN || status === OrderStatus.PRESIGNATURE_PENDING; -// }; - -// export const isOrderFilled = (status: OrderStatus) => { -// return status === OrderStatus.FULFILLED; -// }; - -// export const isOrderExpired = (status: OrderStatus) => { -// return status === OrderStatus.EXPIRED; -// }; - -// export const isOrderCancelled = (status: OrderStatus) => { -// return status === OrderStatus.CANCELLED; -// }; - -// export const isNativeToken = (token?: string) => { -// return token?.toLowerCase() === API_ETH_MOCK_ADDRESS.toLowerCase(); -// }; - -// export const getUnsignerOrder = async ( -// sellAmount: string, -// buyAmount: string, -// dstToken: string, -// user: string, -// chainId: number, -// tokenFromSymbol: string, -// tokenToSymbol: string, -// slippageBps: number, -// smartSlippage: boolean, -// appCode?: string -// ): Promise => { -// const metadataApi = new MetadataApi(); -// const { appDataHex } = await metadataApi.getAppDataInfo( -// COW_APP_DATA( -// tokenFromSymbol, -// tokenToSymbol, -// slippageBps, -// smartSlippage, -// OrderClass.MARKET, -// appCode -// ) -// ); - -// return { -// buyToken: dstToken, -// receiver: user, -// sellAmount, -// buyAmount, -// appData: appDataHex, -// feeAmount: '0', -// validTo: MAX_VALID_TO_EPOCH, -// partiallyFillable: false, -// kind: OrderKind.SELL, -// sellToken: WRAPPED_NATIVE_CURRENCIES[chainId as SupportedChainId].address.toLowerCase(), -// buyTokenBalance: BuyTokenDestination.ERC20, -// sellTokenBalance: SellTokenSource.ERC20, -// }; -// }; - -// export const populateEthFlowTx = async ( -// sellAmount: string, -// buyAmount: string, -// dstToken: string, -// user: string, -// validTo: number, -// tokenFromSymbol: string, -// tokenToSymbol: string, -// slippageBps: number, -// smartSlippage: boolean, -// quoteId?: number, -// appCode?: string -// ): Promise => { -// const metadataApi = new MetadataApi(); -// const { appDataHex } = await metadataApi.getAppDataInfo( -// COW_APP_DATA( -// tokenFromSymbol, -// tokenToSymbol, -// slippageBps, -// smartSlippage, -// OrderClass.MARKET, -// appCode -// ) -// ); - -// const orderData = { -// buyToken: dstToken, -// receiver: user, -// sellAmount, -// buyAmount, -// appData: appDataHex, -// feeAmount: '0', -// validTo, -// partiallyFillable: false, -// quoteId: quoteId || 0, -// }; - -// const value = BigNumber.from(sellAmount); - -// // Create the contract interface -// const iface = new ethers.utils.Interface([COW_CREATE_ORDER_ABI]); - -// // Encode the function call -// const data = iface.encodeFunctionData('createOrder', [ -// [ -// orderData.buyToken, -// orderData.receiver, -// orderData.sellAmount, -// orderData.buyAmount, -// orderData.appData, -// orderData.feeAmount, -// orderData.validTo, -// orderData.partiallyFillable, -// orderData.quoteId, -// ], -// ]); - -// return { -// to: COW_PROTOCOL_ETH_FLOW_ADDRESS, -// value, -// data, -// }; -// }; - -// export const getRecommendedSlippage = (srcUSD: string) => { -// try { -// if (Number(srcUSD) <= 0) { -// return Number(0.5); -// } - -// if (Number(srcUSD) <= 1) { -// return Number(5.0); -// } else if (Number(srcUSD) <= 5) { -// return Number(2.5); -// } else if (Number(srcUSD) <= 10) { -// return Number(1.5); -// } else { -// return Number(0.5); -// } -// } catch (e) { -// return Number(0.5); -// } -// }; - -// export const uploadAppData = async (orderId: string, appDataHex: string, chainId: number) => { -// const orderBookApi = new OrderBookApi({ chainId }); - -// return orderBookApi.uploadAppData(orderId, appDataHex); -// }; - -// export const generateCoWExplorerLink = (chainId: SupportedChainId, orderId?: string) => { -// if (!orderId) { -// return undefined; -// } - -// const base = 'https://explorer.cow.fi'; -// switch (chainId) { -// case SupportedChainId.MAINNET: -// return `${base}/orders/${orderId}`; -// case SupportedChainId.GNOSIS_CHAIN: -// return `${base}/gc/orders/${orderId}`; -// case SupportedChainId.BASE: -// return `${base}/base/orders/${orderId}`; -// case SupportedChainId.ARBITRUM_ONE: -// return `${base}/arb1/orders/${orderId}`; -// case SupportedChainId.SEPOLIA: -// return `${base}/sepolia/orders/${orderId}`; -// case SupportedChainId.AVALANCHE: -// return `${base}/avax/orders/${orderId}`; -// case SupportedChainId.POLYGON: -// return `${base}/pol/orders/${orderId}`; -// case SupportedChainId.BNB: -// return `${base}/bnb/orders/${orderId}`; -// default: -// throw new Error('Define explorer link for chainId: ' + chainId); -// } -// }; diff --git a/src/components/transactions/Swap/backup/slippage.helpers.ts b/src/components/transactions/Swap/backup/slippage.helpers.ts deleted file mode 100644 index 1cd300a14e..0000000000 --- a/src/components/transactions/Swap/backup/slippage.helpers.ts +++ /dev/null @@ -1,8 +0,0 @@ -// import { getAssetGroup } from 'src/components/transactions/Switch/assetCorrelation.helpers'; - -// export const getParaswapSlippage = (inputSymbol: string, outputSymbol: string): string => { -// const inputGroup = getAssetGroup(inputSymbol); -// const outputGroup = getAssetGroup(outputSymbol); - -// return inputGroup === outputGroup ? '0.10' : '0.20'; -// }; diff --git a/src/components/transactions/Swap/backup/switch.constants.ts b/src/components/transactions/Swap/backup/switch.constants.ts deleted file mode 100644 index 3c4b20ee18..0000000000 --- a/src/components/transactions/Swap/backup/switch.constants.ts +++ /dev/null @@ -1,39 +0,0 @@ -// import { ChainId } from '@aave/contract-helpers'; -// import { SupportedChainId } from '@cowprotocol/cow-sdk'; - -// // In the future, we may fetch these configs from our features flag service - -// export const ParaswapSupportedNetworks = [ -// ChainId.mainnet, -// ChainId.polygon, -// ChainId.avalanche, -// ChainId.sepolia, -// ChainId.base, -// ChainId.arbitrum_one, -// ChainId.optimism, -// ChainId.xdai, -// ChainId.bnb, -// ChainId.sonic, -// ]; - -// SupportedChainId; - -// export const CoWProtocolSupportedNetworks = [ -// SupportedChainId.MAINNET, -// SupportedChainId.GNOSIS_CHAIN, -// SupportedChainId.ARBITRUM_ONE, -// SupportedChainId.BASE, -// SupportedChainId.SEPOLIA, -// SupportedChainId.AVALANCHE, -// SupportedChainId.POLYGON, -// SupportedChainId.BNB, -// ] as const; - -// export const isChainIdSupportedByCoWProtocol = (chainId: number): chainId is SupportedChainId => { -// return CoWProtocolSupportedNetworks.includes(chainId); -// }; - -// export enum SwitchType { -// CollateralSwap = 'collateralSwap', -// TokenSwap = 'tokenSwap', -// } diff --git a/src/components/transactions/Swap/backup/switch.types.ts b/src/components/transactions/Swap/backup/switch.types.ts deleted file mode 100644 index ac43b3844a..0000000000 --- a/src/components/transactions/Swap/backup/switch.types.ts +++ /dev/null @@ -1,79 +0,0 @@ -// import { OrderParameters, QuoteAmountsAndCosts, QuoteAndPost } from '@cowprotocol/cow-sdk'; -// import { OptimalRate } from '@paraswap/core'; -// import { TxErrorType } from 'src/ui-config/errorMapping'; - -// export type SwitchProvider = 'cowprotocol' | 'paraswap'; - -// export type ProviderRatesParams = { -// amount: string; -// srcToken: string; -// srcDecimals: number; - -// destToken: string; -// destDecimals: number; - -// chainId: number; -// user: string; -// options?: Record; - -// inputSymbol?: string; -// outputSymbol?: string; - -// isInputTokenCustom?: boolean; -// isOutputTokenCustom?: boolean; -// appCode?: string; - -// setError?: (error: TxErrorType) => void; -// }; - -// export type MultiProviderRatesParams = Omit & { -// srcUnderlyingToken: string; -// srcAToken?: string; -// destUnderlyingToken: string; -// destAToken?: string; -// }; - -// export type BaseSwitchRates = { -// // Source token -// srcToken: string; -// srcUSD: string; -// srcAmount: string; -// srcDecimals: number; - -// // Destination token -// destToken: string; -// destUSD: string; -// destAmount: string; -// destDecimals: number; - -// provider: SwitchProvider; -// }; - -// export type ParaswapRatesType = BaseSwitchRates & { -// optimalRateData: OptimalRate; -// provider: 'paraswap'; -// suggestedSlippage?: number; -// }; - -// export type CowProtocolRatesType = BaseSwitchRates & { -// provider: 'cowprotocol'; -// order: OrderParameters; -// quoteId?: number; -// suggestedSlippage: number; -// amountAndCosts: QuoteAmountsAndCosts; -// srcTokenPriceUsd: number; -// destTokenPriceUsd: number; -// destSpot: string; -// destSpotInUsd: string; -// orderBookQuote: QuoteAndPost; -// }; - -// export const isParaswapRates = (rates?: SwitchRatesType): rates is ParaswapRatesType => { -// return rates?.provider === 'paraswap'; -// }; - -// export const isCowProtocolRates = (rates?: SwitchRatesType): rates is CowProtocolRatesType => { -// return rates?.provider === 'cowprotocol'; -// }; - -// export type SwitchRatesType = ParaswapRatesType | CowProtocolRatesType; diff --git a/src/components/transactions/Swap/backup/validation.helpers.ts b/src/components/transactions/Swap/backup/validation.helpers.ts deleted file mode 100644 index 8337712ea5..0000000000 --- a/src/components/transactions/Swap/backup/validation.helpers.ts +++ /dev/null @@ -1 +0,0 @@ -// diff --git a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx deleted file mode 100644 index 1f842fe6f7..0000000000 --- a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx +++ /dev/null @@ -1,288 +0,0 @@ -import { ERC20Service, gasLimitRecommendations, ProtocolAction } from '@aave/contract-helpers'; -import { valueToBigNumber } from '@aave/math-utils'; -import { SignatureLike } from '@ethersproject/bytes'; -import { Trans } from '@lingui/macro'; -import { BoxProps } from '@mui/material'; -import { useQueryClient } from '@tanstack/react-query'; -import { parseUnits } from 'ethers/lib/utils'; -import { useCallback, useEffect, useMemo, useState } from 'react'; -import { MOCK_SIGNED_HASH } from 'src/helpers/useTransactionHandler'; -import { ComputedReserveData } from 'src/hooks/app-data-provider/useAppDataProvider'; -import { calculateSignedAmount, SwapTransactionParams } from 'src/hooks/paraswap/common'; -import { useModalContext } from 'src/hooks/useModal'; -import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; -import { useRootStore } from 'src/store/root'; -import { ApprovalMethod } from 'src/store/walletSlice'; -import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; -import { queryKeysFactory } from 'src/ui-config/queries'; -import { GENERAL } from 'src/utils/events'; -import { useShallow } from 'zustand/shallow'; - -import { TxActionsWrapper } from '../TxActionsWrapper'; -import { APPROVAL_GAS_LIMIT } from '../utils'; - -interface WithdrawAndSwitchProps extends BoxProps { - amountToSwap: string; - amountToReceive: string; - poolReserve: ComputedReserveData; - targetReserve: ComputedReserveData; - isWrongNetwork: boolean; - blocked: boolean; - isMaxSelected: boolean; - loading?: boolean; - buildTxFn: () => Promise; -} - -export interface WithdrawAndSwitchActionProps - extends Pick< - WithdrawAndSwitchProps, - 'amountToSwap' | 'amountToReceive' | 'poolReserve' | 'targetReserve' | 'isMaxSelected' - > { - augustus: string; - signatureParams?: SignedParams; - txCalldata: string; -} - -interface SignedParams { - signature: SignatureLike; - deadline: string; - amount: string; -} - -export const WithdrawAndSwitchActions = ({ - amountToSwap, - amountToReceive, - isWrongNetwork, - sx, - poolReserve, - targetReserve, - isMaxSelected, - loading, - blocked, - buildTxFn, -}: WithdrawAndSwitchProps) => { - const [ - withdrawAndSwitch, - currentMarketData, - jsonRpcProvider, - account, - generateApproval, - estimateGasLimit, - walletApprovalMethodPreference, - generateSignatureRequest, - addTransaction, - trackEvent, - ] = useRootStore( - useShallow((state) => [ - state.withdrawAndSwitch, - state.currentMarketData, - state.jsonRpcProvider, - state.account, - state.generateApproval, - state.estimateGasLimit, - state.walletApprovalMethodPreference, - state.generateSignatureRequest, - state.addTransaction, - state.trackEvent, - ]) - ); - const { - approvalTxState, - mainTxState, - loadingTxns, - setMainTxState, - setTxError, - setGasLimit, - setLoadingTxns, - setApprovalTxState, - } = useModalContext(); - - const { sendTx, signTxData } = useWeb3Context(); - const queryClient = useQueryClient(); - - const [approvedAmount, setApprovedAmount] = useState(undefined); - const [signatureParams, setSignatureParams] = useState(); - - const requiresApproval = useMemo(() => { - if ( - approvedAmount === undefined || - approvedAmount === -1 || - amountToSwap === '0' || - isWrongNetwork - ) - return false; - else return approvedAmount <= Number(amountToSwap); - }, [approvedAmount, amountToSwap, isWrongNetwork]); - - const useSignature = walletApprovalMethodPreference === ApprovalMethod.PERMIT; - - const action = async () => { - try { - setMainTxState({ ...mainTxState, loading: true }); - const route = await buildTxFn(); - const tx = withdrawAndSwitch({ - poolReserve, - targetReserve, - isMaxSelected, - amountToSwap: parseUnits(amountToSwap, poolReserve.decimals).toString(), - amountToReceive: parseUnits(amountToReceive, targetReserve.decimals).toString(), - augustus: route.augustus, - txCalldata: route.swapCallData, - signatureParams, - }); - const txDataWithGasEstimation = await estimateGasLimit(tx); - const response = await sendTx(txDataWithGasEstimation); - await response.wait(1); - queryClient.invalidateQueries({ queryKey: queryKeysFactory.pool }); - queryClient.invalidateQueries({ queryKey: queryKeysFactory.gho }); - setMainTxState({ - txHash: response.hash, - loading: false, - success: true, - }); - addTransaction(response.hash, { - action: ProtocolAction.withdrawAndSwitch, - txState: 'success', - asset: poolReserve.underlyingAsset, - amount: parseUnits(route.inputAmount, poolReserve.decimals).toString(), - assetName: poolReserve.name, - outAsset: targetReserve.underlyingAsset, - outAssetName: targetReserve.name, - outAmount: parseUnits(route.outputAmount, targetReserve.decimals).toString(), - amountUsd: valueToBigNumber(parseUnits(route.inputAmount, poolReserve.decimals).toString()) - .multipliedBy(poolReserve.priceInUSD) - .toString(), - outAmountUsd: valueToBigNumber( - parseUnits(route.outputAmount, targetReserve.decimals).toString() - ) - .multipliedBy(targetReserve.priceInUSD) - .toString(), - }); - } catch (error) { - const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); - setTxError(parsedError); - setMainTxState({ - txHash: undefined, - loading: false, - }); - trackEvent(GENERAL.TRANSACTION_ERROR, { - transactiontype: ProtocolAction.withdrawAndSwitch, - asset: poolReserve.underlyingAsset, - assetName: poolReserve.name, - error, - }); - } - }; - - const approval = async () => { - const amountToApprove = calculateSignedAmount(amountToSwap, poolReserve.decimals); - const approvalData = { - user: account, - token: poolReserve.aTokenAddress, - spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER || '', - amount: amountToApprove, - }; - try { - if (useSignature) { - const deadline = Math.floor(Date.now() / 1000 + 3600).toString(); - const signatureRequest = await generateSignatureRequest({ - ...approvalData, - deadline, - }); - setApprovalTxState({ ...approvalTxState, loading: true }); - const response = await signTxData(signatureRequest); - setSignatureParams({ signature: response, deadline, amount: amountToApprove }); - setApprovalTxState({ - txHash: MOCK_SIGNED_HASH, - loading: false, - success: true, - }); - } else { - const tx = generateApproval(approvalData); - const txWithGasEstimation = await estimateGasLimit(tx); - setApprovalTxState({ ...approvalTxState, loading: true }); - const response = await sendTx(txWithGasEstimation); - await response.wait(1); - setApprovalTxState({ - txHash: response.hash, - loading: false, - success: true, - }); - addTransaction(response.hash, { - action: ProtocolAction.withdrawAndSwitch, - txState: 'success', - asset: poolReserve.aTokenAddress, - amount: parseUnits(amountToApprove, poolReserve.decimals).toString(), - assetName: `a${poolReserve.symbol}`, - spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER, - }); - setTxError(undefined); - fetchApprovedAmount(poolReserve.aTokenAddress); - } - } catch (error) { - const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); - setTxError(parsedError); - if (!approvalTxState.success) { - setApprovalTxState({ - txHash: undefined, - loading: false, - }); - } - } - }; - - const fetchApprovedAmount = useCallback( - async (aTokenAddress: string) => { - setLoadingTxns(true); - const rpc = jsonRpcProvider(); - const erc20Service = new ERC20Service(rpc); - const approvedTargetAmount = await erc20Service.approvedAmount({ - user: account, - token: aTokenAddress, - spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER || '', - }); - setApprovedAmount(approvedTargetAmount); - setLoadingTxns(false); - }, - [jsonRpcProvider, account, currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER, setLoadingTxns] - ); - - useEffect(() => { - fetchApprovedAmount(poolReserve.aTokenAddress); - }, [fetchApprovedAmount, poolReserve.aTokenAddress]); - - useEffect(() => { - let switchGasLimit = 0; - switchGasLimit = Number(gasLimitRecommendations[ProtocolAction.withdrawAndSwitch].recommended); - if (requiresApproval && !approvalTxState.success) { - switchGasLimit += Number(APPROVAL_GAS_LIMIT); - } - setGasLimit(switchGasLimit.toString()); - }, [requiresApproval, approvalTxState, setGasLimit]); - - return ( - approval()} - requiresApproval={requiresApproval} - actionText={Withdraw and Switch} - actionInProgressText={Withdrawing and Switching} - sx={sx} - errorParams={{ - loading: false, - disabled: blocked || !approvalTxState?.success, - content: Withdraw and Switch, - handleClick: action, - }} - fetchingData={loading} - blocked={blocked} - tryPermit={true} - /> - ); -}; diff --git a/src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx deleted file mode 100644 index cb2e2f6240..0000000000 --- a/src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx +++ /dev/null @@ -1,368 +0,0 @@ -import { valueToBigNumber } from '@aave/math-utils'; -import { ArrowDownIcon } from '@heroicons/react/solid'; -import { Trans } from '@lingui/macro'; -import { Box, Checkbox, Stack, SvgIcon, Typography } from '@mui/material'; -import { useRef, useState } from 'react'; -import { PriceImpactTooltip } from 'src/components/infoTooltips/PriceImpactTooltip'; -import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; -import { TokenIcon } from 'src/components/primitives/TokenIcon'; -import { Warning } from 'src/components/primitives/Warning'; -import { - ComputedUserReserveData, - ExtendedFormattedUser, - useAppDataContext, -} from 'src/hooks/app-data-provider/useAppDataProvider'; -import { minimumReceivedAfterSlippage } from 'src/hooks/paraswap/common'; -import { useCollateralSwap } from 'src/hooks/paraswap/useCollateralSwap'; -import { useTokenInForTokenOut } from 'src/hooks/token-wrapper/useTokenWrapper'; -import { useModalContext } from 'src/hooks/useModal'; -import { useWrappedTokens } from 'src/hooks/useWrappedTokens'; -import { useZeroLTVBlockingWithdraw } from 'src/hooks/useZeroLTVBlockingWithdraw'; -import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; -import { ListSlippageButton } from 'src/modules/dashboard/lists/SlippageList'; -import { useRootStore } from 'src/store/root'; -import { GENERAL } from 'src/utils/events'; -import { calculateHFAfterWithdraw } from 'src/utils/hfUtils'; -import { roundToTokenDecimals } from 'src/utils/utils'; -import { useShallow } from 'zustand/shallow'; - -import { Asset, AssetInput } from '../AssetInput'; -import { GasEstimationError } from '../FlowCommons/GasEstimationError'; -import { ModalWrapperProps } from '../FlowCommons/ModalWrapper'; -import { DetailsHFLine, DetailsNumberLine, TxModalDetails } from '../FlowCommons/TxModalDetails'; -import { calculateMaxWithdrawAmount } from './utils'; -import { WithdrawAndSwitchActions } from './WithdrawAndSwitchActions'; -import { WithdrawAndSwitchTxSuccessView } from './WithdrawAndSwitchSuccess'; -import { WithdrawAndUnwrapAction } from './WithdrawAndUnwrapActions'; -import { useWithdrawError } from './WithdrawError'; - -export enum ErrorType { - CAN_NOT_WITHDRAW_THIS_AMOUNT, - POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY, - ZERO_LTV_WITHDRAW_BLOCKED, -} - -export const WithdrawAndSwitchModalContent = ({ - poolReserve, - userReserve, - symbol, - isWrongNetwork, - user, -}: ModalWrapperProps & { user: ExtendedFormattedUser }) => { - const { gasLimit, mainTxState: withdrawTxState, txError } = useModalContext(); - const { currentAccount } = useWeb3Context(); - const { reserves } = useAppDataContext(); - const wrappedTokenReserves = useWrappedTokens(); - - const [_amount, setAmount] = useState(''); - const [riskCheckboxAccepted, setRiskCheckboxAccepted] = useState(false); - const amountRef = useRef(''); - const [trackEvent, currentNetworkConfig, currentChainId] = useRootStore( - useShallow((store) => [store.trackEvent, store.currentNetworkConfig, store.currentChainId]) - ); - const [maxSlippage, setMaxSlippage] = useState('0.1'); - - let swapTargets = reserves - .filter((r) => r.underlyingAsset !== poolReserve.underlyingAsset) - .map((reserve) => ({ - address: reserve.underlyingAsset, - symbol: reserve.symbol, - iconSymbol: reserve.iconSymbol, - })); - - // TODO: if withdrawing and unwrapping, should we show that asset at the top of the list? - swapTargets = [ - ...swapTargets.filter((r) => r.symbol === 'GHO'), - ...swapTargets.filter((r) => r.symbol !== 'GHO'), - ]; - - const [targetReserve, setTargetReserve] = useState(swapTargets[0]); - - const isMaxSelected = _amount === '-1'; - - const swapTarget = user.userReservesData.find( - (r) => r.underlyingAsset === targetReserve.address - ) as ComputedUserReserveData; - - const maxAmountToWithdraw = calculateMaxWithdrawAmount(user, userReserve, poolReserve); - const underlyingBalance = valueToBigNumber(userReserve?.underlyingBalance || '0'); - - let withdrawAndUnwrap = false; - const wrappedTokenConfig = wrappedTokenReserves.find( - (config) => config.tokenOut.underlyingAsset === poolReserve.underlyingAsset - ); - if (wrappedTokenConfig) { - withdrawAndUnwrap = targetReserve.address === wrappedTokenConfig.tokenIn.underlyingAsset; - } - - const { data: unwrappedAmount, isFetching: loadingTokenInForTokenOut } = useTokenInForTokenOut( - amountRef.current, - poolReserve.decimals, - wrappedTokenConfig?.tokenWrapperAddress || '' - ); - - const { - inputAmountUSD, - inputAmount, - outputAmount, - outputAmountUSD, - error, - loading: routeLoading, - buildTxFn, - } = useCollateralSwap({ - chainId: currentNetworkConfig.underlyingChainId || currentChainId, - userAddress: currentAccount, - swapIn: { ...poolReserve, amount: amountRef.current }, - swapOut: { ...swapTarget.reserve, amount: '0' }, - max: isMaxSelected && maxAmountToWithdraw.eq(underlyingBalance), - skip: withdrawAndUnwrap || withdrawTxState.loading || false, - maxSlippage: Number(maxSlippage), - }); - - let outputUSD = outputAmountUSD; - if (withdrawAndUnwrap) { - outputUSD = valueToBigNumber(unwrappedAmount || '0') - .multipliedBy(wrappedTokenConfig?.tokenIn.priceInUSD || 0) - .toString(); - } - - const loadingSkeleton = - (routeLoading && outputAmountUSD === '0') || (withdrawAndUnwrap && loadingTokenInForTokenOut); - - const unborrowedLiquidity = valueToBigNumber(poolReserve.unborrowedLiquidity); - - const assetsBlockingWithdraw = useZeroLTVBlockingWithdraw(); - - const withdrawAmount = isMaxSelected ? maxAmountToWithdraw.toString(10) : _amount; - - const healthFactorAfterWithdraw = calculateHFAfterWithdraw({ - user, - userReserve, - poolReserve, - withdrawAmount, - }); - - const { blockingError, errorComponent } = useWithdrawError({ - assetsBlockingWithdraw, - poolReserve, - healthFactorAfterWithdraw, - withdrawAmount, - user, - }); - - const handleChange = (value: string) => { - const maxSelected = value === '-1'; - const truncatedValue = roundToTokenDecimals(value, poolReserve.decimals); - amountRef.current = maxSelected ? maxAmountToWithdraw.toString(10) : truncatedValue; - setAmount(truncatedValue); - if (maxSelected && maxAmountToWithdraw.eq(underlyingBalance)) { - trackEvent(GENERAL.MAX_INPUT_SELECTION, { type: 'withdraw' }); - } - }; - - const displayRiskCheckbox = - healthFactorAfterWithdraw.toNumber() >= 1 && - healthFactorAfterWithdraw.toNumber() < 1.5 && - userReserve.usageAsCollateralEnabledOnUser; - - // calculating input usd value - const usdValue = valueToBigNumber(withdrawAmount).multipliedBy( - userReserve?.reserve.priceInUSD || 0 - ); - - const minimumAmountReceived = minimumReceivedAfterSlippage( - outputAmount, - maxSlippage, - swapTarget.reserve.decimals - ); - - if (withdrawTxState.success) { - let amount = inputAmount; - let outAmount = minimumAmountReceived; - if (withdrawAndUnwrap) { - amount = amountRef.current; - outAmount = unwrappedAmount || '0'; - } - return ( - - ); - } - - return ( - <> - Withdraw} - value={withdrawAmount} - onChange={handleChange} - symbol={symbol} - assets={[ - { - balance: maxAmountToWithdraw.toString(10), - symbol: symbol, - iconSymbol: poolReserve.isWrappedBaseAsset - ? currentNetworkConfig.baseAssetSymbol - : poolReserve.iconSymbol, - }, - ]} - usdValue={usdValue.toString(10)} - isMaxSelected={isMaxSelected} - disabled={withdrawTxState.loading} - maxValue={maxAmountToWithdraw.toString(10)} - balanceText={ - unborrowedLiquidity.lt(underlyingBalance) ? ( - Available - ) : ( - Supply balance - ) - } - /> - - - - - - - - - - Receive (est.)} - balanceText={Supply balance} - disableInput - loading={loadingSkeleton} - /> - - {error && !loadingSkeleton && !withdrawAndUnwrap && ( - - {error} - - )} - - {blockingError !== undefined && ( - - {errorComponent} - - )} - - - Minimum amount received - - - - - - - - } - /> - ) - } - > - Remaining supply} - value={underlyingBalance.minus(withdrawAmount || '0').toString(10)} - symbol={ - poolReserve.isWrappedBaseAsset - ? currentNetworkConfig.baseAssetSymbol - : poolReserve.symbol - } - /> - - - - {txError && } - - {displayRiskCheckbox && ( - <> - - - Withdrawing this amount will reduce your health factor and increase risk of - liquidation. - - - - { - setRiskCheckboxAccepted(!riskCheckboxAccepted), - trackEvent(GENERAL.ACCEPT_RISK, { - modal: 'Withdraw', - riskCheckboxAccepted: riskCheckboxAccepted, - }); - }} - size="small" - data-cy={`risk-checkbox`} - /> - - I acknowledge the risks involved. - - - - )} - - {withdrawAndUnwrap ? ( - - ) : ( - - )} - - ); -}; diff --git a/src/components/transactions/Withdraw/WithdrawAndSwitchSuccess.tsx b/src/components/transactions/Withdraw/WithdrawAndSwitchSuccess.tsx deleted file mode 100644 index 1754ff79f7..0000000000 --- a/src/components/transactions/Withdraw/WithdrawAndSwitchSuccess.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import { ArrowRightIcon } from '@heroicons/react/outline'; -import { Trans } from '@lingui/macro'; -import { Box, SvgIcon, Typography } from '@mui/material'; -import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; -import { TokenIcon } from 'src/components/primitives/TokenIcon'; - -import { BaseSuccessView } from '../FlowCommons/BaseSuccess'; - -export type WithdrawAndSwitchTxSuccessViewProps = { - txHash?: string; - amount?: string; - symbol: string; - outAmount?: string; - outSymbol: string; -}; - -export const WithdrawAndSwitchTxSuccessView = ({ - txHash, - amount, - symbol, - outAmount, - outSymbol, -}: WithdrawAndSwitchTxSuccessViewProps) => { - return ( - - - - You've successfully withdrew & swapped tokens. - - - - - {symbol} - - - - - - {outSymbol} - - - - ); -}; diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index 7dc19e10f8..f03182f387 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -42,16 +42,18 @@ import { LPSupplyWithPermitType, } from '@aave/contract-helpers/dist/esm/v3-pool-contract/lendingPoolTypes'; import { AaveSafetyModule, AaveV3Ethereum } from '@bgd-labs/aave-address-book'; +import { BoxProps } from '@mui/material'; import { BigNumber, PopulatedTransaction, Signature, utils } from 'ethers'; import { splitSignature } from 'ethers/lib/utils'; import { ClaimRewardsActionsProps } from 'src/components/transactions/ClaimRewards/ClaimRewardsActions'; import { RewardSymbol } from 'src/components/transactions/ClaimRewards/constants'; -import { DebtSwitchActionProps } from 'src/components/transactions/DebtSwitch/DebtSwitchActions'; -import { CollateralRepayActionProps } from 'src/components/transactions/Repay/CollateralRepayActions'; +import { SignatureLike } from 'src/components/transactions/Swap/actions/approval/useSwapTokenApproval'; import { SwapActionProps } from 'src/components/transactions/Swap/helpers/paraswap'; -import { WithdrawAndSwitchActionProps } from 'src/components/transactions/Withdraw/WithdrawAndSwitchActions'; import { Approval } from 'src/helpers/useTransactionHandler'; +import { ComputedReserveData } from 'src/hooks/app-data-provider/useAppDataProvider'; +import { SwapTransactionParams } from 'src/hooks/paraswap/common'; import { FormattedReservesAndIncentives } from 'src/hooks/pool/usePoolFormattedReserves'; +import { SignedParams } from 'src/hooks/useApprovalTx'; import { customAssetDomains } from 'src/ui-config/permitConfig'; import { minBaseTokenRemainingByNetwork, optimizedPath } from 'src/utils/utils'; import { StateCreator } from 'zustand'; @@ -84,6 +86,71 @@ type GenerateSignatureRequestOpts = { chainId?: number; }; +interface DebtSwitchBaseProps extends BoxProps { + amountToSwap: string; + amountToReceive: string; + poolReserve: ComputedReserveData; + targetReserve: ComputedReserveData; + isWrongNetwork: boolean; + customGasPrice?: string; + symbol?: string; + blocked?: boolean; + isMaxSelected: boolean; + loading?: boolean; + signatureParams?: SignedParams; +} + +export interface DebtSwitchActionProps extends DebtSwitchBaseProps { + augustus: string; + txCalldata: string; +} + +interface WithdrawAndSwitchProps extends BoxProps { + amountToSwap: string; + amountToReceive: string; + poolReserve: ComputedReserveData; + targetReserve: ComputedReserveData; + isWrongNetwork: boolean; + blocked: boolean; + isMaxSelected: boolean; + loading?: boolean; + buildTxFn: () => Promise; +} + +export interface WithdrawAndSwitchActionProps + extends Pick< + WithdrawAndSwitchProps, + 'amountToSwap' | 'amountToReceive' | 'poolReserve' | 'targetReserve' | 'isMaxSelected' + > { + augustus: string; + signatureParams?: SignedParams; + txCalldata: string; +} + +interface CollateralRepayBaseProps extends BoxProps { + rateMode: InterestRate; + repayAmount: string; + repayWithAmount: string; + fromAssetData: ComputedReserveData; + poolReserve: ComputedReserveData; + isWrongNetwork: boolean; + customGasPrice?: string; + symbol: string; + repayAllDebt: boolean; + useFlashLoan: boolean; + blocked: boolean; + loading?: boolean; + signature?: SignatureLike; + signedAmount?: string; + deadline?: string; +} + +// Used in poolSlice +export interface CollateralRepayActionProps extends CollateralRepayBaseProps { + augustus: string; + swapCallData: string; +} + // TODO: add chain/provider/account mapping export interface PoolSlice { // methods From 0744de16a8f3635650c7622fa6f6e3e63ac6b83e Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Wed, 29 Oct 2025 21:44:17 -0300 Subject: [PATCH 07/66] some fixes --- .../CollateralSwapActionsViaCoWAdapters.tsx | 2 - ...llateralSwapActionsViaParaswapAdapters.tsx | 94 ++++---- .../DebtSwap/DebtSwapActionsViaCoW.tsx | 4 - .../DebtSwap/DebtSwapActionsViaParaswap.tsx | 44 ++-- .../RepayWithCollateralActionsViaParaswap.tsx | 42 ++-- .../SwapActions/SwapActionsViaParaswap.tsx | 39 +++- .../WithdrawAndSwapActionsViaParaswap.tsx | 25 +- .../actions/approval/useSwapTokenApproval.ts | 27 ++- .../Swap/details/CollateralSwapDetails.tsx | 51 ++++- .../Swap/details/CowCostsDetails.tsx | 8 +- .../Swap/details/DebtSwapDetails.tsx | 51 ++++- .../transactions/Swap/details/SwapDetails.tsx | 6 - .../transactions/Swap/errors/SwapErrors.tsx | 15 ++ .../shared/FlashLoanDisabledBlockingError.tsx | 13 ++ .../shared/FlashLoanDisabledBlockingGuard.tsx | 76 +++++++ .../Swap/helpers/cow/orders.helpers.ts | 18 +- .../Swap/helpers/paraswap/order.helpers.ts | 15 -- .../Swap/hooks/useFlowSelector.ts | 5 +- .../Swap/hooks/useSwapOrderAmounts.ts | 14 +- .../transactions/Swap/hooks/useSwapQuote.ts | 53 +++-- .../Swap/inputs/LimitOrderInputs.tsx | 10 +- .../Swap/inputs/MarketOrderInputs.tsx | 10 +- .../transactions/Swap/inputs/SwapInputs.tsx | 101 ++++++-- .../request/CollateralSwapModalContent.tsx | 14 +- .../modals/request/DebtSwapModalContent.tsx | 6 +- .../RepayWithCollateralModalContent.tsx | 13 +- .../Swap/warnings/SwapPostInputWarnings.tsx | 2 + .../postInputs/GasEstimationWarning.tsx | 25 ++ .../Swap/warnings/postInputs/index.ts | 1 + src/hooks/switch/cowprotocol.rates.ts | 215 ------------------ src/hooks/switch/paraswap.rates.ts | 54 ----- src/hooks/switch/switchProvider.helpers.ts | 50 ---- src/hooks/switch/useCowSwitchRates.ts | 59 ----- .../switch/useMultiProviderSwitchRates.ts | 136 ----------- src/hooks/useStaticRate.ts | 45 ---- src/store/poolSlice.ts | 45 +--- 36 files changed, 550 insertions(+), 838 deletions(-) create mode 100644 src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingError.tsx create mode 100644 src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx create mode 100644 src/components/transactions/Swap/warnings/postInputs/GasEstimationWarning.tsx delete mode 100644 src/hooks/switch/cowprotocol.rates.ts delete mode 100644 src/hooks/switch/paraswap.rates.ts delete mode 100644 src/hooks/switch/switchProvider.helpers.ts delete mode 100644 src/hooks/switch/useCowSwitchRates.ts delete mode 100644 src/hooks/switch/useMultiProviderSwitchRates.ts delete mode 100644 src/hooks/useStaticRate.ts diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx index c7136dbb10..4fb51cad0a 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx @@ -184,8 +184,6 @@ export const CollateralSwapActionsViaCowAdapters = ({ } ); - console.log('POST LIMIT ORDER', limitOrder, orderPostParams); - const result = await tradingSdk.postLimitOrder(limitOrder, orderPostParams.swapSettings); trackingHandlers.trackSwap(); diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx index 5507565bba..5f97e1e163 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx @@ -1,9 +1,9 @@ -import { normalizeBN } from '@aave/math-utils'; +import { normalize } from '@aave/math-utils'; import { Trans } from '@lingui/macro'; import { BigNumber, PopulatedTransaction } from 'ethers'; -import { Dispatch, useEffect } from 'react'; +import { Dispatch, useEffect, useMemo } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; -import { ExactInSwapper, ExactOutSwapper } from 'src/hooks/paraswap/common'; +import { calculateSignedAmount, ExactInSwapper, ExactOutSwapper } from 'src/hooks/paraswap/common'; import { useModalContext } from 'src/hooks/useModal'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { useRootStore } from 'src/store/root'; @@ -35,12 +35,17 @@ export const CollateralSwapActionsViaParaswapAdapters = ({ ); // Approval is aToken ERC20 Approval + const amountToApprove = useMemo(() => { + if (!state.sellAmountFormatted || !state.sellAmountToken) return '0'; + return calculateSignedAmount(state.sellAmountFormatted, state.sellAmountToken.decimals); + }, [state.sellAmountFormatted, state.sellAmountToken]); + const { requiresApproval, signatureParams, approval, tryPermit, approvedAmount } = useSwapTokenApproval({ chainId: state.chainId, token: state.sourceToken.addressToSwap, // aToken symbol: state.sourceToken.symbol, - amount: normalizeBN(state.inputAmount, -state.sourceToken.decimals).toString(), + amount: normalize(amountToApprove.toString(), state.sourceToken?.decimals ?? 18), decimals: state.sourceToken.decimals, spender: currentMarketData.addresses.SWAP_COLLATERAL_ADAPTER, setState, @@ -72,9 +77,6 @@ export const CollateralSwapActionsViaParaswapAdapters = ({ if (state.side === 'sell') { const swapper = ExactInSwapper(state.chainId); - console.log('SWAPPER getTransactionParams'); - console.log('maxSlippage', Number(state.slippage)); - const result = await swapper.getTransactionParams( state.sourceToken.underlyingAddress, state.sourceToken.decimals, @@ -84,20 +86,10 @@ export const CollateralSwapActionsViaParaswapAdapters = ({ optimalRateData, Number(state.slippage) ); - console.log('SWAPPER getTransactionParams result', result); swapCallData = result.swapCallData; augustus = result.augustus; } else { const swapper = ExactOutSwapper(state.chainId); - console.log('optimalRateData', optimalRateData, { - srcToken: state.destinationToken.underlyingAddress, - srcDecimals: state.destinationToken.decimals, - destToken: state.sourceToken.underlyingAddress, - destDecimals: state.sourceToken.decimals, - user: state.user, - maxSlippage: Number(state.slippage), - optimalRateData: optimalRateData, - }); const result = await swapper.getTransactionParams( state.destinationToken.underlyingAddress, @@ -119,30 +111,6 @@ export const CollateralSwapActionsViaParaswapAdapters = ({ const amountToSwap = state.inputAmount; const amountToReceive = state.buyAmountFormatted || '0'; - console.log('!! CollateralSwapActionsViaParaswapAdapters', { - amountToSwap: amountToSwap, - amountToReceive: amountToReceive, - signedAmount, - }); - - console.log('Partner using app code', optimalRateData.partner); - - console.log({ - amountToSwap: amountToSwap, - amountToReceive: amountToReceive, - poolReserve: state.sourceReserve.reserve, - targetReserve: state.destinationReserve.reserve, - isWrongNetwork: state.isWrongNetwork, - symbol: state.sourceToken.symbol, - blocked: state.actionsBlocked, - isMaxSelected: isMaxSelected, - useFlashLoan: true, - swapCallData: swapCallData, - signature: signatureParams?.splitedSignature, - deadline: signatureParams?.deadline, - signedAmount, - }); - let response; try { // 2. Prepare Tx @@ -178,7 +146,6 @@ export const CollateralSwapActionsViaParaswapAdapters = ({ }; // 3. Estimate gas limit and send tx - console.log('populatedTx', populatedTx); const txWithGasEstimation = await estimateGasLimit(populatedTx, state.chainId); response = await sendTx(txWithGasEstimation); await response.wait(1); @@ -200,18 +167,43 @@ export const CollateralSwapActionsViaParaswapAdapters = ({ }); } catch (error) { const parsedError = getErrorTextFromError(error, TxAction.MAIN_ACTION, false); - setTxError(parsedError); + + // Check if this is a gas estimation error (from estimateGasLimit call) + // Gas estimation errors typically occur when estimateGasLimit fails + const errorMessage = parsedError.rawError?.message?.toLowerCase() || ''; + const isGasEstimationError = + errorMessage.includes('gas') || + errorMessage.includes('estimation') || + (errorMessage.includes('execution reverted') && errorMessage.includes('estimation')); + + // For gas estimation errors in Paraswap actions, show as warning instead of blocking error + if (isGasEstimationError) { + setState({ + actionsLoading: false, + warnings: [ + { + message: + 'Gas estimation error: The swap could not be estimated. Try increasing slippage or changing the amount.', + }, + ], + error: undefined, // Clear any existing errors + }); + } else { + // For other errors, handle normally + setTxError(parsedError); + setState({ + actionsLoading: false, + error: { + rawError: parsedError.rawError, + message: `Error: ${parsedError.error} on ${parsedError.txAction}`, + actionBlocked: parsedError.actionBlocked, + }, + }); + } + setMainTxState({ loading: false, }); - setState({ - actionsLoading: false, - error: { - rawError: parsedError.rawError, - message: `Error: ${parsedError.error} on ${parsedError.txAction}`, - actionBlocked: parsedError.actionBlocked, - }, - }); } }; diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index a510b83a8b..9ee6c118a8 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -199,10 +199,6 @@ export const DebtSwapActionsViaCoW = ({ } ); - console.log('precalculatedInstanceAddress', precalculatedInstanceAddress); - console.log('orderPostParams', orderPostParams); - - console.log('limitOrder', limitOrder); const result = await tradingSdk.postLimitOrder(limitOrder, orderPostParams.swapSettings); trackingHandlers.trackSwap(); diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx index 8119650a8c..a80331527c 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx @@ -53,13 +53,13 @@ export const DebtSwapActionsViaParaswap = ({ const amountToSwap = maxInputAmountWithSlippage( state.buyAmountFormatted ?? '0', (Number(state.slippage) * 100).toString(), - state.destinationReserve.reserve.decimals || 18 + state.buyAmountToken?.decimals || 18 ); const maxNewDebtAmountToReceiveWithSlippage = maxInputAmountWithSlippage( - state.outputAmount, + state.sellAmountFormatted ?? '0', (Number(state.slippage) * 100).toString(), - state.destinationReserve.reserve.decimals || 18 + state.sellAmountToken?.decimals || 18 ); const { requiresApproval, approval, tryPermit, signatureParams } = useSwapTokenApproval({ @@ -111,15 +111,8 @@ export const DebtSwapActionsViaParaswap = ({ Number(state.slippage) ); - // Transaction sent to Paraswap Adapter - const amountToReceiveForDebtSwitch = parseUnits( - maxNewDebtAmountToReceiveWithSlippage, - state.sourceReserve.reserve.decimals - ).toString(); - const amountToSwapForDebtSwitch = parseUnits( - amountToSwap, - state.destinationReserve.reserve.decimals - ).toString(); + const amountToReceiveForDebtSwitch = state.buyAmountBigInt?.toString() ?? '0'; + const amountToSwapForDebtSwitch = state.sellAmountBigInt?.toString() ?? '0'; let debtSwitchTxData = debtSwitch({ poolReserve: state.sourceReserve.reserve, @@ -130,7 +123,7 @@ export const DebtSwapActionsViaParaswap = ({ txCalldata: swapCallData, augustus: augustus, signatureParams: { - signature: signatureParams.splitedSignature, + signature: signatureParams.signature, deadline: signatureParams.deadline, amount: signatureParams.amount, }, @@ -170,10 +163,27 @@ export const DebtSwapActionsViaParaswap = ({ } catch (error) { console.error('error', error); const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); - setTxError(parsedError); - setState({ - actionsLoading: false, - }); + + // For gas estimation errors in Paraswap actions, show as warning instead of blocking error + if (parsedError.txAction === TxAction.GAS_ESTIMATION) { + setState({ + actionsLoading: false, + warnings: [ + { + message: + 'Gas estimation error: The swap could not be estimated. Try increasing slippage or changing the amount.', + }, + ], + error: undefined, // Clear any existing errors + }); + } else { + // For other errors, handle normally + setTxError(parsedError); + setState({ + actionsLoading: false, + }); + } + setMainTxState({ txHash: undefined, loading: false, diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx index dbf84d774c..ce2c422e04 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx @@ -148,26 +148,6 @@ export const RepayWithCollateralActionsViaParaswap = ({ Number(state.slippage) ); - console.log('paraswapRepayWithCollateral', { - repayAllDebt, - repayAmount, - rateMode: params.interestMode, - repayWithAmount, - - fromAssetData: state.destinationReserve.reserve, - poolReserve: state.sourceReserve.reserve, - - symbol: state.sourceReserve.reserve.symbol, - isWrongNetwork: state.isWrongNetwork, - useFlashLoan: state.useFlashloan || false, - blocked: state.actionsBlocked, - swapCallData, - augustus, - signature: signatureParams?.splitedSignature, - deadline: signatureParams?.deadline, - signedAmount: approvedAmount, - }); - const txs = await paraswapRepayWithCollateral({ repayAllDebt, repayAmount, @@ -215,7 +195,27 @@ export const RepayWithCollateralActionsViaParaswap = ({ }); } catch (error) { const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); - setTxError(parsedError); + + // For gas estimation errors in Paraswap actions, show as warning instead of blocking error + if (parsedError.txAction === TxAction.GAS_ESTIMATION) { + setState({ + actionsLoading: false, + warnings: [ + { + message: + 'Gas estimation error: The swap could not be estimated. Try increasing slippage or changing the amount.', + }, + ], + error: undefined, // Clear any existing errors + }); + } else { + // For other errors, handle normally + setTxError(parsedError); + setState({ + actionsLoading: false, + }); + } + setMainTxState({ loading: false, }); diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx index 55ddef0f59..08e4fe0fba 100644 --- a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx @@ -9,6 +9,7 @@ import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; import { useShallow } from 'zustand/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; +import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; import { isParaswapRates, SwapParams, SwapState } from '../../types'; import { useSwapTokenApproval } from '../approval/useSwapTokenApproval'; @@ -66,6 +67,8 @@ export const SwapActionsViaParaswap = ({ setMainTxState({ ...mainTxState, loading: true }); if (isParaswapRates(state.swapRate)) { try { + const appCode = APP_CODE_PER_SWAP_TYPE[params.swapType]; + // Normal switch using paraswap const tx = await fetchParaswapTxParams({ srcToken: state.sourceToken.addressToSwap, @@ -77,7 +80,7 @@ export const SwapActionsViaParaswap = ({ maxSlippage: Number(slippageInPercent) * 10000, permit: signatureParams && signatureParams.signature, deadline: signatureParams && signatureParams.deadline, - partner: 'aave-widget', // TODO: Check with paraswap team if we can change it + partner: appCode, }); tx.chainId = state.chainId; const txWithGasEstimation = await estimateGasLimit(tx, state.chainId); @@ -102,6 +105,7 @@ export const SwapActionsViaParaswap = ({ params.invalidateAppState(); trackingHandlers.trackSwap(); } catch (error) { + // This is for transaction waiting errors, not gas estimation, so handle normally const parsedError = getErrorTextFromError(error, TxAction.MAIN_ACTION, false); setTxError(parsedError); setMainTxState({ @@ -123,14 +127,39 @@ export const SwapActionsViaParaswap = ({ } } catch (error) { const parsedError = getErrorTextFromError(error, TxAction.MAIN_ACTION, false); - setTxError(parsedError); + + // Check if this is a gas estimation error (from estimateGasLimit call) + // Gas estimation errors typically occur when estimateGasLimit fails + const errorMessage = parsedError.rawError?.message?.toLowerCase() || ''; + const isGasEstimationError = + errorMessage.includes('gas') || + errorMessage.includes('estimation') || + (errorMessage.includes('execution reverted') && errorMessage.includes('estimation')); + + // For gas estimation errors in Paraswap actions, show as warning instead of blocking error + if (isGasEstimationError) { + setState({ + actionsLoading: false, + warnings: [ + { + message: + 'Gas estimation error: The swap could not be estimated. Try increasing slippage or changing the amount.', + }, + ], + error: undefined, // Clear any existing errors + }); + } else { + // For other errors, handle normally + setTxError(parsedError); + setState({ + actionsLoading: false, + }); + } + setMainTxState({ txHash: undefined, loading: false, }); - setState({ - actionsLoading: false, - }); } } else { setTxError( diff --git a/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx index 2821683514..73a396c774 100644 --- a/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx @@ -175,14 +175,31 @@ export const WithdrawAndSwapActionsViaParaswap = ({ }); } catch (error) { const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); - setTxError(parsedError); + + // For gas estimation errors in Paraswap actions, show as warning instead of blocking error + if (parsedError.txAction === TxAction.GAS_ESTIMATION) { + setState({ + actionsLoading: false, + warnings: [ + { + message: + 'Gas estimation error: The swap could not be estimated. Try increasing slippage or changing the amount.', + }, + ], + error: undefined, // Clear any existing errors + }); + } else { + // For other errors, handle normally + setTxError(parsedError); + setState({ + actionsLoading: false, + }); + } + setMainTxState({ txHash: undefined, loading: false, }); - setState({ - actionsLoading: false, - }); trackingHandlers.trackSwapFailed(); } }; diff --git a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts index dd9a216618..5ebf90ff88 100644 --- a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts +++ b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts @@ -309,18 +309,21 @@ export const useSwapTokenApproval = ({ setApprovalTxState({ ...approvalTxState, loading: true }); const response = await signTxData(signatureRequest); const splitedSignature = splitSignature(response); - const encodedSignature = defaultAbiCoder.encode( - ['address', 'address', 'uint256', 'uint256', 'uint8', 'bytes32', 'bytes32'], - [ - approvalData.user, - approvalData.spender, - approvalData.amount, - deadline, - splitedSignature.v, - splitedSignature.r, - splitedSignature.s, - ] - ); + const encodedSignature = + type === 'delegation' + ? response.toString() + : defaultAbiCoder.encode( + ['address', 'address', 'uint256', 'uint256', 'uint8', 'bytes32', 'bytes32'], + [ + approvalData.user, + approvalData.spender, + approvalData.amount, + deadline, + splitedSignature.v, + splitedSignature.r, + splitedSignature.s, + ] + ); const newSignatureParams = { signature: encodedSignature, splitedSignature, diff --git a/src/components/transactions/Swap/details/CollateralSwapDetails.tsx b/src/components/transactions/Swap/details/CollateralSwapDetails.tsx index 9baeb22ee6..b2f835b062 100644 --- a/src/components/transactions/Swap/details/CollateralSwapDetails.tsx +++ b/src/components/transactions/Swap/details/CollateralSwapDetails.tsx @@ -1,8 +1,9 @@ import { valueToBigNumber } from '@aave/math-utils'; import { ArrowNarrowRightIcon } from '@heroicons/react/outline'; import { Trans } from '@lingui/macro'; -import { Box, Skeleton, SvgIcon } from '@mui/material'; +import { Box, Skeleton, SvgIcon, Typography } from '@mui/material'; import React from 'react'; +import { DarkTooltip } from 'src/components/infoTooltips/DarkTooltip'; import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; import { Row } from 'src/components/primitives/Row'; import { TokenIcon } from 'src/components/primitives/TokenIcon'; @@ -217,11 +218,25 @@ export const ColalteralSwapDetails = ({ state }: { params: SwapParams; state: Sw symbol={userReserve.reserve.iconSymbol} sx={{ mr: 2, ml: 4, fontSize: '16px' }} /> - + + {sourceAmountAfterSwap.toString()} {userReserve.reserve.symbol} + + } + arrow + placement="top" + enterTouchDelay={100} + leaveTouchDelay={500} + > + + + + - + + {targetAmountAfterSwap.toString()} {userTargetReserve.reserve.symbol} + + } + arrow + placement="top" + enterTouchDelay={100} + leaveTouchDelay={500} + > + + + + { state.buyAmountToken?.decimals ?? 18 ); - partnerFeeUsd = Number(partnerFeeFormatted) * state.swapRate.srcTokenPriceUsd; + const buyAmountTokenPriceUsd = valueToBigNumber(state.buyAmountUSD ?? '0') + .dividedBy(valueToBigNumber(state.buyAmountFormatted?.toString() ?? '0')) + .toNumber(); + + partnerFeeUsd = Number(partnerFeeFormatted) * buyAmountTokenPriceUsd; partnerFeeToken = state.buyAmountToken; } diff --git a/src/components/transactions/Swap/details/DebtSwapDetails.tsx b/src/components/transactions/Swap/details/DebtSwapDetails.tsx index 158a81369f..0cbb516140 100644 --- a/src/components/transactions/Swap/details/DebtSwapDetails.tsx +++ b/src/components/transactions/Swap/details/DebtSwapDetails.tsx @@ -1,8 +1,9 @@ import { valueToBigNumber } from '@aave/math-utils'; import { ArrowNarrowRightIcon } from '@heroicons/react/solid'; import { Trans } from '@lingui/macro'; -import { Box, Skeleton, SvgIcon } from '@mui/material'; +import { Box, Skeleton, SvgIcon, Typography } from '@mui/material'; import React from 'react'; +import { DarkTooltip } from 'src/components/infoTooltips/DarkTooltip'; import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; import { Row } from 'src/components/primitives/Row'; import { TokenIcon } from 'src/components/primitives/TokenIcon'; @@ -104,11 +105,25 @@ export const DebtSwapDetails = ({ symbol={state.sourceReserve.reserve.iconSymbol} sx={{ mr: 2, ml: 4, fontSize: '16px' }} /> - + + {sourceAmountAfterSwap.toString()} {state.sourceReserve.reserve.symbol} + + } + arrow + placement="top" + enterTouchDelay={100} + leaveTouchDelay={500} + > + + + + - + + {targetAmountAfterSwap.toString()} {state.destinationReserve.reserve.symbol} + + } + arrow + placement="top" + enterTouchDelay={100} + leaveTouchDelay={500} + > + + + + + ); + } + if (!state.error) { return null; } diff --git a/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingError.tsx b/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingError.tsx new file mode 100644 index 0000000000..9764a06b74 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingError.tsx @@ -0,0 +1,13 @@ +import { Trans } from '@lingui/macro'; +import { SxProps, Typography } from '@mui/material'; +import { Warning } from 'src/components/primitives/Warning'; + +export const FlashLoanDisabledBlockingError = ({ sx }: { sx?: SxProps }) => { + return ( + + + Position swaps are disabled for this asset due to security reasons. + + + ); +}; diff --git a/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx b/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx new file mode 100644 index 0000000000..81b92cc3e2 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/FlashLoanDisabledBlockingGuard.tsx @@ -0,0 +1,76 @@ +import { SxProps } from '@mui/material'; +import { Dispatch, useEffect } from 'react'; + +import { SwapError, SwapProvider, SwapState } from '../../types'; +import { isProtocolSwapState, ProtocolSwapState } from '../../types/state.types'; +import { FlashLoanDisabledBlockingError } from './FlashLoanDisabledBlockingError'; + +export const hasFlashLoanDisabled = (state: SwapState): boolean => { + if (!isProtocolSwapState(state)) { + return false; + } + + // Check if provider is Paraswap, using flashloan, and sourceReserve exists + if ( + state.provider === SwapProvider.PARASWAP && + state.useFlashloan === true && + state.sourceReserve?.reserve && + !state.sourceReserve.reserve.flashLoanEnabled + ) { + return true; + } + + return false; +}; + +export const FlashLoanDisabledBlockingGuard = ({ + state, + setState, + sx, + isSwapFlowSelected, +}: { + state: ProtocolSwapState; + setState: Dispatch>; + sx?: SxProps; + isSwapFlowSelected: boolean; +}) => { + useEffect(() => { + const isBlocking = hasFlashLoanDisabled(state); + + if (isBlocking) { + const isAlreadyBlockingError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'FlashLoanDisabledError'; + + if (!isAlreadyBlockingError || !state.actionsBlocked) { + const blockingError: SwapError = { + rawError: new Error('FlashLoanDisabledError'), + message: 'Position Swaps disabled for this asset', + actionBlocked: true, + }; + setState({ error: blockingError, actionsBlocked: true }); + } + } else { + const isBlockingError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'FlashLoanDisabledError'; + if (isBlockingError) { + setState({ error: undefined, actionsBlocked: false }); + } else if (state.actionsBlocked && !state.error?.actionBlocked) { + setState({ actionsBlocked: false }); + } + } + }, [ + state.provider, + state.useFlashloan, + state.sourceReserve?.reserve?.flashLoanEnabled, + state.error, + state.actionsBlocked, + ]); + + if (hasFlashLoanDisabled(state)) { + return ; + } + + return null; +}; diff --git a/src/components/transactions/Swap/helpers/cow/orders.helpers.ts b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts index a6fa6f89d9..58ee646518 100644 --- a/src/components/transactions/Swap/helpers/cow/orders.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts @@ -191,27 +191,17 @@ export const sendOrder = async ({ throw new Error('Smart contract wallets should use presign.'); } - console.log({ - signatureParams, - estimateGasLimit, - tokenSrc, - }); - const permitHook = signatureParams && estimateGasLimit ? await getPermitHook({ tokenAddress: tokenSrc, signatureParams, estimateGasLimit, chainId }) : undefined; - console.log('permitHook', permitHook); - const hooks = permitHook ? { pre: [permitHook], } : undefined; - console.log('hooks', hooks); - const appData = COW_APP_DATA( inputSymbol, outputSymbol, @@ -239,15 +229,13 @@ export const sendOrder = async ({ }, { appData, + additionalParams: { + applyQuoteAdjustments: false, + }, } ) .then((orderResult) => orderResult.orderId); } else { - console.log({ - sellAmount, - buyAmount, - }); - return orderBookQuote .postSwapOrderFromQuote({ appData, diff --git a/src/components/transactions/Swap/helpers/paraswap/order.helpers.ts b/src/components/transactions/Swap/helpers/paraswap/order.helpers.ts index 94aa043dbb..25e3fa0b4e 100644 --- a/src/components/transactions/Swap/helpers/paraswap/order.helpers.ts +++ b/src/components/transactions/Swap/helpers/paraswap/order.helpers.ts @@ -19,22 +19,7 @@ export const getTransactionParams = async ( ) => { const { paraswap, feeTarget } = getParaswap(chainId); - console.log('route', route); try { - console.log('buildTx', { - srcToken, - destToken, - ...(kind === 'buy' ? { destAmount: route.destAmount } : { srcAmount: route.srcAmount }), - priceRoute: route, - userAddress: user, - partnerAddress: feeTarget, - takeSurplus: true, - slippage: maxSlippage * 100, - srcDecimals, - destDecimals, - isDirectFeeTransfer: true, - }); - const params = await paraswap.buildTx( { srcToken, diff --git a/src/components/transactions/Swap/hooks/useFlowSelector.ts b/src/components/transactions/Swap/hooks/useFlowSelector.ts index 2f66f67c26..84c3fce592 100644 --- a/src/components/transactions/Swap/hooks/useFlowSelector.ts +++ b/src/components/transactions/Swap/hooks/useFlowSelector.ts @@ -11,7 +11,7 @@ import { LIQUIDATION_DANGER_THRESHOLD, LIQUIDATION_SAFETY_THRESHOLD, } from '../constants/shared.constants'; -import { isProtocolSwapState, SwapParams, SwapState, SwapType } from '../types'; +import { isProtocolSwapState, SwapParams, SwapProvider, SwapState, SwapType } from '../types'; /** * React hook that decides the execution flow (simple vs flashloan) and @@ -129,7 +129,8 @@ export const healthFactorSensibleSwapFlowSelector = ({ : false; const forceFlashloanFlow = - state.swapType === SwapType.RepayWithCollateral || state.swapType === SwapType.DebtSwap; + state.provider === SwapProvider.COW_PROTOCOL && + (state.swapType === SwapType.RepayWithCollateral || state.swapType === SwapType.DebtSwap); const useFlashloan = forceFlashloanFlow || (extendedUser?.healthFactor !== '-1' && diff --git a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts index 367bce0211..2353912e88 100644 --- a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts +++ b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts @@ -3,7 +3,7 @@ import { OrderKind } from '@cowprotocol/cow-sdk'; import { Dispatch, useEffect } from 'react'; import { COW_PARTNER_FEE } from '../constants/cow.constants'; -import { OrderType, SwapParams, SwapState, SwapType } from '../types'; +import { OrderType, SwapParams, SwapProvider, SwapState, SwapType } from '../types'; import { swapTypesThatRequiresInvertedQuote } from './useSwapQuote'; const marketOrderKindPerSwapType: Record = { @@ -50,11 +50,14 @@ export const useSwapOrderAmounts = ({ sellAmountToken, buyTokenPriceUsd, sellTokenPriceUsd; - const partnetFee = COW_PARTNER_FEE(state.sourceToken.symbol, state.destinationToken.symbol); + const partnetFeeBps = + state.provider === SwapProvider.COW_PROTOCOL + ? COW_PARTNER_FEE(state.sourceToken.symbol, state.destinationToken.symbol).volumeBps + : 0; const partnerFeeAmount = state.side === 'sell' - ? valueToBigNumber(state.outputAmount).multipliedBy(partnetFee.volumeBps).dividedBy(10000) - : valueToBigNumber(state.inputAmount).multipliedBy(partnetFee.volumeBps).dividedBy(10000); + ? valueToBigNumber(state.outputAmount).multipliedBy(partnetFeeBps).dividedBy(10000) + : valueToBigNumber(state.inputAmount).multipliedBy(partnetFeeBps).dividedBy(10000); // const partnerFeeToken = state.side === 'sell' ? state.destinationToken : state.sourceToken; if (!isInvertedSwap) { @@ -133,7 +136,7 @@ export const useSwapOrderAmounts = ({ } else { buyAmountFormatted = state.inputAmount.toString(); - const sellAmountAfterPartnerFees = valueToBigNumber(state.inputAmount).plus( + const sellAmountAfterPartnerFees = valueToBigNumber(state.outputAmount).plus( partnerFeeAmount ); const sellAmountAfterSlippage = valueToBigNumber(sellAmountAfterPartnerFees).multipliedBy( @@ -178,6 +181,7 @@ export const useSwapOrderAmounts = ({ const sellAmountBigInt = BigInt( normalizeBN(sellAmountFormatted, -sellAmountToken.decimals).toFixed(0) ); + const buyAmountBigInt = BigInt( normalizeBN(buyAmountFormatted, -buyAmountToken.decimals).toFixed(0) ); diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index a6d300296a..176e12b946 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -99,23 +99,30 @@ export const useSwapQuote = ({ state: SwapState; setState: Dispatch>; }) => { - const provider = useMemo( - () => - getSwitchProvider({ - chainId: state.chainId, - assetFrom: state.sourceToken.addressToSwap, - assetTo: state.destinationToken.addressToSwap, - swapType: params.swapType, - shouldUseFlashloan: state.useFlashloan, - }), - [ - state.chainId, - state.sourceToken.addressToSwap, - state.destinationToken.addressToSwap, - params.swapType, - state.useFlashloan, - ] - ); + // Once transaction succeeds, lock the provider to prevent recalculation + // (useFlashloan or other dependencies might change after invalidateAppState) + const provider = useMemo(() => { + // If transaction already succeeded, use the existing provider from state + if (state.mainTxState.success && state.provider !== SwapProvider.NONE) { + return state.provider; + } + // Otherwise, calculate provider based on current state + return getSwitchProvider({ + chainId: state.chainId, + assetFrom: state.sourceToken.addressToSwap, + assetTo: state.destinationToken.addressToSwap, + swapType: params.swapType, + shouldUseFlashloan: state.useFlashloan, + }); + }, [ + state.mainTxState.success, + state.provider, + state.chainId, + state.sourceToken.addressToSwap, + state.destinationToken.addressToSwap, + params.swapType, + state.useFlashloan, + ]); const requiresQuoteInverted = useMemo( () => swapTypesThatRequiresInvertedQuote.includes(params.swapType), @@ -359,7 +366,7 @@ const useMultiProviderSwapQuoteQuery = ({ side, appCode, options: { - partner: 'aave-widget', // TODO: Check with paraswap team if we can change it + partner: appCode, }, invertedQuoteRoute: requiresQuoteInverted, }); @@ -382,12 +389,20 @@ const useMultiProviderSwapQuoteQuery = ({ amount != 'NaN' && amount !== '0' && !state.mainTxState.success && + !state.mainTxState.txHash && // Don't fetch quotes once transaction is sent + !state.mainTxState.loading && // Don't fetch quotes while transaction is processing provider !== SwapProvider.NONE && !state.quoteRefreshPaused, retry: 0, throwOnError: false, refetchOnWindowFocus: (query) => (query.state.error ? false : true), refetchInterval: - !state.actionsLoading && !state.quoteRefreshPaused ? QUOTE_REFETCH_INTERVAL : false, // 30 seconds, but pause during action execution or when paused + !state.actionsLoading && + !state.quoteRefreshPaused && + !state.mainTxState.success && + !state.mainTxState.txHash && // Stop refetching once transaction is sent + !state.mainTxState.loading // Stop refetching while transaction is processing + ? QUOTE_REFETCH_INTERVAL + : false, }); }; diff --git a/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx b/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx index 57365d76cc..b2deb83b1f 100644 --- a/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx +++ b/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx @@ -3,7 +3,7 @@ import { Box, IconButton, SvgIcon } from '@mui/material'; import { Dispatch } from 'react'; import { QUOTE_REFETCH_INTERVAL } from '../hooks/useSwapQuote'; -import { Expiry, SwapParams, SwapState } from '../types'; +import { Expiry, SwapParams, SwapProvider, SwapState } from '../types'; import { SwitchAssetInput } from './primitives/SwapAssetInput'; import { ExpirySelector } from './shared/ExpirySelector'; import { NetworkSelector } from './shared/NetworkSelector'; @@ -93,11 +93,11 @@ export const LimitOrderInputs = ({ {!state.quoteRefreshPaused && ( {!state.quoteRefreshPaused && ( {!state.quoteRefreshPaused && ( )} @@ -128,11 +128,11 @@ export const MarketOrderInputs = ({ {!state.quoteRefreshPaused && ( )} diff --git a/src/components/transactions/Swap/inputs/SwapInputs.tsx b/src/components/transactions/Swap/inputs/SwapInputs.tsx index 3f650d3a3a..3462ed0b6d 100644 --- a/src/components/transactions/Swap/inputs/SwapInputs.tsx +++ b/src/components/transactions/Swap/inputs/SwapInputs.tsx @@ -74,6 +74,10 @@ export const SwapInputs = ({ if (value === '-1') { // Max Selected setState({ + quoteRefreshPaused: false, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, inputAmount: state.sourceToken.balance, debouncedInputAmount: state.sourceToken.balance, isMaxSelected: true, @@ -81,6 +85,10 @@ export const SwapInputs = ({ }); } else { setState({ + quoteRefreshPaused: false, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, inputAmount: value, debouncedInputAmount: value, isMaxSelected: value === state.forcedMaxValue, @@ -100,6 +108,10 @@ export const SwapInputs = ({ if (value === '-1') { setState({ + quoteRefreshPaused: false, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, outputAmount: state.destinationToken.balance, debouncedOutputAmount: state.destinationToken.balance, isMaxSelected: true, @@ -107,6 +119,10 @@ export const SwapInputs = ({ }); } else { setState({ + quoteRefreshPaused: false, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, outputAmount: value, debouncedOutputAmount: value, isMaxSelected: false, @@ -135,6 +151,10 @@ export const SwapInputs = ({ } setState({ + quoteRefreshPaused: false, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, outputAmount: newOutputAmount, debouncedOutputAmount: newOutputAmount, isMaxSelected: false, @@ -153,6 +173,10 @@ export const SwapInputs = ({ : '0'; setState({ + quoteRefreshPaused: false, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, sourceToken: toToken, destinationToken: fromToken, inputAmount: '', @@ -215,7 +239,6 @@ export const SwapInputs = ({ }; const handleSelectedInputToken = (token: SwappableToken) => { - console.log('handleSelectedInputToken', token); if (!state.sourceTokens?.find((t) => t.addressToSwap === token.addressToSwap)) { addNewToken(token).then(() => { setState({ @@ -365,31 +388,64 @@ export const SwapInputs = ({ }; }, [params.sourceTokens, params.destinationTokens]); + // Helper to check if two tokens are the same (by addressToSwap, underlyingAddress, or symbol) + const areTokensEqual = ( + token1: SwappableToken | undefined, + token2: SwappableToken | undefined + ): boolean => { + if (!token1 || !token2) return false; + return ( + token1.addressToSwap.toLowerCase() === token2.addressToSwap.toLowerCase() || + token1.underlyingAddress.toLowerCase() === token2.underlyingAddress.toLowerCase() || + token1.symbol === token2.symbol + ); + }; + // Update selected tokens when defaults change (e.g., after network change) useEffect(() => { + const saved = loadTokenSelection(); + + let inputToken: SwappableToken | undefined; + let outputToken: SwappableToken | undefined; + + // Determine input token first (prioritize forced, then saved if valid, else fallback) if (params.forcedInputToken) { - setState({ sourceToken: params.forcedInputToken }); - } else { - // If saved use it - const saved = loadTokenSelection(); - if (saved?.inputToken) { - setState({ sourceToken: saved.inputToken }); + inputToken = params.forcedInputToken; + } else if (saved?.inputToken) { + // Only use saved input token if it doesn't match the intended output + const intendedOutput = params.forcedOutputToken || saved.outputToken || fallbackOutputToken; + if (!areTokensEqual(saved.inputToken, intendedOutput)) { + inputToken = saved.inputToken; } else { - setState({ sourceToken: fallbackInputToken }); + inputToken = fallbackInputToken; } + } else { + inputToken = fallbackInputToken; } + // Determine output token (prioritize forced, then saved if valid, else fallback) if (params.forcedOutputToken) { - setState({ destinationToken: params.forcedOutputToken }); - } else { - // If saved use it - const saved = loadTokenSelection(); - if (saved?.outputToken) { - setState({ destinationToken: saved.outputToken }); + outputToken = params.forcedOutputToken; + } else if (saved?.outputToken) { + // Only use saved output token if it doesn't match the input token + if (!areTokensEqual(saved.outputToken, inputToken)) { + outputToken = saved.outputToken; } else { - setState({ destinationToken: fallbackOutputToken }); + outputToken = fallbackOutputToken; } + } else { + outputToken = fallbackOutputToken; + } + + // Final safety check: if input and output tokens still match, reset output to fallback + if (areTokensEqual(inputToken, outputToken)) { + outputToken = fallbackOutputToken; } + + setState({ + sourceToken: inputToken ?? fallbackInputToken, + destinationToken: outputToken ?? fallbackOutputToken, + }); }, [ params.forcedInputToken, params.forcedOutputToken, @@ -437,7 +493,12 @@ export const SwapInputs = ({ () => state.sourceTokens.filter( (token) => - token.addressToSwap !== state.destinationToken.addressToSwap && + // Filter out tokens that match the destination token by addressToSwap OR underlyingAddress + // This prevents the same asset from appearing in both lists (e.g., USDT in CollateralSwap) + token.addressToSwap.toLowerCase() !== + state.destinationToken.addressToSwap.toLowerCase() && + token.underlyingAddress.toLowerCase() !== + state.destinationToken.underlyingAddress.toLowerCase() && Number(token.balance) !== 0 && // Remove native tokens for non-Safe smart contract wallets !( @@ -464,6 +525,7 @@ export const SwapInputs = ({ [ state.sourceTokens, state.destinationToken.addressToSwap, + state.destinationToken.underlyingAddress, state.destinationToken.tokenType, state.userIsSmartContractWallet, state.userIsSafeWallet, @@ -475,7 +537,11 @@ export const SwapInputs = ({ () => state.destinationTokens.filter( (token) => - token.addressToSwap !== state.sourceToken.addressToSwap && + // Filter out tokens that match the source token by addressToSwap OR underlyingAddress + // This prevents the same asset from appearing in both lists (e.g., USDT in CollateralSwap) + token.addressToSwap.toLowerCase() !== state.sourceToken.addressToSwap.toLowerCase() && + token.underlyingAddress.toLowerCase() !== + state.sourceToken.underlyingAddress.toLowerCase() && // Avoid wrapping !( state.sourceToken.tokenType === TokenType.NATIVE && @@ -495,6 +561,7 @@ export const SwapInputs = ({ [ state.destinationTokens, state.sourceToken.addressToSwap, + state.sourceToken.underlyingAddress, state.sourceToken.tokenType, state.chainId, ] diff --git a/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx b/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx index 66b3f255ea..ded751b3f1 100644 --- a/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx @@ -90,7 +90,13 @@ const getDefaultOutputToken = ( defaultInputToken: SwappableToken | undefined ) => { const tokensWithoutInputToken = tokensTo.filter( - (token) => token.addressToSwap !== defaultInputToken?.addressToSwap + (token) => + // Filter out tokens that match by addressToSwap OR underlyingAddress OR symbol + // This prevents the same asset from appearing in both lists (triple check for robustness) + token.addressToSwap.toLowerCase() !== defaultInputToken?.addressToSwap.toLowerCase() && + token.underlyingAddress.toLowerCase() !== + defaultInputToken?.underlyingAddress.toLowerCase() && + token.symbol !== defaultInputToken?.symbol ); // 1. Highest balance @@ -101,9 +107,11 @@ const getDefaultOutputToken = ( return highestBalanceToken[0]; } - // 2. USDT or USDC or AAVE + // 2. USDT or USDC or AAVE (but not the input token) const usdtOrUsdcOrAaveToken = tokensWithoutInputToken.filter( - (token) => token.symbol === 'USDT' || token.symbol === 'USDC' || token.symbol === 'AAVE' + (token) => + (token.symbol === 'USDT' || token.symbol === 'USDC' || token.symbol === 'AAVE') && + token.symbol !== defaultInputToken?.symbol ); if (usdtOrUsdcOrAaveToken.length > 0) { return usdtOrUsdcOrAaveToken[0]; diff --git a/src/components/transactions/Swap/modals/request/DebtSwapModalContent.tsx b/src/components/transactions/Swap/modals/request/DebtSwapModalContent.tsx index f660506c5c..85f551259b 100644 --- a/src/components/transactions/Swap/modals/request/DebtSwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/DebtSwapModalContent.tsx @@ -213,7 +213,11 @@ const getDefaultOutputToken = ( ) => { return tokens.find( (token) => - token.addressToSwap !== defaultInputToken?.addressToSwap && + // Filter out tokens that match by addressToSwap OR underlyingAddress + // This prevents the same asset from appearing in both lists + token.addressToSwap.toLowerCase() !== defaultInputToken?.addressToSwap.toLowerCase() && + token.underlyingAddress.toLowerCase() !== + defaultInputToken?.underlyingAddress.toLowerCase() && token.symbol !== defaultInputToken?.symbol ); }; diff --git a/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx b/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx index 05573fa355..08f5913589 100644 --- a/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx @@ -47,8 +47,17 @@ export const RepayWithCollateralModalContent = ({ (token) => token.underlyingAddress.toLowerCase() === underlyingAsset?.toLowerCase() ); - // Collateral with highest balance - const defaultOutputToken = tokensTo.sort((a, b) => Number(b.balance) - Number(a.balance))[0]; + // Collateral with highest balance, excluding the input token + const tokensWithoutInputToken = tokensTo.filter( + (token) => + // Filter out tokens that match by addressToSwap OR underlyingAddress + // This prevents the same asset from appearing in both lists + token.addressToSwap.toLowerCase() !== defaultInputToken?.addressToSwap.toLowerCase() && + token.underlyingAddress.toLowerCase() !== defaultInputToken?.underlyingAddress.toLowerCase() + ); + const defaultOutputToken = tokensWithoutInputToken.sort( + (a, b) => Number(b.balance) - Number(a.balance) + )[0]; const queryClient = useQueryClient(); const invalidateAppState = () => { diff --git a/src/components/transactions/Swap/warnings/SwapPostInputWarnings.tsx b/src/components/transactions/Swap/warnings/SwapPostInputWarnings.tsx index 15f729bbdc..0b6aa35bf0 100644 --- a/src/components/transactions/Swap/warnings/SwapPostInputWarnings.tsx +++ b/src/components/transactions/Swap/warnings/SwapPostInputWarnings.tsx @@ -4,6 +4,7 @@ import React, { Dispatch } from 'react'; import { SwapParams, SwapState } from '../types'; import { CustomTokenWarning, + GasEstimationWarning, HighPriceImpactWarning, LimitOrderAmountWarning, LiquidationCriticalWarning, @@ -30,6 +31,7 @@ export const SwapPostInputWarnings = ({ return ( + diff --git a/src/components/transactions/Swap/warnings/postInputs/GasEstimationWarning.tsx b/src/components/transactions/Swap/warnings/postInputs/GasEstimationWarning.tsx new file mode 100644 index 0000000000..285d993a39 --- /dev/null +++ b/src/components/transactions/Swap/warnings/postInputs/GasEstimationWarning.tsx @@ -0,0 +1,25 @@ +import { Trans } from '@lingui/macro'; +import { Typography } from '@mui/material'; +import { Warning } from 'src/components/primitives/Warning'; + +import { SwapState } from '../../types'; + +export function GasEstimationWarning({ state }: { state: SwapState }) { + // Check if there's a gas estimation warning in the warnings array + const hasGasEstimationWarning = state.warnings.some( + (warning) => + warning.message.includes('Gas estimation') || warning.message.includes('gas estimation') + ); + + if (!hasGasEstimationWarning) return null; + + return ( + + + + The swap could not be completed. Try increasing slippage or changing the amount. + + + + ); +} diff --git a/src/components/transactions/Swap/warnings/postInputs/index.ts b/src/components/transactions/Swap/warnings/postInputs/index.ts index 525b207e71..ef20f8f303 100644 --- a/src/components/transactions/Swap/warnings/postInputs/index.ts +++ b/src/components/transactions/Swap/warnings/postInputs/index.ts @@ -1,4 +1,5 @@ export * from './CustomTokenWarning'; +export * from './GasEstimationWarning'; export * from './HighPriceImpactWarning'; export * from './LimitOrderAmountWarning'; export * from './LiquidationCriticalWarning'; diff --git a/src/hooks/switch/cowprotocol.rates.ts b/src/hooks/switch/cowprotocol.rates.ts deleted file mode 100644 index 8c7186983a..0000000000 --- a/src/hooks/switch/cowprotocol.rates.ts +++ /dev/null @@ -1,215 +0,0 @@ -// import { ChainId } from '@aave/contract-helpers'; -// import { -// OrderKind, -// QuoteAndPost, -// TradingSdk, -// WRAPPED_NATIVE_CURRENCIES, -// } from '@cowprotocol/cow-sdk'; -// import { BigNumber } from 'bignumber.js'; -// import { getCowAdapter } from 'src/components/transactions/Swap/helpers/cow'; -// import { -// COW_PARTNER_FEE, -// isNativeToken, -// } from 'src/components/transactions/Switch/cowprotocol/cowprotocol.helpers'; -// import { isChainIdSupportedByCoWProtocol } from 'src/components/transactions/Switch/switch.constants'; -// import { -// CowProtocolRatesType, -// ProviderRatesParams, -// } from 'src/components/transactions/Switch/switch.types'; -// import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; -// import { CoWProtocolPricesService } from 'src/services/CoWProtocolPricesService'; -// import { FamilyPricesService } from 'src/services/FamilyPricesService'; -// import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; -// import { wagmiConfig } from 'src/ui-config/wagmiConfig'; -// import { getNetworkConfig } from 'src/utils/marketsAndNetworksConfig'; - -// export const getTokenUsdPrice = async ( -// chainId: number, -// tokenAddress: string, -// isTokenCustom: boolean, -// isMainnet: boolean -// ) => { -// const cowProtocolPricesService = new CoWProtocolPricesService(); -// const familyPricesService = new FamilyPricesService(); - -// try { -// let price; - -// if (!isTokenCustom && isMainnet) { -// price = await familyPricesService.getTokenUsdPrice(chainId, tokenAddress); -// } - -// if (price) { -// return price; -// } - -// return await cowProtocolPricesService.getTokenUsdPrice(chainId, tokenAddress); -// } catch (familyError) { -// console.error(familyError); -// return undefined; -// } -// }; - -// export async function getCowProtocolSellRates({ -// chainId, -// amount, -// srcToken, -// srcDecimals, -// destToken, -// destDecimals, -// user, -// inputSymbol, -// outputSymbol, -// setError, -// isInputTokenCustom, -// isOutputTokenCustom, -// appCode, -// }: ProviderRatesParams): Promise { -// const tradingSdk = new TradingSdk({ chainId }, {}, await getCowAdapter(chainId)); - -// let orderBookQuote: QuoteAndPost | undefined; -// let srcTokenPriceUsd: string | undefined; -// let destTokenPriceUsd: string | undefined; -// try { -// if (!isChainIdSupportedByCoWProtocol(chainId)) { -// throw new Error('Chain not supported by CowProtocol'); -// } - -// // If srcToken is native, we need to use the wrapped token for the quote -// let srcTokenWrapped = srcToken; -// if (isNativeToken(srcToken)) { -// srcTokenWrapped = WRAPPED_NATIVE_CURRENCIES[chainId as SupportedChainId].address; -// } - -// let destTokenWrapped = destToken; -// if (isNativeToken(destToken)) { -// destTokenWrapped = WRAPPED_NATIVE_CURRENCIES[chainId].address; -// } - -// const provider = await getEthersProvider(wagmiConfig, { chainId }); -// const signer = provider?.getSigner(); -// const isMainnet = -// !getNetworkConfig(chainId as unknown as ChainId).isTestnet && -// !getNetworkConfig(chainId as unknown as ChainId).isFork; - -// if (!inputSymbol || !outputSymbol) { -// throw new Error('No input or output symbol provided'); -// } - -// [orderBookQuote, srcTokenPriceUsd, destTokenPriceUsd] = await Promise.all([ -// tradingSdk -// .getQuote({ -// owner: user as `0x${string}`, -// kind: OrderKind.SELL, -// amount, -// sellToken: srcTokenWrapped, -// sellTokenDecimals: srcDecimals, -// buyToken: destTokenWrapped, -// buyTokenDecimals: destDecimals, -// signer, -// appCode: appCode, -// partnerFee: COW_PARTNER_FEE(inputSymbol, outputSymbol), -// }) -// .catch((cowError) => { -// console.error(cowError); -// throw new Error(cowError?.body?.errorType); -// }), -// getTokenUsdPrice(chainId, srcTokenWrapped, isInputTokenCustom ?? false, isMainnet), -// getTokenUsdPrice(chainId, destTokenWrapped, isOutputTokenCustom ?? false, isMainnet), -// ]); - -// if (!srcTokenPriceUsd || !destTokenPriceUsd) { -// console.error('No price found for token'); -// const error = getErrorTextFromError( -// new Error('No price found for token, please try another token'), -// TxAction.MAIN_ACTION, -// true -// ); -// setError?.(error); -// console.error(error); -// throw new Error('No price found for token, please try another token'); -// } -// } catch (error) { -// console.error('generate error', error); -// setError?.({ -// error: error, -// blocking: true, -// actionBlocked: true, -// rawError: error, -// txAction: TxAction.MAIN_ACTION, -// }); - -// throw error; -// } - -// const srcAmountInUsd = BigNumber(srcTokenPriceUsd).multipliedBy( -// BigNumber(amount).dividedBy(10 ** srcDecimals) -// ); -// const destAmountInUsd = BigNumber(destTokenPriceUsd).multipliedBy( -// BigNumber( -// orderBookQuote.quoteResults.amountsAndCosts.afterPartnerFees.buyAmount.toString() -// ).dividedBy(10 ** destDecimals) -// ); - -// const destSpotInUsd = BigNumber(destTokenPriceUsd) -// .multipliedBy( -// BigNumber(orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.buyAmount.toString()) -// ) -// .dividedBy(10 ** destDecimals); - -// if (!orderBookQuote.quoteResults.suggestedSlippageBps) { -// console.error('No suggested slippage found'); -// const error = getErrorTextFromError( -// new Error('No suggested slippage found'), -// TxAction.MAIN_ACTION, -// true -// ); -// setError?.(error); -// console.error(error); -// throw new Error('No suggested slippage found'); -// } - -// if (!orderBookQuote.quoteResults.amountsAndCosts.afterPartnerFees.buyAmount) { -// console.error('No buy amount found'); -// const error = getErrorTextFromError( -// new Error('No buy amount found'), -// TxAction.MAIN_ACTION, -// true -// ); -// setError?.(error); -// console.error(error); -// throw new Error('No buy amount found'); -// } - -// let suggestedSlippage = (orderBookQuote.quoteResults.suggestedSlippageBps ?? 100) / 100; // E.g. 100 bps -> 1% 100 / 100 = 1 - -// if (isNativeToken(srcToken)) { -// // Recommended by CoW for potential reimbursments -// if (chainId == 1 && suggestedSlippage < 2) { -// suggestedSlippage = 2; -// } else if (chainId != 1 && suggestedSlippage < 0.5) { -// suggestedSlippage = 0.5; -// } -// } - -// return { -// srcToken, -// srcUSD: srcAmountInUsd.toString(), -// srcAmount: amount, -// srcDecimals, -// destToken, -// destSpot: orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.buyAmount.toString(), -// destSpotInUsd: destSpotInUsd.toString(), -// destUSD: destAmountInUsd.toString(), -// destAmount: orderBookQuote.quoteResults.amountsAndCosts.afterPartnerFees.buyAmount.toString(), -// destDecimals, -// orderBookQuote, -// provider: 'cowprotocol', -// order: orderBookQuote.quoteResults.orderToSign, -// quoteId: orderBookQuote.quoteResults.quoteResponse.id, -// suggestedSlippage, -// amountAndCosts: orderBookQuote.quoteResults.amountsAndCosts, -// srcTokenPriceUsd: Number(srcTokenPriceUsd), -// destTokenPriceUsd: Number(destTokenPriceUsd), -// }; -// } diff --git a/src/hooks/switch/paraswap.rates.ts b/src/hooks/switch/paraswap.rates.ts deleted file mode 100644 index 2eb6990e41..0000000000 --- a/src/hooks/switch/paraswap.rates.ts +++ /dev/null @@ -1,54 +0,0 @@ -// import { OptimalRate, SwapSide } from '@paraswap/sdk'; -// import { constants } from 'ethers'; -// import { -// ParaswapRatesType, -// ProviderRatesParams, -// } from 'src/components/transactions/Switch/switch.types'; - -// import { getParaswap } from '../paraswap/common'; - -// export async function getParaswapSellRates({ -// chainId, -// amount, -// srcToken, -// srcDecimals, -// destToken, -// destDecimals, -// user, -// options = {}, -// }: ProviderRatesParams): Promise { -// const { paraswap } = getParaswap(chainId); -// return paraswap -// .getRate({ -// amount, -// srcToken, -// srcDecimals, -// destToken, -// destDecimals, -// userAddress: user ? user : constants.AddressZero, -// side: SwapSide.SELL, -// options: { -// ...options, -// excludeDEXS: [ -// 'ParaSwapPool', -// 'ParaSwapLimitOrders', -// 'SwaapV2', -// 'Hashflow', -// 'Dexalot', -// 'Bebop', -// ], -// }, -// }) -// .then((paraSwapResponse: OptimalRate) => ({ -// srcToken, -// srcUSD: paraSwapResponse.srcUSD, -// srcAmount: paraSwapResponse.srcAmount, -// srcDecimals, -// destToken, -// destUSD: paraSwapResponse.destUSD, -// destAmount: paraSwapResponse.destAmount, -// destDecimals, -// provider: 'paraswap', -// optimalRateData: paraSwapResponse, -// })); -// } diff --git a/src/hooks/switch/switchProvider.helpers.ts b/src/hooks/switch/switchProvider.helpers.ts deleted file mode 100644 index c5626e4e88..0000000000 --- a/src/hooks/switch/switchProvider.helpers.ts +++ /dev/null @@ -1,50 +0,0 @@ -// import { COW_UNSUPPORTED_ASSETS } from 'src/components/transactions/Switch/cowprotocol/cowprotocol.constants'; -// import { isChainIdSupportedByCoWProtocol } from 'src/components/transactions/Switch/switch.constants'; -// import { SwitchProvider } from 'src/components/transactions/Switch/switch.types'; -// import { ModalType } from 'src/hooks/useModal'; - -// export const isSwapSupportedByCowProtocol = ( -// chainId: number, -// assetFrom: string, -// assetTo: string, -// modalType: ModalType -// ) => { -// if (!isChainIdSupportedByCoWProtocol(chainId)) return false; - -// const unsupportedAssetsPerChainAndModalType = -// COW_UNSUPPORTED_ASSETS[modalType] && COW_UNSUPPORTED_ASSETS[modalType][chainId]; - -// if (unsupportedAssetsPerChainAndModalType === undefined) return true; // No unsupported assets for this chain and modal type - -// if (unsupportedAssetsPerChainAndModalType === 'ALL') return false; // All assets are unsupported - -// if ( -// unsupportedAssetsPerChainAndModalType.includes(assetFrom.toLowerCase()) || -// unsupportedAssetsPerChainAndModalType.includes(assetTo.toLowerCase()) -// ) -// return false; - -// return true; -// }; - -// export const getSwitchProvider = ({ -// chainId, -// assetFrom, -// assetTo, -// shouldUseFlashloan, -// modalType, -// }: { -// chainId: number; -// assetFrom: string; -// assetTo: string; -// shouldUseFlashloan?: boolean; -// modalType: ModalType; -// }): SwitchProvider | undefined => { -// if (shouldUseFlashloan) return 'paraswap'; - -// if (isSwapSupportedByCowProtocol(chainId, assetFrom, assetTo, modalType)) { -// return 'cowprotocol'; -// } - -// return 'paraswap'; -// }; diff --git a/src/hooks/switch/useCowSwitchRates.ts b/src/hooks/switch/useCowSwitchRates.ts deleted file mode 100644 index c02701b86a..0000000000 --- a/src/hooks/switch/useCowSwitchRates.ts +++ /dev/null @@ -1,59 +0,0 @@ -// import { useQuery } from '@tanstack/react-query'; -// import { HEADER_WIDGET_APP_CODE } from 'src/components/transactions/Switch/cowprotocol/cowprotocol.helpers'; -// import { -// CowProtocolRatesType, -// MultiProviderRatesParams, -// } from 'src/components/transactions/Switch/switch.types'; -// import { queryKeysFactory } from 'src/ui-config/queries'; - -// import { getCowProtocolSellRates } from './cowprotocol.rates'; - -// export const useCowSwitchRates = ({ -// chainId, -// amount, -// srcUnderlyingToken, -// destUnderlyingToken, -// user, -// inputSymbol, -// isInputTokenCustom, -// isOutputTokenCustom, -// outputSymbol, -// srcDecimals, -// destDecimals, -// isTxSuccess, -// isExecutingActions = false, -// }: MultiProviderRatesParams & { -// isTxSuccess?: boolean; -// isExecutingActions?: boolean; -// }) => { -// return useQuery({ -// queryFn: async () => { -// return await getCowProtocolSellRates({ -// chainId, -// amount, -// srcToken: srcUnderlyingToken, -// destToken: destUnderlyingToken, -// user, -// srcDecimals, -// destDecimals, -// inputSymbol, -// outputSymbol, -// isInputTokenCustom, -// isOutputTokenCustom, -// appCode: HEADER_WIDGET_APP_CODE, -// }); -// }, -// queryKey: queryKeysFactory.cowProtocolRates( -// chainId, -// amount, -// srcUnderlyingToken, -// destUnderlyingToken, -// user -// ), -// enabled: amount !== '0' && !isTxSuccess, -// retry: 0, -// throwOnError: false, -// refetchOnWindowFocus: (query) => (query.state.error ? false : true), -// refetchInterval: !isExecutingActions ? 30000 : false, // 30 seconds, but pause during action execution -// }); -// }; diff --git a/src/hooks/switch/useMultiProviderSwitchRates.ts b/src/hooks/switch/useMultiProviderSwitchRates.ts deleted file mode 100644 index fa9f53aecf..0000000000 --- a/src/hooks/switch/useMultiProviderSwitchRates.ts +++ /dev/null @@ -1,136 +0,0 @@ -// import { useQuery } from '@tanstack/react-query'; -// import { useMemo } from 'react'; -// import { -// ADAPTER_APP_CODE, -// HEADER_WIDGET_APP_CODE, -// } from 'src/components/transactions/Switch/cowprotocol/cowprotocol.helpers'; -// import { -// MultiProviderRatesParams, -// SwitchRatesType, -// } from 'src/components/transactions/Switch/switch.types'; -// import { queryKeysFactory } from 'src/ui-config/queries'; - -// import { ModalType } from '../useModal'; -// import { getCowProtocolSellRates } from './cowprotocol.rates'; -// import { getParaswapSellRates } from './paraswap.rates'; -// import { getSwitchProvider } from './switchProvider.helpers'; - -// export const useMultiProviderSwitchRates = ({ -// chainId, -// amount, -// srcUnderlyingToken, -// srcAToken, -// destUnderlyingToken, -// destAToken, -// user, -// inputSymbol, -// isInputTokenCustom, -// isOutputTokenCustom, -// outputSymbol, -// srcDecimals, -// destDecimals, -// isTxSuccess, -// shouldUseFlashloan = false, -// isExecutingActions = false, -// modalType, -// }: MultiProviderRatesParams & { -// isTxSuccess?: boolean; -// shouldUseFlashloan?: boolean; -// isExecutingActions?: boolean; -// modalType: ModalType; -// }) => { -// const provider = useMemo( -// () => -// getSwitchProvider({ -// chainId, -// assetFrom: srcAToken ?? srcUnderlyingToken, -// assetTo: destAToken ?? destUnderlyingToken, -// modalType: modalType, -// shouldUseFlashloan, -// }), -// [ -// chainId, -// srcAToken, -// srcUnderlyingToken, -// destAToken, -// destUnderlyingToken, -// modalType, -// shouldUseFlashloan, -// ] -// ); - -// const srcToken = useMemo(() => { -// return modalType === ModalType.CollateralSwap -// ? shouldUseFlashloan === true || provider === 'paraswap' -// ? srcUnderlyingToken -// : srcAToken ?? srcUnderlyingToken -// : srcUnderlyingToken; -// }, [srcAToken, srcUnderlyingToken, provider, modalType, shouldUseFlashloan]); - -// const destToken = useMemo(() => { -// return modalType === ModalType.CollateralSwap -// ? shouldUseFlashloan === true || provider === 'paraswap' -// ? destUnderlyingToken -// : destAToken ?? destUnderlyingToken -// : destUnderlyingToken; -// }, [destAToken, destUnderlyingToken, provider, modalType, shouldUseFlashloan]); - -// const appCode = -// modalType === ModalType.CollateralSwap ? ADAPTER_APP_CODE : HEADER_WIDGET_APP_CODE; - -// return useQuery({ -// queryFn: async () => { -// if (!provider) { -// throw new Error('No swap provider found in the selected chain for this pair'); -// } - -// if (srcToken === destToken) { -// throw new Error('Source and destination tokens cannot be the same'); -// } - -// switch (provider) { -// case 'cowprotocol': -// return await getCowProtocolSellRates({ -// chainId, -// amount, -// srcToken, -// destToken, -// user, -// srcDecimals, -// destDecimals, -// inputSymbol, -// outputSymbol, -// isInputTokenCustom, -// isOutputTokenCustom, -// appCode, -// }); -// case 'paraswap': -// return await getParaswapSellRates({ -// chainId, -// amount, -// srcToken, -// destToken, -// user, -// srcDecimals, -// destDecimals, -// options: { -// partner: 'aave-widget', -// }, -// }); -// } -// }, -// queryKey: queryKeysFactory.cowProtocolRates( -// chainId, -// amount, -// srcToken, -// destToken, -// user, -// appCode -// ), -// enabled: amount !== '0' && !isTxSuccess, -// retry: 0, -// throwOnError: false, -// refetchOnWindowFocus: (query) => (query.state.error ? false : true), -// refetchInterval: provider === 'cowprotocol' && !isExecutingActions ? 30000 : false, // 30 seconds, but pause during action execution -// }); -// }; diff --git a/src/hooks/useStaticRate.ts b/src/hooks/useStaticRate.ts deleted file mode 100644 index 613b33fd16..0000000000 --- a/src/hooks/useStaticRate.ts +++ /dev/null @@ -1,45 +0,0 @@ -// import { useQuery } from '@tanstack/react-query'; -// import { TokenInfo } from 'src/ui-config/TokenList'; - -// import { getTokenUsdPrice } from './switch/cowprotocol.rates'; - -// interface Args { -// chainId: number; -// inputToken: TokenInfo; -// outputToken: TokenInfo; -// } - -// export interface StaticRate { -// inputUsdPrice: string; -// outputUsdPrice: string; -// rate: string; -// } - -// export const useStaticRate = ({ chainId, inputToken, outputToken }: Args) => { -// return useQuery({ -// queryKey: ['staticRate', chainId, inputToken.address, outputToken.address], -// queryFn: async () => { -// const inputUsdPricePromise = getTokenUsdPrice( -// chainId, -// inputToken.address, -// Boolean(inputToken.extensions?.isUserCustom), -// true -// ); -// const outputUsdPricePromise = getTokenUsdPrice( -// chainId, -// outputToken.address, -// Boolean(outputToken.extensions?.isUserCustom), -// true -// ); -// const [inputUsdPrice, outputUsdPrice] = await Promise.all([ -// inputUsdPricePromise, -// outputUsdPricePromise, -// ]); -// if (!inputUsdPrice || !outputUsdPrice) { -// return { inputUsdPrice: '0', outputUsdPrice: '0', rate: '0' }; -// } -// const rate = (Number(inputUsdPrice) / Number(outputUsdPrice)).toString(); -// return { inputUsdPrice, outputUsdPrice, rate }; -// }, -// }); -// }; diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index f03182f387..a2d0f410f5 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -400,6 +400,7 @@ export const createPoolSlice: StateCreator< s: sig.s, }; } + return pool.paraswapRepayWithCollateral({ user, fromAsset: fromAssetData.underlyingAsset, @@ -501,34 +502,6 @@ export const createPoolSlice: StateCreator< }; } try { - console.log('debtSwitchTxData', { - user, - debtAssetUnderlying: poolReserve.underlyingAsset, - debtRepayAmount: isMaxSelected ? MAX_UINT_AMOUNT : amountToSwap, - debtRateMode: 2, // variable - newAssetUnderlying: targetReserve.underlyingAsset, - newAssetDebtToken: targetReserve.variableDebtTokenAddress, - maxNewDebtAmount: amountToReceive, - extraCollateralAmount: '0', - extraCollateralAsset: '0x0000000000000000000000000000000000000000', - repayAll: isMaxSelected, - txCalldata, - augustus, - creditDelegationPermit: { - deadline: signatureDeconstruct.deadline, - value: signatureDeconstruct.amount, - v: signatureDeconstruct.v, - r: signatureDeconstruct.r, - s: signatureDeconstruct.s, - }, - collateralPermit: { - deadline: '0', - value: '0', - v: 0, - r: '0x0000000000000000000000000000000000000000000000000000000000000000', - s: '0x0000000000000000000000000000000000000000000000000000000000000000', - }, - }); const a = debtSwitchService.debtSwitch({ user, debtAssetUnderlying: poolReserve.underlyingAsset, @@ -558,10 +531,8 @@ export const createPoolSlice: StateCreator< }, }); - console.log('a', a); return a; } catch (e) { - console.log('error!!!!!!!', e); console.error(e); throw e; } @@ -677,20 +648,6 @@ export const createPoolSlice: StateCreator< }; } - console.log('swapCollateral', { - fromAsset: poolReserve.underlyingAsset, - toAsset: targetReserve.underlyingAsset, - swapAll: isMaxSelected, - fromAToken: poolReserve.aTokenAddress, - fromAmount: amountToSwap, - minToAmount: amountToReceive, - user, - flash: useFlashLoan, - augustus, - swapCallData, - permitSignature, - }); - return pool.swapCollateral({ fromAsset: poolReserve.underlyingAsset, toAsset: targetReserve.underlyingAsset, From 5e2fba129693637efbd5a6fb02e799c0487169ba Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Thu, 30 Oct 2025 14:32:30 -0300 Subject: [PATCH 08/66] safe check for nonce reuse in permits, fix for network fee --- .../FlowCommons/PermitNonceInfo.tsx | 32 +++ .../FlowCommons/RightHelperText.tsx | 16 +- .../CollateralSwapActionsViaCoWAdapters.tsx | 18 +- .../DebtSwap/DebtSwapActionsViaCoW.tsx | 9 +- .../RepayWithCollateralActionsViaCoW.tsx | 9 +- .../actions/SwapActions/SwapActionsViaCoW.tsx | 11 +- .../Swap/helpers/cow/orders.helpers.ts | 238 ++---------------- .../Swap/hooks/useSwapOrderAmounts.ts | 82 +++++- .../transactions/TxActionsWrapper.tsx | 8 +- src/hooks/useCowOrderToast.tsx | 48 ++++ 10 files changed, 239 insertions(+), 232 deletions(-) create mode 100644 src/components/transactions/FlowCommons/PermitNonceInfo.tsx diff --git a/src/components/transactions/FlowCommons/PermitNonceInfo.tsx b/src/components/transactions/FlowCommons/PermitNonceInfo.tsx new file mode 100644 index 0000000000..358680be90 --- /dev/null +++ b/src/components/transactions/FlowCommons/PermitNonceInfo.tsx @@ -0,0 +1,32 @@ +import { Trans } from '@lingui/macro'; +import { Tooltip, Typography } from '@mui/material'; + +export const PermitNonceInfo = () => { + return ( + + There is an active order for the same sell asset (avoid nonce reuse). + + } + placement="left" + arrow + > + + Approval by signature not available + + + ); +}; diff --git a/src/components/transactions/FlowCommons/RightHelperText.tsx b/src/components/transactions/FlowCommons/RightHelperText.tsx index e401d04e65..64518dab3a 100644 --- a/src/components/transactions/FlowCommons/RightHelperText.tsx +++ b/src/components/transactions/FlowCommons/RightHelperText.tsx @@ -9,9 +9,12 @@ import { useRootStore } from 'src/store/root'; import { ApprovalMethod } from 'src/store/walletSlice'; import { useShallow } from 'zustand/shallow'; +import { PermitNonceInfo } from './PermitNonceInfo'; + export type RightHelperTextProps = { approvalHash?: string; tryPermit?: boolean; + permitInUse?: boolean; }; const ExtLinkIcon = () => ( @@ -20,7 +23,11 @@ const ExtLinkIcon = () => ( ); -export const RightHelperText = ({ approvalHash, tryPermit }: RightHelperTextProps) => { +export const RightHelperText = ({ + approvalHash, + tryPermit, + permitInUse = false, +}: RightHelperTextProps) => { const [ account, walletApprovalMethodPreference, @@ -61,6 +68,13 @@ export const RightHelperText = ({ approvalHash, tryPermit }: RightHelperTextProp /> ); + // When permit use is disabled by the flow, inform the user why + if (!tryPermit && permitInUse) + return ( + + + + ); if (approvalHash && !usingPermit) return ( debt asset + * 4) Post order with adapter-provided swap settings; adapter orchestrates the swap + */ export const CollateralSwapActionsViaCowAdapters = ({ state, setState, @@ -83,6 +93,11 @@ export const CollateralSwapActionsViaCowAdapters = ({ return calculateSignedAmount(state.sellAmountFormatted, state.sellAmountToken.decimals); }, [state.sellAmountFormatted, state.sellAmountToken]); + const { hasActiveOrderForSellToken } = useCowOrderToast(); + const sellAssetAddress = + state.sellAmountToken?.underlyingAddress || state.sourceToken.addressToSwap; + const disablePermitDueToActiveOrder = hasActiveOrderForSellToken(state.chainId, sellAssetAddress); + const { requiresApproval, approval, tryPermit, signatureParams } = useSwapTokenApproval({ chainId: state.chainId, token: state.sourceToken.addressToSwap, @@ -91,7 +106,7 @@ export const CollateralSwapActionsViaCowAdapters = ({ decimals: state.sourceToken.decimals, spender: precalculatedInstanceAddress, setState, - allowPermit: true, // CoW Adapters do support permit + allowPermit: !disablePermitDueToActiveOrder, // CoW Adapters do support permit but avoid nonce reuse }); // Use centralized gas estimation @@ -253,6 +268,7 @@ export const CollateralSwapActionsViaCowAdapters = ({ fetchingData={state.actionsLoading} blocked={state.actionsBlocked || !precalculatedInstanceAddress} tryPermit={tryPermit} + permitInUse={disablePermitDueToActiveOrder} /> ); }; diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index 9ee6c118a8..1242ea349b 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -5,6 +5,7 @@ import { Trans } from '@lingui/macro'; import { Dispatch, useEffect, useMemo, useState } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; import { calculateSignedAmount } from 'src/hooks/paraswap/common'; +import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; import { useModalContext } from 'src/hooks/useModal'; import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; @@ -93,6 +94,11 @@ export const DebtSwapActionsViaCoW = ({ return calculateSignedAmount(state.sellAmountFormatted, state.sellAmountToken.decimals); }, [state.sellAmountFormatted, state.sellAmountToken]); + const { hasActiveOrderForSellToken } = useCowOrderToast(); + const sellAssetAddress = + state.sellAmountToken?.underlyingAddress || state.sourceToken.addressToSwap; + const disablePermitDueToActiveOrder = hasActiveOrderForSellToken(state.chainId, sellAssetAddress); + // Approval is to the destination token via delegation Approval const { requiresApproval, approval, tryPermit, signatureParams } = useSwapTokenApproval({ chainId: state.chainId, @@ -104,7 +110,7 @@ export const DebtSwapActionsViaCoW = ({ decimals: state.destinationToken.decimals, spender: precalculatedInstanceAddress, setState, - allowPermit: true, // CoW Adapters do support permit + allowPermit: !disablePermitDueToActiveOrder, // avoid nonce reuse if active order present type: 'delegation', // Debt swap uses delegation }); @@ -268,6 +274,7 @@ export const DebtSwapActionsViaCoW = ({ fetchingData={state.actionsLoading} blocked={state.actionsBlocked || !precalculatedInstanceAddress} tryPermit={tryPermit} + permitInUse={disablePermitDueToActiveOrder} /> ); }; diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx index 71c99cd7be..05bbeea220 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -5,6 +5,7 @@ import { Trans } from '@lingui/macro'; import { Dispatch, useEffect, useMemo, useState } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; import { calculateSignedAmount } from 'src/hooks/paraswap/common'; +import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; import { useModalContext } from 'src/hooks/useModal'; import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; @@ -95,6 +96,11 @@ export const RepayWithCollateralActionsViaCoW = ({ return calculateSignedAmount(state.sellAmountFormatted, state.sellAmountToken.decimals); }, [state.sellAmountFormatted, state.sellAmountToken]); + const { hasActiveOrderForSellToken } = useCowOrderToast(); + const sellAssetAddress = + state.sellAmountToken?.underlyingAddress || state.sourceToken.addressToSwap; + const disablePermitDueToActiveOrder = hasActiveOrderForSellToken(state.chainId, sellAssetAddress); + // Approval is aToken ERC20 Approval const { requiresApproval, approval, tryPermit, signatureParams } = useSwapTokenApproval({ chainId: state.chainId, @@ -104,7 +110,7 @@ export const RepayWithCollateralActionsViaCoW = ({ decimals: state.destinationToken.decimals, spender: precalculatedInstanceAddress, setState, - allowPermit: true, // CoW Adapters do support permit + allowPermit: !disablePermitDueToActiveOrder, // avoid nonce reuse if active order present }); // Use centralized gas estimation @@ -273,6 +279,7 @@ export const RepayWithCollateralActionsViaCoW = ({ fetchingData={state.actionsLoading} blocked={state.actionsBlocked || !precalculatedInstanceAddress} tryPermit={tryPermit} + permitInUse={disablePermitDueToActiveOrder} /> ); }; diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx index b619ea0201..18a88cb92e 100644 --- a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx @@ -10,6 +10,7 @@ import stringify from 'json-stringify-deterministic'; import { Dispatch } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; import { isSmartContractWallet } from 'src/helpers/provider'; +import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; import { useModalContext } from 'src/hooks/useModal'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; @@ -65,6 +66,13 @@ export const SwapActionsViaCoW = ({ const { mainTxState, loadingTxns, setMainTxState, setTxError, approvalTxState } = useModalContext(); + const { hasActiveOrderForSellToken } = useCowOrderToast(); + + const disablePermitDueToActiveOrder = hasActiveOrderForSellToken( + state.chainId, + state.sourceToken.addressToSwap + ); + const { requiresApproval, requiresApprovalReset, approval, tryPermit, signatureParams } = useSwapTokenApproval({ chainId: state.chainId, @@ -76,7 +84,7 @@ export const SwapActionsViaCoW = ({ ? COW_PROTOCOL_VAULT_RELAYER_ADDRESS[state.chainId as SupportedChainId] : undefined, setState, - allowPermit: true, + allowPermit: !disablePermitDueToActiveOrder, }); // Use centralized gas estimation @@ -367,6 +375,7 @@ export const SwapActionsViaCoW = ({ fetchingData={state.actionsLoading} blocked={state.actionsBlocked} tryPermit={tryPermit} + permitInUse={disablePermitDueToActiveOrder} /> ); }; diff --git a/src/components/transactions/Swap/helpers/cow/orders.helpers.ts b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts index 58ee646518..78f9ff9942 100644 --- a/src/components/transactions/Swap/helpers/cow/orders.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts @@ -1,5 +1,4 @@ import { API_ETH_MOCK_ADDRESS } from '@aave/contract-helpers'; -import { BigNumberValue, normalizeBN, valueToBigNumber } from '@aave/math-utils'; import { BuyTokenDestination, OrderBookApi, @@ -21,11 +20,10 @@ import { SignedParams } from '../../actions/approval/useSwapTokenApproval'; import { COW_APP_DATA, COW_CREATE_ORDER_ABI, - COW_PARTNER_FEE, COW_PROTOCOL_ETH_FLOW_ADDRESS, isChainIdSupportedByCoWProtocol, } from '../../constants/cow.constants'; -import { isCowProtocolRates, OrderType, SwapState } from '../../types'; +import { OrderType } from '../../types'; import { getCowTradingSdkByChainIdAndAppCode } from './env.helpers'; const EIP_2612_PERMIT_ABI = [ @@ -164,7 +162,6 @@ export const sendOrder = async ({ outputSymbol, smartSlippage, appCode, - orderBookQuote, orderType, sellAmount, buyAmount, @@ -212,36 +209,28 @@ export const sendOrder = async ({ hooks ); - if (orderType === OrderType.LIMIT) { - const tradingSdk = await getCowTradingSdkByChainIdAndAppCode(chainId, appCode); - - return tradingSdk - .postLimitOrder( - { - sellAmount, - buyAmount, - kind: kind == OrderKind.SELL ? OrderKind.SELL : OrderKind.BUY, - sellToken: tokenSrc, - buyToken: tokenDest, - sellTokenDecimals: tokenSrcDecimals, - buyTokenDecimals: tokenDestDecimals, - owner: user as `0x${string}`, - }, - { - appData, - additionalParams: { - applyQuoteAdjustments: false, - }, - } - ) - .then((orderResult) => orderResult.orderId); - } else { - return orderBookQuote - .postSwapOrderFromQuote({ + const tradingSdk = await getCowTradingSdkByChainIdAndAppCode(chainId, appCode); + + return tradingSdk + .postLimitOrder( + { + sellAmount, + buyAmount, + kind: kind == OrderKind.SELL ? OrderKind.SELL : OrderKind.BUY, + sellToken: tokenSrc, + buyToken: tokenDest, + sellTokenDecimals: tokenSrcDecimals, + buyTokenDecimals: tokenDestDecimals, + owner: user as `0x${string}`, + }, + { appData, - }) - .then((orderResult) => orderResult.orderId); - } + additionalParams: { + applyQuoteAdjustments: false, + }, + } + ) + .then((orderResult) => orderResult.orderId); }; export const getOrderStatus = async (orderId: string, chainId: number) => { @@ -467,189 +456,6 @@ export const adjustedBps = (sdkFeeBps: number) => { return effective * 10000; }; -export const sellAmountBeforeCostsIncluded = ( - state: SwapState, - extraAmountToAdd?: BigNumberValue -) => { - if (!state.swapRate || !isCowProtocolRates(state.swapRate)) return ''; - - const extraAmount = extraAmountToAdd - ? valueToBigNumber(extraAmountToAdd.toString()) - : valueToBigNumber('0'); - - if (state.orderType === OrderType.MARKET) { - return valueToBigNumber(state.swapRate.srcSpotAmount).plus(extraAmount).toString(); - } else { - if (state.side === 'sell') { - return normalizeBN(state.inputAmount, -state.sourceToken.decimals) - .minus(extraAmount) - .toString(); - } else { - const sellAmount = valueToBigNumber( - normalizeBN(state.inputAmount, -state.sourceToken.decimals) - ); - const sellAmountBeforeNetworkCosts = sellAmount; - const originalPartnerFeeBps = COW_PARTNER_FEE( - state.sourceToken.symbol, - state.destinationToken.symbol - ).volumeBps; - const adjustedPartnerFeeBps = adjustedBps(originalPartnerFeeBps); - const partnerFeeAmount = sellAmountBeforeNetworkCosts - .multipliedBy(adjustedPartnerFeeBps) - .dividedBy(10000) - .toFixed(0); - - return valueToBigNumber(normalizeBN(state.inputAmount, -state.sourceToken.decimals)) - .plus(partnerFeeAmount) - .plus(extraAmount) - .toString(); - } - } -}; - -export const sellAmountWithCostsIncluded = ( - state: SwapState, - extraAmountToAdd?: BigNumberValue -) => { - if (!state.swapRate || !isCowProtocolRates(state.swapRate)) return ''; - - const extraAmount = extraAmountToAdd - ? valueToBigNumber(extraAmountToAdd.toString()) - : valueToBigNumber('0'); - - if (state.orderType === OrderType.MARKET) { - return valueToBigNumber(state.swapRate.srcSpotAmount).plus(extraAmount).toString(); - } else { - if (state.side === 'sell') { - return normalizeBN(state.inputAmount, -state.sourceToken.decimals) - .plus(extraAmount) - .toString(); - } else { - const sellAmount = valueToBigNumber( - normalizeBN(state.inputAmount, -state.sourceToken.decimals) - ); - const sellAmountBeforeNetworkCosts = sellAmount; - const originalPartnerFeeBps = COW_PARTNER_FEE( - state.sourceToken.symbol, - state.destinationToken.symbol - ).volumeBps; - const adjustedPartnerFeeBps = adjustedBps(originalPartnerFeeBps); - const partnerFeeAmount = sellAmountBeforeNetworkCosts - .multipliedBy(adjustedPartnerFeeBps) - .dividedBy(10000) - .toFixed(0); - - return valueToBigNumber(normalizeBN(state.inputAmount, -state.sourceToken.decimals)) - .minus(partnerFeeAmount) - .plus(extraAmount) - .toString(); - } - } -}; - -export const buyAmountWithCostsIncluded = (state: SwapState, extraAmountToAdd?: BigNumberValue) => { - if (!state.swapRate || !isCowProtocolRates(state.swapRate)) return ''; - const extraAmount = extraAmountToAdd - ? valueToBigNumber(extraAmountToAdd.toString()) - : valueToBigNumber('0'); - - if (state.orderType === OrderType.MARKET) { - if (isNativeToken(state.destinationToken.addressToSwap)) { - const destAmountWithSlippage = valueToBigNumber(state.swapRate.destSpotAmount) - .multipliedBy(valueToBigNumber(1).minus(valueToBigNumber(state.slippage).dividedBy(100))) - .toFixed(0); - return valueToBigNumber(destAmountWithSlippage).plus(extraAmount).toString(); - } else { - return valueToBigNumber(state.swapRate.amountAndCosts.afterNetworkCosts.buyAmount.toString()) - .plus(extraAmount) - .toString(); - } - } else { - if (state.side === 'sell') { - const buyAmount = normalizeBN(state.outputAmount, -state.destinationToken.decimals); - const sellAmount = normalizeBN(state.inputAmount, -state.sourceToken.decimals); - const sellAmountBeforeNetworkCosts = sellAmount; - const buyAmountAfterNetworkCosts = buyAmount; - const networkCostsAmount = valueToBigNumber('0'); - const sellAmountAfterNetworkCosts = sellAmountBeforeNetworkCosts.plus(networkCostsAmount); - const buyAmountBeforeNetworkCosts = buyAmountAfterNetworkCosts - .dividedBy(sellAmountBeforeNetworkCosts) - .multipliedBy(sellAmountAfterNetworkCosts); - const partnerFeeBps = COW_PARTNER_FEE( - state.sourceToken.symbol, - state.destinationToken.symbol - ).volumeBps; - const adjustedPartnerFeeBps = adjustedBps(partnerFeeBps); - const partnerFeeAmount = buyAmountBeforeNetworkCosts - .multipliedBy(adjustedPartnerFeeBps) - .dividedBy(10000) - .toFixed(0); - - return valueToBigNumber(normalizeBN(state.outputAmount, -state.destinationToken.decimals)) - .plus(partnerFeeAmount) - .plus(extraAmount) - .toString(); - } else { - return normalizeBN(state.outputAmount, -state.destinationToken.decimals) - .plus(extraAmount) - .toString(); - } - } -}; - -export const buyAmountBeforeCostsIncluded = ( - state: SwapState, - extraAmountToAdd?: BigNumberValue -) => { - if (!state.swapRate || !isCowProtocolRates(state.swapRate)) return ''; - const extraAmount = extraAmountToAdd - ? valueToBigNumber(extraAmountToAdd.toString()) - : valueToBigNumber('0'); - - if (state.orderType === OrderType.MARKET) { - if (isNativeToken(state.destinationToken.addressToSwap)) { - const destAmountWithSlippage = valueToBigNumber(state.swapRate.destSpotAmount) - .multipliedBy(valueToBigNumber(1).minus(valueToBigNumber(state.slippage).dividedBy(100))) - .toFixed(0); - return valueToBigNumber(destAmountWithSlippage).plus(extraAmount).toString(); - } else { - return valueToBigNumber(state.swapRate.amountAndCosts.afterNetworkCosts.buyAmount.toString()) - .plus(extraAmount) - .toString(); - } - } else { - if (state.side === 'sell') { - const buyAmount = normalizeBN(state.outputAmount, -state.destinationToken.decimals); - const sellAmount = normalizeBN(state.inputAmount, -state.sourceToken.decimals); - const sellAmountBeforeNetworkCosts = sellAmount; - const buyAmountAfterNetworkCosts = buyAmount; - const networkCostsAmount = valueToBigNumber('0'); - const sellAmountAfterNetworkCosts = sellAmountBeforeNetworkCosts.plus(networkCostsAmount); - const buyAmountBeforeNetworkCosts = buyAmountAfterNetworkCosts - .dividedBy(sellAmountBeforeNetworkCosts) - .multipliedBy(sellAmountAfterNetworkCosts); - const partnerFeeBps = COW_PARTNER_FEE( - state.sourceToken.symbol, - state.destinationToken.symbol - ).volumeBps; - const adjustedPartnerFeeBps = adjustedBps(partnerFeeBps); - const partnerFeeAmount = buyAmountBeforeNetworkCosts - .multipliedBy(adjustedPartnerFeeBps) - .dividedBy(10000) - .toFixed(0); - - return valueToBigNumber(normalizeBN(state.outputAmount, -state.destinationToken.decimals)) - .minus(partnerFeeAmount) - .plus(extraAmount) - .toString(); - } else { - return normalizeBN(state.outputAmount, -state.destinationToken.decimals) - .plus(extraAmount) - .toString(); - } - } -}; - export const getPermitHook = async ({ tokenAddress, signatureParams, diff --git a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts index 2353912e88..7f7f3af23d 100644 --- a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts +++ b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts @@ -1,9 +1,16 @@ -import { normalizeBN, valueToBigNumber } from '@aave/math-utils'; +import { normalize, normalizeBN, valueToBigNumber } from '@aave/math-utils'; import { OrderKind } from '@cowprotocol/cow-sdk'; import { Dispatch, useEffect } from 'react'; import { COW_PARTNER_FEE } from '../constants/cow.constants'; -import { OrderType, SwapParams, SwapProvider, SwapState, SwapType } from '../types'; +import { + isCowProtocolRates, + OrderType, + SwapParams, + SwapProvider, + SwapState, + SwapType, +} from '../types'; import { swapTypesThatRequiresInvertedQuote } from './useSwapQuote'; const marketOrderKindPerSwapType: Record = { @@ -71,13 +78,29 @@ export const useSwapOrderAmounts = ({ .dividedBy(valueToBigNumber(state.outputAmount)) .toNumber(); + const networkFeeAmountFormattedInSell = isCowProtocolRates(state.swapRate) + ? normalize( + state.swapRate.amountAndCosts.costs.networkFee.amountInSellCurrency.toString(), + sellAmountToken.decimals + ) + : '0'; + const networkFeeAmountFormattedInBuy = isCowProtocolRates(state.swapRate) + ? normalize( + state.swapRate.amountAndCosts.costs.networkFee.amountInBuyCurrency.toString(), + buyAmountToken.decimals + ) + : '0'; + if (state.orderType === OrderType.MARKET) { // On a classic sell market order, we send the input amount and receive the amount after partner fees and slippage if (marketOrderKind === OrderKind.SELL) { sellAmountFormatted = state.inputAmount.toString(); - const outputAmountAfterPartnerFees = valueToBigNumber(state.outputAmount).minus( + const outputAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).minus( + networkFeeAmountFormattedInBuy + ); + const outputAmountAfterPartnerFees = valueToBigNumber(outputAmountAfterNetworkFees).minus( partnerFeeAmount ); const outputAmountAfterSlippage = valueToBigNumber( @@ -87,7 +110,10 @@ export const useSwapOrderAmounts = ({ } else { buyAmountFormatted = state.inputAmount.toString(); - const sellAmountAfterPartnerFees = valueToBigNumber(state.outputAmount).plus( + const sellAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).plus( + networkFeeAmountFormattedInSell + ); + const sellAmountAfterPartnerFees = valueToBigNumber(sellAmountAfterNetworkFees).plus( partnerFeeAmount ); const sellAmountAfterSlippage = valueToBigNumber(sellAmountAfterPartnerFees).multipliedBy( @@ -99,13 +125,21 @@ export const useSwapOrderAmounts = ({ if (state.side === 'sell') { // on a sell limit order, we send the input amount and receive the amount after partner fees (no slippage applied) sellAmountFormatted = state.inputAmount.toString(); - buyAmountFormatted = valueToBigNumber(state.outputAmount) + + const buyAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).minus( + networkFeeAmountFormattedInBuy + ); + buyAmountFormatted = valueToBigNumber(buyAmountAfterNetworkFees) .minus(partnerFeeAmount) .toString(); } else { // on a buy limit order, we receive exactly the output amount and send the input amount after partner fees (no slippage applied) sellAmountFormatted = state.inputAmount.toString(); - buyAmountFormatted = valueToBigNumber(state.outputAmount) + + const buyAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).minus( + networkFeeAmountFormattedInBuy + ); + buyAmountFormatted = valueToBigNumber(buyAmountAfterNetworkFees) .minus(partnerFeeAmount) .toString(); } @@ -122,11 +156,28 @@ export const useSwapOrderAmounts = ({ .dividedBy(valueToBigNumber(state.inputAmount)) .toNumber(); + const networkFeeAmountFormattedInSell = isCowProtocolRates(state.swapRate) + ? normalize( + state.swapRate.amountAndCosts.costs.networkFee.amountInSellCurrency.toString(), + sellAmountToken.decimals + ) + : '0'; + const networkFeeAmountFormattedInBuy = isCowProtocolRates(state.swapRate) + ? normalize( + state.swapRate.amountAndCosts.costs.networkFee.amountInBuyCurrency.toString(), + buyAmountToken.decimals + ) + : '0'; + if (state.orderType === OrderType.MARKET) { // on a classic inverted sell market order, we send the output amount and receive the input amount after partner fees and slippage if (marketOrderKind === OrderKind.SELL) { sellAmountFormatted = state.outputAmount.toString(); - const inputAmountAfterPartnerFees = valueToBigNumber(state.inputAmount) + + const inputAmountAfterNetworkFees = valueToBigNumber(state.inputAmount).minus( + networkFeeAmountFormattedInBuy + ); + const inputAmountAfterPartnerFees = valueToBigNumber(inputAmountAfterNetworkFees) .minus(partnerFeeAmount) .toString(); const inputAmountAfterSlippage = valueToBigNumber(inputAmountAfterPartnerFees) @@ -136,7 +187,10 @@ export const useSwapOrderAmounts = ({ } else { buyAmountFormatted = state.inputAmount.toString(); - const sellAmountAfterPartnerFees = valueToBigNumber(state.outputAmount).plus( + const sellAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).plus( + networkFeeAmountFormattedInSell + ); + const sellAmountAfterPartnerFees = valueToBigNumber(sellAmountAfterNetworkFees).plus( partnerFeeAmount ); const sellAmountAfterSlippage = valueToBigNumber(sellAmountAfterPartnerFees).multipliedBy( @@ -148,13 +202,21 @@ export const useSwapOrderAmounts = ({ if (state.side === 'sell') { // on an inverted sell limit order, we send the output amount and receive the input amount after partner fees (no slippage applied) sellAmountFormatted = state.outputAmount.toString(); - buyAmountFormatted = valueToBigNumber(state.inputAmount) + + const sellAmountAfterNetworkFees = valueToBigNumber(state.inputAmount).minus( + networkFeeAmountFormattedInSell + ); + buyAmountFormatted = valueToBigNumber(sellAmountAfterNetworkFees) .minus(partnerFeeAmount) .toString(); } else { // on an inverted buy limit order, we receive exactly the input amount and send the output amount after partner fees (no slippage applied) buyAmountFormatted = state.outputAmount.toString(); - sellAmountFormatted = valueToBigNumber(state.inputAmount) + + const sellAmountAfterNetworkFees = valueToBigNumber(state.inputAmount).minus( + networkFeeAmountFormattedInSell + ); + sellAmountFormatted = valueToBigNumber(sellAmountAfterNetworkFees) .minus(partnerFeeAmount) .toString(); } diff --git a/src/components/transactions/TxActionsWrapper.tsx b/src/components/transactions/TxActionsWrapper.tsx index eabd4ba1b6..d3f92eb4d2 100644 --- a/src/components/transactions/TxActionsWrapper.tsx +++ b/src/components/transactions/TxActionsWrapper.tsx @@ -33,6 +33,7 @@ interface TxActionsWrapperProps extends BoxProps { handleClick: () => Promise; }; tryPermit?: boolean; + permitInUse?: boolean; event?: TrackEventProps; } @@ -55,6 +56,7 @@ export const TxActionsWrapper = ({ fetchingData = false, errorParams, tryPermit, + permitInUse = false, event, ...rest }: TxActionsWrapperProps) => { @@ -143,7 +145,11 @@ export const TxActionsWrapper = ({ {approvalParams && !readOnlyModeAddress && ( - + )} diff --git a/src/hooks/useCowOrderToast.tsx b/src/hooks/useCowOrderToast.tsx index d7379d6bbd..3b2ea05d1a 100644 --- a/src/hooks/useCowOrderToast.tsx +++ b/src/hooks/useCowOrderToast.tsx @@ -31,6 +31,7 @@ interface OrderDetails { orderId: string; chainId: number; interval: NodeJS.Timeout; + sellToken?: string; } interface CowOrderToastContextType { @@ -39,6 +40,7 @@ interface CowOrderToastContextType { hasActiveOrders: boolean; setHasActiveOrders: (hasActiveOrders: boolean) => void; activeOrdersCount: number; + hasActiveOrderForSellToken: (chainId: number, sellTokenAddress: string) => boolean; } const CowOrderToastContext = createContext( @@ -130,6 +132,22 @@ export const CowOrderToastProvider: React.FC = ({ children }) const interval = setInterval(async () => { try { const order = await getOrder(orderId, chainId); + // Store sell token for quick lookups (used to prevent permit nonce collisions) + setActiveOrders((prev) => { + const current = prev.get(orderId); + if (current && current.sellToken?.toLowerCase() === order.sellToken.toLowerCase()) { + return prev; + } + const updated = new Map(prev); + updated.set(orderId, { + ...current!, + orderId, + chainId, + interval, + sellToken: order.sellToken, + }); + return updated; + }); const baseTrackingData = { chainId, inputSymbol: order.sellToken, @@ -182,11 +200,40 @@ export const CowOrderToastProvider: React.FC = ({ children }) return newMap; }); + // One-off fetch to populate sellToken immediately (avoid waiting for first poll) + getOrder(orderId, chainId).then((order) => { + setActiveOrders((prev) => { + const existing = prev.get(orderId); + const updated = new Map(prev); + updated.set(orderId, { + ...existing!, + orderId, + chainId, + interval, + sellToken: order.sellToken, + }); + return updated; + }); + }); + setHasActiveOrders(true); }, [stopTracking] ); + const hasActiveOrderForSellToken = useCallback( + (chainId: number, sellTokenAddress: string) => { + const needle = sellTokenAddress.toLowerCase(); + for (const [, details] of activeOrders) { + if (details.chainId === chainId && details.sellToken?.toLowerCase() === needle) { + return true; + } + } + return false; + }, + [activeOrders] + ); + return ( = ({ children }) hasActiveOrders, setHasActiveOrders, activeOrdersCount: activeOrders.size, + hasActiveOrderForSellToken, }} > {children} From 20bf4b42fa2b378ee30f1e0f2d40286558f5c151 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Thu, 30 Oct 2025 15:32:20 -0300 Subject: [PATCH 09/66] nits limit orders --- .../actions/SwapActions/SwapActionsViaCoW.tsx | 16 ++-- .../transactions/Swap/details/SwapDetails.tsx | 39 ++++++--- .../Swap/details/WithdrawAndSwapDetails.tsx | 5 +- .../Swap/helpers/cow/orders.helpers.ts | 56 +++++-------- .../Swap/hooks/useSlippageSelector.ts | 37 ++++++-- .../Swap/hooks/useSwapOrderAmounts.ts | 13 +++ .../transactions/Swap/hooks/useSwapQuote.ts | 6 ++ .../postInputs/HighPriceImpactWarning.tsx | 3 +- .../postInputs/LimitOrderAmountWarning.tsx | 84 ++++++++++++------- 9 files changed, 164 insertions(+), 95 deletions(-) diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx index 18a88cb92e..5a0153d6a1 100644 --- a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx @@ -236,15 +236,15 @@ export const SwapActionsViaCoW = ({ sellAmount: sellAmountAccountingCosts.toString(), buyAmount: buyAmountAccountingCosts.toString(), tokenSrc: state.sourceToken.addressToSwap, - tokenSrcDecimals: state.swapRate.srcDecimals, - tokenDestDecimals: state.swapRate.destDecimals, + tokenSrcDecimals: state.sourceToken.decimals, + tokenDestDecimals: state.destinationToken.decimals, slippageBps, smartSlippage, inputSymbol: state.sourceToken.symbol, outputSymbol: state.destinationToken.symbol, - quote: state.swapRate.order, + quote: state.swapRate?.order, appCode, - orderBookQuote: state.swapRate.orderBookQuote, + orderBookQuote: state.swapRate?.orderBookQuote, orderType: state.orderType, kind: state.orderType === OrderType.MARKET @@ -281,10 +281,10 @@ export const SwapActionsViaCoW = ({ } else { orderId = await sendOrder({ tokenSrc: state.sourceToken.addressToSwap, - tokenSrcDecimals: state.swapRate.srcDecimals, + tokenSrcDecimals: state.sourceToken.decimals, tokenDest: state.destinationToken.addressToSwap, - tokenDestDecimals: state.swapRate.destDecimals, - quote: state.swapRate.order, + tokenDestDecimals: state.destinationToken.decimals, + quote: state.swapRate?.order, sellAmount: sellAmountAccountingCosts.toString(), buyAmount: buyAmountAccountingCosts.toString(), slippageBps, @@ -302,7 +302,7 @@ export const SwapActionsViaCoW = ({ inputSymbol: state.sourceToken.symbol, outputSymbol: state.destinationToken.symbol, appCode, - orderBookQuote: state.swapRate.orderBookQuote, + orderBookQuote: state.swapRate?.orderBookQuote, signatureParams, estimateGasLimit, }); diff --git a/src/components/transactions/Swap/details/SwapDetails.tsx b/src/components/transactions/Swap/details/SwapDetails.tsx index 3050852c6c..bbb3caa96c 100644 --- a/src/components/transactions/Swap/details/SwapDetails.tsx +++ b/src/components/transactions/Swap/details/SwapDetails.tsx @@ -7,7 +7,7 @@ import { Row } from 'src/components/primitives/Row'; import { ExternalTokenIcon } from 'src/components/primitives/TokenIcon'; import { TxModalDetails } from '../../FlowCommons/TxModalDetails'; -import { SwappableToken, SwapParams, SwapProvider, SwapQuoteType, SwapState } from '../types'; +import { SwappableToken, SwapParams, SwapProvider, SwapState } from '../types'; import { CowCostsDetails } from './CowCostsDetails'; export const SwapDetails = ({ params, state }: { params: SwapParams; state: SwapState }) => { @@ -22,6 +22,16 @@ export const SwapDetails = ({ params, state }: { params: SwapParams; state: Swap ) return null; + console.log({ + sellAmount: state.sellAmountFormatted, + buyAmount: state.buyAmountFormatted, + sellAmountUSD: state.sellAmountUSD, + buyAmountUSD: state.buyAmountUSD, + sellAmountToken: state.sellAmountToken, + buyAmountToken: state.buyAmountToken, + provider: state.provider, + }); + return ( { - return switchRates.provider === SwapProvider.COW_PROTOCOL ? ( + return provider === SwapProvider.COW_PROTOCOL ? ( @@ -88,7 +101,7 @@ export const IntentTxDetails = ({ state, buyToken, customReceivedTitle, - sellTokenPriceUsd, + sellAmountInUsd, sellAmount, buyAmount, buyAmountUSD, @@ -98,15 +111,21 @@ export const IntentTxDetails = ({ sellToken: SwappableToken; safeSlippage: number; customReceivedTitle?: React.ReactNode; - sellTokenPriceUsd: number; + sellAmountInUsd: number; sellAmount: string; buyAmount: string; buyAmountUSD: string; }) => { - const srcUsd = valueToBigNumber(sellAmount).multipliedBy(sellTokenPriceUsd).toNumber(); + const srcUsd = valueToBigNumber(sellAmount).dividedBy(sellAmountInUsd).toNumber(); const receivingInUsd = Number(buyAmountUSD); const sendingInUsd = srcUsd; + + console.log({ + receivingInUsd, + sendingInUsd, + }); + const priceImpact = (1 - receivingInUsd / sendingInUsd) * 100; return ( diff --git a/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx b/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx index 16dbf5b2fb..729a542e83 100644 --- a/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx +++ b/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx @@ -25,7 +25,7 @@ export const WithdrawAndSwapDetails = ({ const withdrawAmount = state.inputAmount; const poolReserve = state.sourceReserve.reserve; - if (!user || !state.swapRate || !state.buyAmountFormatted || !state.buyAmountUSD) return null; + if (!user || !state.buyAmountFormatted || !state.buyAmountUSD || !state.sellAmountFormatted) return null; const healthFactorAfterWithdraw = calculateHFAfterWithdraw({ user, userReserve: state.sourceReserve, @@ -37,12 +37,13 @@ export const WithdrawAndSwapDetails = ({ Promise; }; @@ -78,7 +78,6 @@ export const getPreSignTransaction = async ({ inputSymbol, outputSymbol, appCode, - orderBookQuote, orderType, sellAmount, buyAmount, @@ -98,38 +97,18 @@ export const getPreSignTransaction = async ({ throw new Error('Only smart contract wallets should use presign.'); } - let orderResult; - if (orderType === OrderType.LIMIT) { - orderResult = await tradingSdk.postLimitOrder( - { - sellAmount, - buyAmount, - kind: kind == OrderKind.SELL ? OrderKind.SELL : OrderKind.BUY, - sellToken: tokenSrc, - buyToken: tokenDest, - sellTokenDecimals: tokenSrcDecimals, - buyTokenDecimals: tokenDestDecimals, - owner: user as `0x${string}`, - }, - { - appData: COW_APP_DATA( - inputSymbol, - outputSymbol, - slippageBps, - smartSlippage, - orderType, - appCode - ), - additionalParams: { - signingScheme: SigningScheme.PRESIGN, - }, - } - ); - } else { - orderResult = await orderBookQuote.postSwapOrderFromQuote({ - additionalParams: { - signingScheme: SigningScheme.PRESIGN, - }, + const orderResult = await tradingSdk.postLimitOrder( + { + sellAmount, + buyAmount, + kind: kind == OrderKind.SELL ? OrderKind.SELL : OrderKind.BUY, + sellToken: tokenSrc, + buyToken: tokenDest, + sellTokenDecimals: tokenSrcDecimals, + buyTokenDecimals: tokenDestDecimals, + owner: user as `0x${string}`, + }, + { appData: COW_APP_DATA( inputSymbol, outputSymbol, @@ -138,8 +117,11 @@ export const getPreSignTransaction = async ({ orderType, appCode ), - }); - } + additionalParams: { + signingScheme: SigningScheme.PRESIGN, + }, + } + ); const preSignTransaction = await tradingSdk.getPreSignTransaction({ orderUid: orderResult.orderId, diff --git a/src/components/transactions/Swap/hooks/useSlippageSelector.ts b/src/components/transactions/Swap/hooks/useSlippageSelector.ts index 81d50cb61f..d1dfd14400 100644 --- a/src/components/transactions/Swap/hooks/useSlippageSelector.ts +++ b/src/components/transactions/Swap/hooks/useSlippageSelector.ts @@ -1,13 +1,16 @@ -import { Dispatch, useEffect } from 'react'; +import { Dispatch, useEffect, useRef } from 'react'; import { validateSlippage, ValidationSeverity } from '../helpers/shared/slippage.helpers'; -import { isCowProtocolRates, SwapParams, SwapState, TokenType } from '../types'; +import { isCowProtocolRates, OrderType, SwapParams, SwapState, TokenType } from '../types'; /** - * Keeps slippage-related UI/validation in sync with user input and provider hints. - * - * - Surfaces a warning when user slippage is below provider suggestion (CoW) - * - Validates input and derives `safeSlippage` for guards and calculations +/** + * Hook responsibilities: + * - Synchronizes the slippage value in state with the selected order type (MARKET or LIMIT), restoring previous market slippage as needed. + * - Tracks the last non-zero market slippage to allow restoration when toggling between order types. + * - Triggers slippage warnings for the user if their input value is below the provider's suggested minimum for CoW Protocol swaps. + * - Validates the slippage value and updates related state/validation UI. + * - Keeps UI/validation in sync with both user input and provider hints or requirements. */ export const useSlippageSelector = ({ state, @@ -17,6 +20,28 @@ export const useSlippageSelector = ({ state: SwapState; setState: Dispatch>; }) => { + // Track last non-zero market slippage to restore when switching back from LIMIT + const lastMarketSlippageRef = useRef(null); + + // Keep slippage aligned with order type globally + useEffect(() => { + if (state.orderType === OrderType.LIMIT) { + // Remember current market slippage if non-zero before forcing to 0 for limit + if (state.slippage && Number(state.slippage) !== 0) { + lastMarketSlippageRef.current = state.slippage; + } + if (state.slippage !== '0') { + setState({ slippage: '0' }); + } + } else if (state.orderType === OrderType.MARKET) { + // Restore to suggested slippage if available, otherwise last known market slippage, else default 0.10% + const target = lastMarketSlippageRef.current || state.autoSlippage; + if (state.slippage !== target) { + setState({ slippage: target }); + } + } + }, [state.orderType]); + useEffect(() => { // Debounce to avoid race condition const timeout = setTimeout(() => { diff --git a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts index 7f7f3af23d..6894b03cb6 100644 --- a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts +++ b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts @@ -248,6 +248,19 @@ export const useSwapOrderAmounts = ({ normalizeBN(buyAmountFormatted, -buyAmountToken.decimals).toFixed(0) ); + console.log({ + buyAmountFormatted, + buyAmountUSD, + sellAmountFormatted, + sellAmountUSD, + sellAmountToken, + buyAmountToken, + isInvertedSwap, + sellAmountBigInt, + buyAmountBigInt, + processedSide, + }); + setState({ buyAmountFormatted, buyAmountUSD, diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index 176e12b946..f57f139c32 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -9,6 +9,7 @@ import { getCowProtocolSellRates } from '../helpers/cow'; import { getParaswapSellRates, getParaswapSlippage } from '../helpers/paraswap'; import { getSwitchProvider } from '../helpers/shared/provider.helpers'; import { + OrderType, SwapParams, SwapProvider, SwapQuoteType as SwapQuoteType, @@ -386,6 +387,9 @@ const useMultiProviderSwapQuoteQuery = ({ state.user ), enabled: + // LIMIT: fetch only once (when no quote yet). MARKET: fetch normally + ((state.orderType === OrderType.LIMIT && !state.swapRate) || + state.orderType !== OrderType.LIMIT) && amount != 'NaN' && amount !== '0' && !state.mainTxState.success && @@ -397,6 +401,8 @@ const useMultiProviderSwapQuoteQuery = ({ throwOnError: false, refetchOnWindowFocus: (query) => (query.state.error ? false : true), refetchInterval: + // LIMIT: never refetch periodically after we got the first quote + state.orderType !== OrderType.LIMIT && !state.actionsLoading && !state.quoteRefreshPaused && !state.mainTxState.success && diff --git a/src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx b/src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx index f025bc70b9..56016f21fe 100644 --- a/src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx +++ b/src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx @@ -54,7 +54,8 @@ export function HighPriceImpactWarning({ > - High price impact. This route may return less due to low liquidity or small order size. + High price impact ({(lostValue * 100).toFixed(1)}%). This route may return less due to low + liquidity or small order size. diff --git a/src/components/transactions/Swap/warnings/postInputs/LimitOrderAmountWarning.tsx b/src/components/transactions/Swap/warnings/postInputs/LimitOrderAmountWarning.tsx index 4038a4b1af..bbe49a6a00 100644 --- a/src/components/transactions/Swap/warnings/postInputs/LimitOrderAmountWarning.tsx +++ b/src/components/transactions/Swap/warnings/postInputs/LimitOrderAmountWarning.tsx @@ -10,46 +10,67 @@ import { OrderType } from '../../types/shared.types'; export function LimitOrderAmountWarning({ state }: { state: SwapState }) { const suggestedSlippage = state.swapRate?.suggestedSlippage; - const [shouldShowWarning, isHigherDifference] = useMemo(() => { - if (state.orderType !== OrderType.LIMIT || !state.swapRate || !suggestedSlippage) { + const [shouldShowWarning, isHigherDifference, differencePercentage] = useMemo(() => { + if (state.orderType !== OrderType.LIMIT || !state.swapRate || suggestedSlippage == null) { return [false, false]; } - let userOrderAmount, recommendedAfterFees; - if (state.isInvertedSwap) { - userOrderAmount = valueToBigNumber(state.inputAmount); - recommendedAfterFees = normalizeBN( - state.buyAmountFormatted ?? '0', - state.buyAmountToken?.decimals ?? 18 - ); - } else { - userOrderAmount = valueToBigNumber(state.outputAmount); - recommendedAfterFees = normalizeBN( - state.buyAmountFormatted ?? '0', - state.buyAmountToken?.decimals ?? 18 - ); + // Derive token USD unit prices from current quote (spot) + const srcUnitAmount = normalizeBN(state.swapRate.srcSpotAmount, state.swapRate.srcDecimals); + const destUnitAmount = normalizeBN(state.swapRate.destSpotAmount, state.swapRate.destDecimals); + if (srcUnitAmount.isZero() || destUnitAmount.isZero()) { + return [false, false]; + } + const srcUsdPerUnit = valueToBigNumber(state.swapRate.srcSpotUSD || '0').dividedBy( + srcUnitAmount + ); + const destUsdPerUnit = valueToBigNumber(state.swapRate.destSpotUSD || '0').dividedBy( + destUnitAmount + ); + if (srcUsdPerUnit.isZero() || destUsdPerUnit.isZero()) { + return [false, false]; } - const differencePercentage = recommendedAfterFees - .minus(userOrderAmount) - .dividedBy(recommendedAfterFees) - .multipliedBy(100); + // User-defined amounts converted to USD using spot unit prices + const userInputUsd = valueToBigNumber(state.inputAmount || '0').multipliedBy(srcUsdPerUnit); + const userOutputUsd = valueToBigNumber(state.outputAmount || '0').multipliedBy(destUsdPerUnit); - const isHigherDifference = differencePercentage - .minus(valueToBigNumber(suggestedSlippage)) - .isLessThanOrEqualTo(valueToBigNumber('-20')); + if (userInputUsd.isZero() || userOutputUsd.isZero()) { + return [false, false]; + } - const isSignificantDifference = differencePercentage.isLessThanOrEqualTo( - valueToBigNumber(suggestedSlippage) + // Apply provider suggested slippage to output side to get a conservative reference + const slippageFactor = valueToBigNumber(1).minus( + valueToBigNumber(suggestedSlippage).dividedBy(100) ); + const recommendedMinOutputUsd = valueToBigNumber( + state.swapRate.destSpotUSD || '0' + ).multipliedBy(slippageFactor); + + // Compute gains vs input in percentage terms + const userGainPct = userOutputUsd.minus(userInputUsd).dividedBy(userInputUsd).multipliedBy(100); + const recommendedGainPct = recommendedMinOutputUsd + .minus(valueToBigNumber(state.swapRate.srcSpotUSD || '0')) + .dividedBy(valueToBigNumber(state.swapRate.srcSpotUSD || '0')) + .multipliedBy(100); + + // Positive difference means user is worse than recommended reference + const diffPct = recommendedGainPct.minus(userGainPct); - return [isSignificantDifference, isHigherDifference]; + const shouldShow = diffPct.isLessThan(-5); // user's order less favorable than recommended + const significant = diffPct.isLessThan(-20); // >= 20% worse considered significant + + return [shouldShow, significant, diffPct]; }, [ state.orderType, - state.swapRate, - state.outputAmount, + state.swapRate?.srcSpotUSD, + state.swapRate?.destSpotUSD, + state.swapRate?.srcSpotAmount, + state.swapRate?.destSpotAmount, + state.swapRate?.srcDecimals, + state.swapRate?.destDecimals, state.inputAmount, - state.side, + state.outputAmount, suggestedSlippage, ]); @@ -57,7 +78,7 @@ export function LimitOrderAmountWarning({ state }: { state: SwapState }) { return ( - Your order amounts are {isHigherDifference ? 'significantly ' : ''} less favorable to the - liquidity provider than recommended. This order may not be executed. + Your order amounts are {isHigherDifference ? 'significantly ' : ''} less favorable by{' '} + {differencePercentage?.abs()?.toFixed(1) ?? '0'}% to the liquidity provider than + recommended. This order may not be executed. From 755c7c913debfc8224bc12c50b6f86a1d642b62e Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Thu, 30 Oct 2025 16:25:33 -0300 Subject: [PATCH 10/66] debounced --- .../Swap/details/WithdrawAndSwapDetails.tsx | 3 ++- .../transactions/Swap/inputs/SwapInputs.tsx | 20 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx b/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx index 729a542e83..5aacf8c4db 100644 --- a/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx +++ b/src/components/transactions/Swap/details/WithdrawAndSwapDetails.tsx @@ -25,7 +25,8 @@ export const WithdrawAndSwapDetails = ({ const withdrawAmount = state.inputAmount; const poolReserve = state.sourceReserve.reserve; - if (!user || !state.buyAmountFormatted || !state.buyAmountUSD || !state.sellAmountFormatted) return null; + if (!user || !state.buyAmountFormatted || !state.buyAmountUSD || !state.sellAmountFormatted) + return null; const healthFactorAfterWithdraw = calculateHFAfterWithdraw({ user, userReserve: state.sourceReserve, diff --git a/src/components/transactions/Swap/inputs/SwapInputs.tsx b/src/components/transactions/Swap/inputs/SwapInputs.tsx index 3462ed0b6d..498cc87023 100644 --- a/src/components/transactions/Swap/inputs/SwapInputs.tsx +++ b/src/components/transactions/Swap/inputs/SwapInputs.tsx @@ -79,7 +79,6 @@ export const SwapInputs = ({ quoteTimerPausedAt: undefined, quoteTimerPausedAccumMs: undefined, inputAmount: state.sourceToken.balance, - debouncedInputAmount: state.sourceToken.balance, isMaxSelected: true, side: 'sell', }); @@ -90,7 +89,6 @@ export const SwapInputs = ({ quoteTimerPausedAt: undefined, quoteTimerPausedAccumMs: undefined, inputAmount: value, - debouncedInputAmount: value, isMaxSelected: value === state.forcedMaxValue, side: 'sell', }); @@ -113,7 +111,6 @@ export const SwapInputs = ({ quoteTimerPausedAt: undefined, quoteTimerPausedAccumMs: undefined, outputAmount: state.destinationToken.balance, - debouncedOutputAmount: state.destinationToken.balance, isMaxSelected: true, side: 'buy', }); @@ -124,7 +121,6 @@ export const SwapInputs = ({ quoteTimerPausedAt: undefined, quoteTimerPausedAccumMs: undefined, outputAmount: value, - debouncedOutputAmount: value, isMaxSelected: false, side: 'buy', }); @@ -156,7 +152,6 @@ export const SwapInputs = ({ quoteTimerPausedAt: undefined, quoteTimerPausedAccumMs: undefined, outputAmount: newOutputAmount, - debouncedOutputAmount: newOutputAmount, isMaxSelected: false, side: 'sell', }); @@ -489,6 +484,21 @@ export const SwapInputs = ({ const showNetworkSelector = params.showNetworkSelector && !!params.supportedNetworks.length; + // Debounce input and output amounts before triggering quote logic + useEffect(() => { + const t = setTimeout(() => { + setState({ debouncedInputAmount: state.inputAmount }); + }, 400); + return () => clearTimeout(t); + }, [state.inputAmount]); + + useEffect(() => { + const t = setTimeout(() => { + setState({ debouncedOutputAmount: state.outputAmount }); + }, 400); + return () => clearTimeout(t); + }, [state.outputAmount]); + const inputAssets = useMemo( () => state.sourceTokens.filter( From 71e1637a3d45b3c7f587a44f4fc10c1522ea748b Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Thu, 30 Oct 2025 16:52:27 -0300 Subject: [PATCH 11/66] try fetch permit support from onchain fallback --- .../Swap/actions/ActionsSkeleton.tsx | 37 ++- .../CollateralSwapActionsViaCoWAdapters.tsx | 23 +- ...llateralSwapActionsViaParaswapAdapters.tsx | 28 ++- .../DebtSwap/DebtSwapActionsViaCoW.tsx | 29 +-- .../DebtSwap/DebtSwapActionsViaParaswap.tsx | 27 ++- .../RepayWithCollateralActionsViaCoW.tsx | 23 +- .../RepayWithCollateralActionsViaParaswap.tsx | 28 ++- .../actions/SwapActions/SwapActionsViaCoW.tsx | 34 +-- .../SwapActions/SwapActionsViaParaswap.tsx | 32 ++- .../actions/approval/useSwapTokenApproval.ts | 28 ++- .../Swap/details/CowCostsDetails.tsx | 9 + .../transactions/Swap/details/SwapDetails.tsx | 15 -- .../Swap/helpers/cow/orders.helpers.ts | 2 +- .../Swap/hooks/useSwapOrderAmounts.ts | 13 - .../Swap/inputs/LimitOrderInputs.tsx | 4 + .../Swap/inputs/MarketOrderInputs.tsx | 4 + .../transactions/Swap/inputs/SwapInputs.tsx | 20 ++ .../Swap/inputs/primitives/SwapAssetInput.tsx | 46 +++- .../Warnings/ChangeNetworkWarning.tsx | 6 +- .../adapters/EthersAdapter.ts | 13 +- src/locales/el/messages.js | 2 +- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 222 +++++------------- src/locales/es/messages.js | 2 +- src/locales/fr/messages.js | 2 +- src/ui-config/permitConfig.ts | 115 ++++++++- 26 files changed, 457 insertions(+), 309 deletions(-) diff --git a/src/components/transactions/Swap/actions/ActionsSkeleton.tsx b/src/components/transactions/Swap/actions/ActionsSkeleton.tsx index 16816d15fc..530fd75e62 100644 --- a/src/components/transactions/Swap/actions/ActionsSkeleton.tsx +++ b/src/components/transactions/Swap/actions/ActionsSkeleton.tsx @@ -1,5 +1,6 @@ import { Trans } from '@lingui/macro'; import { Button, CircularProgress } from '@mui/material'; +import React, { useEffect, useRef, useState } from 'react'; import { SwapState } from '../types'; @@ -13,6 +14,36 @@ const stateToLoadingType = (state: SwapState): LoadingType => { export const ActionsLoading: React.FC<{ state: SwapState }> = ({ state }) => { const loadingType = stateToLoadingType(state); + // Timer logic for updating the loading text after 2 seconds when loadingType is 'quote' + const [quoteTimeElapsed, setQuoteTimeElapsed] = useState(false); + const timerRef = useRef(null); + + useEffect(() => { + if (loadingType === 'quote') { + setQuoteTimeElapsed(false); + if (timerRef.current) { + clearTimeout(timerRef.current); + } + timerRef.current = setTimeout(() => { + setQuoteTimeElapsed(true); + }, 2000); + } else { + // In case the loading type changes, clear timer and reset state + setQuoteTimeElapsed(false); + if (timerRef.current) { + clearTimeout(timerRef.current); + timerRef.current = null; + } + } + // Cleanup on unmount + return () => { + if (timerRef.current) { + clearTimeout(timerRef.current); + timerRef.current = null; + } + }; + }, [loadingType]); + return ( + + + v && handlePick(v)} + > + {[0.25, 0.5, 0.75].map((fraction) => ( + + + {Math.round(fraction * 100)}% + + + ))} + + + + + ); +}; diff --git a/src/components/transactions/Swap/inputs/shared/ExpirySelector.tsx b/src/components/transactions/Swap/inputs/shared/ExpirySelector.tsx index 350c2f9f09..feaef1dedc 100644 --- a/src/components/transactions/Swap/inputs/shared/ExpirySelector.tsx +++ b/src/components/transactions/Swap/inputs/shared/ExpirySelector.tsx @@ -27,7 +27,7 @@ export const ExpirySelector = ({ selectedExpiry, setSelectedExpiry }: ExpirySele Expires in diff --git a/src/components/transactions/Swap/inputs/shared/NetworkSelector.tsx b/src/components/transactions/Swap/inputs/shared/NetworkSelector.tsx index 5bd4ec4e13..5ce1bb177e 100644 --- a/src/components/transactions/Swap/inputs/shared/NetworkSelector.tsx +++ b/src/components/transactions/Swap/inputs/shared/NetworkSelector.tsx @@ -61,7 +61,7 @@ export const NetworkSelector = ({ mr: 1, }} /> - + {network.displayName || network.name} diff --git a/src/components/transactions/Swap/inputs/shared/PriceInput.tsx b/src/components/transactions/Swap/inputs/shared/PriceInput.tsx index 88d2380ea4..2771d55e2d 100644 --- a/src/components/transactions/Swap/inputs/shared/PriceInput.tsx +++ b/src/components/transactions/Swap/inputs/shared/PriceInput.tsx @@ -181,6 +181,10 @@ export const PriceInput = ({ px: 3, py: 2, width: '100%', + transition: 'background-color 0.15s ease', + '&:hover': { + backgroundColor: 'background.surface', + }, })} > diff --git a/src/components/transactions/Swap/inputs/shared/SwitchSlippageSelector.tsx b/src/components/transactions/Swap/inputs/shared/SwitchSlippageSelector.tsx index cf9effced7..30799d5610 100644 --- a/src/components/transactions/Swap/inputs/shared/SwitchSlippageSelector.tsx +++ b/src/components/transactions/Swap/inputs/shared/SwitchSlippageSelector.tsx @@ -123,7 +123,7 @@ export const SwitchSlippageSelector = ({ return ( - + {isCustomSlippage ? ( Custom slippage ) : provider === 'paraswap' ? ( @@ -231,21 +231,33 @@ export const SwitchSlippageSelector = ({ )} - diff --git a/src/components/transactions/Swap/modals/result/SwapResultView.tsx b/src/components/transactions/Swap/modals/result/SwapResultView.tsx index 76672450d8..294bdfc213 100644 --- a/src/components/transactions/Swap/modals/result/SwapResultView.tsx +++ b/src/components/transactions/Swap/modals/result/SwapResultView.tsx @@ -38,8 +38,8 @@ export type SwapTxSuccessViewProps = { outIconUri?: string; provider?: SwapProvider; chainId: number; - destDecimals: number; - srcDecimals: number; + buyDecimals: number; + sellDecimals: number; resultScreenTokensFromTitle?: string; resultScreenTokensToTitle?: string; resultScreenTitleItems?: string; @@ -78,6 +78,7 @@ export const SwapWithSurplusTooltip = ({ export const SwapResultView = ({ params, state, + trackingHandlers, }: { params: SwapParams; state: SwapState; @@ -100,11 +101,12 @@ export const SwapResultView = ({ outIconUri={state.destinationToken.logoURI} provider={state.provider} chainId={state.chainId} - destDecimals={state.destinationToken.decimals} - srcDecimals={state.sourceToken.decimals} + buyDecimals={state.buyAmountToken?.decimals ?? 18} + sellDecimals={state.sellAmountToken?.decimals ?? 18} resultScreenTokensFromTitle={params.resultScreenTokensFromTitle} resultScreenTokensToTitle={params.resultScreenTokensToTitle} resultScreenTitleItems={params.resultScreenTitleItems} + trackingHandlers={trackingHandlers} /> ); }; @@ -122,13 +124,14 @@ export const SwapTxSuccessView = ({ outIconUri, provider, chainId, - destDecimals, - srcDecimals, + buyDecimals, + sellDecimals, resultScreenTokensFromTitle, resultScreenTokensToTitle, resultScreenTitleItems, invalidateAppState, -}: SwapTxSuccessViewProps) => { + trackingHandlers, +}: SwapTxSuccessViewProps & { trackingHandlers?: TrackAnalyticsHandlers }) => { const { trackOrder, setHasActiveOrders } = useCowOrderToast(); // Do polling each 10 seconds until the order get's filled @@ -163,32 +166,36 @@ export const SwapTxSuccessView = ({ .sub( BigNumber.from( !isInvertedSwap - ? parseUnits(outAmount, destDecimals) - : parseUnits(inAmount, srcDecimals) + ? parseUnits(outAmount, buyDecimals) + : parseUnits(inAmount, sellDecimals) ) ) .toBigInt() ); setOutFinalAmount( !isInvertedSwap - ? normalize(order.executedBuyAmount, destDecimals) - : normalize(order.executedSellAmount, srcDecimals) + ? normalize(order.executedBuyAmount, buyDecimals) + : normalize(order.executedSellAmount, sellDecimals) ); setInAmount( !isInvertedSwap - ? normalize(order.executedSellAmount, srcDecimals) - : normalize(order.executedBuyAmount, destDecimals) + ? normalize(order.executedSellAmount, sellDecimals) + : normalize(order.executedBuyAmount, buyDecimals) ); if (interval.current) { clearInterval(interval.current); } invalidateAppState(); + // Analytics: CoW order filled + trackingHandlers?.trackSwapFilled(order.executedSellAmount, order.executedBuyAmount); } else if (isOrderCancelled(order.status)) { setOrderStatus('failed'); if (interval.current) { clearInterval(interval.current); } invalidateAppState(); + // Analytics: CoW order failed + trackingHandlers?.trackSwapFailed(); } else if (isOrderLoading(order.status)) { setOrderStatus('open'); } @@ -203,12 +210,12 @@ export const SwapTxSuccessView = ({ txHashOrOrderId && provider === 'cowprotocol' && chainId && - destDecimals && + buyDecimals && interval.current === null ) { interval.current = setInterval(pollOrder, 10000); } - }, [txHashOrOrderId, chainId, provider, destDecimals]); + }, [txHashOrOrderId, chainId, provider, buyDecimals]); const View = useMemo(() => { if (provider === 'cowprotocol' && orderStatus === 'open') { @@ -220,7 +227,7 @@ export const SwapTxSuccessView = ({ }, [orderStatus, provider]); const surplusFormatted = surplus - ? Number(normalize(surplus.toString(), destDecimals)) + ? Number(normalize(surplus.toString(), isInvertedSwap ? sellDecimals : buyDecimals)) : undefined; const surplusDisplay = surplusFormatted && surplusFormatted > 0 diff --git a/src/locales/el/messages.js b/src/locales/el/messages.js index a5a045cf38..43b547f309 100644 --- a/src/locales/el/messages.js +++ b/src/locales/el/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Εάν ΔΕΝ ξεκλειδώσετε εντός \",[\"0\"],\" του παραθύρου ξεκλειδώματος, θα πρέπει να ενεργοποιήσετε ξανά τη διαδικασία ψύξης.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Η συμμετοχή σε αυτό το αποθεματικό \",[\"symbol\"],\" δίνει ετήσιες ανταμοιβές.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Ανώτατο όριο δανεισμού\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Ο σταθερός δανεισμός δεν είναι ενεργοποιημένος\",\"/yQcJM\":\"Συνολική αξία\",\"00AB2i\":\"Ο χρήστης δεν δανείστηκε το καθορισμένο νόμισμα\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0HRJcX\":\"Merit Program and Self rewards are claimed through the\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να προμηθεύσετε σε αυτό το αποθεματικό. Μπορείτε να προμηθεύσετε το υπόλοιπο του πορτοφολιού σας μέχρι να επιτευχθεί το ανώτατο όριο προμηθειών.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Παρακαλούμε συνδέστε ένα πορτοφόλι για να δείτε τις προσωπικές σας πληροφορίες εδώ.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Ρευστοποίηση <0/> κατώτατο όριο\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Προβολή λεπτομερειών\",\"2FYpfJ\":\"Περισσότερα\",\"2O3qp5\":\"Διαθέσιμη ρευστότητα\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Ο σταθερός δανεισμός είναι ενεργοποιημένος\",\"34Qfwy\":\"Υπέρβαση του ανώτατου ορίου δανεισμού\",\"39eQRj\":[\"Δανεισμός \",[\"symbol\"]],\"3BL1xB\":\"Σύνολο παρεχόμενων\",\"3K0oMo\":\"Υπολειπόμενη προσφορά\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"Δεν υπάρχουν επαρκείς εξασφαλίσεις για την κάλυψη ενός νέου δανείου\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Προσφορά \",[\"symbol\"]],\"3mXg0z\":\"Μέγιστο LTV\",\"3q3mFy\":\"Αποπληρωμή\",\"3qsjtp\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα παρεχόμενα περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"3rL+os\":\"Μπορείτε να αποσύρετε τα περιουσιακά σας στοιχεία από τη Μονάδα Ασφαλείας μόνο αφού λήξει η περίοδος αναμονής και το παράθυρο ξεκλειδώματος είναι ενεργό.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Αποτελέσματα ψηφοφορίας\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"ΜΕΓΙΣΤΟ\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"τεκμηρίωση\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο της προσφοράς του. Μόνο \",[\"messageValue\"],\" μπορεί να παρασχεθεί σε αυτή την αγορά.\"],\"5cZ/KX\":\"Η προσφορά μεταβλητού χρέους δεν είναι μηδενική\",\"5che++\":\"Για να ζητήσετε πρόσβαση σε αυτή την αδειοδοτημένη αγορά, επισκεφθείτε την ιστοσελίδα: <0>Όνομα Παρόχου Πρόσβασης\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Απαιτούμενη δράση επιδότησης\",\"5rsnKT\":\"Διαθέσιμες ανταμοιβές\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Επισκόπηση\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Εγγύηση\",\"65A04M\":\"Ισπανικά\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Αποπληρωμή \",[\"symbol\"]],\"6Xr0UU\":\"Ψύξη...\",\"6bxci/\":\"Δύναμη ψήφου\",\"6f8S68\":\"Αγορές\",\"6g1gi0\":\"Προτάσεις\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Αλλαγή Δικτύου\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Συντελεστής υγείας\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Επιτεύχθηκε\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Διεκδικήστε τα όλα\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Ταμπλό\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Προσοχή - Είστε πολύ κοντά στην ρευστοποίηση. Εξετάστε το ενδεχόμενο να καταθέσετε περισσότερες εγγυήσεις ή να εξοφλήσετε κάποιες από τις δανειακές σας θέσεις\",\"87pUEW\":[\"Το πορτοφόλι σας \",[\"name\"],\" είναι άδειο. Αγοράστε ή μεταφέρετε περιουσιακά στοιχεία.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"Όλες οι προτάσεις\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Μη έγκυρο ποσό για νομισματοκοπία\",\"8Z5FPv\":\"Αποσυνδέστε το πορτοφόλι\",\"8Zz7s5\":\"περιουσιακά στοιχεία\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Ποσοστό χρησιμοποίησης\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Εμφάνιση\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Εισέρχεστε σε λειτουργία απομόνωσης\",\"9CDK3/\":[\"Ο δανεισμός δεν είναι επί του παρόντος διαθέσιμος για \",[\"0\"],\".\"],\"9GIj3z\":\"Μέγεθος Αποθεματικού\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Απαρτία\",\"9QHoGr\":\"Τρέχουσες ψήφοι\",\"9Rw96f\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο δανεισμού του. Υπάρχει μόνο \",[\"messageValue\"],\" διαθέσιμο για δανεισμό από αυτή την αγορά.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Αυτό το περιουσιακό στοιχείο έχει φτάσει στο όριο της προσφοράς του. Τίποτα δεν είναι διαθέσιμο για προμήθεια από αυτή την αγορά.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Δεδομένου ότι πρόκειται για ένα δοκιμαστικό δίκτυο, μπορείτε να αποκτήσετε οποιοδήποτε από τα περιουσιακά στοιχεία αν έχετε ETH στο πορτοφόλι σας\",\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Τα δάνεια σας\",\"AV7cGz\":\"Αναθεώρηση λεπτομερειών έγκρισης συναλλαγής\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Η δύναμη δανεισμού και τα περιουσιακά στοιχεία είναι περιορισμένα λόγω της λειτουργίας απομόνωσης.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6aXGH\":\"Σταθερό\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Η χρήση εγγύησης είναι περιορισμένη λόγω της λειτουργίας απομόνωσης. <0>Μάθετε περισσότερα\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Κατηγορία περιουσιακών στοιχείων\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Βρύση\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Μεγιστο\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Διεκδίκηση \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Βρύση\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Η εγγύηση είναι (ως επί το πλείστον) το ίδιο νόμισμα που δανείζεται\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"Το υποκείμενο περιουσιακό στοιχείο δεν μπορεί να διασωθεί\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave ανά μήνα\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Εξασφάλιση\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Απενεργοποιημένο\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Ανάληψη \",[\"symbol\"]],\"EdQY6l\":\"Κανένα\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Μάθετε περισσότερα.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Δανεισμός χρησιμοποιημένης ισχύος\",\"FPKEug\":\"Η λειτουργία δεν υποστηρίζεται\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"ενεργοποίηση\",\"Fjw9N+\":\"Περιουσιακά στοιχεία προς προμήθεια\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Περιουσιακά Στοιχεία\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"τελειώνει\",\"GtP2hp\":[\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη λειτουργία Αποδοτικότητας (E-Mode) για την κατηγορία \",[\"0\"],\". Για να διαχειριστείτε τις κατηγορίες E-Mode επισκεφθείτε τον <0>Πίνακα ελέγχου.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"η\"],\"HmkYqM\":\"Παράθυρο ξεκλειδώματος\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"Το συνολικό ποσό των περιουσιακών σας στοιχείων σε δολάρια ΗΠΑ που μπορούν να χρησιμοποιηθούν ως εγγύηση για δανεισμό περιουσιακών στοιχείων.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Περίοδος ψύξης\",\"IaA40H\":\"Ρευστοποίηση στο\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Κλειδώστε\",\"JZMxX0\":\"Δεν υπάρχει αρκετό υπόλοιπο στο πορτοφόλι σας\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Υπόλοιπο πορτοφολιού\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KRpokz\":\"VIEW TX\",\"KSlpka\":\"Αυτό αντιπροσωπεύει το κατώτατο όριο στο οποίο μια θέση δανεισμού θα θεωρηθεί υποεγγυημένη και θα υπόκειται σε ρευστοποίηση για κάθε εγγύηση. Για παράδειγμα, εάν μια εγγύηση έχει κατώτατο όριο ρευστοποίησης 80%, αυτό σημαίνει ότι η θέση θα ρευστοποιηθεί όταν η αξία του χρέους ανέρχεται στο 80% της αξίας της εγγύησης.\",\"KYAjf3\":\"Απομονωμένο\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Λήγει\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Λάθος δίκτυο\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Κλείδωμα\",\"KuBTQq\":\"Εισάγετε διεύθυνση ETH\",\"KvG1xW\":\"Διεκδίκηση\",\"L+8Lzs\":\"Τρέχον LTV\",\"L+qiq+\":\"Αγορά\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Δεν υπάρχει δικαίωμα ψήφου\",\"LL0zks\":\"Μπορεί να αποτελέσει εγγύηση\",\"LLdJWu\":\"Διεκδικήσιμο AAVE\",\"LSIpNK\":\"Δεν επιτρέπεται ο δανεισμός και η αποπληρωμή στο ίδιο block\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Διεύθυνση παραλήπτη\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"προβολή κλειδώματος\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, μεταβλητό\",\"MghdTe\":\"Εάν ο συντελεστής υγείας πέσει κάτω από το 1, ενδέχεται να ενεργοποιηθεί η ρευστοποίηση των εγγυήσεών σας.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Ακυρώσατε τη συναλλαγή.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Μη έγκυρη τιμή επιστροφής της συνάρτησης εκτελεστή flashloan\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Εκκρεμεί...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Τίποτα κλειδωμένο\",\"Nh9DAo\":[[\"m\"],\"λ\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Υπέρβαση του ανώτατου ορίου νομισματοκοπείου χωρίς αντίκρισμα\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Επισκόπηση πρότασης\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"απενεργοποιημένο\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Ανάληψη\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"Όταν πραγματοποιείται ρευστοποίηση, οι ρευστοποιητές επιστρέφουν έως και το 50% του ανεξόφλητου δανεισμένου ποσού για λογαριασμό του δανειολήπτη. Σε αντάλλαγμα, μπορούν να αγοράσουν τις εξασφαλίσεις με έκπτωση και να κρατήσουν τη διαφορά (ποινή ρευστοποίησης) ως μπόνους.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα δανειακά περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Κατώτατο όριο ρευστοποίησης\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Δεν έχει επιτευχθεί\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Διαφορικό\",\"RNK49r\":\"Μη έγκυρη υπογραφή\",\"RS0o7b\":\"Κατάσταση\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Λεπτομέρειες πρότασης\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Το περιουσιακό στοιχείο δεν περιλαμβάνεται στον κατάλογο\",\"Rj01Fz\":\"Σύνδεσμοι\",\"RmWFEe\":\"Κλείδωμα APR\",\"RtBLm7\":\"Ο συντελεστής υγείας είναι μικρότερος από το όριο ρευστοποίησης\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Ενεργοποιημένο\",\"SDav7h\":\"Κεφάλαια στην Μονάδα Ασφάλειας\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Σύνολο διαθέσιμων\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Απενεργοποίηση E-Mode\",\"SxaD0o\":\"Ο πάροχος διευθύνσεων κοινόχρηστων ταμείων δεν είναι εγγεγραμμένος\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Δανεισμός\",\"TFxQlw\":\"Ποινή ρευστοποίησης\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"To περιουσιακό στοιχείο μπορεί να χρησιμοποιηθεί ως εγγύηση μόνο σε λειτουργία απομόνωσης.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος σταθερού επιτοκίου σε αυτό το αποθεματικό\",\"TeCFg/\":\"Borrow rate change\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Το περιουσιακό στοιχείο δεν είναι δανείσιμο σε λειτουργία απομόνωσης\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Λεπτομέρειες\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"Τα κεφάλαια αυτά έχουν δανειστεί και δεν είναι διαθέσιμα για ανάληψη αυτή τη στιγμή.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Ο δείκτης μέγιστου LTV αντιπροσωπεύει τη μέγιστη δανειοληπτική ικανότητα μιας συγκεκριμένης εγγύησης. Για παράδειγμα, εάν μια εγγύηση έχει LTV 75%, ο χρήστης μπορεί να δανειστεί έως και 0,75 ETH στο κύριο νόμισμα για κάθε 1 ETH αξίας εγγύησης.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Δεν υπάρχουν ανταμοιβές για διεκδίκηση\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Συνδέστε το πορτοφόλι\",\"VMfYUK\":\"Ασφάλεια των κατατεθειμένων εξασφαλίσεών σας έναντι των δανειζόμενων περιουσιακών στοιχείων και της υποκείμενης αξίας τους.\",\"VOAZJh\":\"Σύνολο δανείων\",\"ViKYxK\":\"ΥΠΕΡ\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Αναθεώρηση λεπτομερειών συναλλαγής\",\"W5hVah\":\"Τίποτα δεν έχει παρασχεθεί ακόμη\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Μη υποστηριζόμενο\",\"WNGZwH\":\"Το E-Mode αυξάνει το LTV σας για μια επιλεγμένη κατηγορία περιουσιακών στοιχείων έως και <0/>. <1>Μάθετε περισσότερα\",\"WPWG/y\":\"Κατάσταση & διαμόρφωση αποθεματικού\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"Ο χρήστης δεν μπορεί να κάνει ανάληψη μεγαλύτερη από το διαθέσιμο υπόλοιπο\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Για να δανειστείτε πρέπει να προσκομίσετε οποιοδήποτε περιουσιακό στοιχείο που θα χρησιμοποιηθεί ως εγγύηση.\",\"X/ITG9\":\"Κείμενο σφάλματος αντιγραφής\",\"X3Pp6x\":\"Χρησιμοποιείται ως εγγύηση\",\"X4Zt7j\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή η εφεδρεία βρίσκεται σε παύση\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"ΨΗΦΙΣΤΕ ΚΑΤΑ\",\"YDIOks\":\"Ενεργοποίηση E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"Εάν το δάνειο προς αξία υπερβεί το όριο ρευστοποίησης, η παρεχόμενη εγγύηση σας μπορεί να ρευστοποιηθεί.\",\"YyIM65\":\"Δεν τηρήθηκαν οι όροι επανεξισορρόπησης των επιτοκίων\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Διακυβέρνηση Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Λειτουργία αποδοτικότητας (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Μέγιστη περικοπή\",\"ZfUGFb\":\"Πριν από την προμήθεια\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Αξία ρευστοποίησης\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"ενεργοποιημένο\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Χρόνος που απομένει για το ξεκλείδωμα\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Ψηφίστε ΚΑΤΑ\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Οι παράμετροι της συστοιχίας που θα έπρεπε να είναι ίσου μήκους δεν είναι\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Δανεισμός APY, μεταβλητό\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Προειδοποίηση περιόδου ψύξης\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Περιουσιακό στοιχείο\",\"bXQ/Og\":\"Μοιραστείτε το στο twitter\",\"bXr0ee\":\"Τα απομονωμένα περιουσιακά στοιχεία έχουν περιορισμένη δανειοληπτική ικανότητα και άλλα περιουσιακά στοιχεία δεν μπορούν να χρησιμοποιηθούν ως εγγύηση.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Το αιτούμενο ποσό είναι μεγαλύτερο από το μέγιστο μέγεθος δανείου στη λειτουργία σταθερού επιτοκίου\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Προσφορά\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Η διεύθυνση δεν είναι συμβόλαιο\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Δεν μπορείτε να αποσύρετε αυτό το ποσό, διότι θα προκληθεί κλήση εγγύησης\",\"cBc+4A\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να δανειστείτε. Μπορείτε να δανειστείτε με βάση την εξασφάλισή σας και μέχρι να επιτευχθεί το ανώτατο όριο δανεισμού.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Λεπτομέρειες κινδύνου\",\"cNT+ij\":\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη Λειτουργία Αποδοτικότητας (E-Mode) και τη λειτουργία Απομόνωσης. Για να διαχειριστείτε τη λειτουργία E-Mode και τη λειτουργία Απομόνωσης, επισκεφθείτε τον <0>Πίνακα ελέγχου.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Ψηφίστε ΥΠΕΡ\",\"ckf7gX\":[\"Αποπληρώνοντας \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Συζήτηση φόρουμ\",\"csDS2L\":\"Διαθέσιμο\",\"cu7Stb\":\"Δεν συμμετείχατε στην παρούσα πρόταση\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Διακυβέρνηση\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Η επικύρωση του Ltv απέτυχε\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Δεν έχετε αρκετά χρήματα στο πορτοφόλι σας για να αποπληρώσετε ολόκληρο το ποσό. Εάν προχωρήσετε στην αποπληρωμή με το τρέχον ποσό των χρημάτων σας, θα εξακολουθείτε να έχετε μια μικρή θέση δανεισμού στο ταμπλό σας.\",\"dXUQFX\":\"Περιουσιακά στοιχεία προς δανεισμό\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Χρησιμοποίηση εγγυήσεων\",\"dpc0qG\":\"Μεταβλητό\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Η δράση απαιτεί ενεργό απόθεμα\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Σύνολο δανεικών\",\"ecqEvn\":\"Το υπόλοιπο των εγγυήσεων είναι 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Ξεκλειδώστε τώρα\",\"evw5ha\":\"Καθαρή αξία\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Αλλάξατε σε ποσοστό \",[\"0\"]],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Το τρέχον δάνειο προς αξία με βάση τις παρεχόμενες εξασφαλίσεις σας.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Υπόλοιπο\",\"fu1Dbh\":[\"Ανάληψη \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Λειτουργία Testnet\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"Ο χρήστης προσπαθεί να δανειστεί πολλαπλά περιουσιακά στοιχεία, συμπεριλαμβανομένου ενός απομονωμένου περιουσιακού στοιχείου\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Η μηδενική διεύθυνση δεν είναι έγκυρη\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Το καθαρό ΑΡΥ είναι η συνδυασμένη επίδραση όλων των θέσεων προσφοράς και δανεισμού στην καθαρή αξία, συμπεριλαμβανομένων των κινήτρων. Είναι δυνατόν να υπάρχει αρνητικό καθαρό APY εάν το χρεωστικό APY είναι υψηλότερο από το προσφερόμενο APY.\",\"gzcch9\":\"Μη έγκυρη αμοιβή πρωτοκόλλου γέφυρας\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Καθαρό APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Το % της συνολικής δανειοληπτικής σας δύναμης που χρησιμοποιείται. Αυτό βασίζεται στο ποσό της παρεχόμενης εξασφάλισής σας και στο συνολικό ποσό που μπορείτε να δανειστείτε.\",\"hehnjM\":\"Ποσό\",\"hjDCQr\":\"Υπήρξε κάποιο σφάλμα. Προσπαθήστε να αλλάξετε τις παραμέτρους ή <0><1>αντιγράψτε το σφάλμα\",\"hom7qf\":\"Διεκδίκηση\",\"hpHJ4I\":\"Liquidated collateral\",\"huQ6Tz\":[\"Δανεισμός \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Ασυνεπείς παράμετροι flashloan\",\"iEPVHF\":\"Δεν έχει αρκετή δύναμη ψήφου για να συμμετάσχει στην παρούσα πρόταση\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"Ψηφίσατε \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Εισάγετε ένα ποσό\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens δεν είναι το ίδιο με το να τα κλειδώνετε. Εάν επιθυμείτε να κλειδώσετε τα\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"H χρήση εγγυήσεων είναι περιορισμένη λόγω της λειτουργίας Απομόνωσης.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Προμηθεύοντας το\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Απενεργοποίηση E-Mode\",\"jKYzR1\":\"Ενεργοποίηση E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"δ\"],\"jbFMap\":\"Χρόνος ψύξης που έχει απομείνει\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"Στο E-Mode ορισμένα περιουσιακά στοιχεία δεν είναι δανείσιμα. Βγείτε από το E-Mode για να αποκτήσετε πρόσβαση σε όλα τα περιουσιακά στοιχεία\",\"jpctdh\":\"View\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Μη διαθέσιμο\",\"k/sb6z\":\"Επιλέξτε γλώσσα\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Διεκδίκηση \",[\"0\"]],\"kH6wUX\":\"Επίδραση στην τιμή\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Για την εξόφληση εκ μέρους ενός χρήστη απαιτείται ένα ρητό ποσό προς εξόφληση\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Υπέρβαση του ανώτατου ορίου προσφοράς\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Το ανώτατο όριο χρέους δεν είναι μηδενικό\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Αγγλικά\",\"lfEjIE\":\"Μάθετε περισσότερα στον οδηγό <0>Συχνών Ερωτήσεων\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Συνολικές εκπομπές ανά ημέρα\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Εντάξει, Κλείσιμο\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Το περιουσιακό στοιχείο δεν μπορεί να χρησιμοποιηθεί ως εγγύηση.\",\"n+SX4g\":\"Προγραμματιστές\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Προσφορά apy\",\"nJgsQu\":\"Με δύναμη ψήφου <0/>\",\"nLC6tu\":\"Γαλλικά\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Μπορεί να εκτελεστεί\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"ω\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Ο συντελεστής υγείας και το δάνειο προς αξία καθορίζουν τη διασφάλιση των εξασφαλίσεών σας. Για να αποφύγετε τις ρευστοποιήσεις μπορείτε να παράσχετε περισσότερες εξασφαλίσεις ή να εξοφλήσετε δανειακές θέσεις.\",\"o1xc2V\":\"Η προσφορά AToken δεν είναι μηδενική\",\"o5ooMr\":\"Χρέος\",\"o7J4JM\":\"Φίλτρο\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Ψύξτε για ξεκλείδωμα\",\"oJ5ZiG\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος μεταβλητού επιτοκίου σε αυτό το αποθεματικό\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Το σταθερό επιτόκιο θα <0>μείνει το ίδιο για όλη τη διάρκεια του δανείου σας. Συνιστάται για μακροχρόνιες περιόδους δανεισμού και για χρήστες που προτιμούν την προβλεψιμότητα.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Διαθέσιμο για προμήθεια\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"Αυτό το περιουσιακό στοιχείο έχει φθάσει στο ανώτατο όριο δανεισμού του. Τίποτα δεν είναι διαθέσιμο για δανεισμό από αυτή την αγορά.\",\"p3j+mb\":\"Το υπόλοιπο της ανταμοιβής σας είναι 0\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Το υποκείμενο υπόλοιπο πρέπει να είναι μεγαλύτερο από 0\",\"pgWG9H\":\"Δεν υπάρχει αρκετό κλειδωμένο υπόλοιπο\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"παρακαλούμε ελέγξτε ότι το ποσό που θέλετε να παρέχετε δεν χρησιμοποιείται επί του παρόντος για κλείδωμα. Εάν χρησιμοποιείται για κλείδωμα, η συναλλαγή σας ενδέχεται να αποτύχει.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Καταλαβαίνω πώς λειτουργεί η ψύξη (\",[\"0\"],\") και το ξεκλείδωμα (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"Ο καλών αυτής της συνάρτησης πρέπει να είναι ένα κοινόχρηστο ταμείο\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Κλειδωμένο\",\"qB4kPi\":\"Προσφορά APY\",\"qENI8q\":\"Γενικές ρυθμίσεις\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"αντιγράψτε το σφάλμα\",\"qXCkEM\":\"Συνδέστε το πορτοφόλι σας για να δείτε τις προμήθειες, τα δάνεια και τις ανοιχτές θέσεις σας.\",\"qY2jnw\":\"Μη έγκυρη λήξη\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Μη έγκυρη ποσότητα προς καύση\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Το ποσό πρέπει να είναι μεγαλύτερο από 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"rcT+yy\":\"Εμφάνιση περιουσιακών στοιχείων με υπόλοιπο 0\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Διεκδικήστε όλες τις ανταμοιβές\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"ΚΑΤΑ\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Μπορείτε να ξεκλειδώσετε εδώ\",\"smJNwH\":\"Διαθέσιμο για δανεισμό\",\"solypO\":\"Ο παράγοντας υγείας δεν είναι κάτω από το όριο\",\"sr0UJD\":\"Πηγαίνετε Πίσω\",\"ss5GCK\":\"Η διεύθυνση του παρόχου διευθύνσεων κοινόχρηστου ταμείου είναι άκυρη\",\"swEgK4\":\"Οι πληροφορίες ψήφου σας\",\"t+wtgf\":\"Τίποτα δανεισμένο ακόμα\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Τιμή Oracle\",\"tFZLf8\":\"Αυτός ο υπολογισμός gas είναι μόνο μια εκτίμηση. Το πορτοφόλι σας θα καθορίσει την τιμή της συναλλαγής. Μπορείτε να τροποποιήσετε τις ρυθμίσεις gas απευθείας από τον πάροχο του πορτοφολιού σας.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Παρακαλώ, συνδέστε το πορτοφόλι σας\",\"tt5yma\":\"Οι προμήθειές σας\",\"u3ZeYl\":\"Η συναλλαγή απέτυχε\",\"u706uF\":\"Άκυρη πριμοδότηση flashloan\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Για την αποπληρωμή ενός συγκεκριμένου τύπου χρέους, ο χρήστης πρέπει να έχει χρέος αυτού του τύπου\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Απόκρυψη\",\"vMba49\":\"Ο δανεισμός δεν είναι ενεργοποιημένος\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Γλώσσα\",\"vesuBJ\":\"Σας επιτρέπει να αποφασίσετε αν θα χρησιμοποιήσετε ένα παρεχόμενο περιουσιακό στοιχείο ως εγγύηση. Ένα περιουσιακό στοιχείο που χρησιμοποιείται ως εγγύηση θα επηρεάσει τη δανειοληπτική σας ικανότητα και τον συντελεστή υγείας.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Σταθερό νόμισμα\",\"w/JtJ3\":\"Η σταθερή προσφορά χρέους δεν είναι μηδενική\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Ανταμοιβές APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Εσείς \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"Ο καλών της συνάρτησης δεν είναι AToken\",\"wZFvVU\":\"ΨΗΦΙΣΤΕ ΥΠΕΡ\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Βρύση \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Τρέχον διαφορικό\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, παρακαλούμε μεταβείτε στο\",\"xNy/UG\":\"Αποπληρωμή με\",\"xPm8wv\":\"Μάθετε περισσότερα για τους κινδύνους\",\"xXYpZl\":[[\"0\"],\" Βρύση\"],\"xaVBSS\":\"Οι πληροφορίες σας\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Σκοτεινή λειτουργία\",\"yCrG6m\":\"Συνολικό μέγεθος της αγοράς\",\"yJUUbn\":\"Επισκόπηση συναλλαγής\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Μη έγκυρη διεύθυνση\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Δεν υπάρχουν αρκετά κεφάλαια στο\",[\"0\"],\"αποθεματικό για δανεισμό\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Κλείσιμο\",\"z4uGQg\":\"Υπέρβαση του ανώτατου ορίου χρέους\",\"z5UQOM\":\"Η εγγύηση που έχει επιλεγεί δεν μπορεί να ρευστοποιηθεί\",\"z5Y+p6\":[\"Παροχή \",[\"symbol\"]],\"zCjNKs\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή το αποθεματικό έχει παγώσει\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Υπολειπόμενο χρέος\",\"zmTPiV\":\"Υπόλοιπο προσφοράς\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Μενού\",\"zwWKhA\":\"Μάθετε περισσότερα\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"zzzTXS\":\"Merit Program rewards are claimed through the\",\"+EGVI0\":\"Receive (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Φαίνεται ότι δεν μπορούμε να αλλάξουμε το δίκτυο αυτόματα. Ελέγξτε αν μπορείτε να το αλλάξετε από το πορτοφόλι.\",\"+kLZGu\":\"Supplied asset amount\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Minimum staked Aave amount\",\"00OflG\":\"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.\",\"08/rZ9\":\"The cooldown period is the time required prior to unstaking your tokens (20 days). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window.<0>Learn more\",\"1Onqx8\":[\"Έγκριση του \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Blocked Address\",\"2bAhR7\":\"Meet GHO\",\"2o/xRt\":\"Επίτευξη του ανώτατου ορίου εφοδιασμού στο αποθεματικό-στόχο. Δοκιμάστε να \\nμειώσετε την ποσότητα.\",\"3O8YTV\":\"Total interest accrued\",\"4iPAI3\":\"Minimum GHO borrow amount\",\"6NGLTR\":\"Discountable amount\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Discount parameters are decided by the Aave community and may be changed over time. Check Governance for updates and vote to participate. <0>Learn more\",\"ARu1L4\":\"Repaid\",\"B9Gqbz\":\"Variable rate\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"At a discount\",\"CMHmbm\":\"Slippage\",\"EBL9Gz\":\"COPIED!\",\"ES8dkb\":\"Fixed rate\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Discount\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Save and share\",\"JK9zf1\":[\"Estimated compounding interest, including discount for Staking \",[\"0\"],\"AAVE in Safety Module.\"],\"JPrLjO\":\"Δεν μπορείτε να χρησιμοποιήσετε αυτό το νόμισμα ως εγγύηση\",\"JU6q+W\":\"Ανταμοιβή(ες) προς διεκδίκηση\",\"K05qZY\":\"Withdraw & Switch\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Η ενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση αυξάνει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας. Ωστόσο, μπορεί να ρευστοποιηθεί εάν ο συντελεστής υγείας σας πέσει κάτω από το 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Απενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Send feedback\",\"TskbEN\":\"Holders of stkAAVE receive a discount on the GHO borrowing rate\",\"TtZL6q\":\"Discount model parameters\",\"Tz0GSZ\":\"blocked activities\",\"W8ekPc\":\"Back to Dashboard\",\"XZzneG\":\"Θα βγείτε από τη λειτουργία απομόνωσης και άλλα tokens μπορούν πλέον να χρησιμοποιηθούν ως εγγύηση\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Η απενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση επηρεάζει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας.\",\"al6Pyz\":\"Exceeds the discount\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Δεν υπάρχουν επαρκείς εγγυήσεις για την αποπληρωμή αυτού του ποσού χρέους με\",\"cqnmnD\":\"Effective interest rate\",\"dMtLDE\":\"to\",\"euScGB\":\"APY with discount applied\",\"fHcELk\":\"Καθαρό APR\",\"flRCF/\":\"Staking discount\",\"gncRUO\":\"This address is blocked on app.aave.com because it is associated with one or more\",\"gr8mYw\":\"You may borrow up to <0/> GHO at <1/> (max discount)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Borrow balance\",\"i2JTiw\":\"You may enter a custom amount in the field.\",\"jMam5g\":[[\"0\"],\" Υπόλοιπο\"],\"kwwn6i\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate. The discount applies to 100 GHO for every 1 stkAAVE held. Use the calculator below to see GHO borrow rate with the discount applied.\",\"lNVG7i\":\"Select an asset\",\"lt6bpt\":\"Collateral to repay with\",\"mIM0qu\":\"Expected amount to repay\",\"mzI/c+\":\"Download\",\"n8Psk4\":\"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.\",\"nOy4ob\":\"We suggest you go back to the Dashboard.\",\"nakd8r\":\"stkAAVE holders get a discount on GHO borrow rate\",\"nh2EJK\":[\"Παρακαλώ μεταβείτε στο \",[\"networkName\"],\".\"],\"ntkAoE\":\"Discount applied for <0/> staking AAVE\",\"o4tCu3\":\"Borrow APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"Η περίοδος ψύξης είναι \",[\"0\"],\". Μετά την \",[\"1\"],\" περίοδο ψύξης, θα εισέλθετε στο παράθυρο ξεκλειδώματος \",[\"2\"],\". Θα συνεχίσετε να λαμβάνετε ανταμοιβές κατά τη διάρκεια της ψύξης και του παραθύρου ξεκλειδώματος.\"],\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interest accrued\",\"rf8POi\":\"Borrowed asset amount\",\"ruc7X+\":\"Add stkAAVE to see borrow APY with the discount\",\"sK+Nag\":\"Αναθεώρηση συναλλαγής\",\"t81DpC\":[\"Approve \",[\"symbol\"],\" to continue\"],\"umICAY\":\"<0><1><2/>Add stkAAVE to see borrow rate with discount\",\"uwAUvj\":\"COPY IMAGE\",\"v8x7Mg\":\"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.\",\"wRRqvW\":\"Δεν έχετε προμήθειες σε αυτό το νόμισμα\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Ενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"yW1oWB\":\"Τύπος APY\",\"yhvj6d\":\"Δεν μπορείτε να αλλάξετε τη χρήση ως λειτουργία εγγύησης για αυτό το νόμισμα, διότι θα προκαλέσει κλήση εγγύησης\",\"zevmS2\":\"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Εάν ΔΕΝ ξεκλειδώσετε εντός \",[\"0\"],\" του παραθύρου ξεκλειδώματος, θα πρέπει να ενεργοποιήσετε ξανά τη διαδικασία ψύξης.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Η συμμετοχή σε αυτό το αποθεματικό \",[\"symbol\"],\" δίνει ετήσιες ανταμοιβές.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Ανώτατο όριο δανεισμού\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Ο σταθερός δανεισμός δεν είναι ενεργοποιημένος\",\"/yQcJM\":\"Συνολική αξία\",\"00AB2i\":\"Ο χρήστης δεν δανείστηκε το καθορισμένο νόμισμα\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0HRJcX\":\"Merit Program and Self rewards are claimed through the\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να προμηθεύσετε σε αυτό το αποθεματικό. Μπορείτε να προμηθεύσετε το υπόλοιπο του πορτοφολιού σας μέχρι να επιτευχθεί το ανώτατο όριο προμηθειών.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Παρακαλούμε συνδέστε ένα πορτοφόλι για να δείτε τις προσωπικές σας πληροφορίες εδώ.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Ρευστοποίηση <0/> κατώτατο όριο\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Προβολή λεπτομερειών\",\"2FYpfJ\":\"Περισσότερα\",\"2O3qp5\":\"Διαθέσιμη ρευστότητα\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Ο σταθερός δανεισμός είναι ενεργοποιημένος\",\"34Qfwy\":\"Υπέρβαση του ανώτατου ορίου δανεισμού\",\"39eQRj\":[\"Δανεισμός \",[\"symbol\"]],\"3BL1xB\":\"Σύνολο παρεχόμενων\",\"3K0oMo\":\"Υπολειπόμενη προσφορά\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"Δεν υπάρχουν επαρκείς εξασφαλίσεις για την κάλυψη ενός νέου δανείου\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Προσφορά \",[\"symbol\"]],\"3mXg0z\":\"Μέγιστο LTV\",\"3q3mFy\":\"Αποπληρωμή\",\"3qsjtp\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα παρεχόμενα περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"3rL+os\":\"Μπορείτε να αποσύρετε τα περιουσιακά σας στοιχεία από τη Μονάδα Ασφαλείας μόνο αφού λήξει η περίοδος αναμονής και το παράθυρο ξεκλειδώματος είναι ενεργό.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Αποτελέσματα ψηφοφορίας\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"ΜΕΓΙΣΤΟ\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"τεκμηρίωση\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο της προσφοράς του. Μόνο \",[\"messageValue\"],\" μπορεί να παρασχεθεί σε αυτή την αγορά.\"],\"5cZ/KX\":\"Η προσφορά μεταβλητού χρέους δεν είναι μηδενική\",\"5che++\":\"Για να ζητήσετε πρόσβαση σε αυτή την αδειοδοτημένη αγορά, επισκεφθείτε την ιστοσελίδα: <0>Όνομα Παρόχου Πρόσβασης\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Απαιτούμενη δράση επιδότησης\",\"5rsnKT\":\"Διαθέσιμες ανταμοιβές\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Επισκόπηση\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Εγγύηση\",\"65A04M\":\"Ισπανικά\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Αποπληρωμή \",[\"symbol\"]],\"6Xr0UU\":\"Ψύξη...\",\"6bxci/\":\"Δύναμη ψήφου\",\"6f8S68\":\"Αγορές\",\"6g1gi0\":\"Προτάσεις\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Αλλαγή Δικτύου\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Συντελεστής υγείας\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Επιτεύχθηκε\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Διεκδικήστε τα όλα\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Ταμπλό\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Προσοχή - Είστε πολύ κοντά στην ρευστοποίηση. Εξετάστε το ενδεχόμενο να καταθέσετε περισσότερες εγγυήσεις ή να εξοφλήσετε κάποιες από τις δανειακές σας θέσεις\",\"87pUEW\":[\"Το πορτοφόλι σας \",[\"name\"],\" είναι άδειο. Αγοράστε ή μεταφέρετε περιουσιακά στοιχεία.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"Όλες οι προτάσεις\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Μη έγκυρο ποσό για νομισματοκοπία\",\"8Z5FPv\":\"Αποσυνδέστε το πορτοφόλι\",\"8Zz7s5\":\"περιουσιακά στοιχεία\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Ποσοστό χρησιμοποίησης\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Εμφάνιση\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Εισέρχεστε σε λειτουργία απομόνωσης\",\"9CDK3/\":[\"Ο δανεισμός δεν είναι επί του παρόντος διαθέσιμος για \",[\"0\"],\".\"],\"9GIj3z\":\"Μέγεθος Αποθεματικού\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Απαρτία\",\"9QHoGr\":\"Τρέχουσες ψήφοι\",\"9Rw96f\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο δανεισμού του. Υπάρχει μόνο \",[\"messageValue\"],\" διαθέσιμο για δανεισμό από αυτή την αγορά.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Αυτό το περιουσιακό στοιχείο έχει φτάσει στο όριο της προσφοράς του. Τίποτα δεν είναι διαθέσιμο για προμήθεια από αυτή την αγορά.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Δεδομένου ότι πρόκειται για ένα δοκιμαστικό δίκτυο, μπορείτε να αποκτήσετε οποιοδήποτε από τα περιουσιακά στοιχεία αν έχετε ETH στο πορτοφόλι σας\",\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Τα δάνεια σας\",\"AV7cGz\":\"Αναθεώρηση λεπτομερειών έγκρισης συναλλαγής\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Η δύναμη δανεισμού και τα περιουσιακά στοιχεία είναι περιορισμένα λόγω της λειτουργίας απομόνωσης.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6aXGH\":\"Σταθερό\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Η χρήση εγγύησης είναι περιορισμένη λόγω της λειτουργίας απομόνωσης. <0>Μάθετε περισσότερα\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Κατηγορία περιουσιακών στοιχείων\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Βρύση\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Μεγιστο\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Διεκδίκηση \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Βρύση\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Η εγγύηση είναι (ως επί το πλείστον) το ίδιο νόμισμα που δανείζεται\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"Το υποκείμενο περιουσιακό στοιχείο δεν μπορεί να διασωθεί\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave ανά μήνα\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Εξασφάλιση\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Απενεργοποιημένο\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Ανάληψη \",[\"symbol\"]],\"EdQY6l\":\"Κανένα\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Μάθετε περισσότερα.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Δανεισμός χρησιμοποιημένης ισχύος\",\"FPKEug\":\"Η λειτουργία δεν υποστηρίζεται\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"ενεργοποίηση\",\"Fjw9N+\":\"Περιουσιακά στοιχεία προς προμήθεια\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Περιουσιακά Στοιχεία\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"τελειώνει\",\"GtP2hp\":[\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη λειτουργία Αποδοτικότητας (E-Mode) για την κατηγορία \",[\"0\"],\". Για να διαχειριστείτε τις κατηγορίες E-Mode επισκεφθείτε τον <0>Πίνακα ελέγχου.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"η\"],\"HmkYqM\":\"Παράθυρο ξεκλειδώματος\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"Το συνολικό ποσό των περιουσιακών σας στοιχείων σε δολάρια ΗΠΑ που μπορούν να χρησιμοποιηθούν ως εγγύηση για δανεισμό περιουσιακών στοιχείων.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Περίοδος ψύξης\",\"IaA40H\":\"Ρευστοποίηση στο\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Κλειδώστε\",\"JZMxX0\":\"Δεν υπάρχει αρκετό υπόλοιπο στο πορτοφόλι σας\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Υπόλοιπο πορτοφολιού\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KRpokz\":\"VIEW TX\",\"KSlpka\":\"Αυτό αντιπροσωπεύει το κατώτατο όριο στο οποίο μια θέση δανεισμού θα θεωρηθεί υποεγγυημένη και θα υπόκειται σε ρευστοποίηση για κάθε εγγύηση. Για παράδειγμα, εάν μια εγγύηση έχει κατώτατο όριο ρευστοποίησης 80%, αυτό σημαίνει ότι η θέση θα ρευστοποιηθεί όταν η αξία του χρέους ανέρχεται στο 80% της αξίας της εγγύησης.\",\"KYAjf3\":\"Απομονωμένο\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Λήγει\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Λάθος δίκτυο\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Κλείδωμα\",\"KuBTQq\":\"Εισάγετε διεύθυνση ETH\",\"KvG1xW\":\"Διεκδίκηση\",\"L+8Lzs\":\"Τρέχον LTV\",\"L+qiq+\":\"Αγορά\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Δεν υπάρχει δικαίωμα ψήφου\",\"LL0zks\":\"Μπορεί να αποτελέσει εγγύηση\",\"LLdJWu\":\"Διεκδικήσιμο AAVE\",\"LSIpNK\":\"Δεν επιτρέπεται ο δανεισμός και η αποπληρωμή στο ίδιο block\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Διεύθυνση παραλήπτη\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"προβολή κλειδώματος\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, μεταβλητό\",\"MghdTe\":\"Εάν ο συντελεστής υγείας πέσει κάτω από το 1, ενδέχεται να ενεργοποιηθεί η ρευστοποίηση των εγγυήσεών σας.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Ακυρώσατε τη συναλλαγή.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Μη έγκυρη τιμή επιστροφής της συνάρτησης εκτελεστή flashloan\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Εκκρεμεί...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Τίποτα κλειδωμένο\",\"Nh9DAo\":[[\"m\"],\"λ\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Υπέρβαση του ανώτατου ορίου νομισματοκοπείου χωρίς αντίκρισμα\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Επισκόπηση πρότασης\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"απενεργοποιημένο\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Ανάληψη\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"Όταν πραγματοποιείται ρευστοποίηση, οι ρευστοποιητές επιστρέφουν έως και το 50% του ανεξόφλητου δανεισμένου ποσού για λογαριασμό του δανειολήπτη. Σε αντάλλαγμα, μπορούν να αγοράσουν τις εξασφαλίσεις με έκπτωση και να κρατήσουν τη διαφορά (ποινή ρευστοποίησης) ως μπόνους.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα δανειακά περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Κατώτατο όριο ρευστοποίησης\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Δεν έχει επιτευχθεί\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Διαφορικό\",\"RNK49r\":\"Μη έγκυρη υπογραφή\",\"RS0o7b\":\"Κατάσταση\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Λεπτομέρειες πρότασης\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Το περιουσιακό στοιχείο δεν περιλαμβάνεται στον κατάλογο\",\"Rj01Fz\":\"Σύνδεσμοι\",\"RmWFEe\":\"Κλείδωμα APR\",\"RtBLm7\":\"Ο συντελεστής υγείας είναι μικρότερος από το όριο ρευστοποίησης\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Ενεργοποιημένο\",\"SDav7h\":\"Κεφάλαια στην Μονάδα Ασφάλειας\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Σύνολο διαθέσιμων\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Απενεργοποίηση E-Mode\",\"SxaD0o\":\"Ο πάροχος διευθύνσεων κοινόχρηστων ταμείων δεν είναι εγγεγραμμένος\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Δανεισμός\",\"TFxQlw\":\"Ποινή ρευστοποίησης\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"To περιουσιακό στοιχείο μπορεί να χρησιμοποιηθεί ως εγγύηση μόνο σε λειτουργία απομόνωσης.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος σταθερού επιτοκίου σε αυτό το αποθεματικό\",\"TeCFg/\":\"Borrow rate change\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Το περιουσιακό στοιχείο δεν είναι δανείσιμο σε λειτουργία απομόνωσης\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Λεπτομέρειες\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"Τα κεφάλαια αυτά έχουν δανειστεί και δεν είναι διαθέσιμα για ανάληψη αυτή τη στιγμή.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Ο δείκτης μέγιστου LTV αντιπροσωπεύει τη μέγιστη δανειοληπτική ικανότητα μιας συγκεκριμένης εγγύησης. Για παράδειγμα, εάν μια εγγύηση έχει LTV 75%, ο χρήστης μπορεί να δανειστεί έως και 0,75 ETH στο κύριο νόμισμα για κάθε 1 ETH αξίας εγγύησης.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Δεν υπάρχουν ανταμοιβές για διεκδίκηση\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Συνδέστε το πορτοφόλι\",\"VMfYUK\":\"Ασφάλεια των κατατεθειμένων εξασφαλίσεών σας έναντι των δανειζόμενων περιουσιακών στοιχείων και της υποκείμενης αξίας τους.\",\"VOAZJh\":\"Σύνολο δανείων\",\"ViKYxK\":\"ΥΠΕΡ\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Αναθεώρηση λεπτομερειών συναλλαγής\",\"W5hVah\":\"Τίποτα δεν έχει παρασχεθεί ακόμη\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Μη υποστηριζόμενο\",\"WNGZwH\":\"Το E-Mode αυξάνει το LTV σας για μια επιλεγμένη κατηγορία περιουσιακών στοιχείων έως και <0/>. <1>Μάθετε περισσότερα\",\"WPWG/y\":\"Κατάσταση & διαμόρφωση αποθεματικού\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"Ο χρήστης δεν μπορεί να κάνει ανάληψη μεγαλύτερη από το διαθέσιμο υπόλοιπο\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Για να δανειστείτε πρέπει να προσκομίσετε οποιοδήποτε περιουσιακό στοιχείο που θα χρησιμοποιηθεί ως εγγύηση.\",\"X/ITG9\":\"Κείμενο σφάλματος αντιγραφής\",\"X3Pp6x\":\"Χρησιμοποιείται ως εγγύηση\",\"X4Zt7j\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή η εφεδρεία βρίσκεται σε παύση\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"ΨΗΦΙΣΤΕ ΚΑΤΑ\",\"YDIOks\":\"Ενεργοποίηση E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"Εάν το δάνειο προς αξία υπερβεί το όριο ρευστοποίησης, η παρεχόμενη εγγύηση σας μπορεί να ρευστοποιηθεί.\",\"YyIM65\":\"Δεν τηρήθηκαν οι όροι επανεξισορρόπησης των επιτοκίων\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Διακυβέρνηση Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Λειτουργία αποδοτικότητας (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Μέγιστη περικοπή\",\"ZfUGFb\":\"Πριν από την προμήθεια\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Αξία ρευστοποίησης\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"ενεργοποιημένο\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Χρόνος που απομένει για το ξεκλείδωμα\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Ψηφίστε ΚΑΤΑ\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Οι παράμετροι της συστοιχίας που θα έπρεπε να είναι ίσου μήκους δεν είναι\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Δανεισμός APY, μεταβλητό\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Προειδοποίηση περιόδου ψύξης\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Περιουσιακό στοιχείο\",\"bXQ/Og\":\"Μοιραστείτε το στο twitter\",\"bXr0ee\":\"Τα απομονωμένα περιουσιακά στοιχεία έχουν περιορισμένη δανειοληπτική ικανότητα και άλλα περιουσιακά στοιχεία δεν μπορούν να χρησιμοποιηθούν ως εγγύηση.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Το αιτούμενο ποσό είναι μεγαλύτερο από το μέγιστο μέγεθος δανείου στη λειτουργία σταθερού επιτοκίου\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Προσφορά\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Η διεύθυνση δεν είναι συμβόλαιο\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Δεν μπορείτε να αποσύρετε αυτό το ποσό, διότι θα προκληθεί κλήση εγγύησης\",\"cBc+4A\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να δανειστείτε. Μπορείτε να δανειστείτε με βάση την εξασφάλισή σας και μέχρι να επιτευχθεί το ανώτατο όριο δανεισμού.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Λεπτομέρειες κινδύνου\",\"cNT+ij\":\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη Λειτουργία Αποδοτικότητας (E-Mode) και τη λειτουργία Απομόνωσης. Για να διαχειριστείτε τη λειτουργία E-Mode και τη λειτουργία Απομόνωσης, επισκεφθείτε τον <0>Πίνακα ελέγχου.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Ψηφίστε ΥΠΕΡ\",\"ckf7gX\":[\"Αποπληρώνοντας \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Συζήτηση φόρουμ\",\"csDS2L\":\"Διαθέσιμο\",\"cu7Stb\":\"Δεν συμμετείχατε στην παρούσα πρόταση\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Διακυβέρνηση\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Η επικύρωση του Ltv απέτυχε\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Δεν έχετε αρκετά χρήματα στο πορτοφόλι σας για να αποπληρώσετε ολόκληρο το ποσό. Εάν προχωρήσετε στην αποπληρωμή με το τρέχον ποσό των χρημάτων σας, θα εξακολουθείτε να έχετε μια μικρή θέση δανεισμού στο ταμπλό σας.\",\"dXUQFX\":\"Περιουσιακά στοιχεία προς δανεισμό\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Χρησιμοποίηση εγγυήσεων\",\"dpc0qG\":\"Μεταβλητό\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Η δράση απαιτεί ενεργό απόθεμα\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Σύνολο δανεικών\",\"ecqEvn\":\"Το υπόλοιπο των εγγυήσεων είναι 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Ξεκλειδώστε τώρα\",\"evw5ha\":\"Καθαρή αξία\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Αλλάξατε σε ποσοστό \",[\"0\"]],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Το τρέχον δάνειο προς αξία με βάση τις παρεχόμενες εξασφαλίσεις σας.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Υπόλοιπο\",\"fu1Dbh\":[\"Ανάληψη \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Λειτουργία Testnet\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"Ο χρήστης προσπαθεί να δανειστεί πολλαπλά περιουσιακά στοιχεία, συμπεριλαμβανομένου ενός απομονωμένου περιουσιακού στοιχείου\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Η μηδενική διεύθυνση δεν είναι έγκυρη\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Το καθαρό ΑΡΥ είναι η συνδυασμένη επίδραση όλων των θέσεων προσφοράς και δανεισμού στην καθαρή αξία, συμπεριλαμβανομένων των κινήτρων. Είναι δυνατόν να υπάρχει αρνητικό καθαρό APY εάν το χρεωστικό APY είναι υψηλότερο από το προσφερόμενο APY.\",\"gzcch9\":\"Μη έγκυρη αμοιβή πρωτοκόλλου γέφυρας\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Καθαρό APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Το % της συνολικής δανειοληπτικής σας δύναμης που χρησιμοποιείται. Αυτό βασίζεται στο ποσό της παρεχόμενης εξασφάλισής σας και στο συνολικό ποσό που μπορείτε να δανειστείτε.\",\"hehnjM\":\"Ποσό\",\"hjDCQr\":\"Υπήρξε κάποιο σφάλμα. Προσπαθήστε να αλλάξετε τις παραμέτρους ή <0><1>αντιγράψτε το σφάλμα\",\"hom7qf\":\"Διεκδίκηση\",\"hpHJ4I\":\"Liquidated collateral\",\"huQ6Tz\":[\"Δανεισμός \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Ασυνεπείς παράμετροι flashloan\",\"iEPVHF\":\"Δεν έχει αρκετή δύναμη ψήφου για να συμμετάσχει στην παρούσα πρόταση\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"Ψηφίσατε \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Εισάγετε ένα ποσό\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens δεν είναι το ίδιο με το να τα κλειδώνετε. Εάν επιθυμείτε να κλειδώσετε τα\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"H χρήση εγγυήσεων είναι περιορισμένη λόγω της λειτουργίας Απομόνωσης.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Προμηθεύοντας το\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Απενεργοποίηση E-Mode\",\"jKYzR1\":\"Ενεργοποίηση E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"δ\"],\"jbFMap\":\"Χρόνος ψύξης που έχει απομείνει\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"Στο E-Mode ορισμένα περιουσιακά στοιχεία δεν είναι δανείσιμα. Βγείτε από το E-Mode για να αποκτήσετε πρόσβαση σε όλα τα περιουσιακά στοιχεία\",\"jpctdh\":\"View\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Μη διαθέσιμο\",\"k/sb6z\":\"Επιλέξτε γλώσσα\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Διεκδίκηση \",[\"0\"]],\"kH6wUX\":\"Επίδραση στην τιμή\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Για την εξόφληση εκ μέρους ενός χρήστη απαιτείται ένα ρητό ποσό προς εξόφληση\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Υπέρβαση του ανώτατου ορίου προσφοράς\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Το ανώτατο όριο χρέους δεν είναι μηδενικό\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Αγγλικά\",\"lfEjIE\":\"Μάθετε περισσότερα στον οδηγό <0>Συχνών Ερωτήσεων\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Συνολικές εκπομπές ανά ημέρα\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Εντάξει, Κλείσιμο\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Το περιουσιακό στοιχείο δεν μπορεί να χρησιμοποιηθεί ως εγγύηση.\",\"n+SX4g\":\"Προγραμματιστές\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Προσφορά apy\",\"nJgsQu\":\"Με δύναμη ψήφου <0/>\",\"nLC6tu\":\"Γαλλικά\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Μπορεί να εκτελεστεί\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"ω\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Ο συντελεστής υγείας και το δάνειο προς αξία καθορίζουν τη διασφάλιση των εξασφαλίσεών σας. Για να αποφύγετε τις ρευστοποιήσεις μπορείτε να παράσχετε περισσότερες εξασφαλίσεις ή να εξοφλήσετε δανειακές θέσεις.\",\"o1xc2V\":\"Η προσφορά AToken δεν είναι μηδενική\",\"o5ooMr\":\"Χρέος\",\"o7J4JM\":\"Φίλτρο\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Ψύξτε για ξεκλείδωμα\",\"oJ5ZiG\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος μεταβλητού επιτοκίου σε αυτό το αποθεματικό\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Το σταθερό επιτόκιο θα <0>μείνει το ίδιο για όλη τη διάρκεια του δανείου σας. Συνιστάται για μακροχρόνιες περιόδους δανεισμού και για χρήστες που προτιμούν την προβλεψιμότητα.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Διαθέσιμο για προμήθεια\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"Αυτό το περιουσιακό στοιχείο έχει φθάσει στο ανώτατο όριο δανεισμού του. Τίποτα δεν είναι διαθέσιμο για δανεισμό από αυτή την αγορά.\",\"p3j+mb\":\"Το υπόλοιπο της ανταμοιβής σας είναι 0\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Το υποκείμενο υπόλοιπο πρέπει να είναι μεγαλύτερο από 0\",\"pgWG9H\":\"Δεν υπάρχει αρκετό κλειδωμένο υπόλοιπο\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"παρακαλούμε ελέγξτε ότι το ποσό που θέλετε να παρέχετε δεν χρησιμοποιείται επί του παρόντος για κλείδωμα. Εάν χρησιμοποιείται για κλείδωμα, η συναλλαγή σας ενδέχεται να αποτύχει.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Καταλαβαίνω πώς λειτουργεί η ψύξη (\",[\"0\"],\") και το ξεκλείδωμα (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"Ο καλών αυτής της συνάρτησης πρέπει να είναι ένα κοινόχρηστο ταμείο\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Κλειδωμένο\",\"qB4kPi\":\"Προσφορά APY\",\"qENI8q\":\"Γενικές ρυθμίσεις\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"αντιγράψτε το σφάλμα\",\"qXCkEM\":\"Συνδέστε το πορτοφόλι σας για να δείτε τις προμήθειες, τα δάνεια και τις ανοιχτές θέσεις σας.\",\"qY2jnw\":\"Μη έγκυρη λήξη\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Μη έγκυρη ποσότητα προς καύση\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Το ποσό πρέπει να είναι μεγαλύτερο από 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"rcT+yy\":\"Εμφάνιση περιουσιακών στοιχείων με υπόλοιπο 0\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Διεκδικήστε όλες τις ανταμοιβές\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"ΚΑΤΑ\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Μπορείτε να ξεκλειδώσετε εδώ\",\"smJNwH\":\"Διαθέσιμο για δανεισμό\",\"solypO\":\"Ο παράγοντας υγείας δεν είναι κάτω από το όριο\",\"sr0UJD\":\"Πηγαίνετε Πίσω\",\"ss5GCK\":\"Η διεύθυνση του παρόχου διευθύνσεων κοινόχρηστου ταμείου είναι άκυρη\",\"swEgK4\":\"Οι πληροφορίες ψήφου σας\",\"t+wtgf\":\"Τίποτα δανεισμένο ακόμα\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Τιμή Oracle\",\"tFZLf8\":\"Αυτός ο υπολογισμός gas είναι μόνο μια εκτίμηση. Το πορτοφόλι σας θα καθορίσει την τιμή της συναλλαγής. Μπορείτε να τροποποιήσετε τις ρυθμίσεις gas απευθείας από τον πάροχο του πορτοφολιού σας.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Παρακαλώ, συνδέστε το πορτοφόλι σας\",\"tt5yma\":\"Οι προμήθειές σας\",\"u3ZeYl\":\"Η συναλλαγή απέτυχε\",\"u706uF\":\"Άκυρη πριμοδότηση flashloan\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Για την αποπληρωμή ενός συγκεκριμένου τύπου χρέους, ο χρήστης πρέπει να έχει χρέος αυτού του τύπου\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Απόκρυψη\",\"vMba49\":\"Ο δανεισμός δεν είναι ενεργοποιημένος\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Γλώσσα\",\"vesuBJ\":\"Σας επιτρέπει να αποφασίσετε αν θα χρησιμοποιήσετε ένα παρεχόμενο περιουσιακό στοιχείο ως εγγύηση. Ένα περιουσιακό στοιχείο που χρησιμοποιείται ως εγγύηση θα επηρεάσει τη δανειοληπτική σας ικανότητα και τον συντελεστή υγείας.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Σταθερό νόμισμα\",\"w/JtJ3\":\"Η σταθερή προσφορά χρέους δεν είναι μηδενική\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Ανταμοιβές APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Εσείς \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"Ο καλών της συνάρτησης δεν είναι AToken\",\"wZFvVU\":\"ΨΗΦΙΣΤΕ ΥΠΕΡ\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Βρύση \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Τρέχον διαφορικό\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, παρακαλούμε μεταβείτε στο\",\"xNy/UG\":\"Αποπληρωμή με\",\"xPm8wv\":\"Μάθετε περισσότερα για τους κινδύνους\",\"xXYpZl\":[[\"0\"],\" Βρύση\"],\"xaVBSS\":\"Οι πληροφορίες σας\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Σκοτεινή λειτουργία\",\"yCrG6m\":\"Συνολικό μέγεθος της αγοράς\",\"yJUUbn\":\"Επισκόπηση συναλλαγής\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Μη έγκυρη διεύθυνση\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Δεν υπάρχουν αρκετά κεφάλαια στο\",[\"0\"],\"αποθεματικό για δανεισμό\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Κλείσιμο\",\"z4uGQg\":\"Υπέρβαση του ανώτατου ορίου χρέους\",\"z5UQOM\":\"Η εγγύηση που έχει επιλεγεί δεν μπορεί να ρευστοποιηθεί\",\"z5Y+p6\":[\"Παροχή \",[\"symbol\"]],\"zCjNKs\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή το αποθεματικό έχει παγώσει\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Υπολειπόμενο χρέος\",\"zmTPiV\":\"Υπόλοιπο προσφοράς\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Μενού\",\"zwWKhA\":\"Μάθετε περισσότερα\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"zzzTXS\":\"Merit Program rewards are claimed through the\",\"+EGVI0\":\"Receive (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Φαίνεται ότι δεν μπορούμε να αλλάξουμε το δίκτυο αυτόματα. Ελέγξτε αν μπορείτε να το αλλάξετε από το πορτοφόλι.\",\"+kLZGu\":\"Supplied asset amount\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Minimum staked Aave amount\",\"00OflG\":\"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.\",\"08/rZ9\":\"The cooldown period is the time required prior to unstaking your tokens (20 days). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window.<0>Learn more\",\"1Onqx8\":[\"Έγκριση του \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Blocked Address\",\"2bAhR7\":\"Meet GHO\",\"2o/xRt\":\"Επίτευξη του ανώτατου ορίου εφοδιασμού στο αποθεματικό-στόχο. Δοκιμάστε να \\nμειώσετε την ποσότητα.\",\"3O8YTV\":\"Total interest accrued\",\"4iPAI3\":\"Minimum GHO borrow amount\",\"6NGLTR\":\"Discountable amount\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Discount parameters are decided by the Aave community and may be changed over time. Check Governance for updates and vote to participate. <0>Learn more\",\"ARu1L4\":\"Repaid\",\"B9Gqbz\":\"Variable rate\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"At a discount\",\"CMHmbm\":\"Slippage\",\"EBL9Gz\":\"COPIED!\",\"ES8dkb\":\"Fixed rate\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Discount\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Save and share\",\"JK9zf1\":[\"Estimated compounding interest, including discount for Staking \",[\"0\"],\"AAVE in Safety Module.\"],\"JPrLjO\":\"Δεν μπορείτε να χρησιμοποιήσετε αυτό το νόμισμα ως εγγύηση\",\"JU6q+W\":\"Ανταμοιβή(ες) προς διεκδίκηση\",\"K05qZY\":\"Withdraw & Switch\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Η ενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση αυξάνει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας. Ωστόσο, μπορεί να ρευστοποιηθεί εάν ο συντελεστής υγείας σας πέσει κάτω από το 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Απενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Send feedback\",\"TskbEN\":\"Holders of stkAAVE receive a discount on the GHO borrowing rate\",\"TtZL6q\":\"Discount model parameters\",\"Tz0GSZ\":\"blocked activities\",\"W8ekPc\":\"Back to Dashboard\",\"XZzneG\":\"Θα βγείτε από τη λειτουργία απομόνωσης και άλλα tokens μπορούν πλέον να χρησιμοποιηθούν ως εγγύηση\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Η απενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση επηρεάζει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας.\",\"al6Pyz\":\"Exceeds the discount\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Δεν υπάρχουν επαρκείς εγγυήσεις για την αποπληρωμή αυτού του ποσού χρέους με\",\"cqnmnD\":\"Effective interest rate\",\"dMtLDE\":\"to\",\"euScGB\":\"APY with discount applied\",\"fHcELk\":\"Καθαρό APR\",\"flRCF/\":\"Staking discount\",\"gncRUO\":\"This address is blocked on app.aave.com because it is associated with one or more\",\"gr8mYw\":\"You may borrow up to <0/> GHO at <1/> (max discount)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Borrow balance\",\"i2JTiw\":\"You may enter a custom amount in the field.\",\"jMam5g\":[[\"0\"],\" Υπόλοιπο\"],\"kwwn6i\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate. The discount applies to 100 GHO for every 1 stkAAVE held. Use the calculator below to see GHO borrow rate with the discount applied.\",\"lNVG7i\":\"Select an asset\",\"lt6bpt\":\"Collateral to repay with\",\"mIM0qu\":\"Expected amount to repay\",\"mzI/c+\":\"Download\",\"n8Psk4\":\"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.\",\"nOy4ob\":\"We suggest you go back to the Dashboard.\",\"nakd8r\":\"stkAAVE holders get a discount on GHO borrow rate\",\"nh2EJK\":[\"Παρακαλώ μεταβείτε στο \",[\"networkName\"],\".\"],\"ntkAoE\":\"Discount applied for <0/> staking AAVE\",\"o4tCu3\":\"Borrow APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"Η περίοδος ψύξης είναι \",[\"0\"],\". Μετά την \",[\"1\"],\" περίοδο ψύξης, θα εισέλθετε στο παράθυρο ξεκλειδώματος \",[\"2\"],\". Θα συνεχίσετε να λαμβάνετε ανταμοιβές κατά τη διάρκεια της ψύξης και του παραθύρου ξεκλειδώματος.\"],\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interest accrued\",\"rf8POi\":\"Borrowed asset amount\",\"ruc7X+\":\"Add stkAAVE to see borrow APY with the discount\",\"sK+Nag\":\"Αναθεώρηση συναλλαγής\",\"t81DpC\":[\"Approve \",[\"symbol\"],\" to continue\"],\"umICAY\":\"<0><1><2/>Add stkAAVE to see borrow rate with discount\",\"uwAUvj\":\"COPY IMAGE\",\"v8x7Mg\":\"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.\",\"wRRqvW\":\"Δεν έχετε προμήθειες σε αυτό το νόμισμα\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Ενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"yW1oWB\":\"Τύπος APY\",\"yhvj6d\":\"Δεν μπορείτε να αλλάξετε τη χρήση ως λειτουργία εγγύησης για αυτό το νόμισμα, διότι θα προκαλέσει κλήση εγγύησης\",\"zevmS2\":\"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)\"}")}; \ No newline at end of file diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index 615e2bd6f3..8d43f713b5 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"If you DO NOT unstake within \",[\"0\"],\" of unstake window, you will need to activate cooldown process again.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participating in this \",[\"symbol\"],\" reserve gives annualized rewards.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Borrow cap\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Stable borrowing is not enabled\",\"/yQcJM\":\"Total worth\",\"00AB2i\":\"User did not borrow the specified currency\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0HRJcX\":\"Merit Program and Self rewards are claimed through the\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"This is the total amount that you are able to supply to in this reserve. You are able to supply your wallet balance up until the supply cap is reached.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Please connect a wallet to view your personal information here.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Liquidation <0/> threshold\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"View details\",\"2FYpfJ\":\"More\",\"2O3qp5\":\"Available liquidity\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Stable borrowing is enabled\",\"34Qfwy\":\"Borrow cap is exceeded\",\"39eQRj\":[\"Borrow \",[\"symbol\"]],\"3BL1xB\":\"Total supplied\",\"3K0oMo\":\"Remaining supply\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"There is not enough collateral to cover a new borrow\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Supply \",[\"symbol\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Repay\",\"3qsjtp\":\"The weighted average of APY for all supplied assets, including incentives.\",\"3rL+os\":\"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Voting results\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"This asset has almost reached its supply cap. There can only be \",[\"messageValue\"],\" supplied to this market.\"],\"5cZ/KX\":\"Variable debt supply is not zero\",\"5che++\":\"To request access for this permissioned market, please visit: <0>Acces Provider Name\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Allowance required action\",\"5rsnKT\":\"Available rewards\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Overview\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Collateral\",\"65A04M\":\"Spanish\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Repay \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Voting power\",\"6f8S68\":\"Markets\",\"6g1gi0\":\"Proposals\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Switch Network\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Health factor\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Reached\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Claim all\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Dashboard\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions\",\"87pUEW\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"All proposals\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Invalid amount to mint\",\"8Z5FPv\":\"Disconnect Wallet\",\"8Zz7s5\":\"assets\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Utilization Rate\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Show\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"You are entering Isolation mode\",\"9CDK3/\":[\"Borrowing is currently unavailable for \",[\"0\"],\".\"],\"9GIj3z\":\"Reserve Size\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Current votes\",\"9Rw96f\":[\"This asset has almost reached its borrow cap. There is only \",[\"messageValue\"],\" available to be borrowed from this market.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"This asset has reached its supply cap. Nothing is available to be supplied from this market.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Since this is a test network, you can get any of the assets if you have ETH on your wallet\",\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Your borrows\",\"AV7cGz\":\"Review approval tx details\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Borrowing power and assets are limited due to Isolation mode.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6aXGH\":\"Stable\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Collateral usage is limited because of isolation mode. <0>Learn More\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Asset category\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Claim \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Faucet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Collateral is (mostly) the same currency that is being borrowed\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"The underlying asset cannot be rescued\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave per month\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collateralization\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Disabled\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Withdrawing \",[\"symbol\"]],\"EdQY6l\":\"None\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Learn more.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Borrow power used\",\"FPKEug\":\"Operation not supported\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"on\",\"Fjw9N+\":\"Assets to supply\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Assets\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"ends\",\"GtP2hp\":[\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for \",[\"0\"],\" category. To manage E-Mode categories visit your <0>Dashboard.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Unstake window\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Cooldown period\",\"IaA40H\":\"Liquidation at\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Not enough balance on your wallet\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Wallet balance\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KRpokz\":\"VIEW TX\",\"KSlpka\":\"This represents the threshold at which a borrow position will be considered undercollateralized and subject to liquidation for each collateral. For example, if a collateral has a liquidation threshold of 80%, it means that the position will be liquidated when the debt value is worth 80% of the collateral value.\",\"KYAjf3\":\"Isolated\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Expires\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Wrong Network\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Enter ETH address\",\"KvG1xW\":\"Claiming\",\"L+8Lzs\":\"Current LTV\",\"L+qiq+\":\"Market\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"No voting power\",\"LL0zks\":\"Can be collateral\",\"LLdJWu\":\"Claimable AAVE\",\"LSIpNK\":\"Borrow and repay in same block is not allowed\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Recipient address\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"staking view\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"If the health factor goes below 1, the liquidation of your collateral might be triggered.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"You cancelled the transaction.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Invalid return value of the flashloan executor function\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pending...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nothing staked\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Unbacked mint cap is exceeded\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Proposal overview\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"disabled\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Withdraw\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"When a liquidation occurs, liquidators repay up to 50% of the outstanding borrowed amount on behalf of the borrower. In return, they can buy the collateral at a discount and keep the difference (liquidation penalty) as a bonus.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"The weighted average of APY for all borrowed assets, including incentives.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Liquidation threshold\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Not reached\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Differential\",\"RNK49r\":\"Invalid signature\",\"RS0o7b\":\"State\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Proposal details\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Asset is not listed\",\"Rj01Fz\":\"Links\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"Health factor is lesser than the liquidation threshold\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Enabled\",\"SDav7h\":\"Funds in the Safety Module\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Total available\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Disabling E-Mode\",\"SxaD0o\":\"Pool addresses provider is not registered\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Borrow\",\"TFxQlw\":\"Liquidation penalty\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"Asset can only be used as collateral in isolation mode only.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"User does not have outstanding stable rate debt on this reserve\",\"TeCFg/\":\"Borrow rate change\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Asset is not borrowable in isolation mode\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Details\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"These funds have been borrowed and are not available for withdrawal at this time.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"The Maximum LTV ratio represents the maximum borrowing power of a specific collateral. For example, if a collateral has an LTV of 75%, the user can borrow up to 0.75 worth of ETH in the principal currency for every 1 ETH worth of collateral.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No rewards to claim\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Connect wallet\",\"VMfYUK\":\"Safety of your deposited collateral against the borrowed assets and its underlying value.\",\"VOAZJh\":\"Total borrows\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Review tx details\",\"W5hVah\":\"Nothing supplied yet\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Unbacked\",\"WNGZwH\":\"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more\",\"WPWG/y\":\"Reserve status & configuration\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"User cannot withdraw more than the available balance\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"To borrow you need to supply any asset to be used as collateral.\",\"X/ITG9\":\"Copy error text\",\"X3Pp6x\":\"Used as collateral\",\"X4Zt7j\":\"Action cannot be performed because the reserve is paused\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTE NAY\",\"YDIOks\":\"Enabling E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.\",\"YyIM65\":\"Interest rate rebalance conditions were not met\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Aave Governance\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Efficiency mode (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Before supplying\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Liquidation value\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"enabled\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Time left to unstake\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Array parameters that should be equal length are not\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Borrow APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Cooldown period warning\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Asset\",\"bXQ/Og\":\"Share on twitter\",\"bXr0ee\":\"Isolated assets have limited borrowing power and other assets cannot be used as collateral.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"The requested amount is greater than the max loan size in stable rate mode\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Supply\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Address is not a contract\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"You can not withdraw this amount because it will cause collateral call\",\"cBc+4A\":\"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Risk details\",\"cNT+ij\":\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) and Isolation mode. To manage E-Mode and Isolation mode visit your <0>Dashboard.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Repaying \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Forum discussion\",\"csDS2L\":\"Available\",\"cu7Stb\":\"You did not participate in this proposal\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Governance\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Ltv validation failed\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"You don’t have enough funds in your wallet to repay the full amount. If you proceed to repay with your current amount of funds, you will still have a small borrowing position in your dashboard.\",\"dXUQFX\":\"Assets to borrow\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Collateral usage\",\"dpc0qG\":\"Variable\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Action requires an active reserve\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Total borrowed\",\"ecqEvn\":\"The collateral balance is 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Unstake now\",\"evw5ha\":\"Net worth\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"You switched to \",[\"0\"],\" rate\"],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Your current loan to value based on your collateral supplied.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Withdraw \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"User is trying to borrow multiple assets including a siloed one\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Zero address not valid\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Net APY is the combined effect of all supply and borrow positions on net worth, including incentives. It is possible to have a negative net APY if debt APY is higher than supply APY.\",\"gzcch9\":\"Invalid bridge protocol fee\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Net APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"The % of your total borrowing power used. This is based on the amount of your collateral supplied and the total amount that you can borrow.\",\"hehnjM\":\"Amount\",\"hjDCQr\":\"There was some error. Please try changing the parameters or <0><1>copy the error\",\"hom7qf\":\"Claim\",\"hpHJ4I\":\"Liquidated collateral\",\"huQ6Tz\":[\"Borrowing \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Inconsistent flashloan parameters\",\"iEPVHF\":\"Not enough voting power to participate in this proposal\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"You voted \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Enter an amount\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens is not the same as staking them. If you wish to stake your\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"Collateral usage is limited because of Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Supplying your\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Disable E-Mode\",\"jKYzR1\":\"Enable E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Cooldown time left\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets\",\"jpctdh\":\"View\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Unavailable\",\"k/sb6z\":\"Select language\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Claim \",[\"0\"]],\"kH6wUX\":\"Price impact\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"To repay on behalf of a user an explicit amount to repay is needed\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Supply cap is exceeded\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Debt ceiling is not zero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"English\",\"lfEjIE\":\"Learn more in our <0>FAQ guide\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Total emission per day\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Ok, Close\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Asset cannot be used as collateral.\",\"n+SX4g\":\"Developers\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Supply apy\",\"nJgsQu\":\"With a voting power of <0/>\",\"nLC6tu\":\"French\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Can be executed\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Your health factor and loan to value determine the assurance of your collateral. To avoid liquidations you can supply more collateral or repay borrow positions.\",\"o1xc2V\":\"AToken supply is not zero\",\"o5ooMr\":\"Debt\",\"o7J4JM\":\"Filter\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Cooldown to unstake\",\"oJ5ZiG\":\"User does not have outstanding variable rate debt on this reserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Stable interest rate will <0>stay the same for the duration of your loan. Recommended for long-term loan periods and for users who prefer predictability.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Available to supply\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.\",\"p3j+mb\":\"Your reward balance is 0\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"The underlying balance needs to be greater than 0\",\"pgWG9H\":\"Not enough staked balance\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"please check that the amount you want to supply is not currently being used for staking. If it is being used for staking, your transaction might fail.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"I understand how cooldown (\",[\"0\"],\") and unstaking (\",[\"1\"],\") work\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"The caller of this function must be a pool\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Staked\",\"qB4kPi\":\"Supply APY\",\"qENI8q\":\"Global settings\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copy the error\",\"qXCkEM\":\"Please connect your wallet to see your supplies, borrowings, and open positions.\",\"qY2jnw\":\"Invalid expiration\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Invalid amount to burn\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Amount must be greater than 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"rcT+yy\":\"Show assets with 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Claim all rewards\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NAY\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"You unstake here\",\"smJNwH\":\"Available to borrow\",\"solypO\":\"Health factor is not below the threshold\",\"sr0UJD\":\"Go Back\",\"ss5GCK\":\"The address of the pool addresses provider is invalid\",\"swEgK4\":\"Your voting info\",\"t+wtgf\":\"Nothing borrowed yet\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Oracle price\",\"tFZLf8\":\"This gas calculation is only an estimation. Your wallet will set the price of the transaction. You can modify the gas settings directly from your wallet provider.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Please, connect your wallet\",\"tt5yma\":\"Your supplies\",\"u3ZeYl\":\"Transaction failed\",\"u706uF\":\"Invalid flashloan premium\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Hide\",\"vMba49\":\"Borrowing is not enabled\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Allows you to decide whether to use a supplied asset as collateral. An asset used as collateral will affect your borrowing power and health factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"Stable debt supply is not zero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Rewards APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"You \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"The caller of the function is not an AToken\",\"wZFvVU\":\"VOTE YAE\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Current differential\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, please go to the\",\"xNy/UG\":\"Repay with\",\"xPm8wv\":\"Learn more about risks involved\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Your info\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Dark mode\",\"yCrG6m\":\"Total market size\",\"yJUUbn\":\"Transaction overview\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Not a valid address\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"There are not enough funds in the\",[\"0\"],\"reserve to borrow\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Close\",\"z4uGQg\":\"Debt ceiling is exceeded\",\"z5UQOM\":\"The collateral chosen cannot be liquidated\",\"z5Y+p6\":[\"Supplying \",[\"symbol\"]],\"zCjNKs\":\"Action cannot be performed because the reserve is frozen\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Remaining debt\",\"zmTPiV\":\"Supply balance\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Learn more\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"If you DO NOT unstake within \",[\"0\"],\" of unstake window, you will need to activate cooldown process again.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participating in this \",[\"symbol\"],\" reserve gives annualized rewards.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Borrow cap\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Stable borrowing is not enabled\",\"/yQcJM\":\"Total worth\",\"00AB2i\":\"User did not borrow the specified currency\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0HRJcX\":\"Merit Program and Self rewards are claimed through the\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"This is the total amount that you are able to supply to in this reserve. You are able to supply your wallet balance up until the supply cap is reached.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Please connect a wallet to view your personal information here.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Liquidation <0/> threshold\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"View details\",\"2FYpfJ\":\"More\",\"2O3qp5\":\"Available liquidity\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Stable borrowing is enabled\",\"34Qfwy\":\"Borrow cap is exceeded\",\"39eQRj\":[\"Borrow \",[\"symbol\"]],\"3BL1xB\":\"Total supplied\",\"3K0oMo\":\"Remaining supply\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"There is not enough collateral to cover a new borrow\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Supply \",[\"symbol\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Repay\",\"3qsjtp\":\"The weighted average of APY for all supplied assets, including incentives.\",\"3rL+os\":\"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Voting results\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"This asset has almost reached its supply cap. There can only be \",[\"messageValue\"],\" supplied to this market.\"],\"5cZ/KX\":\"Variable debt supply is not zero\",\"5che++\":\"To request access for this permissioned market, please visit: <0>Acces Provider Name\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Allowance required action\",\"5rsnKT\":\"Available rewards\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Overview\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Collateral\",\"65A04M\":\"Spanish\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Repay \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Voting power\",\"6f8S68\":\"Markets\",\"6g1gi0\":\"Proposals\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Switch Network\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Health factor\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Reached\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Claim all\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Dashboard\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions\",\"87pUEW\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"All proposals\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Invalid amount to mint\",\"8Z5FPv\":\"Disconnect Wallet\",\"8Zz7s5\":\"assets\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Utilization Rate\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Show\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"You are entering Isolation mode\",\"9CDK3/\":[\"Borrowing is currently unavailable for \",[\"0\"],\".\"],\"9GIj3z\":\"Reserve Size\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Current votes\",\"9Rw96f\":[\"This asset has almost reached its borrow cap. There is only \",[\"messageValue\"],\" available to be borrowed from this market.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"This asset has reached its supply cap. Nothing is available to be supplied from this market.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Since this is a test network, you can get any of the assets if you have ETH on your wallet\",\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Your borrows\",\"AV7cGz\":\"Review approval tx details\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Borrowing power and assets are limited due to Isolation mode.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6aXGH\":\"Stable\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Collateral usage is limited because of isolation mode. <0>Learn More\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Asset category\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Claim \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Faucet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Collateral is (mostly) the same currency that is being borrowed\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"The underlying asset cannot be rescued\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave per month\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collateralization\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Disabled\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Withdrawing \",[\"symbol\"]],\"EdQY6l\":\"None\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Learn more.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Borrow power used\",\"FPKEug\":\"Operation not supported\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"on\",\"Fjw9N+\":\"Assets to supply\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Assets\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"ends\",\"GtP2hp\":[\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for \",[\"0\"],\" category. To manage E-Mode categories visit your <0>Dashboard.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Unstake window\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Cooldown period\",\"IaA40H\":\"Liquidation at\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Not enough balance on your wallet\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Wallet balance\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KRpokz\":\"VIEW TX\",\"KSlpka\":\"This represents the threshold at which a borrow position will be considered undercollateralized and subject to liquidation for each collateral. For example, if a collateral has a liquidation threshold of 80%, it means that the position will be liquidated when the debt value is worth 80% of the collateral value.\",\"KYAjf3\":\"Isolated\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Expires\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Wrong Network\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Enter ETH address\",\"KvG1xW\":\"Claiming\",\"L+8Lzs\":\"Current LTV\",\"L+qiq+\":\"Market\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"No voting power\",\"LL0zks\":\"Can be collateral\",\"LLdJWu\":\"Claimable AAVE\",\"LSIpNK\":\"Borrow and repay in same block is not allowed\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Recipient address\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"staking view\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"If the health factor goes below 1, the liquidation of your collateral might be triggered.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"You cancelled the transaction.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Invalid return value of the flashloan executor function\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pending...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nothing staked\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Unbacked mint cap is exceeded\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Proposal overview\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"disabled\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Withdraw\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"When a liquidation occurs, liquidators repay up to 50% of the outstanding borrowed amount on behalf of the borrower. In return, they can buy the collateral at a discount and keep the difference (liquidation penalty) as a bonus.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"The weighted average of APY for all borrowed assets, including incentives.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Liquidation threshold\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Not reached\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Differential\",\"RNK49r\":\"Invalid signature\",\"RS0o7b\":\"State\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Proposal details\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Asset is not listed\",\"Rj01Fz\":\"Links\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"Health factor is lesser than the liquidation threshold\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Enabled\",\"SDav7h\":\"Funds in the Safety Module\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Total available\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Disabling E-Mode\",\"SxaD0o\":\"Pool addresses provider is not registered\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Borrow\",\"TFxQlw\":\"Liquidation penalty\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"Asset can only be used as collateral in isolation mode only.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"User does not have outstanding stable rate debt on this reserve\",\"TeCFg/\":\"Borrow rate change\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Asset is not borrowable in isolation mode\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Details\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"These funds have been borrowed and are not available for withdrawal at this time.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"The Maximum LTV ratio represents the maximum borrowing power of a specific collateral. For example, if a collateral has an LTV of 75%, the user can borrow up to 0.75 worth of ETH in the principal currency for every 1 ETH worth of collateral.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No rewards to claim\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Connect wallet\",\"VMfYUK\":\"Safety of your deposited collateral against the borrowed assets and its underlying value.\",\"VOAZJh\":\"Total borrows\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Review tx details\",\"W5hVah\":\"Nothing supplied yet\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Unbacked\",\"WNGZwH\":\"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more\",\"WPWG/y\":\"Reserve status & configuration\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"User cannot withdraw more than the available balance\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"To borrow you need to supply any asset to be used as collateral.\",\"X/ITG9\":\"Copy error text\",\"X3Pp6x\":\"Used as collateral\",\"X4Zt7j\":\"Action cannot be performed because the reserve is paused\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTE NAY\",\"YDIOks\":\"Enabling E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.\",\"YyIM65\":\"Interest rate rebalance conditions were not met\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Aave Governance\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Efficiency mode (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Before supplying\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Liquidation value\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"enabled\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Time left to unstake\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Array parameters that should be equal length are not\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Borrow APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Cooldown period warning\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Asset\",\"bXQ/Og\":\"Share on twitter\",\"bXr0ee\":\"Isolated assets have limited borrowing power and other assets cannot be used as collateral.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"The requested amount is greater than the max loan size in stable rate mode\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Supply\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Address is not a contract\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"You can not withdraw this amount because it will cause collateral call\",\"cBc+4A\":\"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Risk details\",\"cNT+ij\":\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) and Isolation mode. To manage E-Mode and Isolation mode visit your <0>Dashboard.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Repaying \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Forum discussion\",\"csDS2L\":\"Available\",\"cu7Stb\":\"You did not participate in this proposal\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Governance\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Ltv validation failed\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"You don’t have enough funds in your wallet to repay the full amount. If you proceed to repay with your current amount of funds, you will still have a small borrowing position in your dashboard.\",\"dXUQFX\":\"Assets to borrow\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Collateral usage\",\"dpc0qG\":\"Variable\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Action requires an active reserve\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Total borrowed\",\"ecqEvn\":\"The collateral balance is 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Unstake now\",\"evw5ha\":\"Net worth\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"You switched to \",[\"0\"],\" rate\"],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Your current loan to value based on your collateral supplied.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Withdraw \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"User is trying to borrow multiple assets including a siloed one\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Zero address not valid\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Net APY is the combined effect of all supply and borrow positions on net worth, including incentives. It is possible to have a negative net APY if debt APY is higher than supply APY.\",\"gzcch9\":\"Invalid bridge protocol fee\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Net APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"The % of your total borrowing power used. This is based on the amount of your collateral supplied and the total amount that you can borrow.\",\"hehnjM\":\"Amount\",\"hjDCQr\":\"There was some error. Please try changing the parameters or <0><1>copy the error\",\"hom7qf\":\"Claim\",\"hpHJ4I\":\"Liquidated collateral\",\"huQ6Tz\":[\"Borrowing \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Inconsistent flashloan parameters\",\"iEPVHF\":\"Not enough voting power to participate in this proposal\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"You voted \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Enter an amount\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens is not the same as staking them. If you wish to stake your\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"Collateral usage is limited because of Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Supplying your\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Disable E-Mode\",\"jKYzR1\":\"Enable E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Cooldown time left\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets\",\"jpctdh\":\"View\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Unavailable\",\"k/sb6z\":\"Select language\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Claim \",[\"0\"]],\"kH6wUX\":\"Price impact\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"To repay on behalf of a user an explicit amount to repay is needed\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Supply cap is exceeded\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Debt ceiling is not zero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"English\",\"lfEjIE\":\"Learn more in our <0>FAQ guide\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Total emission per day\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Ok, Close\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Asset cannot be used as collateral.\",\"n+SX4g\":\"Developers\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Supply apy\",\"nJgsQu\":\"With a voting power of <0/>\",\"nLC6tu\":\"French\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Can be executed\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Your health factor and loan to value determine the assurance of your collateral. To avoid liquidations you can supply more collateral or repay borrow positions.\",\"o1xc2V\":\"AToken supply is not zero\",\"o5ooMr\":\"Debt\",\"o7J4JM\":\"Filter\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Cooldown to unstake\",\"oJ5ZiG\":\"User does not have outstanding variable rate debt on this reserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Stable interest rate will <0>stay the same for the duration of your loan. Recommended for long-term loan periods and for users who prefer predictability.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Available to supply\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.\",\"p3j+mb\":\"Your reward balance is 0\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"The underlying balance needs to be greater than 0\",\"pgWG9H\":\"Not enough staked balance\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"please check that the amount you want to supply is not currently being used for staking. If it is being used for staking, your transaction might fail.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"I understand how cooldown (\",[\"0\"],\") and unstaking (\",[\"1\"],\") work\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"The caller of this function must be a pool\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Staked\",\"qB4kPi\":\"Supply APY\",\"qENI8q\":\"Global settings\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copy the error\",\"qXCkEM\":\"Please connect your wallet to see your supplies, borrowings, and open positions.\",\"qY2jnw\":\"Invalid expiration\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Invalid amount to burn\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Amount must be greater than 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"rcT+yy\":\"Show assets with 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Claim all rewards\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NAY\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"You unstake here\",\"smJNwH\":\"Available to borrow\",\"solypO\":\"Health factor is not below the threshold\",\"sr0UJD\":\"Go Back\",\"ss5GCK\":\"The address of the pool addresses provider is invalid\",\"swEgK4\":\"Your voting info\",\"t+wtgf\":\"Nothing borrowed yet\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Oracle price\",\"tFZLf8\":\"This gas calculation is only an estimation. Your wallet will set the price of the transaction. You can modify the gas settings directly from your wallet provider.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Please, connect your wallet\",\"tt5yma\":\"Your supplies\",\"u3ZeYl\":\"Transaction failed\",\"u706uF\":\"Invalid flashloan premium\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Hide\",\"vMba49\":\"Borrowing is not enabled\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Allows you to decide whether to use a supplied asset as collateral. An asset used as collateral will affect your borrowing power and health factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"Stable debt supply is not zero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Rewards APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"You \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"The caller of the function is not an AToken\",\"wZFvVU\":\"VOTE YAE\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Current differential\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, please go to the\",\"xNy/UG\":\"Repay with\",\"xPm8wv\":\"Learn more about risks involved\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Your info\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Dark mode\",\"yCrG6m\":\"Total market size\",\"yJUUbn\":\"Transaction overview\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Not a valid address\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"There are not enough funds in the\",[\"0\"],\"reserve to borrow\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Close\",\"z4uGQg\":\"Debt ceiling is exceeded\",\"z5UQOM\":\"The collateral chosen cannot be liquidated\",\"z5Y+p6\":[\"Supplying \",[\"symbol\"]],\"zCjNKs\":\"Action cannot be performed because the reserve is frozen\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Remaining debt\",\"zmTPiV\":\"Supply balance\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Learn more\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index 9a3ddca09e..29b16b221f 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -707,6 +707,10 @@ msgstr "Borrowing is currently unavailable for {0}." msgid "Reserve Size" msgstr "Reserve Size" +#: src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx +msgid "%" +msgstr "%" + #: src/components/transactions/SavingsGho/SavingsGhoWithdrawModalContent.tsx #: src/components/transactions/UnStake/UnStakeModalContent.tsx msgid "Staking balance" diff --git a/src/locales/es/messages.js b/src/locales/es/messages.js index 7803c637d5..d0e18dabac 100644 --- a/src/locales/es/messages.js +++ b/src/locales/es/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si NO unstakeas entre \",[\"0\"],\" de la ventana de unstakeo, necesitarás activar el proceso de cooldown de nuevo.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participar en esta reserva de \",[\"symbol\"],\" da recompensas anuales.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Utiliza tu balance de AAVE, stkAAVE o aAava para delegar tu voto y poder de proposición. No enviarás ningún token, solo los derechos de votar y proponer cambios en el protocolo. Puedes volver a delegar o revocar el poder de vuelta en cualquier momento.\",\"+i3Pd2\":\"Límite del préstamo\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Cantidad para migrar\",\"/7ykiW\":\"Tomar prestado esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"Preguntas frecuentes\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"El préstamo estable no está habilitado\",\"/yQcJM\":\"Valor total\",\"00AB2i\":\"El usuario no tomó prestado el activo especificado\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Cambio de tasa\",\"0BF3yK\":\"Lo sentimos, no hemos podido encontrar la página que estabas buscando.\",\"0HRJcX\":\"Merit Program and Self rewards are claimed through the\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Riesgo de liquidación\",\"0ojY+Y\":\"Balance actual v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Cambio de garantía\",\"0wGCWc\":\"Esta es la cantidad total que puedes suministrar en esta reserva. Puedes suministrar el balance de tu cartera hasta que se alcance el límite de suministro.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Los datos de los precios no están disponibles actualmente para esta reserva en el subgraph del protocolo\",\"1LjK22\":\"Historial de transacciones\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Por favor conecta una cartera para ver tu información personal aquí.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Umbral <0/> de liquidación\",\"1m9Qqc\":\"Retirando y Cambiando\",\"1t7rez\":\"El suministro de activos está limitado a una cierta cantidad para reducir la exposición del protocolo a este activo y ayudar a manejar los riesgos implicados.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Ver detalles\",\"2FYpfJ\":\"Más\",\"2O3qp5\":\"Liquidez disponible\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Este activo no se puede migrar debido a una restricción del límite de suministro en el mercado v3 de \",[\"marketName\"],\".\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave es un protocolo totalmente descentralizado, gobernado por la comunidad de poseedores de tokens AAVE. Los poseedores de tokens AAVE discuten, proponen y votan colectivamente sobre las actualizaciones del protocolo. Los poseedores de tokens AAVE (solo en la red Ethereum) pueden votar ellos mismos sobre nuevas propuestas o delegarse a una dirección de su elección. Para aprender más, consulta la\",\"2a6G7d\":\"Por favor introduce una dirección de cartera válida.\",\"2eBWE6\":\"Acepto los riesgos involucadros.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"El préstamo estable no está habilitado\",\"34Qfwy\":\"El límite del préstamo se ha sobrepasado\",\"39eQRj\":[\"Tomar prestado \",[\"symbol\"]],\"3BL1xB\":\"Total suministrado\",\"3K0oMo\":\"Suministro restante\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"No hay suficiente garantía para cubrir un nuevo préstamo\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Suministrar \",[\"symbol\"]],\"3mXg0z\":\"LTV máximo\",\"3q3mFy\":\"Pagar\",\"3qsjtp\":\"El promedio ponderado de APY para todos los activos suministrados, incluidos los incentivos.\",\"3rL+os\":\"Solo puedes retirar tus activos del Módulo de Seguridad después de que finalice el período de cooldown y la ventana de unstakeo esté activa.\",\"42UgDM\":[\"Migrar al mercado V3 de \",[\"0\"]],\"49UFQA\":\"Resultados de la votación\",\"4DMZUI\":\"Ver Transacciones\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Términos\",\"4YYh4d\":\"Máximo disponible para tomar prestado\",\"4lDFps\":\"Firma para continuar\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transacciones\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue activos de prueba gratis en\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentación\",\"5NOSGa\":\"El límite de deuda limita la cantidad posible que los usuarios del protocolo pueden tomar prestado contra este activo. El límite de deuda es específico para los activos en isolation mode y se indica en USD.\",\"5Ncc6j\":[\"Este activo casi ha alcanzado su límite de suministro. Solo se puede suministrar \",[\"messageValue\"],\" a este mercado.\"],\"5cZ/KX\":\"El suministro de deuda variable no es cero\",\"5che++\":\"Para solicitar acceso a este mercado, porfavor visita: <0>Nombre del proveedor de acceso\",\"5ctNdV\":[\"Mínimo \",[\"0\"],\" recibido\"],\"5hDe9v\":\"Acción de permiso requerida\",\"5rsnKT\":\"Recompensas disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Ver todos los votos\",\"6/dCYd\":\"Resumen\",\"60crCe\":\"Todas las transacciones\",\"62Xcjh\":\"Garantía\",\"65A04M\":\"Español\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Firmando\",\"6Jrv+z\":[\"Pagar \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Poder de votación\",\"6f8S68\":\"Mercados\",\"6g1gi0\":\"Propuestas\",\"6gvoHP\":\"Copiar mensaje de error\",\"6h3Q5G\":\"reembolsado\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Cambiar de red\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Factor de salud\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Alcanzado\",\"7YlcXu\":\"El fork mode está activado\",\"7Z76Iw\":\"Tomar prestado no está disponible porque estás usando el Isolation mode. Para administrar el Isolation mode, visita tu <0>Panel de control.\",\"7aKlMS\":\"Compartir en Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Reclamar todo\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"No se pudieron recuperar los datos, por favor recarga el gráfico.\",\"7p5kLi\":\"Panel de control\",\"7sofdl\":\"Retirar y Cambiar\",\"8+6BI0\":\"Ten cuidado - Estás muy cerca de la liquidación. Considera depositar más garantía o pagar alguno de tus préstamos\",\"87pUEW\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos.\"],\"8F1i42\":\"Página no encontrada\",\"8G8M0u\":\"Cargando datos...\",\"8Iu1QS\":\"retirado\",\"8JL93T\":\"Todas las propuestas\",\"8Q51DU\":\"Añadir a la cartera\",\"8X/oyn\":\"Cantidad invalidad para generar\",\"8Z5FPv\":\"Desconectar cartera\",\"8Zz7s5\":\"activos\",\"8aLW8H\":\"Balance a revocar\",\"8bOT3H\":\"Tasa de uso\",\"8sLe4/\":\"Ver contrato\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Mostrar\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Estás entrando en el Isolation mode\",\"9CDK3/\":[\"Tomar prestado no está disponible actualmente para \",[\"0\"],\".\"],\"9GIj3z\":\"Tamaño de la reserva\",\"9Knqb4\":\"Balance stakeado\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votos actuales\",\"9Rw96f\":[\"Este activo casi ha alcanzado su límite de préstamo. Solo hay \",[\"messageValue\"],\" disponibles para ser prestado de este mercado.\"],\"9Xj/qR\":[\"Algunos activos migrados no se utilizarán como garantía debido al isolation mode habilitado en el mercado V3 de \",[\"marketName\"],\". Visita el <0>Panel de control de \",[\"marketName\"],\" V3 para administrar el isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Este activo ha alcanzado su límite de suministro. No queda nada disponible para ser suministrado desde este mercado.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI ha sido pausado debido a una decisión de la comunidad. Los suministros, préstamos y pagos se han visto afectados. <0>Más información\",\"9lXchd\":\"Token subyacente\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Puesto que esta es una red de pruebas, puedes obtener cualquiera de los activos si tienes ETH en tu cartera\",\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Elige uno de los servicios on-ramp\",\"A6dCI6\":[\"La máxima cantidad disponible para tomar prestado es <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Tus préstamos\",\"AV7cGz\":\"Revisa los detalles del approve\",\"AZOjB8\":\"Recuperando datos...\",\"Ai0jas\":\"Únete a la discusión de la comunidad\",\"Ajl2rq\":\"El poder de préstamo y los activos están limitados debido al Isolation mode.\",\"AqgYNC\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"B6aXGH\":\"Estable\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH suministrado como garantía continuará acumulando recompensas de staking proporcionadas por rebases diarios.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"El uso como garantía está limitado debido al isolation mode. <0>Aprende más\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Categoría de activos\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Este activo está congelado debido a una decisión de la comunidad de Aave. <0>Más información\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Documento técnico\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"CZXzs4\":\"Griego\",\"CkTRmy\":[\"Reclamar \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Por favor conecta tu cartera para ver la herramienta de migración.\",\"CtGlFb\":[\"Faucet \",[\"networkName\"]],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Esta acción reducirá el factor de salud de V3 por debajo del umbral de liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"Este activo ha sido pausado debido a una decisión de la comunidad. El suministro, los retiros, los préstamos y los pagos se han visto afectados.\",\"DAma/S\":\"La garantía es (en su mayoría) el mismo activo que se está tomando prestado\",\"DCnFg0\":[\"Direcciones (\",[\"0\"],\")\"],\"DG3Lv1\":\"Entiendo completamente los riesgos de migrar.\",\"DONJcV\":\"El activo base no puede ser rescatado\",\"DR+4uL\":\"Balance del suministro después del cambio\",\"DWjrck\":[\"Este activo no se puede migrar al mercado V3 de \",[\"marketName\"],\" debido a las restricciones del E-mode. Puedes deshabilitar o administrar las categorías del E-mode en tu <0>Panel de control V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave por mes\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Colateralización\",\"DxfsGs\":\"Puedes reportar cualquier incidente a nuestro <0>Discord o <1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Deshabilitado\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restakeando \",[\"symbol\"]],\"Ebgc76\":[\"Retirando \",[\"symbol\"]],\"EdQY6l\":\"Ninguno\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivar el periodo de cooldown para unstakear \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrar a V3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Aprende más.\",\"FHlMf/\":\"Balance actual v2\",\"FHpxjF\":[\"El factor de reserva es un porcentaje de interés que va a un \",[\"0\"],\" que es controlado por el gobierno de Aave para promover el crecimiento del ecosistema.\"],\"FOBZa6\":\"Capacidad de préstamo utilizada\",\"FPKEug\":\"Operación no soportada\",\"FbmMe7\":\"Direcciones vinculadas\",\"Fdp03t\":\"en\",\"Fjw9N+\":\"Activos a suministrar\",\"FmN0fk\":\"Restakear\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO es un activo nativo descentralizado, digital y respaldado por garantía, vinculado al USD. Es creado por los usuarios que lo toman prestado contra múltiples garantías. Cuando el usuario paga su posición de préstamo de GHO, el protocolo quema el GHO de ese usuario. Todos los pagos de interés acumulados por los acuñadores de GHO serán transferidos directamente a la tesorería de\xA0la\xA0DAO\xA0de\xA0Aave.\",\"GQrBTq\":\"Cambiar E-Mode\",\"GWswcZ\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. El 20 de diciembre de 2022, renFIL ya no será compatible y no se podrá conectar de nuevo a su red nativa. Se recomienda retirar las posiciones de suministro y pagar las posiciones de préstamo para que renFIL se pueda convertir de nuevo a FIL antes de la fecha límite. Después de esta fecha, ya no será posible convertir renFIL a FIL. <0>Más detalles\",\"GX8GKD\":\"Activos\",\"GgEj+0\":\"Modo de solo lectura. Conéctate a una cartera para realizar transacciones.\",\"GjkIKV\":\"finaliza\",\"GtP2hp\":[\"Tomar prestado no está disponible porque has habilitado el Efficieny Mode (E-Mode) para la categoría \",[\"0\"],\". Para manejar las categorías del E-Mode visita tu <0>Panel de control.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Lo sentimos, se produjo un error imprevisto. Mientras tanto, puedes intentar recargar la página, o volver después.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Ventana de unstakeo\",\"HpK/8d\":\"Recargar\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Este activo no se puede migrar al mercado v3 de \",[\"marketName\"],\", ya que el activo de garantía habilitará el isolation mode.\"],\"Hvwnm9\":[\"La cantidad máxima disponible para suministrar está limitada porque el límite de suministro del protocolo está al \",[\"0\"],\"%.\"],\"I8CX2c\":\"La cantidad total de tus activos denominados en USD que pueden ser usados como garantía para activos de préstamo.\",\"IAD2SB\":[\"Reclamando \",[\"symbol\"]],\"IG9X9/\":\"Tomar prestado este activo está limitado a una cierta cantidad para minimizar la insolvencia del fondo de liquidez.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Está previsto que este activo se desvincule debido a una decisión del Gobierno del Protocolo Aave. <0>Más detalles\",\"IP+I/j\":\"Periodo de cooldown\",\"IaA40H\":\"Liquidación en\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Administrar analíticas\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstakeando \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stakear\",\"JZMxX0\":\"No hay suficiente balance en tu cartera\",\"Jgflkm\":\"Obtener GHO\",\"JoMQnI\":\"Balance de la cartera\",\"JtwD8u\":\"Balance tomado prestado tras pagar\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"KLXVqE\":[\"Los tokens stETH se migrarán a Wrapped stETH usando el wrapper del protocolo de Lido, lo que provoca un cambio en el balance de suministro después de la migración: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KRpokz\":\"VER TX\",\"KSlpka\":\"Esto representa el umbral en el que un préstamo será considerado sin garantía suficiente y sujeto a la liquidación de la misma. Por ejemplo, si una garantía tiene un umbral de liquidación del 80 %, significa que el préstamo será liquidado cuando el valor de la deuda alcanze el 80% del valor de la garantía.\",\"KYAjf3\":\"Aislado\",\"KkPgim\":\"Cambiando E-Mode\",\"KnN1Tu\":\"Caduca\",\"KoOBI2\":\"Debido a mecánicas internas de stETH requeridas para el soporte del rebase, no es posible realizar un cambio de garantía donde stETH es el token de origen.\",\"KojyJ4\":\"Red incorrecta\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Introduce la dirección ETH\",\"KvG1xW\":\"Reclamando\",\"L+8Lzs\":\"LTV actual\",\"L+qiq+\":\"Mercado\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Sin poder de voto\",\"LL0zks\":\"Puede ser garantía\",\"LLdJWu\":\"AAVE Reclamable\",\"LSIpNK\":\"Tomar prestado y pagar en el mismo bloque no está permitido\",\"LVt3TI\":[\"<0>Tolerancia de deslizamiento <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Modo E\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Intenta aumentar el deslizamiento o reduce la cantidad de entrada\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Dirección del destinatario\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vista de stakeo\",\"McHlGl\":\"Cambio de APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si el factor de salud se encuentra por debajo de 1, la liquidación de tu colateral puede ser activada.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Has cancelado la transacción.\",\"MnE2QX\":\"Información de préstamo\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valor de retorno inválido en la función executor del préstamo flash\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Este activo solo se puede utilizar como garantía en isolation mode con poder de préstamo limitado. Para entrar en el isolation mode, deshabilita todas las demás garantías.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pendiente...\",\"NK9ikO\":\"Balance de la cartera\",\"NMt2CB\":\"Cantidad reclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nada invertido\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"El límite de minteo sin respaldo ha sido excedido\",\"O+tyU+\":[\"La cantidad máxima disponible para tomar prestado contra este activo está limitada porque el límite de deuda está al \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OFjZGo\":\"Unstakear\",\"OR8cYX\":\"Resumen de la propuesta\",\"OYuJ9K\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"OfhWJH\":\"Restablecer\",\"Og2SKn\":\"deshabilitado\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Página web\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirar\",\"P1dURE\":\"Revocar poder\",\"P2WCD/\":[\"El activo subyacente no existe en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"P2sL6B\":\"Cuando ocurre una liquidación, los liquidadores pagan hasta el 50% de la cantidad pendiente del préstamo en nombre del prestatario. A cambio, pueden comprar la garantía con descuento y quedarse con la diferencia (sanción de liquidación) como bonificación.\",\"P6sRoL\":\"Stakea ABPT\",\"P72/OW\":\"El promedio ponderado de APY para todos los activos prestados, incluidos los incentivos.\",\"P7e6Ug\":\"Por favor conecta tu cartera para ver el historial de transacciones.\",\"PByO0X\":\"Votos\",\"PI+kVe\":\"Deshabilitar fork\",\"PJK9u/\":\"Apy préstamo\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Umbral de liquidación\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Esta acción reducirá el factor de salud V2 por debajo del umbral de liquidación. Mantén la garantía o migra la posición de préstamo para continuar.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"El Aave Balancer Pool Token (ABPT) es un token de pool de liquidez. Puedes recibir ABPT depositando una combinación de AAVE + wstETH en el pool de liquidez de Balancer. Luego puedes stakear tu BPT en el módulo de seguridad para asegurar el protocolo y ganar incentivos de seguridad.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Retirando\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"No alcanzado\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Diferencial\",\"RNK49r\":\"Firma inválida\",\"RS0o7b\":\"Estado\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Detalles de la propuesta\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"El activo no está listado\",\"Rj01Fz\":\"Enlaces\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"El factor de salud es menor que el umbral de liquidación\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Habilitado\",\"SDav7h\":\"Fondos en el Módulo de Seguridad\",\"SENccp\":\"Si el error persiste, <0/> podrías reportarlo a esto\",\"SIWumd\":\"Mostrar activos congelados o pausados\",\"SM58dD\":\"Cantidad en cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Error al cargar los votantes de la propuesta. Por favor actualiza la página.\",\"SSQVIz\":\"Umbral de liquidación\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"El modo de solo lectura permite ver las posiciones de las direcciones en Aave, pero no podrás realizar transacciones.\",\"SZRUQ4\":\"Deslizamiento máximo\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"Sk2zW9\":\"Desactivando E-Mode\",\"SxaD0o\":\"La dirección del proveedor del pool no esta registrada\",\"T/AIqG\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"T0xCO9\":\"No se puede validar la dirección de la cartera. Vuelve a intentarlo.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Tomar prestado\",\"TFxQlw\":\"Penalización de liquidación\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"El activo solo puede usarse como garantía en el Isolation mode únicamente.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"El usuario no tiene deuda pendiente de tasa estable en esta reserva\",\"TeCFg/\":\"Cambio de tasa de préstamo\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Balance de préstamo después del cambio\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recarga la página\",\"U2r8nY\":\"Elige cuánto poder de voto/proposición otorgar a otra persona delegando parte de tu balance de AAVe o stkAAVE. Tus tokens permanecerán en tu cuenta, pero tu delegado podrá votar o proponer en tu lugar. Si tu balance de AAVE, stkAAVE o aAave cambia, el poder de voto/proposición de tu delegado se ajustará automáticamente.\",\"U8IubP\":\"La aplicación se está ejecutando en testnet mode. Aprende como funciona en\",\"U9btTk\":\"El activo no se puede pedir prestado en isolation mode\",\"UAOZRe\":\"El impacto del precio es la diferencia entre el valor total de los tokens de entrada cambiados y los tokens de destino obtenidos (en USD), que resulta de la liquidez limitada del par de cambio.\",\"UE3KJZ\":\"El historial de transacciones no está disponible actualmente para este mercado\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Detalles\",\"UTTKmT\":\"Cooldown de stakeo activado\",\"UXeR72\":\"Estos fondos se han tomado prestados y no están disponibles para su retirada en este momento.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"El ratio LTV máximo representa el poder de endeudamiento máximo de una garantía específica. Por ejemplo, si una garantía tiene un LTV del 75 %, el usuario puede pedir prestado hasta 0,75 ETH en la moneda principal por cada 1 ETH de garantía.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No hay recompensas para reclamar\",\"V0f2Xv\":\"Factor de reserva\",\"V1HK43\":\"Riesgos de migración\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Deuda cubierta\",\"VHOVEJ\":\"Conectar cartera\",\"VMfYUK\":\"Seguridad de tu garantía depositada contra los activos prestados y su valor subyacente.\",\"VOAZJh\":\"Total de préstamos\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Revisar detalles de la tx\",\"W5hVah\":\"Nada suministrado aún\",\"W5kTFy\":\"Votando\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"No respaldado\",\"WNGZwH\":\"El E-Mode incrementa tu LTV para una categoría seleccionada de activos hasta el <0/>. <1>Aprende más\",\"WPWG/y\":\"Configuración y estado de la reserva\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"El usuario no puede retirar más que el balance disponible\",\"WaZyaV\":\"<0>Ampleforth es un activo con rebase. Visita la <1>documentación para aprender más.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Debido a que este activo está en pausa, no se pueden realizar acciones hasta nuevo aviso\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Para tomar prestado, necesitas suministrar cualquier activo para ser utilizado como garantía.\",\"X/ITG9\":\"Copiar el texto del error\",\"X3Pp6x\":\"Utilizado como garantía\",\"X4Zt7j\":\"No se puede realizar la acción porque la reserva está pausada\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Direcciones de cartera de contrato inteligente representativas (Safe) en otras cadenas.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Por favor ten siempre en cuenta tu <0>factor de salud (HF) cuando migres parcialmente una posición y que tus tasas serán actualizadas a tasas de la V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTAR NO\",\"YDIOks\":\"Habilitar E-Mode\",\"YSodyW\":\"Esta acción reducirá tu factor de salud. Por favor ten en cuenta el riesgo incrementado de liquidación de la garantía.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode está ON\",\"YrDxdO\":\"Si tu relación préstamo-valor supera el umbral de liquidación, tu garantía puede ser liquidada.\",\"YyIM65\":\"No se cumplieron las condiciones de ajuste de tasas de interés\",\"YyydIq\":[\"Añade \",[\"0\"],\" a tu cartera para hacer un seguimiento del balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gobierno de Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Modo de eficiencia (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Deshabilitar testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Antes de suministrar\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valor de liquidación\",\"ZrEc8j\":\"No pudimos encontrar ningún activo relacionado con tu búsqueda. Vuelve a intentarlo con un nombre diferente de activo, símbolo o dirección.\",\"ZsLF7e\":\"habilitado\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Tempo restante para unstakear\",\"a7u1N9\":\"Precio\",\"a9D+6D\":\"Unstakeado\",\"aEtiwq\":\"Votar NO\",\"aMmFE1\":\"Comprar Crypto con Fiat\",\"aOKIms\":\"Los parámetros del array que deberían ser iguales en longitud no lo son\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Tu balance es más bajo que la cantidad seleccionada.\",\"adUsDd\":\"Se ha producido un error al recuperar la propuesta.\",\"aoXTT7\":\"APY préstamo, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Advertencia periodo de cooldown\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Activo\",\"bXQ/Og\":\"Compartir en twitter\",\"bXr0ee\":\"Los activos aislados han limitado tu capacidad de préstamo y otros activos no pueden ser usados como garantía.\",\"bYmAV1\":\"Direcciones\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"La cantidad solicitada es mayor que el tamaño máximo del préstamo en el modo de tasa estable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Suministrar\",\"bxN6EM\":\"No se puede deshabilitar E-Mode\",\"c91vuQ\":\"La dirección no es un contrato\",\"c97os2\":\"aToken de Aave\",\"c9b44w\":\"No puedes retirar esta cantidad porque causará una liquidación\",\"cBc+4A\":\"Esta es la cantidad total disponible que puedes tomar prestada. Puedes tomar prestado basado en tu garantía y hasta que el límite de préstamo se alcance.\",\"cIl5kp\":\"Tu poder de voto se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"cLo09S\":\"Detalles de riesgo\",\"cNT+ij\":\"Tomar prestado no está disponible porque has habilitado el Efficiency Mode (E-Mode) y el Isolation mode. Para administrar el E-Mode y el Isolation Mode, visita tu <0>Panel de control.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Para enviar una propuesta de cambios menores al protocolo, necesitarás al menos 80K de poder. Si deseas cambiar la base central del código, necesitarás un poder de 320K.<0>Aprende más\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Votar SI\",\"ckf7gX\":[\"Pagando \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Hilo de discusión del foro\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"No has participado en esta propuesta\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gobierno\",\"dEgA5A\":\"Cancelar\",\"dIsyWh\":\"La validación del LTV ha fallado\",\"dOB5nW\":[\"La cantidad máxima disponible para suministrar es <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"No tienes suficientes fondos en tu cartera para pagar la cantidad total. Si procedes a pagar con tu cantidad actual de fondos, aún tendrás un pequeño préstamo en tu panel de control.\",\"dXUQFX\":\"Activos a tomar prestado\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dgr1aY\":\"Tomar prestado está deshabilitado debido a una decisión de la comunidad de Aave. <0>Más información\",\"djsg0o\":\"Uso de la garantía\",\"dpc0qG\":\"Variable\",\"drdV8R\":\"Liquidación\",\"dxW8cS\":\"Token de deuda de Aave\",\"e4V3oW\":\"Top 10 direcciones\",\"eD8WX/\":\"La acción requiere una reserva activa\",\"eJRJ04\":\"Cantidad para unstakear\",\"eLh0cL\":\"El deslizamiento es la diferencia entre las cantidades calculadas y las recibidas debido a las condiciones cambiantes del mercado entre el momento en que se envía la transacción y su verificación.\",\"ePK91l\":\"Editar\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Recompensas de Staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aún no hay transacciones.\",\"ebLGGN\":\"Total tomado prestado\",\"ecqEvn\":\"El balance de garantía es 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible en\",\"enruNF\":\"empieza\",\"eqLYiD\":\"Unstakea ahora\",\"evw5ha\":\"Valor neto\",\"ezcU16\":\"Obtener Token ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Has cambiado a tasa \",[\"0\"]],\"fMJQZK\":\"Prestado\",\"fZ5Vnu\":\"Recibido\",\"firl9Q\":\"Tu actual relación préstamo-valor basado en tu garantía suministrada.\",\"fldjW9\":\"Previsualizar la tx y migrar\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Retirar \",[\"symbol\"]],\"fwjWSI\":\"Suministrado\",\"fwyTMb\":\"Migrar a stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Votó NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. <0>More información\",\"gTHi2T\":\"El usuario está intentando tomar prestado múltiples activos incluido uno aislado\",\"gVW59Y\":\"Por favor conecta tu cartera para obtener activos testnet gratis.\",\"gcFNxP\":\"Aprobación confirmada\",\"goff7V\":\"Dirección cero no válida\",\"gp+f1B\":\"Versión 3\",\"gvTM4B\":\"El APY neto es el efecto combinado de todos los suministros y préstamos sobre total, incluidos los incentivos. Es posible tener un APY neto negativo si el APY de la deuda es mayor que el APY de suministro.\",\"gzcch9\":\"Comisión de puente de protocolo inválida\",\"h33MxW\":\"Direcciones de cartera de contrato inteligente representantes (Safe) en otras cadenas.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activar Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY neto\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Reclamado\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"El % de tu poder de préstamo total utilizado. Esto se basa en la cantidad de tu garantía suministrada y la cantidad total que puedes pedir prestado.\",\"hehnjM\":\"Cantidad\",\"hjDCQr\":\"Hubo un error. Por favor intenta cambiar los parámetros o <0><1>copiar el error\",\"hom7qf\":\"Reclamar\",\"hpHJ4I\":\"Garantía liquidada\",\"huQ6Tz\":[\"Tomando prestado \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"Sobre GHO\",\"iChbOF\":\"Parámetros inconsistentes del préstamo flash\",\"iEPVHF\":\"No hay suficiente poder de voto para participar en esta propuesta\",\"iEW87X\":\"Poder delegado\",\"iEju36\":[\"Has votado \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Seleccionar tolerancia de deslizamiento\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Ingresa una cantidad\",\"iSLIjg\":\"Conectar\",\"iUo5rv\":\"tokens no es lo mismo que stakearlos. Si deseas stakearlos\",\"iZxa38\":\"Úsalo para votar a favor o en contra de propuestas activas.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"En el Isolation mode, no puedes suministrar otros activos como garantía. Un límite de deuda global limita la capacidad de préstamo del activo aislado. Para salir del Isolation mode, deshabilita \",[\"0\"],\" como garantía antes de tomar prestado otro activo. Lee más en nuestras <0>preguntas frecuentes \"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"El uso de garantías está limitado debido al Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Suministrando tu\",\"jFi7dz\":\"Tasa de interés determinada por el gobierno de Aave. Esta tasa puede cambiar con el tiempo dependiendo de la necesidad de que el suministro de GHO se contraiga/expanda. <0>Aprende más\",\"jG3UJ7\":\"Desactivar el E-Mode\",\"jKYzR1\":\"Habilitar E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Periodo restante de cooldown\",\"jeMZNr\":[[\"0\"],\" el servicio on-ramp es proporcionado por proveedores externos y al seleccionarlo, estás aceptando los términos de dichos proveedores. Tu acceso al servicio podría depender de que el proveedor externo esté operativo.\"],\"jfl9OP\":\"Migrado\",\"jmXdoY\":\"En E-Mode algunos activos no se pueden pedir prestados. Sal del E-Mode para obtener acceso a todos los activos\",\"jpctdh\":\"Ver\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"No disponible\",\"k/sb6z\":\"Seleccionar idioma\",\"k3wP3f\":\"<0>Atención: Los cambios de parámetros a través de la gobernanza pueden alterar el factor de salud de tu cuenta y el riesgo de liquidación. Sigue el <1>foro de gobierno de Aave para mantenerte actualizado.\",\"kACpF3\":[\"Reclamar \",[\"0\"]],\"kH6wUX\":\"Impacto del precio\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" activos seleccionados\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Para pagar en nombre de un usuario, se necesita una cantidad explícita para pagar\",\"kRTD40\":[\"Cantidad a pagar para alcanzar el \",[\"0\"],\"% de utilización\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"El límite de suministro se ha sobrepasado\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"El límite de deuda no es cero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"El balance de DAI se convertirá a través de los contratos de DSR y luego se suministrará como sDAI. El cambio no genera costos adicionales ni deslizamientos.\",\"lU2d1/\":[\"Este activo no se puede migrar debido a una liquidez insuficiente o a una limitación del límite de préstamo en el mercado v3 de \",[\"marketName\"],\".\"],\"lVhKKI\":\"Votó YAE\",\"lWLqxB\":\"No pudimos encontrar ninguna transacción relacionada con tu búsqueda. Vuelve a intentarlo con un nombre de activo diferente o restablece los filtros.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Inglés\",\"lfEjIE\":\"Aprende más en nuestra guía <0>Preguntas frecuentes\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Emisiones totales por día\",\"m7r7Hh\":\"Activos de préstamo seleccionados\",\"mDDK4p\":\"Pool de Balancer\",\"mUAFd6\":\"Versión 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos o usa <0>\",[\"0\"],\" para transferir tus activos de \",[\"network\"],\".\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Comprar \",[\"cryptoSymbol\"],\" con Fiat\"],\"mvCXBY\":\"Stakea AAVE\",\"mwdzil\":\"Vale, cerrar\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Este activo no puede usarse como garantía.\",\"n+SX4g\":\"Desarrolladores\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Apy de suministro\",\"nJgsQu\":\"Con un poder de votación de <0/>\",\"nLC6tu\":\"Francés\",\"nNHV0z\":\"Migrar múltiples garantías y activos prestados al mismo tiempo puede ser una operación costosa y podría fallar en ciertas situaciones.<0>Por lo tanto, no se recomienda migrar posiciones con más de 5 activos (depositados + tomados prestados) al mismo tiempo.\",\"nNbnzu\":\"Proposición\",\"nPGNMh\":\"Puede ser ejecutado\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Ambos\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Se produjo un error\",\"nxyWvj\":\"Retirar esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"o17QVP\":\"Tu factor de salud y la relación préstamo-valor determinan la seguridad de tu garantía. Para evitar liquidaciones, puedes suministrar más garantía o pagar las posiciones de préstamo.\",\"o1xc2V\":\"El balance de AToken no es cero\",\"o5ooMr\":\"Deuda\",\"o7J4JM\":\"Filtro\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Cooldown para undstakear\",\"oJ5ZiG\":\"El usuario no tiene deuda pendiente de tasa variable en esta reserva\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Activos de prueba\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"La tasa de interés estable <0>permanecerá igual durante la duración de su préstamo. Está recomendado para los períodos de préstamo a largo plazo y para los usuarios que prefieren la previsibilidad.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible para suministrar\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Sin resultados\",\"owSsI3\":\"Firmas listas\",\"p+R52m\":\"Ir al pool de Balancer\",\"p2S64u\":\"La relación préstamo-valor de las posiciones migradas provocaría la liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"p2Z2Qi\":\"Este activo ha alcanzado su límite de préstamo. No queda nada disponible para ser prestado de este mercado.\",\"p3j+mb\":\"Tu balance de recompensa es 0\",\"p45alK\":\"Configurar la delegación\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"El balance subyacente debe ser mayor que 0\",\"pgWG9H\":\"No hay suficiente balance stakeado\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"por favor comprueba que la cantidad que deseas depositar no está siendo utilizada actualmente para stakear. Si está utilizando para stakear, tu transacción podría fallar.\",\"pjO/iH\":\"Cantidad mínima recibida\",\"pooutM\":\"La votación está activa\",\"pqaM5s\":\"Confirmando transacción\",\"ptaxX3\":[\"Entiendo como el cooldown (\",[\"0\"],\") y el proceso de unstaking (\",[\"1\"],\") funcionan\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"La función debe ser llamada por un pool\",\"q/51mF\":\"Migrar a V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Estrategia de tasa de interés\",\"q6lAbz\":\"Stakeado\",\"qB4kPi\":\"Suministrar APY\",\"qENI8q\":\"Configuración global\",\"qGz5zl\":\"Balance de la garantía tras pagar\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copiar el error\",\"qXCkEM\":\"Por favor, conecta tu cartera para ver tus suministros, préstamos y posiciones abiertas.\",\"qY2jnw\":\"Expiración inválida\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Cantidad inválida para quemar\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"La cantidad debe ser mayor que 0\",\"rQ+R+0\":\"Activos de suministro seleccionados\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Este activo no se puede migrar porque tienes una garantía en Isolation Mode en el mercado v3 de \",[\"marketName\"],\" que limita los activos prestados. Puedes administrar tu garantía en el <0>Panel de control V3 de \",[\"marketName\"],\"\"],\"rcT+yy\":\"Mostrar activos con 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacidad\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Reclamar todas las recompensas\",\"rwyUva\":\"Estos activos están temporalmente congelados o pausados por decisiones de la comunidad de Aave, lo que significa que no se puede suministrar / tomar prestado o intercambiar tasas de estos activos. Se permiten retiros y pagos de deuda. Sigue el <0>foro de gobierno de Aave para más actualizaciones.\",\"rxJW5W\":\"Tu poder de proposición se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstakear \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NO\",\"sQv06Y\":\"para\",\"sTtO6J\":\"Confirmar transacción\",\"sXKb3l\":\"Tasa de cambio\",\"sb0q4+\":\"Unstakea aquí\",\"smJNwH\":\"Disponible para tomar prestado\",\"solypO\":\"El factor de salud no está por debajo del umbral\",\"sr0UJD\":\"Volver atrás\",\"ss5GCK\":\"La dirección del proveedor del grupo de direcciones no es válida\",\"swEgK4\":\"Tu información de voto\",\"t+wtgf\":\"Nada tomado prestado aún\",\"t/YqKh\":\"Eliminar\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Precio del oráculo\",\"tFZLf8\":\"Este cálculo de gas es solo una estimación. Tu cartera establecerá el precio de la transacción. Puedes modificar la configuración de gas directamente desde tu proveedor de cartera.\",\"tHuvQI\":\"Ir al panel de control V3\",\"tOcg3N\":\"Dado que este activo está congelado, las únicas acciones disponibles son retirar y pagar, a las que se puede acceder desde el <0>Panel de control\",\"tOuXfv\":[\"Cantidad a tomar prestado para alcanzar el \",[\"0\"],\"% de utilización\"],\"te9Bfl\":\"Por favor, conecta tu cartera\",\"tt5yma\":\"Tus suministros\",\"u3ZeYl\":\"Error en la transacción\",\"u706uF\":\"Préstamo flash inválido\",\"u8Gfu7\":[\"Sin resultados de búsqueda\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No hay activos seleccionados para migrar.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrando\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Para el pago de un tipo específico de deuda, el usuario necesita tener una deuda de ese tipo\",\"ulNuNq\":\"Exportar datos a\",\"ulup2p\":\"Comprar Crypto con Fiat\",\"usB84Z\":\"La cantidad máxima disponible para tomar prestado está limitada porque casi se ha alcanzado el límite de préstamo del protocolo.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"vEqxH9\":\"Restakeado\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Ocultar\",\"vMba49\":\"Tomar prestado no está habilitado\",\"vMpNwt\":\"Aprobar con\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Idioma\",\"vesuBJ\":\"Te permite decidir si utilizar un activo suministrado como garantía. Un activo utilizado como garantía afectará a tu poder de préstamo y factor de salud.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"El balance de deuda estable no es cero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"APR de recompensas\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Tu \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Canal de Discord\",\"wQZbc/\":\"El llamador de la función no es un AToken\",\"wZFvVU\":\"VOTAR SI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"El Protocolo Aave está programado para usar siempre el precio de 1 GHO = $1. Esto es diferente del uso del precio de mercado a través de oráculos para otros criptoactivos. Esto crea oportunidades de arbitraje estabilizadoras cuando el precio de GHO fluctúa.\",\"wh7Ezv\":\"No tienes balance de AAVE/stkAAVE/aAave para delegar.\",\"wlsIx7\":\"Con la testnet Faucet puedes obtener activos gratuitos para probar el Protocolo Aave. Asegúrate de cambiar tu proveedor de cartera a la red de testnet adecuada, selecciona el activo deseado y haz clic en \\\"Faucet\\\" para obtener tokens transferidos a tu cartera. Los activos de una testnet no son \\\"reales\\\", lo que significada que no tienen valor monetario. <0>Aprende más\",\"wmE285\":\"Obtener Token ABP v2\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"Como resultado de las decisiones del gobierno, este pool de stakeo de ABPT está obsoleto. Tienes la flexibilidad de migrar todos tus tokens a v2 o unstakearlos sin ningún periodo de cooldown.\",\"x5KiLL\":\"Los activos seleccionados se han migrado correctamente. Visita el panel de control del mercado para verlos.\",\"x7F2p6\":\"Diferencial actual\",\"x7K5ib\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue \",[\"0\"],\" de prueba gratis en\"],\"x9iLRD\":\"tokens, por favor ve al\",\"xNy/UG\":\"Pagar con\",\"xPm8wv\":\"Aprende más sobre los riesgos involucrados\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Tu información\",\"xaWZ6f\":\"Cambio tipo de APY\",\"xh6k71\":\"El uso de garantías está limitado debido al isolation mode.\",\"xvIklc\":\"El préstamo flash está deshabilitado para este activo, por lo tanto, esta posición no se puede migrar.\",\"y5rS9U\":\"Migrar\",\"yB1YpA\":\"Modo oscuro\",\"yCrG6m\":\"Tamaño total del mercado\",\"yJUUbn\":\"Resumen de la transacción\",\"yLGmLX\":[\"Restakear \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Dirección no válida\",\"yZwLw6\":\"Haz seguimiento de tu cartera\",\"yh2sjd\":[\"Impacto en el precio \",[\"0\"],\"%\"],\"ylmtBZ\":\"La aplicación se ejecuta en fork mode.\",\"ymNY32\":[\"No hay fondos suficientes en la reserva\",[\"0\"],\"para tomar prestado\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Cerrar\",\"z4uGQg\":\"El límite de deuda está sobrepasado\",\"z5UQOM\":\"La garantía elegida no puede ser liquidada\",\"z5Y+p6\":[\"Suministrando \",[\"symbol\"]],\"zCjNKs\":\"No se puede realizar la acción porque la reserva está congelada\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Límite de deuda aislado\",\"zTOjMP\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Deuda restante\",\"zmTPiV\":\"Balance de suministro\",\"zpPbZl\":\"Parámetros de riesgo de liquidación\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menú\",\"zwWKhA\":\"Aprende más\",\"zy9fXn\":[\"Este activo está congelado en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"zys+R6\":\"Ten en cuenta la congestión de la red y los precios del gas.\",\"zzzTXS\":\"Merit Program rewards are claimed through the\",\"+EGVI0\":\"Recibir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Parece que no podemos cambiar la red automáticamente. Por favor, comprueba si puedes cambiarla desde la cartera.\",\"+kLZGu\":\"Cantidad de activos suministrados\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Cantidad mínima de Aave stakeado\",\"00OflG\":\"No hay suficiente liquidez para que el activo seleccionado realice el cambio. Prueba reduciendo la cantidad.\",\"08/rZ9\":\"El periodo de cooldown es el tiempo requerido antes de unstakear tus tokens (20 días). Solo puedes retirar tus activos del Módulo de Seguridad después del periodo de cooldown y dentro de la ventana de unstakeo.<0>Aprende más\",\"1Onqx8\":[\"Aprobando \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Dirección bloqueada\",\"2bAhR7\":\"Conoce GHO\",\"2o/xRt\":\"Se ha alcanzado el límite de suministro en la reserva especificada. Prueba reduciendo la cantidad.\",\"3O8YTV\":\"Interés total acumulado\",\"4iPAI3\":\"Cantidad de préstamo mínima de GHO\",\"6NGLTR\":\"Cantidad descontable\",\"6yAAbq\":\"APY, tasa de préstamo\",\"73Auuq\":\"Los parámetros de descuento son decididos por la comunidad de Aave y pueden cambiar con el tiempo. Consulta el Gobierno para ver actualizaciones y vota para participar. <0>-Aprende más\",\"ARu1L4\":\"Pagado\",\"B9Gqbz\":\"Tasa variable\",\"BJyN77\":\"Debido al impacto del factor de salud, se requiere un préstamo flash para realizar esta transacción, pero el Gobierno de Aave ha inhabilitado la disponibilidad de préstamos flash para este activo. Intenta reducir la cantidad o suministrar garantía adicional.\",\"BjLdl1\":\"Con un descuento\",\"CMHmbm\":\"Deslizamiento\",\"EBL9Gz\":\"¡COPIADO!\",\"ES8dkb\":\"Interés fijo\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Descuento\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Guardar y compartir\",\"JK9zf1\":[\"Interés compuesto estimado, incluyendo el descuento por Staking \",[\"0\"],\"AAVE en el Módulo de Seguridad.\"],\"JPrLjO\":\"No puedes usar este activo como garantía\",\"JU6q+W\":\"Recompensa(s) por reclamar\",\"K05qZY\":\"Retirar y Cambiar\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Habilitar este activo como garantía aumenta tu poder préstamo y el factor de salud. Sin embargo, puede ser liquidado si tu factor de salud cae por debajo de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stakear GHO\",\"RIfckG\":[\"Desactivar \",[\"symbol\"],\" como garantía\"],\"RbXH+k\":\"Los poseedores de AAVE, GHO y ABPT (solo en la red de Ethereum) pueden stakear sus activos en el Módulo de Seguridad para añadir más seguridad al protocolo y obtener incentivos de seguridad. En el caso de un evento de shortfall, tu stakeo puede ser reducido para cubrir el déficit. proporcionando una capa adicional de protección para el protocolo.\",\"RoafuO\":\"Enviar feedback\",\"TskbEN\":\"Los poseedores de stkAAVE reciben un descuento en la tasa de préstamo de GHO\",\"TtZL6q\":\"Parámetros del modelo de descuento\",\"Tz0GSZ\":\"actividades bloqueadas\",\"W8ekPc\":\"Volver al panel de control\",\"XZzneG\":\"Saldrás del modo aislamiento y otros tokens pueden ser usados ahora como garantía\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Deshabilitar este activo como garantía afecta tu poder de préstamo y Factor de Salud.\",\"al6Pyz\":\"Supera el descuento\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"No hay suficiente garantía para pagar esta cantidad de deuda con\",\"cqnmnD\":\"Tasa de interés efectiva\",\"dMtLDE\":\"para\",\"euScGB\":\"APY con descuento aplicado\",\"fHcELk\":\"APR Neto\",\"flRCF/\":\"Descuento por staking\",\"gncRUO\":\"Esta dirección está bloqueada en app.aave.com porque está asociada con una o más\",\"gr8mYw\":\"Puedes tomar prestado hasta <0/> GHO al <1/> (descuento máximo)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Balance tomado prestado\",\"i2JTiw\":\"Puedes ingresar una cantidad específica en el campo.\",\"jMam5g\":[\"Balance \",[\"0\"]],\"kwwn6i\":\"Los usuarios que stakean AAVE en el Modulo de Seguridad (es decir, poseedores de stkAAVE) reciben un descuento en la tasa de interés de préstamo de GHO. Este descuento se aplica a 100 GHO por cada 1 stkAAVE en posesión. Usa el calculador de abajo para ver la tasa de préstamo de GHO con el descuento aplicado.\",\"lNVG7i\":\"Selecciona un activo\",\"lt6bpt\":\"Garantía a pagar con\",\"mIM0qu\":\"Cantidad esperada a pagar\",\"mzI/c+\":\"Descargar\",\"n8Psk4\":\"No podemos detectar una cartera. Conecta una cartera para stakear y ver tu balance.\",\"nOy4ob\":\"Te sugerimos volver al Panel de control.\",\"nakd8r\":\"poseedores de stkAAVE obtienen un descuento en la tasa de préstamo de GHO\",\"nh2EJK\":[\"Por favor, cambia a \",[\"networkName\"],\".\"],\"ntkAoE\":\"Descuento aplicado para <0/> AAVE stakeados\",\"o4tCu3\":\"APY préstamo\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"El periodo de cooldown es \",[\"0\"],\". Después \",[\"1\"],\" del cooldown, entrarás a la ventana de unstakeo de \",[\"2\"],\". Continuarás recibiendo premios durante el cooldown y la ventana de unstakeo.\"],\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interés acumulado\",\"rf8POi\":\"Cantidad de activos tomados prestados\",\"ruc7X+\":\"Añade stkAAVE para ver el APY de préstamo con el descuento\",\"sK+Nag\":\"Revisión tx\",\"t81DpC\":[\"Aprueba \",[\"symbol\"],\" para continuar\"],\"umICAY\":\"<0><1><2/>Añade stkAAVE para ver la tasa de préstamo con descuento\",\"uwAUvj\":\"COPIAR IMAGEN\",\"v8x7Mg\":\"Garantía insuficiente para cubrir la nueva posición de préstamo. La cartera debe tener poder de préstamo suficiente para realizar el cambio de deuda.\",\"wRRqvW\":\"No tienes suministros en este activo\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Habilitar \",[\"symbol\"],\" como garantía\"],\"yW1oWB\":\"Tipo APY\",\"yhvj6d\":\"No puedes cambiar el uso como modo de garantía para este activo, porque causará una liquidación\",\"zevmS2\":\"<0><1><2/>añade <3/> stkAAVE para tomar prestado al <4/> (descuento máximo)\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si NO unstakeas entre \",[\"0\"],\" de la ventana de unstakeo, necesitarás activar el proceso de cooldown de nuevo.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participar en esta reserva de \",[\"symbol\"],\" da recompensas anuales.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Utiliza tu balance de AAVE, stkAAVE o aAava para delegar tu voto y poder de proposición. No enviarás ningún token, solo los derechos de votar y proponer cambios en el protocolo. Puedes volver a delegar o revocar el poder de vuelta en cualquier momento.\",\"+i3Pd2\":\"Límite del préstamo\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Cantidad para migrar\",\"/7ykiW\":\"Tomar prestado esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"Preguntas frecuentes\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"El préstamo estable no está habilitado\",\"/yQcJM\":\"Valor total\",\"00AB2i\":\"El usuario no tomó prestado el activo especificado\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Cambio de tasa\",\"0BF3yK\":\"Lo sentimos, no hemos podido encontrar la página que estabas buscando.\",\"0HRJcX\":\"Merit Program and Self rewards are claimed through the\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Riesgo de liquidación\",\"0ojY+Y\":\"Balance actual v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Cambio de garantía\",\"0wGCWc\":\"Esta es la cantidad total que puedes suministrar en esta reserva. Puedes suministrar el balance de tu cartera hasta que se alcance el límite de suministro.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Los datos de los precios no están disponibles actualmente para esta reserva en el subgraph del protocolo\",\"1LjK22\":\"Historial de transacciones\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Por favor conecta una cartera para ver tu información personal aquí.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Umbral <0/> de liquidación\",\"1m9Qqc\":\"Retirando y Cambiando\",\"1t7rez\":\"El suministro de activos está limitado a una cierta cantidad para reducir la exposición del protocolo a este activo y ayudar a manejar los riesgos implicados.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Ver detalles\",\"2FYpfJ\":\"Más\",\"2O3qp5\":\"Liquidez disponible\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Este activo no se puede migrar debido a una restricción del límite de suministro en el mercado v3 de \",[\"marketName\"],\".\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave es un protocolo totalmente descentralizado, gobernado por la comunidad de poseedores de tokens AAVE. Los poseedores de tokens AAVE discuten, proponen y votan colectivamente sobre las actualizaciones del protocolo. Los poseedores de tokens AAVE (solo en la red Ethereum) pueden votar ellos mismos sobre nuevas propuestas o delegarse a una dirección de su elección. Para aprender más, consulta la\",\"2a6G7d\":\"Por favor introduce una dirección de cartera válida.\",\"2eBWE6\":\"Acepto los riesgos involucadros.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"El préstamo estable no está habilitado\",\"34Qfwy\":\"El límite del préstamo se ha sobrepasado\",\"39eQRj\":[\"Tomar prestado \",[\"symbol\"]],\"3BL1xB\":\"Total suministrado\",\"3K0oMo\":\"Suministro restante\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"No hay suficiente garantía para cubrir un nuevo préstamo\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Suministrar \",[\"symbol\"]],\"3mXg0z\":\"LTV máximo\",\"3q3mFy\":\"Pagar\",\"3qsjtp\":\"El promedio ponderado de APY para todos los activos suministrados, incluidos los incentivos.\",\"3rL+os\":\"Solo puedes retirar tus activos del Módulo de Seguridad después de que finalice el período de cooldown y la ventana de unstakeo esté activa.\",\"42UgDM\":[\"Migrar al mercado V3 de \",[\"0\"]],\"49UFQA\":\"Resultados de la votación\",\"4DMZUI\":\"Ver Transacciones\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Términos\",\"4YYh4d\":\"Máximo disponible para tomar prestado\",\"4lDFps\":\"Firma para continuar\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transacciones\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue activos de prueba gratis en\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentación\",\"5NOSGa\":\"El límite de deuda limita la cantidad posible que los usuarios del protocolo pueden tomar prestado contra este activo. El límite de deuda es específico para los activos en isolation mode y se indica en USD.\",\"5Ncc6j\":[\"Este activo casi ha alcanzado su límite de suministro. Solo se puede suministrar \",[\"messageValue\"],\" a este mercado.\"],\"5cZ/KX\":\"El suministro de deuda variable no es cero\",\"5che++\":\"Para solicitar acceso a este mercado, porfavor visita: <0>Nombre del proveedor de acceso\",\"5ctNdV\":[\"Mínimo \",[\"0\"],\" recibido\"],\"5hDe9v\":\"Acción de permiso requerida\",\"5rsnKT\":\"Recompensas disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Ver todos los votos\",\"6/dCYd\":\"Resumen\",\"60crCe\":\"Todas las transacciones\",\"62Xcjh\":\"Garantía\",\"65A04M\":\"Español\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Firmando\",\"6Jrv+z\":[\"Pagar \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Poder de votación\",\"6f8S68\":\"Mercados\",\"6g1gi0\":\"Propuestas\",\"6gvoHP\":\"Copiar mensaje de error\",\"6h3Q5G\":\"reembolsado\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Cambiar de red\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Factor de salud\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Alcanzado\",\"7YlcXu\":\"El fork mode está activado\",\"7Z76Iw\":\"Tomar prestado no está disponible porque estás usando el Isolation mode. Para administrar el Isolation mode, visita tu <0>Panel de control.\",\"7aKlMS\":\"Compartir en Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Reclamar todo\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"No se pudieron recuperar los datos, por favor recarga el gráfico.\",\"7p5kLi\":\"Panel de control\",\"7sofdl\":\"Retirar y Cambiar\",\"8+6BI0\":\"Ten cuidado - Estás muy cerca de la liquidación. Considera depositar más garantía o pagar alguno de tus préstamos\",\"87pUEW\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos.\"],\"8F1i42\":\"Página no encontrada\",\"8G8M0u\":\"Cargando datos...\",\"8Iu1QS\":\"retirado\",\"8JL93T\":\"Todas las propuestas\",\"8Q51DU\":\"Añadir a la cartera\",\"8X/oyn\":\"Cantidad invalidad para generar\",\"8Z5FPv\":\"Desconectar cartera\",\"8Zz7s5\":\"activos\",\"8aLW8H\":\"Balance a revocar\",\"8bOT3H\":\"Tasa de uso\",\"8sLe4/\":\"Ver contrato\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Mostrar\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Estás entrando en el Isolation mode\",\"9CDK3/\":[\"Tomar prestado no está disponible actualmente para \",[\"0\"],\".\"],\"9GIj3z\":\"Tamaño de la reserva\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Balance stakeado\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votos actuales\",\"9Rw96f\":[\"Este activo casi ha alcanzado su límite de préstamo. Solo hay \",[\"messageValue\"],\" disponibles para ser prestado de este mercado.\"],\"9Xj/qR\":[\"Algunos activos migrados no se utilizarán como garantía debido al isolation mode habilitado en el mercado V3 de \",[\"marketName\"],\". Visita el <0>Panel de control de \",[\"marketName\"],\" V3 para administrar el isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Este activo ha alcanzado su límite de suministro. No queda nada disponible para ser suministrado desde este mercado.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI ha sido pausado debido a una decisión de la comunidad. Los suministros, préstamos y pagos se han visto afectados. <0>Más información\",\"9lXchd\":\"Token subyacente\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Puesto que esta es una red de pruebas, puedes obtener cualquiera de los activos si tienes ETH en tu cartera\",\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Elige uno de los servicios on-ramp\",\"A6dCI6\":[\"La máxima cantidad disponible para tomar prestado es <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Tus préstamos\",\"AV7cGz\":\"Revisa los detalles del approve\",\"AZOjB8\":\"Recuperando datos...\",\"Ai0jas\":\"Únete a la discusión de la comunidad\",\"Ajl2rq\":\"El poder de préstamo y los activos están limitados debido al Isolation mode.\",\"AqgYNC\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"B6aXGH\":\"Estable\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH suministrado como garantía continuará acumulando recompensas de staking proporcionadas por rebases diarios.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"El uso como garantía está limitado debido al isolation mode. <0>Aprende más\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Categoría de activos\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Este activo está congelado debido a una decisión de la comunidad de Aave. <0>Más información\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Documento técnico\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"CZXzs4\":\"Griego\",\"CkTRmy\":[\"Reclamar \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Por favor conecta tu cartera para ver la herramienta de migración.\",\"CtGlFb\":[\"Faucet \",[\"networkName\"]],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Esta acción reducirá el factor de salud de V3 por debajo del umbral de liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"Este activo ha sido pausado debido a una decisión de la comunidad. El suministro, los retiros, los préstamos y los pagos se han visto afectados.\",\"DAma/S\":\"La garantía es (en su mayoría) el mismo activo que se está tomando prestado\",\"DCnFg0\":[\"Direcciones (\",[\"0\"],\")\"],\"DG3Lv1\":\"Entiendo completamente los riesgos de migrar.\",\"DONJcV\":\"El activo base no puede ser rescatado\",\"DR+4uL\":\"Balance del suministro después del cambio\",\"DWjrck\":[\"Este activo no se puede migrar al mercado V3 de \",[\"marketName\"],\" debido a las restricciones del E-mode. Puedes deshabilitar o administrar las categorías del E-mode en tu <0>Panel de control V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave por mes\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Colateralización\",\"DxfsGs\":\"Puedes reportar cualquier incidente a nuestro <0>Discord o <1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Deshabilitado\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restakeando \",[\"symbol\"]],\"Ebgc76\":[\"Retirando \",[\"symbol\"]],\"EdQY6l\":\"Ninguno\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivar el periodo de cooldown para unstakear \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrar a V3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Aprende más.\",\"FHlMf/\":\"Balance actual v2\",\"FHpxjF\":[\"El factor de reserva es un porcentaje de interés que va a un \",[\"0\"],\" que es controlado por el gobierno de Aave para promover el crecimiento del ecosistema.\"],\"FOBZa6\":\"Capacidad de préstamo utilizada\",\"FPKEug\":\"Operación no soportada\",\"FbmMe7\":\"Direcciones vinculadas\",\"Fdp03t\":\"en\",\"Fjw9N+\":\"Activos a suministrar\",\"FmN0fk\":\"Restakear\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO es un activo nativo descentralizado, digital y respaldado por garantía, vinculado al USD. Es creado por los usuarios que lo toman prestado contra múltiples garantías. Cuando el usuario paga su posición de préstamo de GHO, el protocolo quema el GHO de ese usuario. Todos los pagos de interés acumulados por los acuñadores de GHO serán transferidos directamente a la tesorería de\xA0la\xA0DAO\xA0de\xA0Aave.\",\"GQrBTq\":\"Cambiar E-Mode\",\"GWswcZ\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. El 20 de diciembre de 2022, renFIL ya no será compatible y no se podrá conectar de nuevo a su red nativa. Se recomienda retirar las posiciones de suministro y pagar las posiciones de préstamo para que renFIL se pueda convertir de nuevo a FIL antes de la fecha límite. Después de esta fecha, ya no será posible convertir renFIL a FIL. <0>Más detalles\",\"GX8GKD\":\"Activos\",\"GgEj+0\":\"Modo de solo lectura. Conéctate a una cartera para realizar transacciones.\",\"GjkIKV\":\"finaliza\",\"GtP2hp\":[\"Tomar prestado no está disponible porque has habilitado el Efficieny Mode (E-Mode) para la categoría \",[\"0\"],\". Para manejar las categorías del E-Mode visita tu <0>Panel de control.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Lo sentimos, se produjo un error imprevisto. Mientras tanto, puedes intentar recargar la página, o volver después.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Ventana de unstakeo\",\"HpK/8d\":\"Recargar\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Este activo no se puede migrar al mercado v3 de \",[\"marketName\"],\", ya que el activo de garantía habilitará el isolation mode.\"],\"Hvwnm9\":[\"La cantidad máxima disponible para suministrar está limitada porque el límite de suministro del protocolo está al \",[\"0\"],\"%.\"],\"I8CX2c\":\"La cantidad total de tus activos denominados en USD que pueden ser usados como garantía para activos de préstamo.\",\"IAD2SB\":[\"Reclamando \",[\"symbol\"]],\"IG9X9/\":\"Tomar prestado este activo está limitado a una cierta cantidad para minimizar la insolvencia del fondo de liquidez.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Está previsto que este activo se desvincule debido a una decisión del Gobierno del Protocolo Aave. <0>Más detalles\",\"IP+I/j\":\"Periodo de cooldown\",\"IaA40H\":\"Liquidación en\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Administrar analíticas\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstakeando \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stakear\",\"JZMxX0\":\"No hay suficiente balance en tu cartera\",\"Jgflkm\":\"Obtener GHO\",\"JoMQnI\":\"Balance de la cartera\",\"JtwD8u\":\"Balance tomado prestado tras pagar\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"KLXVqE\":[\"Los tokens stETH se migrarán a Wrapped stETH usando el wrapper del protocolo de Lido, lo que provoca un cambio en el balance de suministro después de la migración: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KRpokz\":\"VER TX\",\"KSlpka\":\"Esto representa el umbral en el que un préstamo será considerado sin garantía suficiente y sujeto a la liquidación de la misma. Por ejemplo, si una garantía tiene un umbral de liquidación del 80 %, significa que el préstamo será liquidado cuando el valor de la deuda alcanze el 80% del valor de la garantía.\",\"KYAjf3\":\"Aislado\",\"KkPgim\":\"Cambiando E-Mode\",\"KnN1Tu\":\"Caduca\",\"KoOBI2\":\"Debido a mecánicas internas de stETH requeridas para el soporte del rebase, no es posible realizar un cambio de garantía donde stETH es el token de origen.\",\"KojyJ4\":\"Red incorrecta\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Introduce la dirección ETH\",\"KvG1xW\":\"Reclamando\",\"L+8Lzs\":\"LTV actual\",\"L+qiq+\":\"Mercado\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Sin poder de voto\",\"LL0zks\":\"Puede ser garantía\",\"LLdJWu\":\"AAVE Reclamable\",\"LSIpNK\":\"Tomar prestado y pagar en el mismo bloque no está permitido\",\"LVt3TI\":[\"<0>Tolerancia de deslizamiento <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Modo E\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Intenta aumentar el deslizamiento o reduce la cantidad de entrada\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Dirección del destinatario\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vista de stakeo\",\"McHlGl\":\"Cambio de APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si el factor de salud se encuentra por debajo de 1, la liquidación de tu colateral puede ser activada.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Has cancelado la transacción.\",\"MnE2QX\":\"Información de préstamo\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valor de retorno inválido en la función executor del préstamo flash\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Este activo solo se puede utilizar como garantía en isolation mode con poder de préstamo limitado. Para entrar en el isolation mode, deshabilita todas las demás garantías.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pendiente...\",\"NK9ikO\":\"Balance de la cartera\",\"NMt2CB\":\"Cantidad reclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nada invertido\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"El límite de minteo sin respaldo ha sido excedido\",\"O+tyU+\":[\"La cantidad máxima disponible para tomar prestado contra este activo está limitada porque el límite de deuda está al \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OFjZGo\":\"Unstakear\",\"OR8cYX\":\"Resumen de la propuesta\",\"OYuJ9K\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"OfhWJH\":\"Restablecer\",\"Og2SKn\":\"deshabilitado\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Página web\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirar\",\"P1dURE\":\"Revocar poder\",\"P2WCD/\":[\"El activo subyacente no existe en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"P2sL6B\":\"Cuando ocurre una liquidación, los liquidadores pagan hasta el 50% de la cantidad pendiente del préstamo en nombre del prestatario. A cambio, pueden comprar la garantía con descuento y quedarse con la diferencia (sanción de liquidación) como bonificación.\",\"P6sRoL\":\"Stakea ABPT\",\"P72/OW\":\"El promedio ponderado de APY para todos los activos prestados, incluidos los incentivos.\",\"P7e6Ug\":\"Por favor conecta tu cartera para ver el historial de transacciones.\",\"PByO0X\":\"Votos\",\"PI+kVe\":\"Deshabilitar fork\",\"PJK9u/\":\"Apy préstamo\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Umbral de liquidación\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Esta acción reducirá el factor de salud V2 por debajo del umbral de liquidación. Mantén la garantía o migra la posición de préstamo para continuar.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"El Aave Balancer Pool Token (ABPT) es un token de pool de liquidez. Puedes recibir ABPT depositando una combinación de AAVE + wstETH en el pool de liquidez de Balancer. Luego puedes stakear tu BPT en el módulo de seguridad para asegurar el protocolo y ganar incentivos de seguridad.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Retirando\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"No alcanzado\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Diferencial\",\"RNK49r\":\"Firma inválida\",\"RS0o7b\":\"Estado\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Detalles de la propuesta\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"El activo no está listado\",\"Rj01Fz\":\"Enlaces\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"El factor de salud es menor que el umbral de liquidación\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Habilitado\",\"SDav7h\":\"Fondos en el Módulo de Seguridad\",\"SENccp\":\"Si el error persiste, <0/> podrías reportarlo a esto\",\"SIWumd\":\"Mostrar activos congelados o pausados\",\"SM58dD\":\"Cantidad en cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Error al cargar los votantes de la propuesta. Por favor actualiza la página.\",\"SSQVIz\":\"Umbral de liquidación\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"El modo de solo lectura permite ver las posiciones de las direcciones en Aave, pero no podrás realizar transacciones.\",\"SZRUQ4\":\"Deslizamiento máximo\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"Sk2zW9\":\"Desactivando E-Mode\",\"SxaD0o\":\"La dirección del proveedor del pool no esta registrada\",\"T/AIqG\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"T0xCO9\":\"No se puede validar la dirección de la cartera. Vuelve a intentarlo.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Tomar prestado\",\"TFxQlw\":\"Penalización de liquidación\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"El activo solo puede usarse como garantía en el Isolation mode únicamente.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"El usuario no tiene deuda pendiente de tasa estable en esta reserva\",\"TeCFg/\":\"Cambio de tasa de préstamo\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Balance de préstamo después del cambio\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recarga la página\",\"U2r8nY\":\"Elige cuánto poder de voto/proposición otorgar a otra persona delegando parte de tu balance de AAVe o stkAAVE. Tus tokens permanecerán en tu cuenta, pero tu delegado podrá votar o proponer en tu lugar. Si tu balance de AAVE, stkAAVE o aAave cambia, el poder de voto/proposición de tu delegado se ajustará automáticamente.\",\"U8IubP\":\"La aplicación se está ejecutando en testnet mode. Aprende como funciona en\",\"U9btTk\":\"El activo no se puede pedir prestado en isolation mode\",\"UAOZRe\":\"El impacto del precio es la diferencia entre el valor total de los tokens de entrada cambiados y los tokens de destino obtenidos (en USD), que resulta de la liquidez limitada del par de cambio.\",\"UE3KJZ\":\"El historial de transacciones no está disponible actualmente para este mercado\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Detalles\",\"UTTKmT\":\"Cooldown de stakeo activado\",\"UXeR72\":\"Estos fondos se han tomado prestados y no están disponibles para su retirada en este momento.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"El ratio LTV máximo representa el poder de endeudamiento máximo de una garantía específica. Por ejemplo, si una garantía tiene un LTV del 75 %, el usuario puede pedir prestado hasta 0,75 ETH en la moneda principal por cada 1 ETH de garantía.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No hay recompensas para reclamar\",\"V0f2Xv\":\"Factor de reserva\",\"V1HK43\":\"Riesgos de migración\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Deuda cubierta\",\"VHOVEJ\":\"Conectar cartera\",\"VMfYUK\":\"Seguridad de tu garantía depositada contra los activos prestados y su valor subyacente.\",\"VOAZJh\":\"Total de préstamos\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Revisar detalles de la tx\",\"W5hVah\":\"Nada suministrado aún\",\"W5kTFy\":\"Votando\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"No respaldado\",\"WNGZwH\":\"El E-Mode incrementa tu LTV para una categoría seleccionada de activos hasta el <0/>. <1>Aprende más\",\"WPWG/y\":\"Configuración y estado de la reserva\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"El usuario no puede retirar más que el balance disponible\",\"WaZyaV\":\"<0>Ampleforth es un activo con rebase. Visita la <1>documentación para aprender más.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Debido a que este activo está en pausa, no se pueden realizar acciones hasta nuevo aviso\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Para tomar prestado, necesitas suministrar cualquier activo para ser utilizado como garantía.\",\"X/ITG9\":\"Copiar el texto del error\",\"X3Pp6x\":\"Utilizado como garantía\",\"X4Zt7j\":\"No se puede realizar la acción porque la reserva está pausada\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Direcciones de cartera de contrato inteligente representativas (Safe) en otras cadenas.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Por favor ten siempre en cuenta tu <0>factor de salud (HF) cuando migres parcialmente una posición y que tus tasas serán actualizadas a tasas de la V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTAR NO\",\"YDIOks\":\"Habilitar E-Mode\",\"YSodyW\":\"Esta acción reducirá tu factor de salud. Por favor ten en cuenta el riesgo incrementado de liquidación de la garantía.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode está ON\",\"YrDxdO\":\"Si tu relación préstamo-valor supera el umbral de liquidación, tu garantía puede ser liquidada.\",\"YyIM65\":\"No se cumplieron las condiciones de ajuste de tasas de interés\",\"YyydIq\":[\"Añade \",[\"0\"],\" a tu cartera para hacer un seguimiento del balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gobierno de Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Modo de eficiencia (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Deshabilitar testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Antes de suministrar\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valor de liquidación\",\"ZrEc8j\":\"No pudimos encontrar ningún activo relacionado con tu búsqueda. Vuelve a intentarlo con un nombre diferente de activo, símbolo o dirección.\",\"ZsLF7e\":\"habilitado\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Tempo restante para unstakear\",\"a7u1N9\":\"Precio\",\"a9D+6D\":\"Unstakeado\",\"aEtiwq\":\"Votar NO\",\"aMmFE1\":\"Comprar Crypto con Fiat\",\"aOKIms\":\"Los parámetros del array que deberían ser iguales en longitud no lo son\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Tu balance es más bajo que la cantidad seleccionada.\",\"adUsDd\":\"Se ha producido un error al recuperar la propuesta.\",\"aoXTT7\":\"APY préstamo, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Advertencia periodo de cooldown\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Activo\",\"bXQ/Og\":\"Compartir en twitter\",\"bXr0ee\":\"Los activos aislados han limitado tu capacidad de préstamo y otros activos no pueden ser usados como garantía.\",\"bYmAV1\":\"Direcciones\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"La cantidad solicitada es mayor que el tamaño máximo del préstamo en el modo de tasa estable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Suministrar\",\"bxN6EM\":\"No se puede deshabilitar E-Mode\",\"c91vuQ\":\"La dirección no es un contrato\",\"c97os2\":\"aToken de Aave\",\"c9b44w\":\"No puedes retirar esta cantidad porque causará una liquidación\",\"cBc+4A\":\"Esta es la cantidad total disponible que puedes tomar prestada. Puedes tomar prestado basado en tu garantía y hasta que el límite de préstamo se alcance.\",\"cIl5kp\":\"Tu poder de voto se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"cLo09S\":\"Detalles de riesgo\",\"cNT+ij\":\"Tomar prestado no está disponible porque has habilitado el Efficiency Mode (E-Mode) y el Isolation mode. Para administrar el E-Mode y el Isolation Mode, visita tu <0>Panel de control.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Para enviar una propuesta de cambios menores al protocolo, necesitarás al menos 80K de poder. Si deseas cambiar la base central del código, necesitarás un poder de 320K.<0>Aprende más\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Votar SI\",\"ckf7gX\":[\"Pagando \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Hilo de discusión del foro\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"No has participado en esta propuesta\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gobierno\",\"dEgA5A\":\"Cancelar\",\"dIsyWh\":\"La validación del LTV ha fallado\",\"dOB5nW\":[\"La cantidad máxima disponible para suministrar es <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"No tienes suficientes fondos en tu cartera para pagar la cantidad total. Si procedes a pagar con tu cantidad actual de fondos, aún tendrás un pequeño préstamo en tu panel de control.\",\"dXUQFX\":\"Activos a tomar prestado\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dgr1aY\":\"Tomar prestado está deshabilitado debido a una decisión de la comunidad de Aave. <0>Más información\",\"djsg0o\":\"Uso de la garantía\",\"dpc0qG\":\"Variable\",\"drdV8R\":\"Liquidación\",\"dxW8cS\":\"Token de deuda de Aave\",\"e4V3oW\":\"Top 10 direcciones\",\"eD8WX/\":\"La acción requiere una reserva activa\",\"eJRJ04\":\"Cantidad para unstakear\",\"eLh0cL\":\"El deslizamiento es la diferencia entre las cantidades calculadas y las recibidas debido a las condiciones cambiantes del mercado entre el momento en que se envía la transacción y su verificación.\",\"ePK91l\":\"Editar\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Recompensas de Staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aún no hay transacciones.\",\"ebLGGN\":\"Total tomado prestado\",\"ecqEvn\":\"El balance de garantía es 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible en\",\"enruNF\":\"empieza\",\"eqLYiD\":\"Unstakea ahora\",\"evw5ha\":\"Valor neto\",\"ezcU16\":\"Obtener Token ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Has cambiado a tasa \",[\"0\"]],\"fMJQZK\":\"Prestado\",\"fZ5Vnu\":\"Recibido\",\"firl9Q\":\"Tu actual relación préstamo-valor basado en tu garantía suministrada.\",\"fldjW9\":\"Previsualizar la tx y migrar\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Retirar \",[\"symbol\"]],\"fwjWSI\":\"Suministrado\",\"fwyTMb\":\"Migrar a stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Votó NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. <0>More información\",\"gTHi2T\":\"El usuario está intentando tomar prestado múltiples activos incluido uno aislado\",\"gVW59Y\":\"Por favor conecta tu cartera para obtener activos testnet gratis.\",\"gcFNxP\":\"Aprobación confirmada\",\"goff7V\":\"Dirección cero no válida\",\"gp+f1B\":\"Versión 3\",\"gvTM4B\":\"El APY neto es el efecto combinado de todos los suministros y préstamos sobre total, incluidos los incentivos. Es posible tener un APY neto negativo si el APY de la deuda es mayor que el APY de suministro.\",\"gzcch9\":\"Comisión de puente de protocolo inválida\",\"h33MxW\":\"Direcciones de cartera de contrato inteligente representantes (Safe) en otras cadenas.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activar Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY neto\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Reclamado\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"El % de tu poder de préstamo total utilizado. Esto se basa en la cantidad de tu garantía suministrada y la cantidad total que puedes pedir prestado.\",\"hehnjM\":\"Cantidad\",\"hjDCQr\":\"Hubo un error. Por favor intenta cambiar los parámetros o <0><1>copiar el error\",\"hom7qf\":\"Reclamar\",\"hpHJ4I\":\"Garantía liquidada\",\"huQ6Tz\":[\"Tomando prestado \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"Sobre GHO\",\"iChbOF\":\"Parámetros inconsistentes del préstamo flash\",\"iEPVHF\":\"No hay suficiente poder de voto para participar en esta propuesta\",\"iEW87X\":\"Poder delegado\",\"iEju36\":[\"Has votado \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Seleccionar tolerancia de deslizamiento\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Ingresa una cantidad\",\"iSLIjg\":\"Conectar\",\"iUo5rv\":\"tokens no es lo mismo que stakearlos. Si deseas stakearlos\",\"iZxa38\":\"Úsalo para votar a favor o en contra de propuestas activas.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"En el Isolation mode, no puedes suministrar otros activos como garantía. Un límite de deuda global limita la capacidad de préstamo del activo aislado. Para salir del Isolation mode, deshabilita \",[\"0\"],\" como garantía antes de tomar prestado otro activo. Lee más en nuestras <0>preguntas frecuentes \"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"El uso de garantías está limitado debido al Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Suministrando tu\",\"jFi7dz\":\"Tasa de interés determinada por el gobierno de Aave. Esta tasa puede cambiar con el tiempo dependiendo de la necesidad de que el suministro de GHO se contraiga/expanda. <0>Aprende más\",\"jG3UJ7\":\"Desactivar el E-Mode\",\"jKYzR1\":\"Habilitar E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Periodo restante de cooldown\",\"jeMZNr\":[[\"0\"],\" el servicio on-ramp es proporcionado por proveedores externos y al seleccionarlo, estás aceptando los términos de dichos proveedores. Tu acceso al servicio podría depender de que el proveedor externo esté operativo.\"],\"jfl9OP\":\"Migrado\",\"jmXdoY\":\"En E-Mode algunos activos no se pueden pedir prestados. Sal del E-Mode para obtener acceso a todos los activos\",\"jpctdh\":\"Ver\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"No disponible\",\"k/sb6z\":\"Seleccionar idioma\",\"k3wP3f\":\"<0>Atención: Los cambios de parámetros a través de la gobernanza pueden alterar el factor de salud de tu cuenta y el riesgo de liquidación. Sigue el <1>foro de gobierno de Aave para mantenerte actualizado.\",\"kACpF3\":[\"Reclamar \",[\"0\"]],\"kH6wUX\":\"Impacto del precio\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" activos seleccionados\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Para pagar en nombre de un usuario, se necesita una cantidad explícita para pagar\",\"kRTD40\":[\"Cantidad a pagar para alcanzar el \",[\"0\"],\"% de utilización\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"El límite de suministro se ha sobrepasado\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"El límite de deuda no es cero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"El balance de DAI se convertirá a través de los contratos de DSR y luego se suministrará como sDAI. El cambio no genera costos adicionales ni deslizamientos.\",\"lU2d1/\":[\"Este activo no se puede migrar debido a una liquidez insuficiente o a una limitación del límite de préstamo en el mercado v3 de \",[\"marketName\"],\".\"],\"lVhKKI\":\"Votó YAE\",\"lWLqxB\":\"No pudimos encontrar ninguna transacción relacionada con tu búsqueda. Vuelve a intentarlo con un nombre de activo diferente o restablece los filtros.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Inglés\",\"lfEjIE\":\"Aprende más en nuestra guía <0>Preguntas frecuentes\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Emisiones totales por día\",\"m7r7Hh\":\"Activos de préstamo seleccionados\",\"mDDK4p\":\"Pool de Balancer\",\"mUAFd6\":\"Versión 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos o usa <0>\",[\"0\"],\" para transferir tus activos de \",[\"network\"],\".\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Comprar \",[\"cryptoSymbol\"],\" con Fiat\"],\"mvCXBY\":\"Stakea AAVE\",\"mwdzil\":\"Vale, cerrar\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Este activo no puede usarse como garantía.\",\"n+SX4g\":\"Desarrolladores\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Apy de suministro\",\"nJgsQu\":\"Con un poder de votación de <0/>\",\"nLC6tu\":\"Francés\",\"nNHV0z\":\"Migrar múltiples garantías y activos prestados al mismo tiempo puede ser una operación costosa y podría fallar en ciertas situaciones.<0>Por lo tanto, no se recomienda migrar posiciones con más de 5 activos (depositados + tomados prestados) al mismo tiempo.\",\"nNbnzu\":\"Proposición\",\"nPGNMh\":\"Puede ser ejecutado\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Ambos\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Se produjo un error\",\"nxyWvj\":\"Retirar esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"o17QVP\":\"Tu factor de salud y la relación préstamo-valor determinan la seguridad de tu garantía. Para evitar liquidaciones, puedes suministrar más garantía o pagar las posiciones de préstamo.\",\"o1xc2V\":\"El balance de AToken no es cero\",\"o5ooMr\":\"Deuda\",\"o7J4JM\":\"Filtro\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Cooldown para undstakear\",\"oJ5ZiG\":\"El usuario no tiene deuda pendiente de tasa variable en esta reserva\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Activos de prueba\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"La tasa de interés estable <0>permanecerá igual durante la duración de su préstamo. Está recomendado para los períodos de préstamo a largo plazo y para los usuarios que prefieren la previsibilidad.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible para suministrar\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Sin resultados\",\"owSsI3\":\"Firmas listas\",\"p+R52m\":\"Ir al pool de Balancer\",\"p2S64u\":\"La relación préstamo-valor de las posiciones migradas provocaría la liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"p2Z2Qi\":\"Este activo ha alcanzado su límite de préstamo. No queda nada disponible para ser prestado de este mercado.\",\"p3j+mb\":\"Tu balance de recompensa es 0\",\"p45alK\":\"Configurar la delegación\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"El balance subyacente debe ser mayor que 0\",\"pgWG9H\":\"No hay suficiente balance stakeado\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"por favor comprueba que la cantidad que deseas depositar no está siendo utilizada actualmente para stakear. Si está utilizando para stakear, tu transacción podría fallar.\",\"pjO/iH\":\"Cantidad mínima recibida\",\"pooutM\":\"La votación está activa\",\"pqaM5s\":\"Confirmando transacción\",\"ptaxX3\":[\"Entiendo como el cooldown (\",[\"0\"],\") y el proceso de unstaking (\",[\"1\"],\") funcionan\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"La función debe ser llamada por un pool\",\"q/51mF\":\"Migrar a V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Estrategia de tasa de interés\",\"q6lAbz\":\"Stakeado\",\"qB4kPi\":\"Suministrar APY\",\"qENI8q\":\"Configuración global\",\"qGz5zl\":\"Balance de la garantía tras pagar\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copiar el error\",\"qXCkEM\":\"Por favor, conecta tu cartera para ver tus suministros, préstamos y posiciones abiertas.\",\"qY2jnw\":\"Expiración inválida\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Cantidad inválida para quemar\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"La cantidad debe ser mayor que 0\",\"rQ+R+0\":\"Activos de suministro seleccionados\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Este activo no se puede migrar porque tienes una garantía en Isolation Mode en el mercado v3 de \",[\"marketName\"],\" que limita los activos prestados. Puedes administrar tu garantía en el <0>Panel de control V3 de \",[\"marketName\"],\"\"],\"rcT+yy\":\"Mostrar activos con 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacidad\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Reclamar todas las recompensas\",\"rwyUva\":\"Estos activos están temporalmente congelados o pausados por decisiones de la comunidad de Aave, lo que significa que no se puede suministrar / tomar prestado o intercambiar tasas de estos activos. Se permiten retiros y pagos de deuda. Sigue el <0>foro de gobierno de Aave para más actualizaciones.\",\"rxJW5W\":\"Tu poder de proposición se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstakear \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NO\",\"sQv06Y\":\"para\",\"sTtO6J\":\"Confirmar transacción\",\"sXKb3l\":\"Tasa de cambio\",\"sb0q4+\":\"Unstakea aquí\",\"smJNwH\":\"Disponible para tomar prestado\",\"solypO\":\"El factor de salud no está por debajo del umbral\",\"sr0UJD\":\"Volver atrás\",\"ss5GCK\":\"La dirección del proveedor del grupo de direcciones no es válida\",\"swEgK4\":\"Tu información de voto\",\"t+wtgf\":\"Nada tomado prestado aún\",\"t/YqKh\":\"Eliminar\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Precio del oráculo\",\"tFZLf8\":\"Este cálculo de gas es solo una estimación. Tu cartera establecerá el precio de la transacción. Puedes modificar la configuración de gas directamente desde tu proveedor de cartera.\",\"tHuvQI\":\"Ir al panel de control V3\",\"tOcg3N\":\"Dado que este activo está congelado, las únicas acciones disponibles son retirar y pagar, a las que se puede acceder desde el <0>Panel de control\",\"tOuXfv\":[\"Cantidad a tomar prestado para alcanzar el \",[\"0\"],\"% de utilización\"],\"te9Bfl\":\"Por favor, conecta tu cartera\",\"tt5yma\":\"Tus suministros\",\"u3ZeYl\":\"Error en la transacción\",\"u706uF\":\"Préstamo flash inválido\",\"u8Gfu7\":[\"Sin resultados de búsqueda\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No hay activos seleccionados para migrar.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrando\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Para el pago de un tipo específico de deuda, el usuario necesita tener una deuda de ese tipo\",\"ulNuNq\":\"Exportar datos a\",\"ulup2p\":\"Comprar Crypto con Fiat\",\"usB84Z\":\"La cantidad máxima disponible para tomar prestado está limitada porque casi se ha alcanzado el límite de préstamo del protocolo.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"vEqxH9\":\"Restakeado\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Ocultar\",\"vMba49\":\"Tomar prestado no está habilitado\",\"vMpNwt\":\"Aprobar con\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Idioma\",\"vesuBJ\":\"Te permite decidir si utilizar un activo suministrado como garantía. Un activo utilizado como garantía afectará a tu poder de préstamo y factor de salud.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"El balance de deuda estable no es cero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"APR de recompensas\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Tu \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Canal de Discord\",\"wQZbc/\":\"El llamador de la función no es un AToken\",\"wZFvVU\":\"VOTAR SI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"El Protocolo Aave está programado para usar siempre el precio de 1 GHO = $1. Esto es diferente del uso del precio de mercado a través de oráculos para otros criptoactivos. Esto crea oportunidades de arbitraje estabilizadoras cuando el precio de GHO fluctúa.\",\"wh7Ezv\":\"No tienes balance de AAVE/stkAAVE/aAave para delegar.\",\"wlsIx7\":\"Con la testnet Faucet puedes obtener activos gratuitos para probar el Protocolo Aave. Asegúrate de cambiar tu proveedor de cartera a la red de testnet adecuada, selecciona el activo deseado y haz clic en \\\"Faucet\\\" para obtener tokens transferidos a tu cartera. Los activos de una testnet no son \\\"reales\\\", lo que significada que no tienen valor monetario. <0>Aprende más\",\"wmE285\":\"Obtener Token ABP v2\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"Como resultado de las decisiones del gobierno, este pool de stakeo de ABPT está obsoleto. Tienes la flexibilidad de migrar todos tus tokens a v2 o unstakearlos sin ningún periodo de cooldown.\",\"x5KiLL\":\"Los activos seleccionados se han migrado correctamente. Visita el panel de control del mercado para verlos.\",\"x7F2p6\":\"Diferencial actual\",\"x7K5ib\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue \",[\"0\"],\" de prueba gratis en\"],\"x9iLRD\":\"tokens, por favor ve al\",\"xNy/UG\":\"Pagar con\",\"xPm8wv\":\"Aprende más sobre los riesgos involucrados\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Tu información\",\"xaWZ6f\":\"Cambio tipo de APY\",\"xh6k71\":\"El uso de garantías está limitado debido al isolation mode.\",\"xvIklc\":\"El préstamo flash está deshabilitado para este activo, por lo tanto, esta posición no se puede migrar.\",\"y5rS9U\":\"Migrar\",\"yB1YpA\":\"Modo oscuro\",\"yCrG6m\":\"Tamaño total del mercado\",\"yJUUbn\":\"Resumen de la transacción\",\"yLGmLX\":[\"Restakear \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Dirección no válida\",\"yZwLw6\":\"Haz seguimiento de tu cartera\",\"yh2sjd\":[\"Impacto en el precio \",[\"0\"],\"%\"],\"ylmtBZ\":\"La aplicación se ejecuta en fork mode.\",\"ymNY32\":[\"No hay fondos suficientes en la reserva\",[\"0\"],\"para tomar prestado\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Cerrar\",\"z4uGQg\":\"El límite de deuda está sobrepasado\",\"z5UQOM\":\"La garantía elegida no puede ser liquidada\",\"z5Y+p6\":[\"Suministrando \",[\"symbol\"]],\"zCjNKs\":\"No se puede realizar la acción porque la reserva está congelada\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Límite de deuda aislado\",\"zTOjMP\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Deuda restante\",\"zmTPiV\":\"Balance de suministro\",\"zpPbZl\":\"Parámetros de riesgo de liquidación\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menú\",\"zwWKhA\":\"Aprende más\",\"zy9fXn\":[\"Este activo está congelado en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"zys+R6\":\"Ten en cuenta la congestión de la red y los precios del gas.\",\"zzzTXS\":\"Merit Program rewards are claimed through the\",\"+EGVI0\":\"Recibir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Parece que no podemos cambiar la red automáticamente. Por favor, comprueba si puedes cambiarla desde la cartera.\",\"+kLZGu\":\"Cantidad de activos suministrados\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Cantidad mínima de Aave stakeado\",\"00OflG\":\"No hay suficiente liquidez para que el activo seleccionado realice el cambio. Prueba reduciendo la cantidad.\",\"08/rZ9\":\"El periodo de cooldown es el tiempo requerido antes de unstakear tus tokens (20 días). Solo puedes retirar tus activos del Módulo de Seguridad después del periodo de cooldown y dentro de la ventana de unstakeo.<0>Aprende más\",\"1Onqx8\":[\"Aprobando \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Dirección bloqueada\",\"2bAhR7\":\"Conoce GHO\",\"2o/xRt\":\"Se ha alcanzado el límite de suministro en la reserva especificada. Prueba reduciendo la cantidad.\",\"3O8YTV\":\"Interés total acumulado\",\"4iPAI3\":\"Cantidad de préstamo mínima de GHO\",\"6NGLTR\":\"Cantidad descontable\",\"6yAAbq\":\"APY, tasa de préstamo\",\"73Auuq\":\"Los parámetros de descuento son decididos por la comunidad de Aave y pueden cambiar con el tiempo. Consulta el Gobierno para ver actualizaciones y vota para participar. <0>-Aprende más\",\"ARu1L4\":\"Pagado\",\"B9Gqbz\":\"Tasa variable\",\"BJyN77\":\"Debido al impacto del factor de salud, se requiere un préstamo flash para realizar esta transacción, pero el Gobierno de Aave ha inhabilitado la disponibilidad de préstamos flash para este activo. Intenta reducir la cantidad o suministrar garantía adicional.\",\"BjLdl1\":\"Con un descuento\",\"CMHmbm\":\"Deslizamiento\",\"EBL9Gz\":\"¡COPIADO!\",\"ES8dkb\":\"Interés fijo\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Descuento\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Guardar y compartir\",\"JK9zf1\":[\"Interés compuesto estimado, incluyendo el descuento por Staking \",[\"0\"],\"AAVE en el Módulo de Seguridad.\"],\"JPrLjO\":\"No puedes usar este activo como garantía\",\"JU6q+W\":\"Recompensa(s) por reclamar\",\"K05qZY\":\"Retirar y Cambiar\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Habilitar este activo como garantía aumenta tu poder préstamo y el factor de salud. Sin embargo, puede ser liquidado si tu factor de salud cae por debajo de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stakear GHO\",\"RIfckG\":[\"Desactivar \",[\"symbol\"],\" como garantía\"],\"RbXH+k\":\"Los poseedores de AAVE, GHO y ABPT (solo en la red de Ethereum) pueden stakear sus activos en el Módulo de Seguridad para añadir más seguridad al protocolo y obtener incentivos de seguridad. En el caso de un evento de shortfall, tu stakeo puede ser reducido para cubrir el déficit. proporcionando una capa adicional de protección para el protocolo.\",\"RoafuO\":\"Enviar feedback\",\"TskbEN\":\"Los poseedores de stkAAVE reciben un descuento en la tasa de préstamo de GHO\",\"TtZL6q\":\"Parámetros del modelo de descuento\",\"Tz0GSZ\":\"actividades bloqueadas\",\"W8ekPc\":\"Volver al panel de control\",\"XZzneG\":\"Saldrás del modo aislamiento y otros tokens pueden ser usados ahora como garantía\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Deshabilitar este activo como garantía afecta tu poder de préstamo y Factor de Salud.\",\"al6Pyz\":\"Supera el descuento\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"No hay suficiente garantía para pagar esta cantidad de deuda con\",\"cqnmnD\":\"Tasa de interés efectiva\",\"dMtLDE\":\"para\",\"euScGB\":\"APY con descuento aplicado\",\"fHcELk\":\"APR Neto\",\"flRCF/\":\"Descuento por staking\",\"gncRUO\":\"Esta dirección está bloqueada en app.aave.com porque está asociada con una o más\",\"gr8mYw\":\"Puedes tomar prestado hasta <0/> GHO al <1/> (descuento máximo)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Balance tomado prestado\",\"i2JTiw\":\"Puedes ingresar una cantidad específica en el campo.\",\"jMam5g\":[\"Balance \",[\"0\"]],\"kwwn6i\":\"Los usuarios que stakean AAVE en el Modulo de Seguridad (es decir, poseedores de stkAAVE) reciben un descuento en la tasa de interés de préstamo de GHO. Este descuento se aplica a 100 GHO por cada 1 stkAAVE en posesión. Usa el calculador de abajo para ver la tasa de préstamo de GHO con el descuento aplicado.\",\"lNVG7i\":\"Selecciona un activo\",\"lt6bpt\":\"Garantía a pagar con\",\"mIM0qu\":\"Cantidad esperada a pagar\",\"mzI/c+\":\"Descargar\",\"n8Psk4\":\"No podemos detectar una cartera. Conecta una cartera para stakear y ver tu balance.\",\"nOy4ob\":\"Te sugerimos volver al Panel de control.\",\"nakd8r\":\"poseedores de stkAAVE obtienen un descuento en la tasa de préstamo de GHO\",\"nh2EJK\":[\"Por favor, cambia a \",[\"networkName\"],\".\"],\"ntkAoE\":\"Descuento aplicado para <0/> AAVE stakeados\",\"o4tCu3\":\"APY préstamo\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"El periodo de cooldown es \",[\"0\"],\". Después \",[\"1\"],\" del cooldown, entrarás a la ventana de unstakeo de \",[\"2\"],\". Continuarás recibiendo premios durante el cooldown y la ventana de unstakeo.\"],\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interés acumulado\",\"rf8POi\":\"Cantidad de activos tomados prestados\",\"ruc7X+\":\"Añade stkAAVE para ver el APY de préstamo con el descuento\",\"sK+Nag\":\"Revisión tx\",\"t81DpC\":[\"Aprueba \",[\"symbol\"],\" para continuar\"],\"umICAY\":\"<0><1><2/>Añade stkAAVE para ver la tasa de préstamo con descuento\",\"uwAUvj\":\"COPIAR IMAGEN\",\"v8x7Mg\":\"Garantía insuficiente para cubrir la nueva posición de préstamo. La cartera debe tener poder de préstamo suficiente para realizar el cambio de deuda.\",\"wRRqvW\":\"No tienes suministros en este activo\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Habilitar \",[\"symbol\"],\" como garantía\"],\"yW1oWB\":\"Tipo APY\",\"yhvj6d\":\"No puedes cambiar el uso como modo de garantía para este activo, porque causará una liquidación\",\"zevmS2\":\"<0><1><2/>añade <3/> stkAAVE para tomar prestado al <4/> (descuento máximo)\"}")}; \ No newline at end of file diff --git a/src/locales/fr/messages.js b/src/locales/fr/messages.js index 4fef5f9971..87c4d64811 100644 --- a/src/locales/fr/messages.js +++ b/src/locales/fr/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si vous NE vous désengagez PAS dans les \",[\"0\"],\" de la fenêtre de désengagement, vous devrez réactiver le processus de refroidissement.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participer à cette réserve \",[\"symbol\"],\" donne des récompenses annualisées.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Limite d'emprunt\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Emprunter ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"L'emprunt stable n'est pas activé\",\"/yQcJM\":\"Valeur totale\",\"00AB2i\":\"L'utilisateur n'a pas emprunté la devise spécifiée\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Changement de taux\",\"0BF3yK\":\"Désolé, nous n’avons pas trouvé la page que vous cherchiez.\",\"0HRJcX\":\"Merit Program and Self rewards are claimed through the\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Risque de liquidation\",\"0ojY+Y\":\"Solde actuel v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Modification des garanties\",\"0wGCWc\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"À l’heure actuelle, les données sur les prix ne sont pas disponibles pour cette réserve dans le sous-graphe du protocole\",\"1LjK22\":\"Historique des transactions\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Veuillez connecter un portefeuille pour afficher vos informations personnelles ici.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Seuil de liquidation <0/>\",\"1m9Qqc\":\"Retrait et changement\",\"1t7rez\":\"L’offre d’actifs est limitée à un certain montant afin de réduire l’exposition du protocole à l’actif et d’aider à gérer les risques encourus.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Voir détails\",\"2FYpfJ\":\"Plus\",\"2O3qp5\":\"Liquidités disponibles\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"L’actif ne peut pas être migré en raison d’une restriction de plafond d’approvisionnement dans \",[\"marketName\"],\" v3 marché.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave est un protocole entièrement décentralisé et régi par la communauté par les détenteurs de jetons AAVE. Les détenteurs de jetons AAVE discutent, proposent et votent collectivement sur les mises à niveau du protocole. Les détenteurs de jetons AAVE (réseau Ethereum uniquement) peuvent soit voter eux-mêmes sur de nouvelles propositions, soit choisir l’adresse de leur choix. Pour en savoir plus, consultez la page Gouvernance\",\"2a6G7d\":\"Veuillez saisir une adresse de portefeuille valide.\",\"2eBWE6\":\"Je reconnais les risques encourus.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"L'emprunt stable est activé\",\"34Qfwy\":\"Le plafond d'emprunt est dépassé\",\"39eQRj\":[\"Emprunter \",[\"symbole\"]],\"3BL1xB\":\"Total fourni\",\"3K0oMo\":\"Offre restante\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"Il n'y a pas assez de collatéral pour couvrir un nouvel emprunt\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Fournir \",[\"symbole\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Rembourser\",\"3qsjtp\":\"La moyenne pondérée de l'APY pour tous les actifs fournis, y compris les incitations.\",\"3rL+os\":\"Vous ne pouvez retirer vos actifs du module de sécurité qu'après la fin de la période de refroidissement et que la fenêtre de retrait est active.\",\"42UgDM\":[\"Migrer vers \",[\"0\"],\" Marché v3\"],\"49UFQA\":\"Résultats du vote\",\"4DMZUI\":\"Afficher les transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Petits caractères\",\"4YYh4d\":\"Maximum available to borrow\",\"4lDFps\":\"Signez pour continuer\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenez des ressources de test gratuites à l’adresse suivante :\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Le plafond de la dette limite le montant que les utilisateurs du protocole peuvent emprunter sur cet actif. Le plafond de la dette est spécifique aux actifs isolés et est indiqué en USD.\",\"5Ncc6j\":[\"Cet actif a presque atteint son plafond d'offre. Il ne peut y avoir que \",[\"messageValue\"],\" fourni à ce marché.\"],\"5cZ/KX\":\"L'offre de dette variable n'est pas nulle\",\"5che++\":\"Pour demander l'accès à ce marché autorisé, veuillez consulter\xA0: <0>Nom du fournisseur d'accès\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" reçu\"],\"5hDe9v\":\"Allocation action requise\",\"5rsnKT\":\"Récompenses disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Voir tous les votes\",\"6/dCYd\":\"Aperçu\",\"60crCe\":\"Toutes les transactions\",\"62Xcjh\":\"Collatérale\",\"65A04M\":\"Espagnol\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signature\",\"6Jrv+z\":[\"Rembourser \",[\"symbole\"]],\"6Xr0UU\":\"Refroidissement...\",\"6bxci/\":\"Pouvoir de vote\",\"6f8S68\":\"Marchés\",\"6g1gi0\":\"Les propositions\",\"6gvoHP\":\"Copier le message d’erreur\",\"6h3Q5G\":\"Remboursé\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Changer de réseau\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Facteur de santé\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Atteint\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"L’emprunt n’est pas disponible car vous utilisez le mode Isolation. Pour gérer le mode d’isolation, rendez-vous sur votre <0>tableau de bord.\",\"7aKlMS\":\"Partager sur Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Réclamer tout\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Les données n’ont pas pu être récupérées, veuillez recharger le graphique.\",\"7p5kLi\":\"Tableau de bord\",\"7sofdl\":\"Retrait et échange\",\"8+6BI0\":\"Soyez prudent - Vous êtes très proche de la liquidation. Envisagez de déposer plus de collatéral ou de rembourser certaines de vos positions empruntées\",\"87pUEW\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs.\"],\"8F1i42\":\"Page introuvable\",\"8G8M0u\":\"Chargement des données...\",\"8Iu1QS\":\"Retiré\",\"8JL93T\":\"Toutes les propositions\",\"8Q51DU\":\"Ajouter au portefeuille\",\"8X/oyn\":\"Montant invalide à frapper\",\"8Z5FPv\":\"Déconnecter le portefeuille\",\"8Zz7s5\":\"actifs\",\"8aLW8H\":\"Solde à révoquer\",\"8bOT3H\":\"Taux d'utilisation\",\"8sLe4/\":\"Voir le contrat\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Montrer\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Vous entrez en mode Isolation\",\"9CDK3/\":[\"L'emprunt n'est actuellement pas disponible pour \",[\"0\"],\".\"],\"9GIj3z\":\"Taille de réserve\",\"9Knqb4\":\"Solde de mise en jeu\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votes actuels\",\"9Rw96f\":[\"Cet actif a presque atteint son plafond d'emprunt. Il n'y a que \",[\"messageValue\"],\" disponible pour être emprunté sur ce marché.\"],\"9Xj/qR\":[\"Certaines ressources migrées ne seront pas utilisées comme garantie en raison de l’activation du mode d’isolement dans \",[\"marketName\"],\" Marché V3. Visite <0>\",[\"marketName\"],\" Tableau de bord V3 pour gérer le mode d’isolation.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Cet actif a atteint son plafond d'offre. Rien n'est disponible pour être fourni à partir de ce marché.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"L’AMI a été suspendu en raison d’une décision de la communauté. L’offre, les emprunts et les remboursements sont impactés. <0>Plus d’informations\",\"9lXchd\":\"Jeton sous-jacent\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Comme il s'agit d'un réseau de test, vous pouvez obtenir n'importe lequel des actifs si vous avez ETH dans votre portefeuille\",\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choisissez l’un des services de rampe d’accès\",\"A6dCI6\":[\"Le montant maximal disponible pour emprunter est de <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Vos emprunts\",\"AV7cGz\":\"Examiner les détails de la taxe d'approbation\",\"AZOjB8\":\"Récupération de données...\",\"Ai0jas\":\"Rejoignez la discussion de la communauté\",\"Ajl2rq\":\"Le pouvoir d'emprunt et les actifs sont limités en raison du mode d'isolement.\",\"AqgYNC\":\"Plafond d’emprunt du protocole à 100% pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"B6aXGH\":\"Stable\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"Les stETH fournis en garantie continueront d’accumuler des récompenses de staking fournies par les rebasages quotidiens.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"L'utilisation de la garantie est limitée en raison du mode d'isolement. <0>En savoir plus\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Catégorie d'actifs\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Cet actif est gelé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Fiche technique\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"CZXzs4\":\"Grec\",\"CkTRmy\":[\"Revendication \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Veuillez connecter votre portefeuille pour voir l’outil de migration.\",\"CtGlFb\":[[\"networkName\"],\" Robinet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Cette action réduira le facteur de santé de V3 en dessous du seuil de liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"La garantie est (principalement) la même devise que celle qui est empruntée\",\"DCnFg0\":[\"Adresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"Je comprends parfaitement les risques liés à la migration.\",\"DONJcV\":\"L'actif sous-jacent ne peut pas être sauvé\",\"DR+4uL\":\"Bilan de l’alimentation après le changement\",\"DWjrck\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" V3 Market en raison des restrictions du mode E. Vous pouvez désactiver ou gérer les catégories du mode E dans votre <0>tableau de bord V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave par mois\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collatéralisation\",\"DxfsGs\":\"Vous pouvez signaler un incident sur notre <0>Discord ou<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Désactivé\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Reprise \",[\"symbol\"]],\"Ebgc76\":[\"Retrait \",[\"symbole\"]],\"EdQY6l\":\"Aucun/Aucune\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Réactiver la période de recharge pour annuler le pieu \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrer vers la v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Pour en savoir plus.\",\"FHlMf/\":\"Solde actuel de la v2\",\"FHpxjF\":[\"Le facteur de réserve est un pourcentage de l’intérêt qui va à un \",[\"0\"],\" qui est contrôlé par la gouvernance Aave pour promouvoir la croissance de l’écosystème.\"],\"FOBZa6\":\"Puissance d'emprunt utilisée\",\"FPKEug\":\"Opération non prise en charge\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"sur\",\"Fjw9N+\":\"Actifs à déposer\",\"FmN0fk\":\"Remise en jeu\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO est un actif numérique natif décentralisé et adossé à des garanties, indexé sur le dollar américain. Il est créé par les utilisateurs en empruntant contre plusieurs garanties. Lorsque l’utilisateur rembourse sa position d’emprunt de HO, le protocole brûle le GHO de cet utilisateur. Tous les paiements d’intérêts accumulés par les minters de GHO seraient directement transférés à la trésorerie d’AaveDAO.\",\"GQrBTq\":\"Changer de mode E\",\"GWswcZ\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. Le 20 décembre 2022, renFIL ne sera plus pris en charge et ne pourra plus être reconnecté à son réseau natif. Il est recommandé de retirer les positions d’offre et de rembourser les positions d’emprunt afin que renFIL puisse être relié à FIL avant la date limite. Après cette date, il ne sera plus possible de convertir renFIL en FIL. <0>Plus d’informations\",\"GX8GKD\":\"Actifs\",\"GgEj+0\":\"Mode lecture seule. Connectez-vous à un portefeuille pour effectuer des transactions.\",\"GjkIKV\":\"Prend fin\",\"GtP2hp\":[\"L'emprunt n'est pas disponible, car vous avez activé le mode d'efficacité (E-Mode) pour la catégorie \",[\"0\"],\". Pour gérer les catégories E-Mode, visitez votre <0>tableau de bord.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Désolé, une erreur inattendue s’est produite. En attendant, vous pouvez essayer de recharger la page, ou revenir plus tard.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Fenêtre d'arrêt de staking\",\"HpK/8d\":\"Recharger\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" v3 Marché puisque l’actif collatéral activera le mode d’isolation.\"],\"Hvwnm9\":[\"La quantité maximale disponible pour l’approvisionnement est limitée parce que le plafond d’approvisionnement du protocole est à \",[\"0\"],\"%.\"],\"I8CX2c\":\"Le montant total de vos actifs libellés en USD qui peut être utilisé comme garantie pour emprunter des actifs.\",\"IAD2SB\":[\"Prétendant \",[\"symbol\"]],\"IG9X9/\":\"L’emprunt de cet actif est limité à un certain montant afin de minimiser l’insolvabilité du pool de liquidités.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Il est prévu que cet actif soit désactivé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"IP+I/j\":\"Période de recharge\",\"IaA40H\":\"Liquidation à\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Gérer l’analytique\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Déjalonnement \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Pas assez de solde sur votre portefeuille\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Solde du portefeuille\",\"JtwD8u\":\"Emprunter le solde après le remboursement\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter davantage sur cet actif.\",\"KLXVqE\":[\"Les tokens stETH seront migrés vers Wrapped stETH à l’aide du wrapper Lido Protocol, ce qui entraîne une modification de l’équilibre de l’offre après la migration : \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KRpokz\":\"VOIR TX\",\"KSlpka\":\"Cela représente le seuil auquel une position d'emprunt sera considérée comme sous-garantie et sujette à liquidation pour chaque garantie. Par exemple, si une garantie a un seuil de liquidation de 80\xA0%, cela signifie que la position sera liquidée lorsque la valeur de la dette vaut 80 % de la valeur de la garantie.\",\"KYAjf3\":\"Isolé\",\"KkPgim\":\"Changement de mode E\",\"KnN1Tu\":\"Expire\",\"KoOBI2\":\"En raison de la mécanique interne de stETH requise pour le rebasage de la prise en charge, il n’est pas possible d’effectuer un changement de garantie où stETH est le jeton source.\",\"KojyJ4\":\"Mauvais réseau\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Entrez l'adresse ETH\",\"KvG1xW\":\"Réclamer\",\"L+8Lzs\":\"LTV actuelle\",\"L+qiq+\":\"Marché\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Pas de pouvoir de vote\",\"LL0zks\":\"Peut être collatéral\",\"LLdJWu\":\"AAVE Réclamable\",\"LSIpNK\":\"Emprunter et rembourser dans le même bloc n'est pas autorisé\",\"LVt3TI\":[\"<0>Tolérance de glissement <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Astuce : Essayez d’augmenter le glissement ou de réduire la quantité d’entrée\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Adresse du destinataire\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vue de staking\",\"McHlGl\":\"Changement d’APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si le facteur de santé descend en dessous de 1, la liquidation de votre collatéral peut être déclenchée.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Vous avez annulé la transaction.\",\"MnE2QX\":\"Emprunter des informations\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valeur de retour invalide de la fonction flashloan executor\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"L’actif ne peut être utilisé comme garantie qu’en mode isolé avec un pouvoir d’emprunt limité. Pour passer en mode d’isolation, désactivez toutes les autres garanties.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"En attente...\",\"NK9ikO\":\"Solde du portefeuille\",\"NMt2CB\":\"Montant réclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Contrat de collectionneur\",\"NfpPeS\":\"Rien staké\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Le plafond de mintage non soutenu est dépassé\",\"O+tyU+\":[\"Le montant maximal disponible pour emprunter sur cet actif est limité car le plafond de la dette est à \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Aperçu de la proposition\",\"OYuJ9K\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter sur cet actif.\",\"OfhWJH\":\"Réinitialisation\",\"Og2SKn\":\"handicapé\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Site internet\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirer\",\"P1dURE\":\"Révoquer le pouvoir\",\"P2WCD/\":[\"L’actif sous-jacent n’existe pas dans \",[\"marketName\"],\" v3 Market, par conséquent, cette position ne peut pas être migrée.\"],\"P2sL6B\":\"Lorsqu'une liquidation survient, les liquidateurs remboursent jusqu'à 50 % de l'encours emprunté au nom de l'emprunteur. En contrepartie, ils peuvent acheter le collatéral à prix réduit et conserver la différence (pénalité de liquidation) en bonus.\",\"P6sRoL\":\"Mise en jeu ABPT\",\"P72/OW\":\"La moyenne pondérée de l'APY pour tous les actifs empruntés, y compris les incitatifs.\",\"P7e6Ug\":\"Veuillez connecter votre portefeuille pour consulter l’historique des transactions.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Emprunter apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Seuil de liquidation\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Cette action réduira le facteur de santé V2 en dessous du seuil de liquidation. Conservez la garantie ou migrez la position d’emprunt pour continuer.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Non atteint\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Différentiel\",\"RNK49r\":\"Signature non valide\",\"RS0o7b\":\"État\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Détails de la proposition\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"L'actif n'est pas répertorié\",\"Rj01Fz\":\"Liens\",\"RmWFEe\":\"APR staké\",\"RtBLm7\":\"Le facteur santé est inférieur au seuil de liquidation\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Activé\",\"SDav7h\":\"Fonds dans le Safety Module\",\"SENccp\":\"Si l’erreur persiste,<0/> vous pouvez la signaler à ce\",\"SIWumd\":\"Afficher les ressources gelées ou mises en pause\",\"SM58dD\":\"Quantité en temps de recharge\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Impossible de charger les votants de proposition. Veuillez rafraîchir la page.\",\"SSQVIz\":\"Seuil de liquidation\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Le mode lecture seule permet de voir les positions d’adresses dans Aave, mais vous ne pourrez pas effectuer de transactions.\",\"SZRUQ4\":\"Glissement maximal\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Le plafond d’emprunt du protocole est de 100 % pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"Sk2zW9\":\"Désactiver le E-mode\",\"SxaD0o\":\"Le fournisseur d'adresses de pool n'est pas enregistré\",\"T/AIqG\":\"Limite d’approvisionnement du protocole à 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Emprunter\",\"TFxQlw\":\"Pénalité de liquidation\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"L'actif ne peut être utilisé comme garantie qu'en mode isolé.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"L'utilisateur n'a pas de dette à taux stable impayée sur cette réserve\",\"TeCFg/\":\"Modification du taux d’emprunt\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Emprunter le solde après le changement\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recharger la page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"L’application s’exécute en mode réseau de test. Découvrez comment cela fonctionne dans\",\"U9btTk\":\"L'actif n'est pas empruntable en mode d'isolement\",\"UAOZRe\":\"L’impact sur les prix est l’écart entre la valeur totale des tokens d’entrée échangés et les tokens de destination obtenus (en USD), qui résulte de la liquidité limitée de la paire de trading.\",\"UE3KJZ\":\"L’historique des transactions n’est actuellement pas disponible pour ce marché\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Détails\",\"UTTKmT\":\"Temps de recharge de la mise activé\",\"UXeR72\":\"Ces fonds ont été empruntés et ne peuvent pas être retirés pour le moment.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Le ratio LTV maximum représente le pouvoir d'emprunt maximum d'une garantie spécifique. Par exemple, si une garantie a un LTV de 75 %, l'utilisateur peut emprunter jusqu'à 0,75 ETH dans la devise principale pour chaque 1 ETH de garantie.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Aucune récompense à réclamer\",\"V0f2Xv\":\"Facteur de réserve\",\"V1HK43\":\"Risques liés à la migration\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Dette couverte\",\"VHOVEJ\":\"Connecter le portefeuille\",\"VMfYUK\":\"Sécurité de votre garantie déposée contre les actifs empruntés et sa valeur sous-jacente.\",\"VOAZJh\":\"Total des emprunts\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Examiner les détails de la transaction\",\"W5hVah\":\"Rien fourni pour le moment\",\"W5kTFy\":\"Vote\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Sans support\",\"WNGZwH\":\"E-Mode augmente votre LTV pour une catégorie d'actifs sélectionnée jusqu'à <0/>. <1>En savoir plus\",\"WPWG/y\":\"Statut et configuration de la réserve\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"L'utilisateur ne peut pas retirer plus que le solde disponible\",\"WaZyaV\":\"<0>Ampleforth est un actif de rebasage. Consultez la <1>documentation pour en savoir plus.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Étant donné que cette ressource est suspendue, aucune action ne peut être entreprise jusqu’à nouvel ordre\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Pour emprunter, vous devez fournir tout actif à utiliser comme garantie.\",\"X/ITG9\":\"Copier le texte d'erreur\",\"X3Pp6x\":\"Utilisé comme collatéral\",\"X4Zt7j\":\"L'action ne peut pas être effectuée car la réserve est mise en pause\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Veuillez toujours tenir compte de votre <0>facteur de santé (HF) lors de la migration partielle d’une position et que vos tarifs seront mis à jour vers les taux V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTER NON\",\"YDIOks\":\"Activation du E-Mode\",\"YSodyW\":\"Cette action réduira votre facteur de santé. Veuillez garder à l’esprit le risque accru de liquidation des garanties.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Le mode réseau de test est activé\",\"YrDxdO\":\"Si votre prêt à la valeur dépasse le seuil de liquidation, votre garantie fournie peut être liquidée.\",\"YyIM65\":\"Les conditions de rééquilibrage des taux d'intérêt n'ont pas été remplies\",\"YyydIq\":[\"Ajouter \",[\"0\"],\" à Wallet pour suivre votre solde.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gouvernance Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Mode efficacité (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Désactiver le réseau de test\",\"Zbyywy\":\"Coupure maximale\",\"ZfUGFb\":\"Avant de déposer\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valeur de liquidation\",\"ZrEc8j\":\"Nous n’avons trouvé aucun élément lié à votre recherche. Réessayez avec un autre nom, symbole ou adresse de ressource.\",\"ZsLF7e\":\"Activé\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Temps restant pour dépiquer\",\"a7u1N9\":\"Prix\",\"a9D+6D\":\"Non jalonné\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"aOKIms\":\"Les paramètres de tableau devraient être de même longueur ne sont pas\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Votre solde est inférieur au montant sélectionné.\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Prêt APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Avertissement de période de refroidissement\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Actif\",\"bXQ/Og\":\"Partager sur Twitter\",\"bXr0ee\":\"Les actifs isolés ont un pouvoir d'emprunt limité et les autres actifs ne peuvent pas être utilisés comme garantie.\",\"bYmAV1\":\"Adresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Le montant demandé est supérieur au montant maximum du prêt en mode taux stable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Fournir\",\"bxN6EM\":\"Impossible de désactiver le mode E\",\"c91vuQ\":\"L'adresse n'est pas un contrat\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Vous ne pouvez pas retirer ce montant car cela entraînera un appel de garantie\",\"cBc+4A\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"cIl5kp\":\"Votre pouvoir de vote est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"cLo09S\":\"Détails des risques\",\"cNT+ij\":\"L'emprunt n'est pas disponible car vous avez activé le mode Efficacité (E-Mode) et le mode Isolation. Pour gérer le mode E et le mode Isolation, rendez-vous sur votre <0>tableau de bord.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Pour soumettre une proposition de modifications mineures du protocole, vous aurez besoin d’une puissance d’au moins 80,00 K. Si vous souhaitez modifier la base de code de base, vous aurez besoin d’une puissance de 320k. <0>Pour en savoir plus.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Remboursement \",[\"symbole\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Discussion de forum\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"Vous n'avez pas participé à cette proposition\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gouvernance\",\"dEgA5A\":\"Annuler\",\"dIsyWh\":\"Échec de la validation LTV\",\"dOB5nW\":[\"La quantité maximale disponible pour la fourniture est de <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Vous n'avez pas assez de fonds dans votre portefeuille pour rembourser le montant total. Si vous continuez à rembourser avec votre montant actuel de fonds, vous aurez toujours une petite position d'emprunt dans votre tableau de bord.\",\"dXUQFX\":\"Actifs à emprunter\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dgr1aY\":\"L’emprunt est désactivé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"djsg0o\":\"Usage de collatéral\",\"dpc0qG\":\"Variable\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Jeton de dette Aave\",\"e4V3oW\":\"Top 10 des adresses\",\"eD8WX/\":\"L'action nécessite une réserve active\",\"eJRJ04\":\"Montant à la mise en jeu\",\"eLh0cL\":\"Le slippage est la différence entre les montants cotés et reçus en raison de l’évolution des conditions du marché entre le moment où la transaction est soumise et sa vérification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Récompenses de staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aucune transaction n’a encore été effectuée.\",\"ebLGGN\":\"Total emprunté\",\"ecqEvn\":\"Le solde de la garantie est de 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible sur\",\"enruNF\":\"Commence\",\"eqLYiD\":\"Arrêter de staker maintenant\",\"evw5ha\":\"Valeur nette\",\"ezcU16\":\"Obtenir le jeton ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Vous êtes passé au tarif \",[\"0\"]],\"fMJQZK\":\"Emprunté\",\"fZ5Vnu\":\"Reçu\",\"firl9Q\":\"Votre prêt actuel à la valeur en fonction de votre collatéral fournie.\",\"fldjW9\":\"Prévisualiser tx et migrer\",\"fsBGk0\":\"Solde\",\"fu1Dbh\":[\"Retirer \",[\"symbole\"]],\"fwjWSI\":\"Fourni\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Alimenté par\",\"g8KGoA\":\"Foire aux questions\",\"g9zzqS\":\"A voté NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Mode réseau test\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"gTHi2T\":\"L'utilisateur essaie d'emprunter plusieurs actifs, y compris un en silo\",\"gVW59Y\":\"Veuillez connecter votre portefeuille pour obtenir des ressources de réseau de test gratuites.\",\"gcFNxP\":\"Approuver Confirmé\",\"goff7V\":\"Adresse zéro non-valide\",\"gp+f1B\":\"Variante 3\",\"gvTM4B\":\"L'APY net est l'effet combiné de toutes les positions d'offre et d'emprunt sur la valeur nette, y compris les incitations. Il est possible d'avoir un APY net négatif si l'APY de la dette est supérieur à l'APY de l'offre.\",\"gzcch9\":\"Frais de protocole de pont invalide\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\". .CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activer le temps de recharge\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY Net\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Revendiqué\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Le % de votre pouvoir d'emprunt total utilisé. Ceci est basé sur le montant de votre garantie fournie et le montant total que vous pouvez emprunter.\",\"hehnjM\":\"Montant\",\"hjDCQr\":\"Il y a eu une erreur. Veuillez essayer de modifier les paramètres ou <0><1>copier l'erreur\",\"hom7qf\":\"Réclamer\",\"hpHJ4I\":\"Garantie liquidée\",\"huQ6Tz\":[\"Emprunter \",[\"symbole\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"À propos de GHO\",\"iChbOF\":\"Paramètres de prêt flash incohérents\",\"iEPVHF\":\"Pas assez de pouvoir de vote pour participer à cette proposition\",\"iEW87X\":\"Délégation de pouvoirs\",\"iEju36\":[\"Vous avez voté \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Sélectionner la tolérance de glissement\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Entrez un montant\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens n'est pas la même chose que de les staker . Si vous souhaitez staker votre\",\"iZxa38\":\"Utilisez-le pour voter pour ou contre les propositions actives.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Informations sur le collectionneur\",\"igkfR1\":[\"En mode Isolation, vous ne pouvez pas fournir d’autres actifs en garantie. Un plafond d’endettement global limite le pouvoir d’emprunt de l’actif isolé. Pour quitter le mode d’isolement, désactivez \",[\"0\"],\" en garantie avant d’emprunter un autre actif. Pour en savoir plus, consultez notre <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"L'utilisation du collatéral est limitée en raison du mode d'isolation.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Fournir votre\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Désactiver le E-mode\",\"jKYzR1\":\"Activer le E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Temps de recharge restant\",\"jeMZNr\":[[\"0\"],\" Le service de rampe d’accès est fourni par le fournisseur externe et, en le sélectionnant, vous acceptez les conditions du fournisseur. Votre accès au service peut dépendre de l’opérationnalité du fournisseur externe.\"],\"jfl9OP\":\"Migré\",\"jmXdoY\":\"En E-Mode, certains actifs ne sont pas empruntables. Quittez le E-mode pour accéder à tous les actifs\",\"jpctdh\":\"Vue\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Non disponible\",\"k/sb6z\":\"Choisir la langue\",\"k3wP3f\":\"<0>Attention: Les changements de paramètres via la gouvernance peuvent modifier le facteur de santé de votre compte et le risque de liquidation. Suivez le <1>forum de gouvernance d’Aave pour les mises à jour.\",\"kACpF3\":[\"Réclamer \",[\"0\"]],\"kH6wUX\":\"Impact sur les prix\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" Actifs sélectionnés\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Pour rembourser au nom d'un utilisateur, un montant explicite à rembourser est nécessaire\",\"kRTD40\":[\"Montant de remboursement à atteindre \",[\"0\"],\"% d’utilisation\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Le plafond d'approvisionnement est dépassé\",\"knxE+G\":\". JSON (en anglais seulement)\",\"ks2LWT\":\"Le plafond de la dette n'est pas nul\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"L’actif ne peut pas être migré en raison d’une liquidité insuffisante ou d’une limitation du plafond d’emprunt \",[\"marketName\"],\" v3 marché.\"],\"lVhKKI\":\"A voté YAE\",\"lWLqxB\":\"Nous n’avons trouvé aucune transaction liée à votre recherche. Réessayez avec un autre nom de ressource ou réinitialisez les filtres.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Anglais\",\"lfEjIE\":\"En savoir plus dans notre <0>guide FAQ\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Émission totale par jour\",\"m7r7Hh\":\"Sélection d’actifs d’emprunt\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Variante 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs ou utiliser <0>\",[\"0\"],\" pour transférer votre \",[\"network\"],\" actif.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Acheter \",[\"cryptoSymbol\"],\" avec Fiat\"],\"mvCXBY\":\"Mise en jeu AAVE\",\"mwdzil\":\"D'accord, fermer\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"L'actif ne peut pas être utilisé comme collatéral.\",\"n+SX4g\":\"Développeurs\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Fournir apy\",\"nJgsQu\":\"Avec un pouvoir de vote de <0/>\",\"nLC6tu\":\"Français\",\"nNHV0z\":\"La migration simultanée de plusieurs garanties et d’actifs empruntés peut s’avérer coûteuse et peut échouer dans certaines situations. <0>Par conséquent, il n’est pas recommandé de migrer des positions avec plus de 5 actifs (déposés + empruntés) en même temps.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Peut être exécuté\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Les deux\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Quelque chose s’est mal passé\",\"nxyWvj\":\"Le retrait de ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"o17QVP\":\"Votre facteur de santé et votre prêt à la valeur déterminent l'assurance de votre collatéral. Pour éviter les liquidations, vous pouvez fournir plus de garanties ou rembourser les positions d'emprunt.\",\"o1xc2V\":\"L'approvisionnement en aTokens n'est pas nul\",\"o5ooMr\":\"Dette\",\"o7J4JM\":\"Filtrer\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Temps de recharge pour déstaker\",\"oJ5ZiG\":\"L'utilisateur n'a pas de dette à taux variable impayée sur cette réserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Ressources de test\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Le taux d'intérêt stable <0>restera le même pendant toute la durée de votre prêt. Recommandé pour les périodes de prêt à long terme et pour les utilisateurs qui préfèrent la prévisibilité.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible au dépôt\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Rien n’a été trouvé\",\"owSsI3\":\"Signatures prêtes\",\"p+R52m\":\"Accéder à Balancer Pool\",\"p2S64u\":\"Le ratio prêt/valeur des positions migrées entraînerait la liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"p2Z2Qi\":\"Cet actif a atteint son plafond d'emprunt. Rien n'est disponible pour être emprunté à ce marché.\",\"p3j+mb\":\"Votre solde de récompenses est de 0\",\"p45alK\":\"Configurer la délégation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Le solde sous-jacent doit être supérieur à 0\",\"pgWG9H\":\"Pas assez de solde staké\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"veuillez vérifier que le montant que vous souhaitez fournir n'est pas actuellement utilisé pour le staking. S'il est utilisé pour le staking, votre transaction peut échouer.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Je comprends comment fonctionnent le temps de recharge (\",[\"0\"],\") et le retrait (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"L'appelant de cette fonction doit être un pool\",\"q/51mF\":\"Migrer vers la V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Stratégie de taux d’intérêt\",\"q6lAbz\":\"Staké\",\"qB4kPi\":\"Fournir APY\",\"qENI8q\":\"Paramètres globaux\",\"qGz5zl\":\"Solde de garantie après remboursement\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copier l'erreur\",\"qXCkEM\":\"Veuillez connecter votre portefeuille pour voir vos fournitures, vos emprunts et vos positions ouvertes.\",\"qY2jnw\":\"Expiration invalide\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Montant non valide à brûler\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Le montant doit être supérieur à 0\",\"rQ+R+0\":\"Sélection d’actifs d’approvisionnement\",\"rSayea\":\"APY\",\"rTBDeu\":[\"L’actif ne peut pas être migré car vous disposez d’une garantie isolée dans \",[\"marketName\"],\" v3 Marché qui limite les actifs empruntables. Vous pouvez gérer vos garanties dans <0>\",[\"marketName\"],\" Tableau de bord V3\"],\"rcT+yy\":\"Afficher les actifs avec 0 solde\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Vie privée\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Réclamez toutes les récompenses\",\"rwyUva\":\"Ces actifs sont temporairement gelés ou suspendus par des décisions de la communauté Aave, ce qui signifie qu’il n’est pas possible d’obtenir / emprunter ou d’échanger des taux de ces actifs. Les retraits et les remboursements de dettes sont autorisés. Suivez le <0>forum de gouvernance d’Aave pour d’autres mises à jour.\",\"rxJW5W\":\"Votre pouvoir de proposition est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NON\",\"sQv06Y\":\"pour\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Vous unstaké ici\",\"smJNwH\":\"Disponible à emprunter\",\"solypO\":\"Le facteur de santé n'est pas inférieur au seuil\",\"sr0UJD\":\"Retourner\",\"ss5GCK\":\"L'adresse du fournisseur d'adresses du pool n'est pas valide\",\"swEgK4\":\"Vos informations de vote\",\"t+wtgf\":\"Aucun emprunt pour l'instant\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Prix Oracle\",\"tFZLf8\":\"Ce calcul de gaz n'est qu'une estimation. Votre portefeuille fixera le prix de la transaction. Vous pouvez modifier les paramètres de gaz directement depuis votre fournisseur de portefeuille.\",\"tHuvQI\":\"Accéder au tableau de bord V3\",\"tOcg3N\":\"Étant donné que cet actif est gelé, les seules actions disponibles sont le retrait et le remboursement, accessibles depuis le <0>tableau de bord\",\"tOuXfv\":[\"Emprunter le montant à atteindre \",[\"0\"],\"% d’utilisation\"],\"te9Bfl\":\"S'il vous plaît, connectez votre portefeuille\",\"tt5yma\":\"Vos ressources\",\"u3ZeYl\":\"La transaction a échoué\",\"u706uF\":\"Prime flash non valide\",\"u8Gfu7\":[\"Aucun résultat de recherche\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"Aucune ressource n’a été sélectionnée pour la migration.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migration\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Exporter des données vers\",\"ulup2p\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"usB84Z\":\"Le montant maximum disponible pour emprunter est limité car le plafond d’emprunt du protocole est presque atteint.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"vEqxH9\":\"Restauré\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Cacher\",\"vMba49\":\"L'emprunt n'est pas activé\",\"vMpNwt\":\"Approuvez avec\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Vous permet de décider si vous souhaitez utiliser un actif fourni en tant que collatéral. Un actif utilisé comme collatéral affectera votre pouvoir d'emprunt et votre Health Factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"L'offre de dette stable n'est pas nulle\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Récompenses APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Vous \",[\"action\"],\" <0/> \",[\"symbole\"]],\"wBIsjb\":\"Canal Discord\",\"wQZbc/\":\"L'appelant de la fonction n'est pas un AToken\",\"wZFvVU\":\"VOTER OUI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"Le protocole Aave est programmé pour toujours utiliser le prix de 1 GHO = 1 $. C’est différent de l’utilisation des prix du marché via des oracles pour d’autres actifs cryptographiques. Cela crée des opportunités d’arbitrage stabilisatrices lorsque le prix du GHO fluctue.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"Avec testnet Faucet, vous pouvez obtenir des ressources gratuites pour tester le protocole Aave. Assurez-vous de changer votre fournisseur de portefeuille pour le réseau de test approprié, sélectionnez l’actif souhaité et cliquez sur «\xA0Faucet\xA0» pour obtenir des jetons transférés vers votre portefeuille. Les actifs d’un réseau de test ne sont pas « réels », ce qui signifie qu’ils n’ont aucune valeur monétaire. <0>Pour en savoir plus\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Les ressources sélectionnées ont été migrées avec succès. Rendez-vous sur le tableau de bord du marché pour les voir.\",\"x7F2p6\":\"Différentiel de courant\",\"x7K5ib\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenir un test gratuit \",[\"0\"],\" à\"],\"x9iLRD\":\"tokens, veuillez vous rendre sur\",\"xNy/UG\":\"Rembourser avec\",\"xPm8wv\":\"En savoir plus sur les risques encourus\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Vos informations\",\"xaWZ6f\":\"Changement de type APY\",\"xh6k71\":\"L’utilisation des garanties est limitée en raison du mode d’isolation.\",\"xvIklc\":\"Flashloan est désactivé pour cet actif, cette position ne peut donc pas être migrée.\",\"y5rS9U\":\"Émigrer\",\"yB1YpA\":\"Mode Sombre\",\"yCrG6m\":\"Taille totale du marché\",\"yJUUbn\":\"Aperçu des transactions\",\"yLGmLX\":[\"Remise en jeu \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Pas une adresse valide\",\"yZwLw6\":\"Suivre le portefeuille\",\"yh2sjd\":[\"Impact sur les prix \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Il n'y a pas assez de fonds dans la \",[\"0\"],\" réserve pour emprunter\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Fermer\",\"z4uGQg\":\"Le plafond de la dette est dépassé\",\"z5UQOM\":\"La garantie choisie ne peut être liquidée\",\"z5Y+p6\":[\"Fournir \",[\"symbole\"]],\"zCjNKs\":\"L'action ne peut pas être effectuée car la réserve est gelée\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Plafond de la dette isolée\",\"zTOjMP\":\"La limite d’approvisionnement du protocole est de 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Dette restante\",\"zmTPiV\":\"Bilan d'approvisionnement\",\"zpPbZl\":\"Paramètres du risque de liquidation\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Apprendre encore plus\",\"zy9fXn\":[\"L’actif est gelé \",[\"marketName\"],\" v3, donc cette position ne peut pas être migrée.\"],\"zys+R6\":\"Faites attention à la congestion du réseau et aux prix de l’essence.\",\"zzzTXS\":\"Merit Program rewards are claimed through the\",\"+EGVI0\":\"Recevoir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"On dirait que nous ne pouvons pas changer de réseau automatiquement. Veuillez vérifier si vous pouvez le changer depuis le portefeuille.\",\"+kLZGu\":\"Montant de l’actif fourni\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Montant minimum d’Aave mis en jeu\",\"00OflG\":\"Il n’y a pas assez de liquidités pour que l’actif cible puisse effectuer le changement. Essayez de réduire le montant.\",\"08/rZ9\":\"La période de recharge est le temps nécessaire avant de retirer vos jetons (20 jours). Vous ne pouvez retirer vos actifs du module de sécurité qu’après la période de recharge et pendant la période de désenjeu. <0>Pour en savoir plus\",\"1Onqx8\":[\"Approuver \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Adresse bloquée\",\"2bAhR7\":\"Rencontrez GHO\",\"2o/xRt\":\"Plafond d'approvisionnement sur la réserve cible atteint. Essayez de réduire le montant.\",\"3O8YTV\":\"Total des intérêts courus\",\"4iPAI3\":\"Montant minimum d’emprunt GHO\",\"6NGLTR\":\"Montant actualisable\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Les paramètres de remise sont décidés par la communauté Aave et peuvent être modifiés au fil du temps. Consultez la section Gouvernance pour les mises à jour et votez pour participer. <0>Pour en savoir plus\",\"ARu1L4\":\"Remboursé\",\"B9Gqbz\":\"Taux variable\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"À prix réduit\",\"CMHmbm\":\"Glissement\",\"EBL9Gz\":\"COPIÉ!\",\"ES8dkb\":\"Taux fixe\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Rabais\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Enregistrer et partager\",\"JK9zf1\":[\"Intérêts composés estimés, y compris l’escompte pour le jalonnement \",[\"0\"],\"AAVE dans le module de sécurité.\"],\"JPrLjO\":\"Vous ne pouvez pas utiliser cette devise comme garantie\",\"JU6q+W\":\"Récompense(s) à réclamer\",\"K05qZY\":\"Retrait et échange\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"L'activation de cet actif comme garantie augmente votre pouvoir d'emprunt et votre facteur de santé. Cependant, il peut être liquidé si votre facteur de santé tombe en dessous de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Désactiver \",[\"symbol\"],\" comme garantie\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Envoyer des commentaires\",\"TskbEN\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"TtZL6q\":\"Paramètres du modèle de remise\",\"Tz0GSZ\":\"Activités bloquées\",\"W8ekPc\":\"Retour au tableau de bord\",\"XZzneG\":\"Vous quitterez le mode d'isolement et d'autres jetons peuvent désormais être utilisés comme collatéral\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"La désactivation de cet actif en tant que garantie affecte votre pouvoir d'emprunt et votre facteur de santé.\",\"al6Pyz\":\"Dépasse la remise\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Pas assez de collatéral pour rembourser ce montant de dette avec\",\"cqnmnD\":\"Taux d’intérêt effectif\",\"dMtLDE\":\"À\",\"euScGB\":\"APY avec remise appliquée\",\"fHcELk\":\"APR Net\",\"flRCF/\":\"Remise sur le staking\",\"gncRUO\":\"Cette adresse est bloquée sur app.aave.com car elle est associée à un ou plusieurs\",\"gr8mYw\":\"Vous pouvez emprunter jusqu’à GHO à <0/> <1/> (rabais maximum)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Emprunter le solde\",\"i2JTiw\":\"Vous pouvez saisir un montant personnalisé dans le champ.\",\"jMam5g\":[[\"0\"],\" Balance\"],\"kwwn6i\":\"Les utilisateurs qui misent des AAVE dans le module de sécurité (c’est-à-dire les détenteurs de stkAAVE) bénéficient d’une réduction sur le taux d’intérêt d’emprunt de HO. La réduction s’applique à 100 GHO pour chaque 1 stkAAVE détenu. Utilisez le calculateur ci-dessous pour voir le taux d’emprunt GHO avec le rabais appliqué.\",\"lNVG7i\":\"Sélectionner une ressource\",\"lt6bpt\":\"Garantie à rembourser\",\"mIM0qu\":\"Montant prévu à rembourser\",\"mzI/c+\":\"Télécharger\",\"n8Psk4\":\"Nous n’avons pas pu détecter de portefeuille. Connectez un portefeuille pour staker et consulter votre solde.\",\"nOy4ob\":\"Nous vous suggérons de revenir au tableau de bord.\",\"nakd8r\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"nh2EJK\":[\"Veuillez passer à \",[\"networkName\"],\".\"],\"ntkAoE\":\"Remise appliquée pour <0/> le staking d’AAVE\",\"o4tCu3\":\"Emprunter de l’APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"La période de recharge est de \",[\"0\"],\". Après \",[\"1\"],\" de temps de recharge, vous entrerez dans la fenêtre de désengagement de \",[\"2\"],\". Vous continuerez à recevoir des récompenses pendant le temps de recharge et la fenêtre de retrait.\"],\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Intérêts courus\",\"rf8POi\":\"Montant de l’actif emprunté\",\"ruc7X+\":\"Ajoutez stkAAVE pour voir l’APY d’emprunt avec la remise\",\"sK+Nag\":\"Réviser tx\",\"t81DpC\":[\"Approuver \",[\"symbol\"],\" pour continuer\"],\"umICAY\":\"<0><1><2/>Ajoutez stkAAVE pour voir le taux d’emprunt avec escompte\",\"uwAUvj\":\"COPIER L’IMAGE\",\"v8x7Mg\":\"Garantie insuffisante pour couvrir une nouvelle position d’emprunt. Le portefeuille doit avoir une capacité d’emprunt restante pour effectuer le transfert de dette.\",\"wRRqvW\":\"Vous n'avez pas de fournitures dans cette devise\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Activer \",[\"symbol\"],\" comme collatéral\"],\"yW1oWB\":\"APY type\",\"yhvj6d\":\"Vous ne pouvez pas changer d'utilisation en tant que mode de garantie pour cette devise, car cela entraînera un appel de garantie\",\"zevmS2\":\"<0><1><2/>Ajoutez <3/> stkAAVE pour emprunter à <4/> (remise maximale)\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si vous NE vous désengagez PAS dans les \",[\"0\"],\" de la fenêtre de désengagement, vous devrez réactiver le processus de refroidissement.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participer à cette réserve \",[\"symbol\"],\" donne des récompenses annualisées.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Limite d'emprunt\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Emprunter ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"L'emprunt stable n'est pas activé\",\"/yQcJM\":\"Valeur totale\",\"00AB2i\":\"L'utilisateur n'a pas emprunté la devise spécifiée\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Changement de taux\",\"0BF3yK\":\"Désolé, nous n’avons pas trouvé la page que vous cherchiez.\",\"0HRJcX\":\"Merit Program and Self rewards are claimed through the\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Risque de liquidation\",\"0ojY+Y\":\"Solde actuel v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Modification des garanties\",\"0wGCWc\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"À l’heure actuelle, les données sur les prix ne sont pas disponibles pour cette réserve dans le sous-graphe du protocole\",\"1LjK22\":\"Historique des transactions\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Veuillez connecter un portefeuille pour afficher vos informations personnelles ici.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Seuil de liquidation <0/>\",\"1m9Qqc\":\"Retrait et changement\",\"1t7rez\":\"L’offre d’actifs est limitée à un certain montant afin de réduire l’exposition du protocole à l’actif et d’aider à gérer les risques encourus.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Voir détails\",\"2FYpfJ\":\"Plus\",\"2O3qp5\":\"Liquidités disponibles\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"L’actif ne peut pas être migré en raison d’une restriction de plafond d’approvisionnement dans \",[\"marketName\"],\" v3 marché.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave est un protocole entièrement décentralisé et régi par la communauté par les détenteurs de jetons AAVE. Les détenteurs de jetons AAVE discutent, proposent et votent collectivement sur les mises à niveau du protocole. Les détenteurs de jetons AAVE (réseau Ethereum uniquement) peuvent soit voter eux-mêmes sur de nouvelles propositions, soit choisir l’adresse de leur choix. Pour en savoir plus, consultez la page Gouvernance\",\"2a6G7d\":\"Veuillez saisir une adresse de portefeuille valide.\",\"2eBWE6\":\"Je reconnais les risques encourus.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"L'emprunt stable est activé\",\"34Qfwy\":\"Le plafond d'emprunt est dépassé\",\"39eQRj\":[\"Emprunter \",[\"symbole\"]],\"3BL1xB\":\"Total fourni\",\"3K0oMo\":\"Offre restante\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"Il n'y a pas assez de collatéral pour couvrir un nouvel emprunt\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Fournir \",[\"symbole\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Rembourser\",\"3qsjtp\":\"La moyenne pondérée de l'APY pour tous les actifs fournis, y compris les incitations.\",\"3rL+os\":\"Vous ne pouvez retirer vos actifs du module de sécurité qu'après la fin de la période de refroidissement et que la fenêtre de retrait est active.\",\"42UgDM\":[\"Migrer vers \",[\"0\"],\" Marché v3\"],\"49UFQA\":\"Résultats du vote\",\"4DMZUI\":\"Afficher les transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Petits caractères\",\"4YYh4d\":\"Maximum available to borrow\",\"4lDFps\":\"Signez pour continuer\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenez des ressources de test gratuites à l’adresse suivante :\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Le plafond de la dette limite le montant que les utilisateurs du protocole peuvent emprunter sur cet actif. Le plafond de la dette est spécifique aux actifs isolés et est indiqué en USD.\",\"5Ncc6j\":[\"Cet actif a presque atteint son plafond d'offre. Il ne peut y avoir que \",[\"messageValue\"],\" fourni à ce marché.\"],\"5cZ/KX\":\"L'offre de dette variable n'est pas nulle\",\"5che++\":\"Pour demander l'accès à ce marché autorisé, veuillez consulter\xA0: <0>Nom du fournisseur d'accès\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" reçu\"],\"5hDe9v\":\"Allocation action requise\",\"5rsnKT\":\"Récompenses disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Voir tous les votes\",\"6/dCYd\":\"Aperçu\",\"60crCe\":\"Toutes les transactions\",\"62Xcjh\":\"Collatérale\",\"65A04M\":\"Espagnol\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signature\",\"6Jrv+z\":[\"Rembourser \",[\"symbole\"]],\"6Xr0UU\":\"Refroidissement...\",\"6bxci/\":\"Pouvoir de vote\",\"6f8S68\":\"Marchés\",\"6g1gi0\":\"Les propositions\",\"6gvoHP\":\"Copier le message d’erreur\",\"6h3Q5G\":\"Remboursé\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Changer de réseau\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Facteur de santé\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Atteint\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"L’emprunt n’est pas disponible car vous utilisez le mode Isolation. Pour gérer le mode d’isolation, rendez-vous sur votre <0>tableau de bord.\",\"7aKlMS\":\"Partager sur Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Réclamer tout\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Les données n’ont pas pu être récupérées, veuillez recharger le graphique.\",\"7p5kLi\":\"Tableau de bord\",\"7sofdl\":\"Retrait et échange\",\"8+6BI0\":\"Soyez prudent - Vous êtes très proche de la liquidation. Envisagez de déposer plus de collatéral ou de rembourser certaines de vos positions empruntées\",\"87pUEW\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs.\"],\"8F1i42\":\"Page introuvable\",\"8G8M0u\":\"Chargement des données...\",\"8Iu1QS\":\"Retiré\",\"8JL93T\":\"Toutes les propositions\",\"8Q51DU\":\"Ajouter au portefeuille\",\"8X/oyn\":\"Montant invalide à frapper\",\"8Z5FPv\":\"Déconnecter le portefeuille\",\"8Zz7s5\":\"actifs\",\"8aLW8H\":\"Solde à révoquer\",\"8bOT3H\":\"Taux d'utilisation\",\"8sLe4/\":\"Voir le contrat\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Montrer\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Vous entrez en mode Isolation\",\"9CDK3/\":[\"L'emprunt n'est actuellement pas disponible pour \",[\"0\"],\".\"],\"9GIj3z\":\"Taille de réserve\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Solde de mise en jeu\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votes actuels\",\"9Rw96f\":[\"Cet actif a presque atteint son plafond d'emprunt. Il n'y a que \",[\"messageValue\"],\" disponible pour être emprunté sur ce marché.\"],\"9Xj/qR\":[\"Certaines ressources migrées ne seront pas utilisées comme garantie en raison de l’activation du mode d’isolement dans \",[\"marketName\"],\" Marché V3. Visite <0>\",[\"marketName\"],\" Tableau de bord V3 pour gérer le mode d’isolation.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Cet actif a atteint son plafond d'offre. Rien n'est disponible pour être fourni à partir de ce marché.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"L’AMI a été suspendu en raison d’une décision de la communauté. L’offre, les emprunts et les remboursements sont impactés. <0>Plus d’informations\",\"9lXchd\":\"Jeton sous-jacent\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Comme il s'agit d'un réseau de test, vous pouvez obtenir n'importe lequel des actifs si vous avez ETH dans votre portefeuille\",\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choisissez l’un des services de rampe d’accès\",\"A6dCI6\":[\"Le montant maximal disponible pour emprunter est de <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Vos emprunts\",\"AV7cGz\":\"Examiner les détails de la taxe d'approbation\",\"AZOjB8\":\"Récupération de données...\",\"Ai0jas\":\"Rejoignez la discussion de la communauté\",\"Ajl2rq\":\"Le pouvoir d'emprunt et les actifs sont limités en raison du mode d'isolement.\",\"AqgYNC\":\"Plafond d’emprunt du protocole à 100% pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"B6aXGH\":\"Stable\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"Les stETH fournis en garantie continueront d’accumuler des récompenses de staking fournies par les rebasages quotidiens.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"L'utilisation de la garantie est limitée en raison du mode d'isolement. <0>En savoir plus\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Catégorie d'actifs\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Cet actif est gelé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Fiche technique\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"CZXzs4\":\"Grec\",\"CkTRmy\":[\"Revendication \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Veuillez connecter votre portefeuille pour voir l’outil de migration.\",\"CtGlFb\":[[\"networkName\"],\" Robinet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Cette action réduira le facteur de santé de V3 en dessous du seuil de liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"La garantie est (principalement) la même devise que celle qui est empruntée\",\"DCnFg0\":[\"Adresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"Je comprends parfaitement les risques liés à la migration.\",\"DONJcV\":\"L'actif sous-jacent ne peut pas être sauvé\",\"DR+4uL\":\"Bilan de l’alimentation après le changement\",\"DWjrck\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" V3 Market en raison des restrictions du mode E. Vous pouvez désactiver ou gérer les catégories du mode E dans votre <0>tableau de bord V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave par mois\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collatéralisation\",\"DxfsGs\":\"Vous pouvez signaler un incident sur notre <0>Discord ou<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Désactivé\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Reprise \",[\"symbol\"]],\"Ebgc76\":[\"Retrait \",[\"symbole\"]],\"EdQY6l\":\"Aucun/Aucune\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Réactiver la période de recharge pour annuler le pieu \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrer vers la v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Pour en savoir plus.\",\"FHlMf/\":\"Solde actuel de la v2\",\"FHpxjF\":[\"Le facteur de réserve est un pourcentage de l’intérêt qui va à un \",[\"0\"],\" qui est contrôlé par la gouvernance Aave pour promouvoir la croissance de l’écosystème.\"],\"FOBZa6\":\"Puissance d'emprunt utilisée\",\"FPKEug\":\"Opération non prise en charge\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"sur\",\"Fjw9N+\":\"Actifs à déposer\",\"FmN0fk\":\"Remise en jeu\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO est un actif numérique natif décentralisé et adossé à des garanties, indexé sur le dollar américain. Il est créé par les utilisateurs en empruntant contre plusieurs garanties. Lorsque l’utilisateur rembourse sa position d’emprunt de HO, le protocole brûle le GHO de cet utilisateur. Tous les paiements d’intérêts accumulés par les minters de GHO seraient directement transférés à la trésorerie d’AaveDAO.\",\"GQrBTq\":\"Changer de mode E\",\"GWswcZ\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. Le 20 décembre 2022, renFIL ne sera plus pris en charge et ne pourra plus être reconnecté à son réseau natif. Il est recommandé de retirer les positions d’offre et de rembourser les positions d’emprunt afin que renFIL puisse être relié à FIL avant la date limite. Après cette date, il ne sera plus possible de convertir renFIL en FIL. <0>Plus d’informations\",\"GX8GKD\":\"Actifs\",\"GgEj+0\":\"Mode lecture seule. Connectez-vous à un portefeuille pour effectuer des transactions.\",\"GjkIKV\":\"Prend fin\",\"GtP2hp\":[\"L'emprunt n'est pas disponible, car vous avez activé le mode d'efficacité (E-Mode) pour la catégorie \",[\"0\"],\". Pour gérer les catégories E-Mode, visitez votre <0>tableau de bord.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Désolé, une erreur inattendue s’est produite. En attendant, vous pouvez essayer de recharger la page, ou revenir plus tard.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Fenêtre d'arrêt de staking\",\"HpK/8d\":\"Recharger\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" v3 Marché puisque l’actif collatéral activera le mode d’isolation.\"],\"Hvwnm9\":[\"La quantité maximale disponible pour l’approvisionnement est limitée parce que le plafond d’approvisionnement du protocole est à \",[\"0\"],\"%.\"],\"I8CX2c\":\"Le montant total de vos actifs libellés en USD qui peut être utilisé comme garantie pour emprunter des actifs.\",\"IAD2SB\":[\"Prétendant \",[\"symbol\"]],\"IG9X9/\":\"L’emprunt de cet actif est limité à un certain montant afin de minimiser l’insolvabilité du pool de liquidités.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Il est prévu que cet actif soit désactivé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"IP+I/j\":\"Période de recharge\",\"IaA40H\":\"Liquidation à\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Gérer l’analytique\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Déjalonnement \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Pas assez de solde sur votre portefeuille\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Solde du portefeuille\",\"JtwD8u\":\"Emprunter le solde après le remboursement\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter davantage sur cet actif.\",\"KLXVqE\":[\"Les tokens stETH seront migrés vers Wrapped stETH à l’aide du wrapper Lido Protocol, ce qui entraîne une modification de l’équilibre de l’offre après la migration : \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KRpokz\":\"VOIR TX\",\"KSlpka\":\"Cela représente le seuil auquel une position d'emprunt sera considérée comme sous-garantie et sujette à liquidation pour chaque garantie. Par exemple, si une garantie a un seuil de liquidation de 80\xA0%, cela signifie que la position sera liquidée lorsque la valeur de la dette vaut 80 % de la valeur de la garantie.\",\"KYAjf3\":\"Isolé\",\"KkPgim\":\"Changement de mode E\",\"KnN1Tu\":\"Expire\",\"KoOBI2\":\"En raison de la mécanique interne de stETH requise pour le rebasage de la prise en charge, il n’est pas possible d’effectuer un changement de garantie où stETH est le jeton source.\",\"KojyJ4\":\"Mauvais réseau\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Entrez l'adresse ETH\",\"KvG1xW\":\"Réclamer\",\"L+8Lzs\":\"LTV actuelle\",\"L+qiq+\":\"Marché\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Pas de pouvoir de vote\",\"LL0zks\":\"Peut être collatéral\",\"LLdJWu\":\"AAVE Réclamable\",\"LSIpNK\":\"Emprunter et rembourser dans le même bloc n'est pas autorisé\",\"LVt3TI\":[\"<0>Tolérance de glissement <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Astuce : Essayez d’augmenter le glissement ou de réduire la quantité d’entrée\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Adresse du destinataire\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vue de staking\",\"McHlGl\":\"Changement d’APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si le facteur de santé descend en dessous de 1, la liquidation de votre collatéral peut être déclenchée.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Vous avez annulé la transaction.\",\"MnE2QX\":\"Emprunter des informations\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valeur de retour invalide de la fonction flashloan executor\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"L’actif ne peut être utilisé comme garantie qu’en mode isolé avec un pouvoir d’emprunt limité. Pour passer en mode d’isolation, désactivez toutes les autres garanties.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"En attente...\",\"NK9ikO\":\"Solde du portefeuille\",\"NMt2CB\":\"Montant réclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Contrat de collectionneur\",\"NfpPeS\":\"Rien staké\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Le plafond de mintage non soutenu est dépassé\",\"O+tyU+\":[\"Le montant maximal disponible pour emprunter sur cet actif est limité car le plafond de la dette est à \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Aperçu de la proposition\",\"OYuJ9K\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter sur cet actif.\",\"OfhWJH\":\"Réinitialisation\",\"Og2SKn\":\"handicapé\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Site internet\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirer\",\"P1dURE\":\"Révoquer le pouvoir\",\"P2WCD/\":[\"L’actif sous-jacent n’existe pas dans \",[\"marketName\"],\" v3 Market, par conséquent, cette position ne peut pas être migrée.\"],\"P2sL6B\":\"Lorsqu'une liquidation survient, les liquidateurs remboursent jusqu'à 50 % de l'encours emprunté au nom de l'emprunteur. En contrepartie, ils peuvent acheter le collatéral à prix réduit et conserver la différence (pénalité de liquidation) en bonus.\",\"P6sRoL\":\"Mise en jeu ABPT\",\"P72/OW\":\"La moyenne pondérée de l'APY pour tous les actifs empruntés, y compris les incitatifs.\",\"P7e6Ug\":\"Veuillez connecter votre portefeuille pour consulter l’historique des transactions.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Emprunter apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Seuil de liquidation\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Cette action réduira le facteur de santé V2 en dessous du seuil de liquidation. Conservez la garantie ou migrez la position d’emprunt pour continuer.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Non atteint\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Différentiel\",\"RNK49r\":\"Signature non valide\",\"RS0o7b\":\"État\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Détails de la proposition\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"L'actif n'est pas répertorié\",\"Rj01Fz\":\"Liens\",\"RmWFEe\":\"APR staké\",\"RtBLm7\":\"Le facteur santé est inférieur au seuil de liquidation\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Activé\",\"SDav7h\":\"Fonds dans le Safety Module\",\"SENccp\":\"Si l’erreur persiste,<0/> vous pouvez la signaler à ce\",\"SIWumd\":\"Afficher les ressources gelées ou mises en pause\",\"SM58dD\":\"Quantité en temps de recharge\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Impossible de charger les votants de proposition. Veuillez rafraîchir la page.\",\"SSQVIz\":\"Seuil de liquidation\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Le mode lecture seule permet de voir les positions d’adresses dans Aave, mais vous ne pourrez pas effectuer de transactions.\",\"SZRUQ4\":\"Glissement maximal\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Le plafond d’emprunt du protocole est de 100 % pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"Sk2zW9\":\"Désactiver le E-mode\",\"SxaD0o\":\"Le fournisseur d'adresses de pool n'est pas enregistré\",\"T/AIqG\":\"Limite d’approvisionnement du protocole à 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Emprunter\",\"TFxQlw\":\"Pénalité de liquidation\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"L'actif ne peut être utilisé comme garantie qu'en mode isolé.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"L'utilisateur n'a pas de dette à taux stable impayée sur cette réserve\",\"TeCFg/\":\"Modification du taux d’emprunt\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Emprunter le solde après le changement\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recharger la page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"L’application s’exécute en mode réseau de test. Découvrez comment cela fonctionne dans\",\"U9btTk\":\"L'actif n'est pas empruntable en mode d'isolement\",\"UAOZRe\":\"L’impact sur les prix est l’écart entre la valeur totale des tokens d’entrée échangés et les tokens de destination obtenus (en USD), qui résulte de la liquidité limitée de la paire de trading.\",\"UE3KJZ\":\"L’historique des transactions n’est actuellement pas disponible pour ce marché\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Détails\",\"UTTKmT\":\"Temps de recharge de la mise activé\",\"UXeR72\":\"Ces fonds ont été empruntés et ne peuvent pas être retirés pour le moment.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Le ratio LTV maximum représente le pouvoir d'emprunt maximum d'une garantie spécifique. Par exemple, si une garantie a un LTV de 75 %, l'utilisateur peut emprunter jusqu'à 0,75 ETH dans la devise principale pour chaque 1 ETH de garantie.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Aucune récompense à réclamer\",\"V0f2Xv\":\"Facteur de réserve\",\"V1HK43\":\"Risques liés à la migration\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Dette couverte\",\"VHOVEJ\":\"Connecter le portefeuille\",\"VMfYUK\":\"Sécurité de votre garantie déposée contre les actifs empruntés et sa valeur sous-jacente.\",\"VOAZJh\":\"Total des emprunts\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Examiner les détails de la transaction\",\"W5hVah\":\"Rien fourni pour le moment\",\"W5kTFy\":\"Vote\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Sans support\",\"WNGZwH\":\"E-Mode augmente votre LTV pour une catégorie d'actifs sélectionnée jusqu'à <0/>. <1>En savoir plus\",\"WPWG/y\":\"Statut et configuration de la réserve\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"L'utilisateur ne peut pas retirer plus que le solde disponible\",\"WaZyaV\":\"<0>Ampleforth est un actif de rebasage. Consultez la <1>documentation pour en savoir plus.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Étant donné que cette ressource est suspendue, aucune action ne peut être entreprise jusqu’à nouvel ordre\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Pour emprunter, vous devez fournir tout actif à utiliser comme garantie.\",\"X/ITG9\":\"Copier le texte d'erreur\",\"X3Pp6x\":\"Utilisé comme collatéral\",\"X4Zt7j\":\"L'action ne peut pas être effectuée car la réserve est mise en pause\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Veuillez toujours tenir compte de votre <0>facteur de santé (HF) lors de la migration partielle d’une position et que vos tarifs seront mis à jour vers les taux V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTER NON\",\"YDIOks\":\"Activation du E-Mode\",\"YSodyW\":\"Cette action réduira votre facteur de santé. Veuillez garder à l’esprit le risque accru de liquidation des garanties.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Le mode réseau de test est activé\",\"YrDxdO\":\"Si votre prêt à la valeur dépasse le seuil de liquidation, votre garantie fournie peut être liquidée.\",\"YyIM65\":\"Les conditions de rééquilibrage des taux d'intérêt n'ont pas été remplies\",\"YyydIq\":[\"Ajouter \",[\"0\"],\" à Wallet pour suivre votre solde.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gouvernance Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Mode efficacité (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Désactiver le réseau de test\",\"Zbyywy\":\"Coupure maximale\",\"ZfUGFb\":\"Avant de déposer\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valeur de liquidation\",\"ZrEc8j\":\"Nous n’avons trouvé aucun élément lié à votre recherche. Réessayez avec un autre nom, symbole ou adresse de ressource.\",\"ZsLF7e\":\"Activé\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Temps restant pour dépiquer\",\"a7u1N9\":\"Prix\",\"a9D+6D\":\"Non jalonné\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"aOKIms\":\"Les paramètres de tableau devraient être de même longueur ne sont pas\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Votre solde est inférieur au montant sélectionné.\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Prêt APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Avertissement de période de refroidissement\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Actif\",\"bXQ/Og\":\"Partager sur Twitter\",\"bXr0ee\":\"Les actifs isolés ont un pouvoir d'emprunt limité et les autres actifs ne peuvent pas être utilisés comme garantie.\",\"bYmAV1\":\"Adresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Le montant demandé est supérieur au montant maximum du prêt en mode taux stable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Fournir\",\"bxN6EM\":\"Impossible de désactiver le mode E\",\"c91vuQ\":\"L'adresse n'est pas un contrat\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Vous ne pouvez pas retirer ce montant car cela entraînera un appel de garantie\",\"cBc+4A\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"cIl5kp\":\"Votre pouvoir de vote est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"cLo09S\":\"Détails des risques\",\"cNT+ij\":\"L'emprunt n'est pas disponible car vous avez activé le mode Efficacité (E-Mode) et le mode Isolation. Pour gérer le mode E et le mode Isolation, rendez-vous sur votre <0>tableau de bord.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Pour soumettre une proposition de modifications mineures du protocole, vous aurez besoin d’une puissance d’au moins 80,00 K. Si vous souhaitez modifier la base de code de base, vous aurez besoin d’une puissance de 320k. <0>Pour en savoir plus.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Remboursement \",[\"symbole\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Discussion de forum\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"Vous n'avez pas participé à cette proposition\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gouvernance\",\"dEgA5A\":\"Annuler\",\"dIsyWh\":\"Échec de la validation LTV\",\"dOB5nW\":[\"La quantité maximale disponible pour la fourniture est de <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Vous n'avez pas assez de fonds dans votre portefeuille pour rembourser le montant total. Si vous continuez à rembourser avec votre montant actuel de fonds, vous aurez toujours une petite position d'emprunt dans votre tableau de bord.\",\"dXUQFX\":\"Actifs à emprunter\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dgr1aY\":\"L’emprunt est désactivé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"djsg0o\":\"Usage de collatéral\",\"dpc0qG\":\"Variable\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Jeton de dette Aave\",\"e4V3oW\":\"Top 10 des adresses\",\"eD8WX/\":\"L'action nécessite une réserve active\",\"eJRJ04\":\"Montant à la mise en jeu\",\"eLh0cL\":\"Le slippage est la différence entre les montants cotés et reçus en raison de l’évolution des conditions du marché entre le moment où la transaction est soumise et sa vérification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Récompenses de staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aucune transaction n’a encore été effectuée.\",\"ebLGGN\":\"Total emprunté\",\"ecqEvn\":\"Le solde de la garantie est de 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible sur\",\"enruNF\":\"Commence\",\"eqLYiD\":\"Arrêter de staker maintenant\",\"evw5ha\":\"Valeur nette\",\"ezcU16\":\"Obtenir le jeton ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Vous êtes passé au tarif \",[\"0\"]],\"fMJQZK\":\"Emprunté\",\"fZ5Vnu\":\"Reçu\",\"firl9Q\":\"Votre prêt actuel à la valeur en fonction de votre collatéral fournie.\",\"fldjW9\":\"Prévisualiser tx et migrer\",\"fsBGk0\":\"Solde\",\"fu1Dbh\":[\"Retirer \",[\"symbole\"]],\"fwjWSI\":\"Fourni\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Alimenté par\",\"g8KGoA\":\"Foire aux questions\",\"g9zzqS\":\"A voté NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Mode réseau test\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"gTHi2T\":\"L'utilisateur essaie d'emprunter plusieurs actifs, y compris un en silo\",\"gVW59Y\":\"Veuillez connecter votre portefeuille pour obtenir des ressources de réseau de test gratuites.\",\"gcFNxP\":\"Approuver Confirmé\",\"goff7V\":\"Adresse zéro non-valide\",\"gp+f1B\":\"Variante 3\",\"gvTM4B\":\"L'APY net est l'effet combiné de toutes les positions d'offre et d'emprunt sur la valeur nette, y compris les incitations. Il est possible d'avoir un APY net négatif si l'APY de la dette est supérieur à l'APY de l'offre.\",\"gzcch9\":\"Frais de protocole de pont invalide\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\". .CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activer le temps de recharge\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY Net\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Revendiqué\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Le % de votre pouvoir d'emprunt total utilisé. Ceci est basé sur le montant de votre garantie fournie et le montant total que vous pouvez emprunter.\",\"hehnjM\":\"Montant\",\"hjDCQr\":\"Il y a eu une erreur. Veuillez essayer de modifier les paramètres ou <0><1>copier l'erreur\",\"hom7qf\":\"Réclamer\",\"hpHJ4I\":\"Garantie liquidée\",\"huQ6Tz\":[\"Emprunter \",[\"symbole\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"À propos de GHO\",\"iChbOF\":\"Paramètres de prêt flash incohérents\",\"iEPVHF\":\"Pas assez de pouvoir de vote pour participer à cette proposition\",\"iEW87X\":\"Délégation de pouvoirs\",\"iEju36\":[\"Vous avez voté \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Sélectionner la tolérance de glissement\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Entrez un montant\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens n'est pas la même chose que de les staker . Si vous souhaitez staker votre\",\"iZxa38\":\"Utilisez-le pour voter pour ou contre les propositions actives.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Informations sur le collectionneur\",\"igkfR1\":[\"En mode Isolation, vous ne pouvez pas fournir d’autres actifs en garantie. Un plafond d’endettement global limite le pouvoir d’emprunt de l’actif isolé. Pour quitter le mode d’isolement, désactivez \",[\"0\"],\" en garantie avant d’emprunter un autre actif. Pour en savoir plus, consultez notre <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"L'utilisation du collatéral est limitée en raison du mode d'isolation.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Fournir votre\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Désactiver le E-mode\",\"jKYzR1\":\"Activer le E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Temps de recharge restant\",\"jeMZNr\":[[\"0\"],\" Le service de rampe d’accès est fourni par le fournisseur externe et, en le sélectionnant, vous acceptez les conditions du fournisseur. Votre accès au service peut dépendre de l’opérationnalité du fournisseur externe.\"],\"jfl9OP\":\"Migré\",\"jmXdoY\":\"En E-Mode, certains actifs ne sont pas empruntables. Quittez le E-mode pour accéder à tous les actifs\",\"jpctdh\":\"Vue\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Non disponible\",\"k/sb6z\":\"Choisir la langue\",\"k3wP3f\":\"<0>Attention: Les changements de paramètres via la gouvernance peuvent modifier le facteur de santé de votre compte et le risque de liquidation. Suivez le <1>forum de gouvernance d’Aave pour les mises à jour.\",\"kACpF3\":[\"Réclamer \",[\"0\"]],\"kH6wUX\":\"Impact sur les prix\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" Actifs sélectionnés\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Pour rembourser au nom d'un utilisateur, un montant explicite à rembourser est nécessaire\",\"kRTD40\":[\"Montant de remboursement à atteindre \",[\"0\"],\"% d’utilisation\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Le plafond d'approvisionnement est dépassé\",\"knxE+G\":\". JSON (en anglais seulement)\",\"ks2LWT\":\"Le plafond de la dette n'est pas nul\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"L’actif ne peut pas être migré en raison d’une liquidité insuffisante ou d’une limitation du plafond d’emprunt \",[\"marketName\"],\" v3 marché.\"],\"lVhKKI\":\"A voté YAE\",\"lWLqxB\":\"Nous n’avons trouvé aucune transaction liée à votre recherche. Réessayez avec un autre nom de ressource ou réinitialisez les filtres.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Anglais\",\"lfEjIE\":\"En savoir plus dans notre <0>guide FAQ\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Émission totale par jour\",\"m7r7Hh\":\"Sélection d’actifs d’emprunt\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Variante 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs ou utiliser <0>\",[\"0\"],\" pour transférer votre \",[\"network\"],\" actif.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Acheter \",[\"cryptoSymbol\"],\" avec Fiat\"],\"mvCXBY\":\"Mise en jeu AAVE\",\"mwdzil\":\"D'accord, fermer\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"L'actif ne peut pas être utilisé comme collatéral.\",\"n+SX4g\":\"Développeurs\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Fournir apy\",\"nJgsQu\":\"Avec un pouvoir de vote de <0/>\",\"nLC6tu\":\"Français\",\"nNHV0z\":\"La migration simultanée de plusieurs garanties et d’actifs empruntés peut s’avérer coûteuse et peut échouer dans certaines situations. <0>Par conséquent, il n’est pas recommandé de migrer des positions avec plus de 5 actifs (déposés + empruntés) en même temps.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Peut être exécuté\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Les deux\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Quelque chose s’est mal passé\",\"nxyWvj\":\"Le retrait de ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"o17QVP\":\"Votre facteur de santé et votre prêt à la valeur déterminent l'assurance de votre collatéral. Pour éviter les liquidations, vous pouvez fournir plus de garanties ou rembourser les positions d'emprunt.\",\"o1xc2V\":\"L'approvisionnement en aTokens n'est pas nul\",\"o5ooMr\":\"Dette\",\"o7J4JM\":\"Filtrer\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Temps de recharge pour déstaker\",\"oJ5ZiG\":\"L'utilisateur n'a pas de dette à taux variable impayée sur cette réserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Ressources de test\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Le taux d'intérêt stable <0>restera le même pendant toute la durée de votre prêt. Recommandé pour les périodes de prêt à long terme et pour les utilisateurs qui préfèrent la prévisibilité.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible au dépôt\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Rien n’a été trouvé\",\"owSsI3\":\"Signatures prêtes\",\"p+R52m\":\"Accéder à Balancer Pool\",\"p2S64u\":\"Le ratio prêt/valeur des positions migrées entraînerait la liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"p2Z2Qi\":\"Cet actif a atteint son plafond d'emprunt. Rien n'est disponible pour être emprunté à ce marché.\",\"p3j+mb\":\"Votre solde de récompenses est de 0\",\"p45alK\":\"Configurer la délégation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Le solde sous-jacent doit être supérieur à 0\",\"pgWG9H\":\"Pas assez de solde staké\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"veuillez vérifier que le montant que vous souhaitez fournir n'est pas actuellement utilisé pour le staking. S'il est utilisé pour le staking, votre transaction peut échouer.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Je comprends comment fonctionnent le temps de recharge (\",[\"0\"],\") et le retrait (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"L'appelant de cette fonction doit être un pool\",\"q/51mF\":\"Migrer vers la V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Stratégie de taux d’intérêt\",\"q6lAbz\":\"Staké\",\"qB4kPi\":\"Fournir APY\",\"qENI8q\":\"Paramètres globaux\",\"qGz5zl\":\"Solde de garantie après remboursement\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copier l'erreur\",\"qXCkEM\":\"Veuillez connecter votre portefeuille pour voir vos fournitures, vos emprunts et vos positions ouvertes.\",\"qY2jnw\":\"Expiration invalide\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Montant non valide à brûler\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Le montant doit être supérieur à 0\",\"rQ+R+0\":\"Sélection d’actifs d’approvisionnement\",\"rSayea\":\"APY\",\"rTBDeu\":[\"L’actif ne peut pas être migré car vous disposez d’une garantie isolée dans \",[\"marketName\"],\" v3 Marché qui limite les actifs empruntables. Vous pouvez gérer vos garanties dans <0>\",[\"marketName\"],\" Tableau de bord V3\"],\"rcT+yy\":\"Afficher les actifs avec 0 solde\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Vie privée\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Réclamez toutes les récompenses\",\"rwyUva\":\"Ces actifs sont temporairement gelés ou suspendus par des décisions de la communauté Aave, ce qui signifie qu’il n’est pas possible d’obtenir / emprunter ou d’échanger des taux de ces actifs. Les retraits et les remboursements de dettes sont autorisés. Suivez le <0>forum de gouvernance d’Aave pour d’autres mises à jour.\",\"rxJW5W\":\"Votre pouvoir de proposition est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NON\",\"sQv06Y\":\"pour\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Vous unstaké ici\",\"smJNwH\":\"Disponible à emprunter\",\"solypO\":\"Le facteur de santé n'est pas inférieur au seuil\",\"sr0UJD\":\"Retourner\",\"ss5GCK\":\"L'adresse du fournisseur d'adresses du pool n'est pas valide\",\"swEgK4\":\"Vos informations de vote\",\"t+wtgf\":\"Aucun emprunt pour l'instant\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Prix Oracle\",\"tFZLf8\":\"Ce calcul de gaz n'est qu'une estimation. Votre portefeuille fixera le prix de la transaction. Vous pouvez modifier les paramètres de gaz directement depuis votre fournisseur de portefeuille.\",\"tHuvQI\":\"Accéder au tableau de bord V3\",\"tOcg3N\":\"Étant donné que cet actif est gelé, les seules actions disponibles sont le retrait et le remboursement, accessibles depuis le <0>tableau de bord\",\"tOuXfv\":[\"Emprunter le montant à atteindre \",[\"0\"],\"% d’utilisation\"],\"te9Bfl\":\"S'il vous plaît, connectez votre portefeuille\",\"tt5yma\":\"Vos ressources\",\"u3ZeYl\":\"La transaction a échoué\",\"u706uF\":\"Prime flash non valide\",\"u8Gfu7\":[\"Aucun résultat de recherche\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"Aucune ressource n’a été sélectionnée pour la migration.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migration\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Exporter des données vers\",\"ulup2p\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"usB84Z\":\"Le montant maximum disponible pour emprunter est limité car le plafond d’emprunt du protocole est presque atteint.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"vEqxH9\":\"Restauré\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Cacher\",\"vMba49\":\"L'emprunt n'est pas activé\",\"vMpNwt\":\"Approuvez avec\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Vous permet de décider si vous souhaitez utiliser un actif fourni en tant que collatéral. Un actif utilisé comme collatéral affectera votre pouvoir d'emprunt et votre Health Factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"L'offre de dette stable n'est pas nulle\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Récompenses APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Vous \",[\"action\"],\" <0/> \",[\"symbole\"]],\"wBIsjb\":\"Canal Discord\",\"wQZbc/\":\"L'appelant de la fonction n'est pas un AToken\",\"wZFvVU\":\"VOTER OUI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"Le protocole Aave est programmé pour toujours utiliser le prix de 1 GHO = 1 $. C’est différent de l’utilisation des prix du marché via des oracles pour d’autres actifs cryptographiques. Cela crée des opportunités d’arbitrage stabilisatrices lorsque le prix du GHO fluctue.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"Avec testnet Faucet, vous pouvez obtenir des ressources gratuites pour tester le protocole Aave. Assurez-vous de changer votre fournisseur de portefeuille pour le réseau de test approprié, sélectionnez l’actif souhaité et cliquez sur «\xA0Faucet\xA0» pour obtenir des jetons transférés vers votre portefeuille. Les actifs d’un réseau de test ne sont pas « réels », ce qui signifie qu’ils n’ont aucune valeur monétaire. <0>Pour en savoir plus\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Les ressources sélectionnées ont été migrées avec succès. Rendez-vous sur le tableau de bord du marché pour les voir.\",\"x7F2p6\":\"Différentiel de courant\",\"x7K5ib\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenir un test gratuit \",[\"0\"],\" à\"],\"x9iLRD\":\"tokens, veuillez vous rendre sur\",\"xNy/UG\":\"Rembourser avec\",\"xPm8wv\":\"En savoir plus sur les risques encourus\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Vos informations\",\"xaWZ6f\":\"Changement de type APY\",\"xh6k71\":\"L’utilisation des garanties est limitée en raison du mode d’isolation.\",\"xvIklc\":\"Flashloan est désactivé pour cet actif, cette position ne peut donc pas être migrée.\",\"y5rS9U\":\"Émigrer\",\"yB1YpA\":\"Mode Sombre\",\"yCrG6m\":\"Taille totale du marché\",\"yJUUbn\":\"Aperçu des transactions\",\"yLGmLX\":[\"Remise en jeu \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Pas une adresse valide\",\"yZwLw6\":\"Suivre le portefeuille\",\"yh2sjd\":[\"Impact sur les prix \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Il n'y a pas assez de fonds dans la \",[\"0\"],\" réserve pour emprunter\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Fermer\",\"z4uGQg\":\"Le plafond de la dette est dépassé\",\"z5UQOM\":\"La garantie choisie ne peut être liquidée\",\"z5Y+p6\":[\"Fournir \",[\"symbole\"]],\"zCjNKs\":\"L'action ne peut pas être effectuée car la réserve est gelée\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Plafond de la dette isolée\",\"zTOjMP\":\"La limite d’approvisionnement du protocole est de 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Dette restante\",\"zmTPiV\":\"Bilan d'approvisionnement\",\"zpPbZl\":\"Paramètres du risque de liquidation\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Apprendre encore plus\",\"zy9fXn\":[\"L’actif est gelé \",[\"marketName\"],\" v3, donc cette position ne peut pas être migrée.\"],\"zys+R6\":\"Faites attention à la congestion du réseau et aux prix de l’essence.\",\"zzzTXS\":\"Merit Program rewards are claimed through the\",\"+EGVI0\":\"Recevoir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"On dirait que nous ne pouvons pas changer de réseau automatiquement. Veuillez vérifier si vous pouvez le changer depuis le portefeuille.\",\"+kLZGu\":\"Montant de l’actif fourni\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Montant minimum d’Aave mis en jeu\",\"00OflG\":\"Il n’y a pas assez de liquidités pour que l’actif cible puisse effectuer le changement. Essayez de réduire le montant.\",\"08/rZ9\":\"La période de recharge est le temps nécessaire avant de retirer vos jetons (20 jours). Vous ne pouvez retirer vos actifs du module de sécurité qu’après la période de recharge et pendant la période de désenjeu. <0>Pour en savoir plus\",\"1Onqx8\":[\"Approuver \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Adresse bloquée\",\"2bAhR7\":\"Rencontrez GHO\",\"2o/xRt\":\"Plafond d'approvisionnement sur la réserve cible atteint. Essayez de réduire le montant.\",\"3O8YTV\":\"Total des intérêts courus\",\"4iPAI3\":\"Montant minimum d’emprunt GHO\",\"6NGLTR\":\"Montant actualisable\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Les paramètres de remise sont décidés par la communauté Aave et peuvent être modifiés au fil du temps. Consultez la section Gouvernance pour les mises à jour et votez pour participer. <0>Pour en savoir plus\",\"ARu1L4\":\"Remboursé\",\"B9Gqbz\":\"Taux variable\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"À prix réduit\",\"CMHmbm\":\"Glissement\",\"EBL9Gz\":\"COPIÉ!\",\"ES8dkb\":\"Taux fixe\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Rabais\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Enregistrer et partager\",\"JK9zf1\":[\"Intérêts composés estimés, y compris l’escompte pour le jalonnement \",[\"0\"],\"AAVE dans le module de sécurité.\"],\"JPrLjO\":\"Vous ne pouvez pas utiliser cette devise comme garantie\",\"JU6q+W\":\"Récompense(s) à réclamer\",\"K05qZY\":\"Retrait et échange\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"L'activation de cet actif comme garantie augmente votre pouvoir d'emprunt et votre facteur de santé. Cependant, il peut être liquidé si votre facteur de santé tombe en dessous de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Désactiver \",[\"symbol\"],\" comme garantie\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Envoyer des commentaires\",\"TskbEN\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"TtZL6q\":\"Paramètres du modèle de remise\",\"Tz0GSZ\":\"Activités bloquées\",\"W8ekPc\":\"Retour au tableau de bord\",\"XZzneG\":\"Vous quitterez le mode d'isolement et d'autres jetons peuvent désormais être utilisés comme collatéral\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"La désactivation de cet actif en tant que garantie affecte votre pouvoir d'emprunt et votre facteur de santé.\",\"al6Pyz\":\"Dépasse la remise\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Pas assez de collatéral pour rembourser ce montant de dette avec\",\"cqnmnD\":\"Taux d’intérêt effectif\",\"dMtLDE\":\"À\",\"euScGB\":\"APY avec remise appliquée\",\"fHcELk\":\"APR Net\",\"flRCF/\":\"Remise sur le staking\",\"gncRUO\":\"Cette adresse est bloquée sur app.aave.com car elle est associée à un ou plusieurs\",\"gr8mYw\":\"Vous pouvez emprunter jusqu’à GHO à <0/> <1/> (rabais maximum)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Emprunter le solde\",\"i2JTiw\":\"Vous pouvez saisir un montant personnalisé dans le champ.\",\"jMam5g\":[[\"0\"],\" Balance\"],\"kwwn6i\":\"Les utilisateurs qui misent des AAVE dans le module de sécurité (c’est-à-dire les détenteurs de stkAAVE) bénéficient d’une réduction sur le taux d’intérêt d’emprunt de HO. La réduction s’applique à 100 GHO pour chaque 1 stkAAVE détenu. Utilisez le calculateur ci-dessous pour voir le taux d’emprunt GHO avec le rabais appliqué.\",\"lNVG7i\":\"Sélectionner une ressource\",\"lt6bpt\":\"Garantie à rembourser\",\"mIM0qu\":\"Montant prévu à rembourser\",\"mzI/c+\":\"Télécharger\",\"n8Psk4\":\"Nous n’avons pas pu détecter de portefeuille. Connectez un portefeuille pour staker et consulter votre solde.\",\"nOy4ob\":\"Nous vous suggérons de revenir au tableau de bord.\",\"nakd8r\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"nh2EJK\":[\"Veuillez passer à \",[\"networkName\"],\".\"],\"ntkAoE\":\"Remise appliquée pour <0/> le staking d’AAVE\",\"o4tCu3\":\"Emprunter de l’APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"La période de recharge est de \",[\"0\"],\". Après \",[\"1\"],\" de temps de recharge, vous entrerez dans la fenêtre de désengagement de \",[\"2\"],\". Vous continuerez à recevoir des récompenses pendant le temps de recharge et la fenêtre de retrait.\"],\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Intérêts courus\",\"rf8POi\":\"Montant de l’actif emprunté\",\"ruc7X+\":\"Ajoutez stkAAVE pour voir l’APY d’emprunt avec la remise\",\"sK+Nag\":\"Réviser tx\",\"t81DpC\":[\"Approuver \",[\"symbol\"],\" pour continuer\"],\"umICAY\":\"<0><1><2/>Ajoutez stkAAVE pour voir le taux d’emprunt avec escompte\",\"uwAUvj\":\"COPIER L’IMAGE\",\"v8x7Mg\":\"Garantie insuffisante pour couvrir une nouvelle position d’emprunt. Le portefeuille doit avoir une capacité d’emprunt restante pour effectuer le transfert de dette.\",\"wRRqvW\":\"Vous n'avez pas de fournitures dans cette devise\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Activer \",[\"symbol\"],\" comme collatéral\"],\"yW1oWB\":\"APY type\",\"yhvj6d\":\"Vous ne pouvez pas changer d'utilisation en tant que mode de garantie pour cette devise, car cela entraînera un appel de garantie\",\"zevmS2\":\"<0><1><2/>Ajoutez <3/> stkAAVE pour emprunter à <4/> (remise maximale)\"}")}; \ No newline at end of file From 91966bbe35c2d841ee50add17a9affe372a7f8fb Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Mon, 3 Nov 2025 15:12:38 -0300 Subject: [PATCH 13/66] misc fixes --- .../Swap/details/CollateralSwapDetails.tsx | 30 +++++++-------- .../Swap/hooks/useSwapOrderAmounts.ts | 8 +++- .../transactions/Swap/hooks/useSwapQuote.ts | 38 +++++++++++-------- .../Swap/inputs/LimitOrderInputs.tsx | 4 ++ .../Swap/inputs/MarketOrderInputs.tsx | 2 + .../Swap/inputs/primitives/SwapAssetInput.tsx | 15 +++++++- .../modals/request/BaseSwapModalContent.tsx | 37 +++++++++++++++++- .../Swap/modals/request/SwapModalContent.tsx | 10 ++++- 8 files changed, 109 insertions(+), 35 deletions(-) diff --git a/src/components/transactions/Swap/details/CollateralSwapDetails.tsx b/src/components/transactions/Swap/details/CollateralSwapDetails.tsx index b2f835b062..8f164f257b 100644 --- a/src/components/transactions/Swap/details/CollateralSwapDetails.tsx +++ b/src/components/transactions/Swap/details/CollateralSwapDetails.tsx @@ -129,21 +129,6 @@ export const ColalteralSwapDetails = ({ state }: { params: SwapParams; state: Sw > {state.provider === SwapProvider.COW_PROTOCOL && } - {hfAfterSwap && ( - - )} - Supply apy} - value={userReserve.reserve.supplyAPY} - futureValue={userTargetReserve.reserve.supplyAPY} - percent - loading={state.ratesLoading} - /> {swapSourceCollateralType !== swapTargetCollateralType && ( Collateralization} captionVariant="description" mb={4}> )} + {hfAfterSwap && ( + + )} + Supply apy} + value={userReserve.reserve.supplyAPY} + futureValue={userTargetReserve.reserve.supplyAPY} + percent + loading={state.ratesLoading} + /> >; }) => { useEffect(() => { - if (!state.swapRate?.afterFeesAmount) return; + if ( + !state.swapRate?.afterFeesAmount || + state.outputAmount == '' || + state.inputAmount == '' || + (state.orderType === OrderType.MARKET && state.slippage == undefined) + ) + return; // On some swaps, the order is inverted, the required swap behind the operation is from our second input to our first. // e.g. repay with collateral, we have input Repay and output Available collateral, the required swap is from Available collateral to Repay. diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index f57f139c32..55b7a2e1d2 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -163,16 +163,16 @@ export const useSwapQuote = ({ return; } - let slippage, autoSlippage; - if (state.provider === 'cowprotocol' && quote?.suggestedSlippage !== undefined) { + let slippage = state.slippage; + let autoSlippage = state.autoSlippage; + if (quote.provider === 'cowprotocol' && quote?.suggestedSlippage !== undefined) { slippage = quote.suggestedSlippage.toString(); autoSlippage = quote.suggestedSlippage.toString(); - } else if (state.provider === 'paraswap') { + } else if (quote.provider === 'paraswap') { const paraswapSlippage = getParaswapSlippage( state.sourceToken.symbol || '', state.destinationToken.symbol || '' ); - slippage = paraswapSlippage; autoSlippage = paraswapSlippage; } @@ -386,17 +386,25 @@ const useMultiProviderSwapQuoteQuery = ({ destToken, state.user ), - enabled: - // LIMIT: fetch only once (when no quote yet). MARKET: fetch normally - ((state.orderType === OrderType.LIMIT && !state.swapRate) || - state.orderType !== OrderType.LIMIT) && - amount != 'NaN' && - amount !== '0' && - !state.mainTxState.success && - !state.mainTxState.txHash && // Don't fetch quotes once transaction is sent - !state.mainTxState.loading && // Don't fetch quotes while transaction is processing - provider !== SwapProvider.NONE && - !state.quoteRefreshPaused, + enabled: (() => { + // Allow fetch when user has entered a positive amount, even if normalization rounded to '0' + const hasPositiveUserAmount = + state.processedSide === 'sell' + ? Number(state.debouncedInputAmount || '0') > 0 + : Number(state.debouncedOutputAmount || '0') > 0; + + return ( + // LIMIT: fetch only once (when no quote yet). MARKET: fetch normally + ((state.orderType === OrderType.LIMIT && !state.swapRate) || + state.orderType !== OrderType.LIMIT) && + hasPositiveUserAmount && + !state.mainTxState.success && + !state.mainTxState.txHash && // Don't fetch quotes once transaction is sent + !state.mainTxState.loading && // Don't fetch quotes while transaction is processing + provider !== SwapProvider.NONE && + !state.quoteRefreshPaused + ); + })(), retry: 0, throwOnError: false, refetchOnWindowFocus: (query) => (query.state.error ? false : true), diff --git a/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx b/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx index 2e9cfb6f30..3dfadfe911 100644 --- a/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx +++ b/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx @@ -79,6 +79,8 @@ export const LimitOrderInputs = ({ inputAmount: '', debouncedInputAmount: '', inputAmountUSD: '', + quoteRefreshPaused: true, + quoteLastUpdatedAt: undefined, }) } usdValue={state.inputAmountUSD || '0'} @@ -188,6 +190,8 @@ export const LimitOrderInputs = ({ outputAmount: '', debouncedOutputAmount: '', outputAmountUSD: '', + quoteRefreshPaused: true, + quoteLastUpdatedAt: undefined, }) } onSelect={swapState.handleSelectedOutputToken} diff --git a/src/components/transactions/Swap/inputs/MarketOrderInputs.tsx b/src/components/transactions/Swap/inputs/MarketOrderInputs.tsx index 1e9034abb3..7007eb80c8 100644 --- a/src/components/transactions/Swap/inputs/MarketOrderInputs.tsx +++ b/src/components/transactions/Swap/inputs/MarketOrderInputs.tsx @@ -87,6 +87,8 @@ export const MarketOrderInputs = ({ ratesLoading: false, error: undefined, warnings: [], + quoteRefreshPaused: true, + quoteLastUpdatedAt: undefined, }) } usdValue={state.inputAmountUSD.toString() || '0'} diff --git a/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx b/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx index 5af306b693..75000491ab 100644 --- a/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx +++ b/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx @@ -119,6 +119,7 @@ export const SwitchAssetInput = ({ const [openModal, setOpenModal] = useState(false); const inputRef = useRef(null); + const [pickerHeight, setPickerHeight] = useState(undefined); const handleClick = () => { if (assets.length === 1) return; @@ -130,6 +131,14 @@ export const SwitchAssetInput = ({ handleCleanSearch(); }; + // Match token picker height to the current swap modal paper height + useEffect(() => { + const paper = inputRef.current?.closest('.MuiPaper-root') as HTMLElement | null; + if (paper) { + setPickerHeight(paper.clientHeight); + } + }, [openModal]); + const [filteredAssets, setFilteredAssets] = useState(assets); const [loadingNewAsset, setLoadingNewAsset] = useState(false); const user = useRootStore((store) => store.account); @@ -349,7 +358,7 @@ export const SwitchAssetInput = ({ open={openModal} setOpen={setOpenModal} contentMaxWidth={420} - contentHeight={800} + contentHeight={pickerHeight} > @@ -359,7 +368,9 @@ export const SwitchAssetInput = ({ 0 ? `1px solid ${theme.palette.divider}` : 'none', + assets.length > 3 && mergedPopular.length > 0 + ? `1px solid ${theme.palette.divider}` + : 'none', position: 'sticky', top: 0, zIndex: 2, diff --git a/src/components/transactions/Swap/modals/request/BaseSwapModalContent.tsx b/src/components/transactions/Swap/modals/request/BaseSwapModalContent.tsx index 9e4b10bf75..5ca6f41249 100644 --- a/src/components/transactions/Swap/modals/request/BaseSwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/BaseSwapModalContent.tsx @@ -121,7 +121,31 @@ export const BaseSwapModalContent = ({ { - setState({ orderType, actionsLoading: false }); + const switchingFromLimitToMarket = + state.orderType === OrderType.LIMIT && orderType === OrderType.MARKET; + + setState({ + orderType, + actionsLoading: false, + ...(switchingFromLimitToMarket + ? { + inputAmount: '', + debouncedInputAmount: '', + inputAmountUSD: '', + outputAmount: '', + debouncedOutputAmount: '', + outputAmountUSD: '', + swapRate: undefined, + error: undefined, + isLiquidatable: false, + warnings: [], + quoteRefreshPaused: false, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: null, + quoteTimerPausedAccumMs: 0, + } + : {}), + }); trackingHandlers.trackInputChange(SwapInputChanges.ORDER_TYPE, orderType.toString()); }} /> @@ -140,6 +164,16 @@ export const BaseSwapModalContent = ({ trackingHandlers={trackingHandlers} /> + {/* Show provider and validation errors early when flow is not yet selected */} + {!state.isSwapFlowSelected && ( + + )} + {/* Show details, warnings, and actions only if the swap flow is selected. This is particularly useful for Adapers where the swap may be via flashloan or not. @@ -158,6 +192,7 @@ export const BaseSwapModalContent = ({ setState={setState} // allows bypassing warnings /> + {/* Keep original ordering: errors appear after post-input warnings, before actions */} getFilteredTokensForSwitch(chainId), [chainId]); + const reserves = useAppDataContext().reserves; const { data: initialTokens, @@ -36,6 +38,10 @@ export const SwapModalContent = ({ const swappableTokens = initialTokens ?.map((token) => { + const reserve = reserves.find( + (reserve) => reserve.underlyingAsset.toLowerCase() === token.address.toLowerCase() + ); + return { addressToSwap: token.address, addressForUsdPrice: token.address, @@ -45,7 +51,9 @@ export const SwapModalContent = ({ name: token.name, balance: token.balance, chainId, - logoURI: token.logoURI, + logoURI: reserve?.iconSymbol + ? `/icons/tokens/${reserve.iconSymbol.toLowerCase()}.svg` + : token.logoURI, tokenType: token.extensions?.isNative ? TokenType.NATIVE : TokenType.ERC20, }; }) From 9114bb433a5e62a92350096de448bc169ad56dcd Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Tue, 4 Nov 2025 12:04:44 -0300 Subject: [PATCH 14/66] fix: use release versions for cow dps --- .npmrc | 4 - package.json | 8 +- .../CollateralSwapActionsViaCoWAdapters.tsx | 2 +- .../DebtSwap/DebtSwapActionsViaCoW.tsx | 2 +- .../RepayWithCollateralActionsViaCoW.tsx | 2 +- .../SwapActions/SwapActionsViaParaswap.tsx | 9 +- .../Swap/helpers/cow/adapters.helpers.ts | 2 +- .../Swap/helpers/cow/orders.helpers.ts | 2 +- .../Swap/modals/result/SwapResultView.tsx | 6 +- yarn.lock | 160 +++++++++--------- 10 files changed, 94 insertions(+), 103 deletions(-) delete mode 100644 .npmrc diff --git a/.npmrc b/.npmrc deleted file mode 100644 index be745c5382..0000000000 --- a/.npmrc +++ /dev/null @@ -1,4 +0,0 @@ -@cowprotocol:registry=https://npm.pkg.github.com -always-auth=true -# registry=https://registry.npmjs.org/ -//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN} diff --git a/package.json b/package.json index 5552f2f4bc..a8afc96d01 100644 --- a/package.json +++ b/package.json @@ -35,10 +35,10 @@ "@aave/math-utils": "1.36.1", "@aave/react": "0.6.1", "@amplitude/analytics-browser": "^2.13.0", - "@cowprotocol/sdk-app-data": "4.1.4-pr-624-30de7ad4.0", - "@cowprotocol/cow-sdk": "7.0.11-pr-624-30de7ad4.0", - "@cowprotocol/sdk-flash-loans": "1.1.0-pr-624-30de7ad4.0", - "@cowprotocol/sdk-viem-adapter": "0.1.3-pr-624-30de7ad4.0", + "@cowprotocol/sdk-app-data": "4.1.5", + "@cowprotocol/cow-sdk": "7.0.13", + "@cowprotocol/sdk-flash-loans": "1.1.2", + "@cowprotocol/sdk-viem-adapter": "0.2.0", "@bgd-labs/aave-address-book": "^4.36.0", "@emotion/cache": "11.10.3", "@emotion/react": "11.10.4", diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx index 30d405986b..01de2a1815 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx @@ -178,7 +178,7 @@ export const CollateralSwapActionsViaCowAdapters = ({ from: user, networkCostsAmount: '0', isEthFlow: false, - applyQuoteAdjustments: false, + applyCostsSlippageAndFees: false, }, limitOrder, HASH_ZERO diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index f66eb89796..18af561f9a 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -184,7 +184,7 @@ export const DebtSwapActionsViaCoW = ({ from: user, networkCostsAmount: '0', isEthFlow: false, - applyQuoteAdjustments: false, + applyCostsSlippageAndFees: false, }, limitOrder, HASH_ZERO diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx index 63984fc063..6500473d92 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -183,7 +183,7 @@ export const RepayWithCollateralActionsViaCoW = ({ from: user, networkCostsAmount: '0', isEthFlow: false, - applyQuoteAdjustments: false, + applyCostsSlippageAndFees: false, }, limitOrder, HASH_ZERO diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx index cc5cb55c73..18a3a2753c 100644 --- a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx @@ -1,5 +1,5 @@ import { Trans } from '@lingui/macro'; -import { Dispatch, useEffect } from 'react'; +import { Dispatch } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; import { useParaswapSellTxParams } from 'src/hooks/paraswap/useParaswapRates'; import { useModalContext } from 'src/hooks/useModal'; @@ -177,13 +177,6 @@ export const SwapActionsViaParaswap = ({ } }; - // Track execution state to pause rate updates during actions - useEffect(() => { - const isExecuting = mainTxState.loading || approvalTxState.loading; - - setState({ actionsLoading: isExecuting }); - }, [mainTxState.loading, approvalTxState.loading, state.actionsLoading]); - return ( ('open'); const [surplus, setSurplus] = useState(undefined); - const [inAmount, setInAmount] = useState(amount); - const [outFinalAmount, setOutFinalAmount] = useState(outAmount); + const [inAmount, setInAmount] = useState(!isInvertedSwap ? amount : outAmount); + const [outFinalAmount, setOutFinalAmount] = useState( + !isInvertedSwap ? outAmount : amount + ); // Market for chain id const networkConfig = networkConfigs[chainId].explorerLink; diff --git a/yarn.lock b/yarn.lock index f7578490af..a0b0bfcc7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1380,104 +1380,104 @@ dependencies: chalk "^4.1.0" -"@cowprotocol/cow-sdk@7.0.11-pr-624-30de7ad4.0": - version "7.0.11-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/cow-sdk/7.0.11-pr-624-30de7ad4.0/7dfe1fa7e26118fdaa97f843c80491209fe91dd3#7dfe1fa7e26118fdaa97f843c80491209fe91dd3" - integrity sha512-thun1M+QdoYIu6Xe2NIqr/IIrNndX5L8UgQZVUBNvfUMFJlhD/cv74dXtkTI/LKPvAO0iqes53cuo2zqR91mEA== - dependencies: - "@cowprotocol/sdk-app-data" "4.1.4-pr-624-30de7ad4.0" - "@cowprotocol/sdk-common" "0.2.2-pr-624-30de7ad4.0" - "@cowprotocol/sdk-config" "0.2.0-pr-624-30de7ad4.0" - "@cowprotocol/sdk-contracts-ts" "0.4.1-pr-624-30de7ad4.0" - "@cowprotocol/sdk-order-book" "0.1.3-pr-624-30de7ad4.0" - "@cowprotocol/sdk-order-signing" "0.1.7-pr-624-30de7ad4.0" - "@cowprotocol/sdk-trading" "0.4.2-pr-624-30de7ad4.0" - -"@cowprotocol/sdk-app-data@4.1.4-pr-624-30de7ad4.0": - version "4.1.4-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-app-data/4.1.4-pr-624-30de7ad4.0/ffd8f1dc5cb88016ae5b8431cb7a6d4ee75c6618#ffd8f1dc5cb88016ae5b8431cb7a6d4ee75c6618" - integrity sha512-pc7jUOl7AY3+bBbwWs4UGR195+rmayZ0iqDF6SuvCTYjUgmxMySjncGjD5O2GTI3l+8tX2SRePt9zbARq5pTcQ== - dependencies: - "@cowprotocol/sdk-common" "0.2.2-pr-624-30de7ad4.0" +"@cowprotocol/cow-sdk@7.0.13": + version "7.0.13" + resolved "https://registry.yarnpkg.com/@cowprotocol/cow-sdk/-/cow-sdk-7.0.13.tgz#d5740ad5001e9136d422c30beb8c98bd22acedc6" + integrity sha512-7Y2WBmZx4+iPXtqJdtvdZ9uN6mh8Mx+IcwHJPruGIc8HZfE4dN94K0xP5A+CqKe2DkO3rcdst7RNmtYyvCi2Jg== + dependencies: + "@cowprotocol/sdk-app-data" "4.1.5" + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.2.0" + "@cowprotocol/sdk-contracts-ts" "0.4.3" + "@cowprotocol/sdk-order-book" "0.1.4" + "@cowprotocol/sdk-order-signing" "0.1.9" + "@cowprotocol/sdk-trading" "0.4.4" + +"@cowprotocol/sdk-app-data@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-app-data/-/sdk-app-data-4.1.5.tgz#b56c81ab4c8e5bb783f7f75e34b87c7ba68f5be7" + integrity sha512-270J3fwpGCcLOxJS8DWx17XBNuH4h9eMKjZ3GVpxqvjukmhuofqWblIiY8WhY1St5xM8f2zqMuaVhuAem/znCQ== + dependencies: + "@cowprotocol/sdk-common" "0.3.0" ajv "^8.11.0" cross-fetch "^3.1.5" ipfs-only-hash "^4.0.0" json-stringify-deterministic "^1.0.8" multiformats "^9.6.4" -"@cowprotocol/sdk-common@0.2.2-pr-624-30de7ad4.0": - version "0.2.2-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-common/0.2.2-pr-624-30de7ad4.0/ba9c8979951d1dd9c1825f708509cfe1214ccaa2#ba9c8979951d1dd9c1825f708509cfe1214ccaa2" - integrity sha512-yef9DNobF4gmXqZ9hpMoNNG6m8cneXchanI1rJG2iUvmown6N31kzVx/92bW05rwGncSEeUaxpS3egp0YvKBNA== +"@cowprotocol/sdk-common@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-common/-/sdk-common-0.3.0.tgz#f03a5e36d67d0c5cdb6be5bd7ceda879b751542d" + integrity sha512-xk2VUjO4+XI5968r1pYFbqUxM2nmBcVPvGIw0pcqDpx4OLef0Flr3tuHtZY42RYYa6nNsNKOBV9Jd4RauYUOgQ== -"@cowprotocol/sdk-config@0.2.0-pr-624-30de7ad4.0": - version "0.2.0-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-config/0.2.0-pr-624-30de7ad4.0/9b40479062412553d87637501951e38d9e4af063#9b40479062412553d87637501951e38d9e4af063" - integrity sha512-Ik339G92xzt0jWFOA8K+t2iMJxdGIIG5njjILfaGuDUE4DposmOGLyMuzvEw7xNbLGF3523lNWv8RPL8Ge0/vQ== +"@cowprotocol/sdk-config@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-config/-/sdk-config-0.2.0.tgz#c35da2c1a6fec9b4c2f81718d049926e7f4a1689" + integrity sha512-MbmDE983ryWj08alezgsnpq1bcDnJ/3S3Q+ZYCNzqL+Oe3llteU1ewUn9tj+W48KqlsINITDZg3eOGowrUzxlQ== dependencies: exponential-backoff "^3.1.1" limiter "^2.1.0" -"@cowprotocol/sdk-contracts-ts@0.4.1-pr-624-30de7ad4.0": - version "0.4.1-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-contracts-ts/0.4.1-pr-624-30de7ad4.0/1707e835c94a7cd3881640c0bcf1899a47f235e7#1707e835c94a7cd3881640c0bcf1899a47f235e7" - integrity sha512-CasMR5PhA+FiJtfWCLG0n0AtlFGyV4fApfzf2zCTfII3Gdw09fZi5NORT4BL0NBQ9dbNLmRNxQUJAyIstX18vQ== - dependencies: - "@cowprotocol/sdk-common" "0.2.2-pr-624-30de7ad4.0" - "@cowprotocol/sdk-config" "0.2.0-pr-624-30de7ad4.0" - -"@cowprotocol/sdk-flash-loans@1.1.0-pr-624-30de7ad4.0": - version "1.1.0-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-flash-loans/1.1.0-pr-624-30de7ad4.0/cf12224565fa5b0f8bcfa797b22804009fc44763#cf12224565fa5b0f8bcfa797b22804009fc44763" - integrity sha512-5OMhVCx/RWedxubHDdr15Iw7Gl08u2IH5OXVmlpSYjey47mUncHGA0H4ci2aSSqCurKu4JK9o6pthH2NePReUQ== - dependencies: - "@cowprotocol/sdk-app-data" "4.1.4-pr-624-30de7ad4.0" - "@cowprotocol/sdk-common" "0.2.2-pr-624-30de7ad4.0" - "@cowprotocol/sdk-config" "0.2.0-pr-624-30de7ad4.0" - "@cowprotocol/sdk-order-book" "0.1.3-pr-624-30de7ad4.0" - "@cowprotocol/sdk-order-signing" "0.1.7-pr-624-30de7ad4.0" - "@cowprotocol/sdk-trading" "0.4.2-pr-624-30de7ad4.0" - -"@cowprotocol/sdk-order-book@0.1.3-pr-624-30de7ad4.0": - version "0.1.3-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-order-book/0.1.3-pr-624-30de7ad4.0/401dfd6f6dedcab013e9a0d5727b21c367247d9c#401dfd6f6dedcab013e9a0d5727b21c367247d9c" - integrity sha512-O0j11JmU5D3A7ZLCqH5IPVMiqLNSjpmsQ+TxWDfa61fAGcrbt8OqfAInkZIA7lyHDdQeBDona/KGOJ8CG5M0YQ== - dependencies: - "@cowprotocol/sdk-common" "0.2.2-pr-624-30de7ad4.0" - "@cowprotocol/sdk-config" "0.2.0-pr-624-30de7ad4.0" +"@cowprotocol/sdk-contracts-ts@0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-contracts-ts/-/sdk-contracts-ts-0.4.3.tgz#8e1c6c252d66361d26a69253c1160ae9b4b1dc52" + integrity sha512-KcrLK0TtTPuPU/QTwwf0bo+Dk/9E3m0IfFHXeClcz/AnmldcvDYtk71gg1TdKb85SXLZqBgBp2I9sZV7dBNX8w== + dependencies: + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.2.0" + +"@cowprotocol/sdk-flash-loans@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-flash-loans/-/sdk-flash-loans-1.1.2.tgz#d719929bd6276ba6dc8ca1fb273eb17d7925c06f" + integrity sha512-3ogXwRyfmLgSShwtqBAA2zMXoW7XGmJTp+OArUZlcZ2Z+lhL3YhZE9JamRCF8czoE12iSObmeTovH9OdSVRcwg== + dependencies: + "@cowprotocol/sdk-app-data" "4.1.5" + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.2.0" + "@cowprotocol/sdk-order-book" "0.1.4" + "@cowprotocol/sdk-order-signing" "0.1.9" + "@cowprotocol/sdk-trading" "0.4.4" + +"@cowprotocol/sdk-order-book@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-book/-/sdk-order-book-0.1.4.tgz#29f811147869aefc5077f01e052cc9f86a64e431" + integrity sha512-H6mmV4UxVILS85n1B7Xxb0wccfBs9AipGsKRrEgcuddaYVIi1Y4R9Psea5KylBRm1k2JJu7gMZjfusTnvDncZA== + dependencies: + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.2.0" cross-fetch "^3.2.0" exponential-backoff "^3.1.2" limiter "^3.0.0" -"@cowprotocol/sdk-order-signing@0.1.7-pr-624-30de7ad4.0": - version "0.1.7-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-order-signing/0.1.7-pr-624-30de7ad4.0/f62a46e28239173784bda41abdcd419f1cad3225#f62a46e28239173784bda41abdcd419f1cad3225" - integrity sha512-DP7QxTAB90ydYT3nv1N7o9AMuzFKgba6Q++LjJCpXnQi6ZmqSl4efzl7SF/CPMSGrWqI+28DT0XX91e8d9wbaw== - dependencies: - "@cowprotocol/sdk-common" "0.2.2-pr-624-30de7ad4.0" - "@cowprotocol/sdk-config" "0.2.0-pr-624-30de7ad4.0" - "@cowprotocol/sdk-contracts-ts" "0.4.1-pr-624-30de7ad4.0" - "@cowprotocol/sdk-order-book" "0.1.3-pr-624-30de7ad4.0" - -"@cowprotocol/sdk-trading@0.4.2-pr-624-30de7ad4.0": - version "0.4.2-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-trading/0.4.2-pr-624-30de7ad4.0/41a29aa4fad120b5847d8e783ed0f87539bfecd7#41a29aa4fad120b5847d8e783ed0f87539bfecd7" - integrity sha512-5tIwDhe9sBErYM0lfV5D4MnLp0ljGvxE5KI+O+wkMPglMy0k+7IPOpeFTPZRfhLXBoHpxf11yqJ66pzJXWeKMQ== - dependencies: - "@cowprotocol/sdk-app-data" "4.1.4-pr-624-30de7ad4.0" - "@cowprotocol/sdk-common" "0.2.2-pr-624-30de7ad4.0" - "@cowprotocol/sdk-config" "0.2.0-pr-624-30de7ad4.0" - "@cowprotocol/sdk-contracts-ts" "0.4.1-pr-624-30de7ad4.0" - "@cowprotocol/sdk-order-book" "0.1.3-pr-624-30de7ad4.0" - "@cowprotocol/sdk-order-signing" "0.1.7-pr-624-30de7ad4.0" +"@cowprotocol/sdk-order-signing@0.1.9": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-signing/-/sdk-order-signing-0.1.9.tgz#4b07997af5d712fbe16c32d3017a99119e83f7bd" + integrity sha512-rLyMURS7O0MYB2bU3Z8rYsc+Vo1AIS4PvrIX1/PlAKiyN2aRU4wxnwoG7aj5sxdB1PZMy01rFMLTRknfJqz7BQ== + dependencies: + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.2.0" + "@cowprotocol/sdk-contracts-ts" "0.4.3" + "@cowprotocol/sdk-order-book" "0.1.4" + +"@cowprotocol/sdk-trading@0.4.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-trading/-/sdk-trading-0.4.4.tgz#340a394eda85509b23f97ed3b1258af204d90cf4" + integrity sha512-BcCaGyefFTNJkEGiZK/9w86gb4jQ8ZhZDNuiKTiKpjr2VBSc+ps5YrOp7iCbaaU9A6JWUwe29DRql/6cnwZ1vA== + dependencies: + "@cowprotocol/sdk-app-data" "4.1.5" + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.2.0" + "@cowprotocol/sdk-contracts-ts" "0.4.3" + "@cowprotocol/sdk-order-book" "0.1.4" + "@cowprotocol/sdk-order-signing" "0.1.9" deepmerge "^4.3.1" -"@cowprotocol/sdk-viem-adapter@0.1.3-pr-624-30de7ad4.0": - version "0.1.3-pr-624-30de7ad4.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-viem-adapter/0.1.3-pr-624-30de7ad4.0/2a67b2aadba580434346fae5646eaf3dd575ebbe#2a67b2aadba580434346fae5646eaf3dd575ebbe" - integrity sha512-WjMJFbvL1qUTgYGaV7j8OeWahY4N+E0pGQZThVU3lJU+GQKtS1GDV++Brsw41ptXVIKNEOHAIzttcBu/1r1G/w== +"@cowprotocol/sdk-viem-adapter@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-viem-adapter/-/sdk-viem-adapter-0.2.0.tgz#5b155a2d7eceb9d6205b3db47b1e71951b4dea19" + integrity sha512-7bn2606tLmGba/sQfJYpxniU+Ztn/eKUABi8VVcE7JYaiCaDF5SbWd6i6E1/3LBSd3VoSJq/b77a5aU5g8fkrg== dependencies: - "@cowprotocol/sdk-common" "0.2.2-pr-624-30de7ad4.0" + "@cowprotocol/sdk-common" "0.3.0" "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From d84b5643281cc43525ad9990a8b556c7cd47dff8 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Tue, 4 Nov 2025 17:56:53 -0300 Subject: [PATCH 15/66] misc fixes --- .../CollateralSwapActionsViaCoWAdapters.tsx | 10 +- .../DebtSwap/DebtSwapActionsViaCoW.tsx | 10 +- .../RepayWithCollateralActionsViaCoW.tsx | 10 +- .../transactions/Swap/errors/SwapErrors.tsx | 25 ++++ .../InsufficientLiquidityBlockingError.tsx | 23 +++ .../InsufficientLiquidityBlockingGuard.tsx | 81 +++++++++++ .../errors/shared/SupplyCapBlockingError.tsx | 23 +++ .../errors/shared/SupplyCapBlockingGuard.tsx | 74 ++++++++++ .../Swap/helpers/cow/adapters.helpers.ts | 137 ++++++++++++++++++ .../Swap/helpers/cow/orders.helpers.ts | 32 +++- .../Swap/helpers/cow/rates.helpers.ts | 44 ++++-- .../Swap/hooks/useSwapOrderAmounts.ts | 36 ++++- .../transactions/Swap/hooks/useSwapQuote.ts | 39 +++-- .../transactions/Swap/types/quote.types.ts | 3 +- 14 files changed, 516 insertions(+), 31 deletions(-) create mode 100644 src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingError.tsx create mode 100644 src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingGuard.tsx create mode 100644 src/components/transactions/Swap/errors/shared/SupplyCapBlockingError.tsx create mode 100644 src/components/transactions/Swap/errors/shared/SupplyCapBlockingGuard.tsx diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx index 01de2a1815..a491aa231d 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx @@ -14,7 +14,11 @@ import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; -import { getCowFlashLoanSdk, getCowTradingSdkByChainIdAndAppCode } from '../../helpers/cow'; +import { + addOrderTypeToAppData, + getCowFlashLoanSdk, + getCowTradingSdkByChainIdAndAppCode, +} from '../../helpers/cow'; import { calculateInstanceAddress } from '../../helpers/cow/adapters.helpers'; import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; import { ExpiryToSecondsMap, SwapParams, SwapState } from '../../types'; @@ -200,6 +204,10 @@ export const CollateralSwapActionsViaCowAdapters = ({ } ); + orderPostParams.swapSettings.appData = addOrderTypeToAppData( + state.orderType, + orderPostParams.swapSettings.appData + ); const result = await tradingSdk.postLimitOrder(limitOrder, orderPostParams.swapSettings); trackingHandlers.trackSwap(); diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index 18af561f9a..5501cc1c00 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -15,7 +15,11 @@ import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; -import { getCowFlashLoanSdk, getCowTradingSdkByChainIdAndAppCode } from '../../helpers/cow'; +import { + addOrderTypeToAppData, + getCowFlashLoanSdk, + getCowTradingSdkByChainIdAndAppCode, +} from '../../helpers/cow'; import { calculateInstanceAddress } from '../../helpers/cow/adapters.helpers'; import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; import { ExpiryToSecondsMap, isProtocolSwapState, SwapParams, SwapState } from '../../types'; @@ -206,6 +210,10 @@ export const DebtSwapActionsViaCoW = ({ } ); + orderPostParams.swapSettings.appData = addOrderTypeToAppData( + state.orderType, + orderPostParams.swapSettings.appData + ); const result = await tradingSdk.postLimitOrder(limitOrder, orderPostParams.swapSettings); trackingHandlers.trackSwap(); diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx index 6500473d92..6a2fd00108 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -14,7 +14,11 @@ import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; -import { getCowFlashLoanSdk, getCowTradingSdkByChainIdAndAppCode } from '../../helpers/cow'; +import { + addOrderTypeToAppData, + getCowFlashLoanSdk, + getCowTradingSdkByChainIdAndAppCode, +} from '../../helpers/cow'; import { calculateInstanceAddress } from '../../helpers/cow/adapters.helpers'; import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; import { ExpiryToSecondsMap, SwapParams, SwapState } from '../../types'; @@ -205,6 +209,10 @@ export const RepayWithCollateralActionsViaCoW = ({ } ); + orderPostParams.swapSettings.appData = addOrderTypeToAppData( + state.orderType, + orderPostParams.swapSettings.appData + ); const result = await tradingSdk.postLimitOrder(limitOrder, orderPostParams.swapSettings); trackingHandlers.trackSwap(); diff --git a/src/components/transactions/Swap/errors/SwapErrors.tsx b/src/components/transactions/Swap/errors/SwapErrors.tsx index bffad00b65..f578218629 100644 --- a/src/components/transactions/Swap/errors/SwapErrors.tsx +++ b/src/components/transactions/Swap/errors/SwapErrors.tsx @@ -18,6 +18,11 @@ import { import { ProviderError } from './shared/ProviderError'; import { hasUserDenied, UserDenied } from './shared/UserDenied'; import { hasZeroLTVBlocking, ZeroLTVBlockingGuard } from './shared/ZeroLTVBlockingGuard'; +import { + hasInsufficientLiquidity, + InsufficientLiquidityBlockingGuard, +} from './shared/InsufficientLiquidityBlockingGuard'; +import { hasSupplyCapBlocking, SupplyCapBlockingGuard } from './shared/SupplyCapBlockingGuard'; export const SwapErrors = ({ state, @@ -84,6 +89,26 @@ export const SwapErrors = ({ ); } + if (isProtocolSwapState(state) && hasSupplyCapBlocking(state)) { + return ( + + ); + } + + if (isProtocolSwapState(state) && hasInsufficientLiquidity(state)) { + return ( + + ); + } + if (!state.error) { return null; } diff --git a/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingError.tsx b/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingError.tsx new file mode 100644 index 0000000000..2b2eafa396 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingError.tsx @@ -0,0 +1,23 @@ +import { Trans } from '@lingui/macro'; +import { SxProps, Typography } from '@mui/material'; +import { Warning } from 'src/components/primitives/Warning'; + +export const InsufficientLiquidityBlockingError = ({ + symbol, + sx, +}: { + symbol: string; + sx?: SxProps; +}) => { + return ( + + + + There is not enough liquidity in {symbol} to complete this swap. Try lowering the amount. + + + + ); +}; + + diff --git a/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingGuard.tsx b/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingGuard.tsx new file mode 100644 index 0000000000..cd9e1541e7 --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingGuard.tsx @@ -0,0 +1,81 @@ +import { valueToBigNumber } from '@aave/math-utils'; +import BigNumber from 'bignumber.js'; +import { ethers } from 'ethers'; +import { SxProps } from '@mui/material'; +import { Dispatch, useEffect } from 'react'; + +import { ProtocolSwapState, SwapError, SwapState } from '../../types'; +import { InsufficientLiquidityBlockingError } from './InsufficientLiquidityBlockingError'; + +export const hasInsufficientLiquidity = (state: SwapState) => { + if (!('destinationReserve' in state)) return false; + const protocolState = state as ProtocolSwapState; + const reserve = protocolState.destinationReserve?.reserve; + const buyAmount = protocolState.buyAmountFormatted; + if (!reserve || !buyAmount) return false; + + const availableBorrowCap = + reserve.borrowCap === '0' + ? valueToBigNumber(ethers.constants.MaxUint256.toString()) + : valueToBigNumber(reserve.borrowCap).minus(valueToBigNumber(reserve.totalDebt)); + const availableLiquidity = BigNumber.max( + BigNumber.min(valueToBigNumber(reserve.formattedAvailableLiquidity), availableBorrowCap), + 0 + ); + + return valueToBigNumber(buyAmount).gt(availableLiquidity); +}; + +export const InsufficientLiquidityBlockingGuard = ({ + state, + setState, + sx, + isSwapFlowSelected, +}: { + state: ProtocolSwapState; + setState: Dispatch>; + sx?: SxProps; + isSwapFlowSelected: boolean; +}) => { + useEffect(() => { + const isBlocking = hasInsufficientLiquidity(state); + + if (isBlocking) { + const isAlreadyBlockingError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'InsufficientLiquidityError'; + + if (!isAlreadyBlockingError || !state.actionsBlocked) { + const blockingError: SwapError = { + rawError: new Error('InsufficientLiquidityError'), + message: 'Not enough liquidity in target asset to complete the swap.', + actionBlocked: true, + }; + setState({ error: blockingError, actionsBlocked: true }); + } + } else { + const isBlockingError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'InsufficientLiquidityError'; + if (isBlockingError) { + setState({ error: undefined, actionsBlocked: false }); + } else if (state.actionsBlocked && !state.error?.actionBlocked) { + setState({ actionsBlocked: false }); + } + } + }, [state.buyAmountFormatted, state.destinationReserve?.reserve?.formattedAvailableLiquidity]); + + if (hasInsufficientLiquidity(state)) { + const symbol = state.destinationReserve?.reserve?.symbol || ''; + return ( + + ); + } + + return null; +}; + + diff --git a/src/components/transactions/Swap/errors/shared/SupplyCapBlockingError.tsx b/src/components/transactions/Swap/errors/shared/SupplyCapBlockingError.tsx new file mode 100644 index 0000000000..172442bede --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/SupplyCapBlockingError.tsx @@ -0,0 +1,23 @@ +import { Trans } from '@lingui/macro'; +import { SxProps, Typography } from '@mui/material'; +import { Warning } from 'src/components/primitives/Warning'; + +export const SupplyCapBlockingError = ({ + symbol, + sx, +}: { + symbol: string; + sx?: SxProps; +}) => { + return ( + + + + Supply cap reached for {symbol}. Reduce the amount or choose a different asset. + + + + ); +}; + + diff --git a/src/components/transactions/Swap/errors/shared/SupplyCapBlockingGuard.tsx b/src/components/transactions/Swap/errors/shared/SupplyCapBlockingGuard.tsx new file mode 100644 index 0000000000..3dc887601c --- /dev/null +++ b/src/components/transactions/Swap/errors/shared/SupplyCapBlockingGuard.tsx @@ -0,0 +1,74 @@ +import { valueToBigNumber } from '@aave/math-utils'; +import { SxProps } from '@mui/material'; +import { Dispatch, useEffect } from 'react'; + +import { ProtocolSwapState, SwapError, SwapState } from '../../types'; +import { SupplyCapBlockingError } from './SupplyCapBlockingError'; + +export const hasSupplyCapBlocking = (state: SwapState) => { + if (!('destinationReserve' in state)) return false; + const protocolState = state as ProtocolSwapState; + const reserve = protocolState.destinationReserve?.reserve; + const buyAmount = protocolState.buyAmountFormatted; + if (!reserve || !buyAmount) return false; + + if (reserve.supplyCap === '0') return false; + + const remainingCap = valueToBigNumber(reserve.supplyCap).minus( + valueToBigNumber(reserve.totalLiquidity) + ); + + // If remaining cap is exhausted or the intended buy exceeds remaining, block + return remainingCap.lte(0) || valueToBigNumber(buyAmount).gt(remainingCap); +}; + +export const SupplyCapBlockingGuard = ({ + state, + setState, + sx, + isSwapFlowSelected, +}: { + state: ProtocolSwapState; + setState: Dispatch>; + sx?: SxProps; + isSwapFlowSelected: boolean; +}) => { + useEffect(() => { + const isBlocking = hasSupplyCapBlocking(state); + + if (isBlocking) { + const isAlreadyBlockingError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'SupplyCapBlockingError'; + + if (!isAlreadyBlockingError || !state.actionsBlocked) { + const blockingError: SwapError = { + rawError: new Error('SupplyCapBlockingError'), + message: 'Supply cap reached for target asset.', + actionBlocked: true, + }; + setState({ error: blockingError, actionsBlocked: true }); + } + } else { + const isBlockingError = + state.error?.rawError instanceof Error && + state.error.rawError.message === 'SupplyCapBlockingError'; + if (isBlockingError) { + setState({ error: undefined, actionsBlocked: false }); + } else if (state.actionsBlocked && !state.error?.actionBlocked) { + setState({ actionsBlocked: false }); + } + } + }, [state.buyAmountFormatted, state.destinationReserve?.reserve?.totalLiquidity]); + + if (hasSupplyCapBlocking(state)) { + const symbol = state.destinationReserve?.reserve?.symbol || ''; + return ( + + ); + } + + return null; +}; + + diff --git a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts index e8d3a8d0f8..787aea13ad 100644 --- a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts @@ -1,16 +1,25 @@ import { + AppDataParams, + // AppDataRootSchema, getOrderToSign, LimitTradeParameters, OrderKind, OrderSigningUtils, + SupportedChainId, } from '@cowprotocol/cow-sdk'; import { + AAVE_ADAPTER_FACTORY, + AAVE_POOL_ADDRESS, AaveCollateralSwapSdk, AaveFlashLoanType, + DEFAULT_HOOK_GAS_LIMIT, EncodedOrder, + FlashLoanHint, FlashLoanHookAmounts, HASH_ZERO, } from '@cowprotocol/sdk-flash-loans'; +// import { normalize } from '@aave/math-utils'; +import { zeroAddress } from 'viem'; import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; import { SwapProvider, SwapState, SwapType } from '../../types'; @@ -131,3 +140,131 @@ export const calculateFlashLoanAmounts = ( finalSellAmount: sellAmountToSign, }; }; + +/** + * This helper function is used to get the app data for a quote from the CowSwap API when adapters are used + * The goal is to let the solvers know that a flash loan is being used so the quote contemplates the higher gas costs + * and therefore the quote is more precise and more chances of being executed + * It's important to send the hooks and flashloan hint but not the exact amounts that will be used in the final + */ +export const getAppDataForQuote = async ({ + // user, + type, + amount, + chainId, + srcToken, +}: // srcDecimals, +// destToken, +// destDecimals, +{ + user: string; + type: SwapType; + amount: string; + chainId: SupportedChainId; + srcToken: string; + srcDecimals: number; + destToken: string; + destDecimals: number; +}): Promise => { + if (type === SwapType.Swap || type === SwapType.WithdrawAndSwap) { + return undefined; // no flashloan needed - plain swap + } + + // const flashLoanSdk = new AaveCollateralSwapSdk(); + // const { flashLoanFeeAmount, sellAmountToSign } = flashLoanSdk.calculateFlashLoanAmounts({ + // sellAmount: BigInt(normalize(amount, -srcDecimals)), + // flashLoanFeeBps: FLASH_LOAN_FEE_BPS, + // }); + + // let cowType: AaveFlashLoanType; + // if (type === SwapType.CollateralSwap) { + // cowType = AaveFlashLoanType.CollateralSwap; + // } else if (type === SwapType.DebtSwap) { + // cowType = AaveFlashLoanType.DebtSwap; + // } else if(type === SwapType.RepayWithCollateral) { + // cowType = AaveFlashLoanType.RepayCollateral; + // } else { + // throw new Error('Invalid swap type'); + // } + + // const hookAmounts: FlashLoanHookAmounts = { + // flashLoanAmount: amount, + // flashLoanFeeAmount: flashLoanFeeAmount.toString(), + // sellAssetAmount: sellAmountToSign.toString(), + // buyAssetAmount: amount, + // } + + const flashloan: FlashLoanHint = { + amount, // this is actually in UNDERLYING but aave tokens are 1:1 + receiver: AAVE_ADAPTER_FACTORY[chainId], + liquidityProvider: AAVE_POOL_ADDRESS[chainId], + protocolAdapter: AAVE_ADAPTER_FACTORY[chainId], + token: srcToken, + }; + + // const limitOrder: LimitTradeParameters = { + // kind: OrderKind.SELL, + // sellToken: srcToken, + // sellTokenDecimals: srcDecimals, + // buyToken: destToken, + // buyTokenDecimals: destDecimals, + // sellAmount: normalize(amount, -srcDecimals).toString(), + // buyAmount: amount, + // } + + // const orderToSign = getOrderToSign( + // { + // chainId, + // from: user, + // networkCostsAmount: '0', + // isEthFlow: false, + // applyCostsSlippageAndFees: false, + // }, + // limitOrder, + // HASH_ZERO + // ); + + // const encodedOrder: EncodedOrder = { + // ...OrderSigningUtils.encodeUnsignedOrder(orderToSign), + // appData: HASH_ZERO, + // } + + // const hooks = await getOrderHooks( + // cowType, + // chainId, + // user as `0x${string}`, + // zeroAddress, + // hookAmounts, + // { + // ...encodedOrder, + // receiver: zeroAddress, + // }, + // ); + + // TODO: send proper calldatas when available so solvers can properly simulate + const hooks = { + pre: [ + { + target: AAVE_ADAPTER_FACTORY[chainId], + callData: '0x', + gasLimit: DEFAULT_HOOK_GAS_LIMIT.pre.toString(), + dappId: '', + }, + ], + post: [ + { + target: zeroAddress, + callData: '0x', + gasLimit: DEFAULT_HOOK_GAS_LIMIT.post.toString(), + dappId: '', + }, + ], + }; + + return { + metadata: { + flashloan, + hooks, + }, + }; +}; diff --git a/src/components/transactions/Swap/helpers/cow/orders.helpers.ts b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts index c499ced5b5..82b5c21772 100644 --- a/src/components/transactions/Swap/helpers/cow/orders.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts @@ -2,16 +2,18 @@ import { API_ETH_MOCK_ADDRESS } from '@aave/contract-helpers'; import { BuyTokenDestination, OrderBookApi, + OrderClass, OrderKind, OrderParameters, OrderStatus, + PriceQuality, QuoteAndPost, SellTokenSource, SigningScheme, SupportedChainId, WRAPPED_NATIVE_CURRENCIES, } from '@cowprotocol/cow-sdk'; -import { AnyAppDataDocVersion, MetadataApi } from '@cowprotocol/sdk-app-data'; +import { AnyAppDataDocVersion, AppDataParams, MetadataApi } from '@cowprotocol/sdk-app-data'; import { JsonRpcProvider } from '@ethersproject/providers'; import { BigNumber, ethers, PopulatedTransaction } from 'ethers'; import { isSmartContractWallet } from 'src/helpers/provider'; @@ -23,7 +25,7 @@ import { COW_PROTOCOL_ETH_FLOW_ADDRESS, isChainIdSupportedByCoWProtocol, } from '../../constants/cow.constants'; -import { OrderType } from '../../types'; +import { OrderType, SwapType } from '../../types'; import { getCowTradingSdkByChainIdAndAppCode } from './env.helpers'; const EIP_2612_PERMIT_ABI = [ @@ -481,3 +483,29 @@ export const getPermitHook = async ({ dappId: PERMIT_HOOK_DAPP_ID, }; }; + +export const addOrderTypeToAppData = ( + orderType: OrderType, + appData?: AppDataParams +): AppDataParams => { + return { + ...appData, + metadata: { + ...appData?.metadata, + orderClass: { + orderClass: orderType === OrderType.LIMIT ? OrderClass.LIMIT : OrderClass.MARKET, + }, + }, + }; +}; + +export const priceQualityToUse = (swapType: SwapType) => { + switch (swapType) { + case SwapType.CollateralSwap: + case SwapType.RepayWithCollateral: + case SwapType.DebtSwap: + return PriceQuality.VERIFIED; + default: + return PriceQuality.FAST; + } +}; diff --git a/src/components/transactions/Swap/helpers/cow/rates.helpers.ts b/src/components/transactions/Swap/helpers/cow/rates.helpers.ts index f4d8e42a79..b27eaf48f3 100644 --- a/src/components/transactions/Swap/helpers/cow/rates.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/rates.helpers.ts @@ -11,7 +11,9 @@ import { getNetworkConfig } from 'src/utils/marketsAndNetworksConfig'; import { COW_PARTNER_FEE, isChainIdSupportedByCoWProtocol } from '../../constants/cow.constants'; import { isNativeToken } from '../../helpers/cow'; import { CowProtocolRatesType, ProviderRatesParams, SwapProvider } from '../../types'; +import { getAppDataForQuote } from './adapters.helpers'; import { getCowTradingSdkByChainIdAndAppCode } from './env.helpers'; +import { priceQualityToUse } from './orders.helpers'; export const getTokenUsdPrice = async ( chainId: number, @@ -48,6 +50,7 @@ export async function getCowProtocolSellRates({ destToken, destDecimals, user, + swapType, inputSymbol, outputSymbol, isInputTokenCustom, @@ -89,18 +92,35 @@ export async function getCowProtocolSellRates({ [orderBookQuote, srcTokenPriceUsd, destTokenPriceUsd] = await Promise.all([ tradingSdk - .getQuote({ - owner: user as `0x${string}`, - kind: side === 'buy' ? OrderKind.BUY : OrderKind.SELL, - amount, - sellToken: srcTokenWrapped, - sellTokenDecimals: srcDecimals, - buyToken: destTokenWrapped, - buyTokenDecimals: destDecimals, - signer, - appCode: appCode, - partnerFee: COW_PARTNER_FEE(inputSymbol, outputSymbol), - }) + .getQuote( + { + owner: user as `0x${string}`, + kind: side === 'buy' ? OrderKind.BUY : OrderKind.SELL, + amount, + sellToken: srcTokenWrapped, + sellTokenDecimals: srcDecimals, + buyToken: destTokenWrapped, + buyTokenDecimals: destDecimals, + signer, + appCode: appCode, + partnerFee: COW_PARTNER_FEE(inputSymbol, outputSymbol), + }, + { + quoteRequest: { + priceQuality: priceQualityToUse(swapType), + }, + appData: await getAppDataForQuote({ + user, + type: swapType, + chainId, + amount, + srcToken, + srcDecimals, + destToken, + destDecimals, + }), + } + ) .catch((cowError) => { console.error(cowError); throw new Error(cowError?.body?.errorType); diff --git a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts index 8b81077733..b64758da5d 100644 --- a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts +++ b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts @@ -84,19 +84,33 @@ export const useSwapOrderAmounts = ({ .dividedBy(valueToBigNumber(state.outputAmount)) .toNumber(); - const networkFeeAmountFormattedInSell = isCowProtocolRates(state.swapRate) + let networkFeeAmountFormattedInSell = isCowProtocolRates(state.swapRate) ? normalize( state.swapRate.amountAndCosts.costs.networkFee.amountInSellCurrency.toString(), sellAmountToken.decimals ) : '0'; - const networkFeeAmountFormattedInBuy = isCowProtocolRates(state.swapRate) + let networkFeeAmountFormattedInBuy = isCowProtocolRates(state.swapRate) ? normalize( state.swapRate.amountAndCosts.costs.networkFee.amountInBuyCurrency.toString(), buyAmountToken.decimals ) : '0'; + // Trick waiting for CoW solvers precise hook simulation - TODO: remove once it's solved on CoW's BFF + if ( + state.swapType === SwapType.RepayWithCollateral || + state.swapType === SwapType.DebtSwap || + state.swapType === SwapType.CollateralSwap + ) { + networkFeeAmountFormattedInSell = valueToBigNumber(networkFeeAmountFormattedInSell) + .multipliedBy(3) + .toString(); + networkFeeAmountFormattedInBuy = valueToBigNumber(networkFeeAmountFormattedInBuy) + .multipliedBy(3) + .toString(); + } + if (state.orderType === OrderType.MARKET) { // On a classic sell market order, we send the input amount and receive the amount after partner fees and slippage @@ -162,19 +176,33 @@ export const useSwapOrderAmounts = ({ .dividedBy(valueToBigNumber(state.inputAmount)) .toNumber(); - const networkFeeAmountFormattedInSell = isCowProtocolRates(state.swapRate) + let networkFeeAmountFormattedInSell = isCowProtocolRates(state.swapRate) ? normalize( state.swapRate.amountAndCosts.costs.networkFee.amountInSellCurrency.toString(), sellAmountToken.decimals ) : '0'; - const networkFeeAmountFormattedInBuy = isCowProtocolRates(state.swapRate) + let networkFeeAmountFormattedInBuy = isCowProtocolRates(state.swapRate) ? normalize( state.swapRate.amountAndCosts.costs.networkFee.amountInBuyCurrency.toString(), buyAmountToken.decimals ) : '0'; + // Trick waiting for CoW solvers precise hook simulation - TODO: remove once it's solved on CoW's BFF + if ( + state.swapType === SwapType.RepayWithCollateral || + state.swapType === SwapType.DebtSwap || + state.swapType === SwapType.CollateralSwap + ) { + networkFeeAmountFormattedInSell = valueToBigNumber(networkFeeAmountFormattedInSell) + .multipliedBy(3) + .toString(); + networkFeeAmountFormattedInBuy = valueToBigNumber(networkFeeAmountFormattedInBuy) + .multipliedBy(3) + .toString(); + } + if (state.orderType === OrderType.MARKET) { // on a classic inverted sell market order, we send the output amount and receive the input amount after partner fees and slippage if (marketOrderKind === OrderKind.SELL) { diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index 55b7a2e1d2..ae97e9703f 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -17,6 +17,8 @@ import { SwapType, TokenType, } from '../types'; +import { hasFlashLoanDisabled } from '../errors/shared/FlashLoanDisabledBlockingGuard'; +import { hasInsufficientBalance } from '../errors/shared/InsufficientBalanceGuard'; interface TokenSelectionParams { srcToken: string; @@ -339,6 +341,7 @@ const useMultiProviderSwapQuoteQuery = ({ switch (provider) { case SwapProvider.COW_PROTOCOL: return await getCowProtocolSellRates({ + swapType: state.swapType, chainId: state.chainId, amount, srcToken, @@ -357,6 +360,7 @@ const useMultiProviderSwapQuoteQuery = ({ }); case SwapProvider.PARASWAP: return await getParaswapSellRates({ + swapType: state.swapType, chainId: state.chainId, amount, srcToken, @@ -393,30 +397,47 @@ const useMultiProviderSwapQuoteQuery = ({ ? Number(state.debouncedInputAmount || '0') > 0 : Number(state.debouncedOutputAmount || '0') > 0; + // Basic pre-blockers to avoid provider requests + const isSameTokenPair = + state.sourceToken.addressToSwap === state.destinationToken.addressToSwap; + const isInsufficientBalance = hasInsufficientBalance(state); + const isFlashloanDisabled = hasFlashLoanDisabled(state); + return ( // LIMIT: fetch only once (when no quote yet). MARKET: fetch normally ((state.orderType === OrderType.LIMIT && !state.swapRate) || state.orderType !== OrderType.LIMIT) && hasPositiveUserAmount && + !state.actionsBlocked && + !isSameTokenPair && + !isInsufficientBalance && + !isFlashloanDisabled && !state.mainTxState.success && !state.mainTxState.txHash && // Don't fetch quotes once transaction is sent !state.mainTxState.loading && // Don't fetch quotes while transaction is processing provider !== SwapProvider.NONE && - !state.quoteRefreshPaused + !state.quoteRefreshPaused && + !state.isWrongNetwork ); })(), retry: 0, throwOnError: false, refetchOnWindowFocus: (query) => (query.state.error ? false : true), - refetchInterval: + refetchInterval: (() => { // LIMIT: never refetch periodically after we got the first quote - state.orderType !== OrderType.LIMIT && - !state.actionsLoading && - !state.quoteRefreshPaused && - !state.mainTxState.success && - !state.mainTxState.txHash && // Stop refetching once transaction is sent - !state.mainTxState.loading // Stop refetching while transaction is processing + const isInsufficientBalance = hasInsufficientBalance(state); + const isFlashloanDisabled = hasFlashLoanDisabled(state); + return state.orderType !== OrderType.LIMIT && + !state.actionsLoading && + !state.quoteRefreshPaused && + !state.mainTxState.success && + !state.mainTxState.txHash && + !state.mainTxState.loading && + !state.actionsBlocked && + !isInsufficientBalance && + !isFlashloanDisabled ? QUOTE_REFETCH_INTERVAL - : false, + : false; + })(), }); }; diff --git a/src/components/transactions/Swap/types/quote.types.ts b/src/components/transactions/Swap/types/quote.types.ts index 1856a08d7d..7fd6a84f9e 100644 --- a/src/components/transactions/Swap/types/quote.types.ts +++ b/src/components/transactions/Swap/types/quote.types.ts @@ -2,13 +2,14 @@ import { OrderParameters, QuoteAmountsAndCosts, QuoteAndPost } from '@cowprotoco import { OptimalRate } from '@paraswap/core'; import { TxErrorType } from 'src/ui-config/errorMapping'; -import { SwapProvider } from './shared.types'; +import { SwapProvider, SwapType } from './shared.types'; /** * Parameters required to fetch a quote from a provider. * The module converts from SwapState into this minimal, provider-agnostic shape. */ export type ProviderRatesParams = { + swapType: SwapType; side?: 'buy' | 'sell'; invertedQuoteRoute?: boolean; amount: string; From 14525020dc4019c5ef2ef06b69df24efe0a60dd6 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Tue, 4 Nov 2025 18:05:19 -0300 Subject: [PATCH 16/66] safe checks for reserves --- src/components/transactions/Swap/errors/SwapErrors.tsx | 6 +++--- .../shared/InsufficientLiquidityBlockingError.tsx | 2 -- .../shared/InsufficientLiquidityBlockingGuard.tsx | 6 ++---- .../Swap/errors/shared/SupplyCapBlockingError.tsx | 10 +--------- .../Swap/errors/shared/SupplyCapBlockingGuard.tsx | 2 -- src/components/transactions/Swap/hooks/useSwapQuote.ts | 4 ++-- 6 files changed, 8 insertions(+), 22 deletions(-) diff --git a/src/components/transactions/Swap/errors/SwapErrors.tsx b/src/components/transactions/Swap/errors/SwapErrors.tsx index f578218629..297fe49f1a 100644 --- a/src/components/transactions/Swap/errors/SwapErrors.tsx +++ b/src/components/transactions/Swap/errors/SwapErrors.tsx @@ -15,14 +15,14 @@ import { hasInsufficientBalance, InsufficientBalanceGuard, } from './shared/InsufficientBalanceGuard'; -import { ProviderError } from './shared/ProviderError'; -import { hasUserDenied, UserDenied } from './shared/UserDenied'; -import { hasZeroLTVBlocking, ZeroLTVBlockingGuard } from './shared/ZeroLTVBlockingGuard'; import { hasInsufficientLiquidity, InsufficientLiquidityBlockingGuard, } from './shared/InsufficientLiquidityBlockingGuard'; +import { ProviderError } from './shared/ProviderError'; import { hasSupplyCapBlocking, SupplyCapBlockingGuard } from './shared/SupplyCapBlockingGuard'; +import { hasUserDenied, UserDenied } from './shared/UserDenied'; +import { hasZeroLTVBlocking, ZeroLTVBlockingGuard } from './shared/ZeroLTVBlockingGuard'; export const SwapErrors = ({ state, diff --git a/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingError.tsx b/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingError.tsx index 2b2eafa396..2569c85027 100644 --- a/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingError.tsx +++ b/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingError.tsx @@ -19,5 +19,3 @@ export const InsufficientLiquidityBlockingError = ({ ); }; - - diff --git a/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingGuard.tsx b/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingGuard.tsx index cd9e1541e7..6824180a6d 100644 --- a/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingGuard.tsx +++ b/src/components/transactions/Swap/errors/shared/InsufficientLiquidityBlockingGuard.tsx @@ -1,7 +1,7 @@ import { valueToBigNumber } from '@aave/math-utils'; -import BigNumber from 'bignumber.js'; -import { ethers } from 'ethers'; import { SxProps } from '@mui/material'; +import { BigNumber } from 'bignumber.js'; +import { ethers } from 'ethers'; import { Dispatch, useEffect } from 'react'; import { ProtocolSwapState, SwapError, SwapState } from '../../types'; @@ -77,5 +77,3 @@ export const InsufficientLiquidityBlockingGuard = ({ return null; }; - - diff --git a/src/components/transactions/Swap/errors/shared/SupplyCapBlockingError.tsx b/src/components/transactions/Swap/errors/shared/SupplyCapBlockingError.tsx index 172442bede..f4b2f778d1 100644 --- a/src/components/transactions/Swap/errors/shared/SupplyCapBlockingError.tsx +++ b/src/components/transactions/Swap/errors/shared/SupplyCapBlockingError.tsx @@ -2,13 +2,7 @@ import { Trans } from '@lingui/macro'; import { SxProps, Typography } from '@mui/material'; import { Warning } from 'src/components/primitives/Warning'; -export const SupplyCapBlockingError = ({ - symbol, - sx, -}: { - symbol: string; - sx?: SxProps; -}) => { +export const SupplyCapBlockingError = ({ symbol, sx }: { symbol: string; sx?: SxProps }) => { return ( @@ -19,5 +13,3 @@ export const SupplyCapBlockingError = ({ ); }; - - diff --git a/src/components/transactions/Swap/errors/shared/SupplyCapBlockingGuard.tsx b/src/components/transactions/Swap/errors/shared/SupplyCapBlockingGuard.tsx index 3dc887601c..1ac41ef468 100644 --- a/src/components/transactions/Swap/errors/shared/SupplyCapBlockingGuard.tsx +++ b/src/components/transactions/Swap/errors/shared/SupplyCapBlockingGuard.tsx @@ -70,5 +70,3 @@ export const SupplyCapBlockingGuard = ({ return null; }; - - diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index ae97e9703f..4d461d9fc3 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -5,6 +5,8 @@ import { isTxErrorType, TxErrorType } from 'src/ui-config/errorMapping'; import { queryKeysFactory } from 'src/ui-config/queries'; import { APP_CODE_PER_SWAP_TYPE } from '../constants/shared.constants'; +import { hasFlashLoanDisabled } from '../errors/shared/FlashLoanDisabledBlockingGuard'; +import { hasInsufficientBalance } from '../errors/shared/InsufficientBalanceGuard'; import { getCowProtocolSellRates } from '../helpers/cow'; import { getParaswapSellRates, getParaswapSlippage } from '../helpers/paraswap'; import { getSwitchProvider } from '../helpers/shared/provider.helpers'; @@ -17,8 +19,6 @@ import { SwapType, TokenType, } from '../types'; -import { hasFlashLoanDisabled } from '../errors/shared/FlashLoanDisabledBlockingGuard'; -import { hasInsufficientBalance } from '../errors/shared/InsufficientBalanceGuard'; interface TokenSelectionParams { srcToken: string; From d2e330e94fb0edc7123ba34848ba0a02b125089a Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Wed, 5 Nov 2025 01:11:36 -0300 Subject: [PATCH 17/66] tracking adapters history in local --- pages/_app.page.tsx | 6 +- .../CancelCowOrder/CancelCowOrderActions.tsx | 5 +- .../CancelCowOrder/CancelCowOrderModal.tsx | 4 +- .../CancelCowOrderModalContent.tsx | 4 +- .../CollateralSwapActionsViaCoWAdapters.tsx | 32 +++- ...llateralSwapActionsViaParaswapAdapters.tsx | 29 +++ .../DebtSwap/DebtSwapActionsViaCoW.tsx | 32 +++- .../DebtSwap/DebtSwapActionsViaParaswap.tsx | 29 +++ .../RepayWithCollateralActionsViaCoW.tsx | 32 +++- .../RepayWithCollateralActionsViaParaswap.tsx | 27 +++ .../actions/SwapActions/SwapActionsViaCoW.tsx | 4 +- .../SwapActions/SwapActionsViaParaswap.tsx | 31 ++++ .../WithdrawAndSwapActionsViaParaswap.tsx | 29 +++ .../Swap/modals/result/SwapResultView.tsx | 8 +- .../preInputs/CowOpenOrdersWarning.tsx | 17 +- src/hooks/useModal.tsx | 10 +- ...derToast.tsx => useSwapOrdersTracking.tsx} | 87 +++++++-- src/hooks/useTransactionHistory.tsx | 97 +++++++++- src/layouts/AppHeader.tsx | 4 +- src/modules/history/HistoryFilterMenu.tsx | 10 +- .../history/TransactionMobileRowItem.tsx | 2 +- src/modules/history/TransactionRowItem.tsx | 23 ++- src/modules/history/actions/ActionDetails.tsx | 33 ++-- src/modules/history/helpers.ts | 44 +++-- src/modules/history/types.ts | 168 +++++++++++------- src/utils/swapAdapterHistory.ts | 127 +++++++++++++ 26 files changed, 738 insertions(+), 156 deletions(-) rename src/hooks/{useCowOrderToast.tsx => useSwapOrdersTracking.tsx} (70%) create mode 100644 src/utils/swapAdapterHistory.ts diff --git a/pages/_app.page.tsx b/pages/_app.page.tsx index df754c1b38..0ab60dbcc4 100644 --- a/pages/_app.page.tsx +++ b/pages/_app.page.tsx @@ -18,8 +18,8 @@ import { TransactionEventHandler } from 'src/components/TransactionEventHandler' import { GasStationProvider } from 'src/components/transactions/GasStation/GasStationProvider'; import { CowOrderToast } from 'src/components/transactions/Swap/modals/result/CowOrderToast'; import { AppDataProvider } from 'src/hooks/app-data-provider/useAppDataProvider'; -import { CowOrderToastProvider } from 'src/hooks/useCowOrderToast'; import { ModalContextProvider } from 'src/hooks/useModal'; +import { SwapOrdersTrackingProvider } from 'src/hooks/useSwapOrdersTracking'; import { Web3ContextProvider } from 'src/libs/web3-data-provider/Web3Provider'; import { useRootStore } from 'src/store/root'; import { SharedDependenciesProvider } from 'src/ui-config/SharedDependenciesProvider'; @@ -156,7 +156,7 @@ export default function MyApp(props: MyAppProps) { - + @@ -184,7 +184,7 @@ export default function MyApp(props: MyAppProps) { - + diff --git a/src/components/transactions/CancelCowOrder/CancelCowOrderActions.tsx b/src/components/transactions/CancelCowOrder/CancelCowOrderActions.tsx index 1bf4897988..3a1c55ab59 100644 --- a/src/components/transactions/CancelCowOrder/CancelCowOrderActions.tsx +++ b/src/components/transactions/CancelCowOrder/CancelCowOrderActions.tsx @@ -4,14 +4,15 @@ import { useQueryClient } from '@tanstack/react-query'; import { useIsWrongNetwork } from 'src/hooks/useIsWrongNetwork'; import { useModalContext } from 'src/hooks/useModal'; import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; -import { ActionFields, TransactionHistoryItem } from 'src/modules/history/types'; +import { ActionName, SwapActionFields, TransactionHistoryItem } from 'src/modules/history/types'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; import { wagmiConfig } from 'src/ui-config/wagmiConfig'; import { TxActionsWrapper } from '../TxActionsWrapper'; +// TODO: check with cow if we can cancel adapters orders interface CancelCowOrderActionsProps { - cowOrder: TransactionHistoryItem; + cowOrder: TransactionHistoryItem; blocked: boolean; } diff --git a/src/components/transactions/CancelCowOrder/CancelCowOrderModal.tsx b/src/components/transactions/CancelCowOrder/CancelCowOrderModal.tsx index e71769310e..24e39aa142 100644 --- a/src/components/transactions/CancelCowOrder/CancelCowOrderModal.tsx +++ b/src/components/transactions/CancelCowOrder/CancelCowOrderModal.tsx @@ -1,13 +1,13 @@ import { BasicModal } from 'src/components/primitives/BasicModal'; import { ModalContextType, ModalType, useModalContext } from 'src/hooks/useModal'; -import { ActionFields, TransactionHistoryItem } from 'src/modules/history/types'; +import { ActionName, SwapActionFields, TransactionHistoryItem } from 'src/modules/history/types'; import { TxModalTitle } from '../FlowCommons/TxModalTitle'; import { CancelCowOrderModalContent } from './CancelCowOrderModalContent'; export const CancelCowOrderModal = () => { const { type, close, args } = useModalContext() as ModalContextType<{ - cowOrder: TransactionHistoryItem; + cowOrder: TransactionHistoryItem; }>; return ( diff --git a/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx b/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx index 3fd17ba106..587219a1d4 100644 --- a/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx +++ b/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx @@ -3,7 +3,7 @@ import { Typography } from '@mui/material'; import { useIsWrongNetwork } from 'src/hooks/useIsWrongNetwork'; import { useModalContext } from 'src/hooks/useModal'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; -import { ActionFields, TransactionHistoryItem } from 'src/modules/history/types'; +import { ActionName, SwapActionFields, TransactionHistoryItem } from 'src/modules/history/types'; import { getNetworkConfig } from 'src/utils/marketsAndNetworksConfig'; import { formatUnits } from 'viem'; @@ -14,7 +14,7 @@ import { ChangeNetworkWarning } from '../Warnings/ChangeNetworkWarning'; import { CancelCowOrderActions } from './CancelCowOrderActions'; interface CancelCowOrderModalContentProps { - cowOrder: TransactionHistoryItem; + cowOrder: TransactionHistoryItem; } export const CancelCowOrderModalContent = ({ cowOrder }: CancelCowOrderModalContentProps) => { diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx index a491aa231d..a1a1ee8c09 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx @@ -1,14 +1,15 @@ import { normalize } from '@aave/math-utils'; -import { getOrderToSign, LimitTradeParameters, OrderKind } from '@cowprotocol/cow-sdk'; +import { getOrderToSign, LimitTradeParameters, OrderKind, OrderStatus } from '@cowprotocol/cow-sdk'; import { AaveFlashLoanType, HASH_ZERO } from '@cowprotocol/sdk-flash-loans'; import { Trans } from '@lingui/macro'; import { Dispatch, useEffect, useMemo, useState } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; import { calculateSignedAmount } from 'src/hooks/paraswap/common'; -import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; import { useModalContext } from 'src/hooks/useModal'; +import { useSwapOrdersTracking } from 'src/hooks/useSwapOrdersTracking'; import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { saveCowOrderToUserHistory } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; @@ -97,7 +98,7 @@ export const CollateralSwapActionsViaCowAdapters = ({ return calculateSignedAmount(state.sellAmountFormatted, state.sellAmountToken.decimals); }, [state.sellAmountFormatted, state.sellAmountToken]); - const { hasActiveOrderForSellToken } = useCowOrderToast(); + const { hasActiveOrderForSellToken, trackSwapOrderProgress } = useSwapOrdersTracking(); const sellAssetAddress = state.sellAmountToken?.underlyingAddress || state.sourceToken.addressToSwap; const disablePermitDueToActiveOrder = hasActiveOrderForSellToken(state.chainId, sellAssetAddress); @@ -216,6 +217,31 @@ export const CollateralSwapActionsViaCowAdapters = ({ success: true, txHash: result.orderId, }); + // Save to local history and start tracking status + saveCowOrderToUserHistory({ + protocol: 'cow', + orderId: result.orderId, + status: OrderStatus.OPEN, + swapType: state.swapType, + chainId: state.chainId, + account: user, + timestamp: new Date().toISOString(), + srcToken: { + address: state.sellAmountToken.underlyingAddress, + symbol: state.sellAmountToken.symbol, + name: state.sellAmountToken.symbol, + decimals: state.sellAmountToken.decimals, + }, + destToken: { + address: state.buyAmountToken.underlyingAddress, + symbol: state.buyAmountToken.symbol, + name: state.buyAmountToken.symbol, + decimals: state.buyAmountToken.decimals, + }, + srcAmount: state.sellAmountBigInt.toString(), + destAmount: state.buyAmountBigInt.toString(), + }); + trackSwapOrderProgress(result.orderId, state.chainId); setState({ actionsLoading: false, }); diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx index 64852f8601..b6c32c64c0 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx @@ -1,4 +1,5 @@ import { normalize } from '@aave/math-utils'; +import { OrderStatus } from '@cowprotocol/cow-sdk'; import { Trans } from '@lingui/macro'; import { BigNumber, PopulatedTransaction } from 'ethers'; import { Dispatch, useEffect, useMemo } from 'react'; @@ -154,6 +155,34 @@ export const CollateralSwapActionsViaParaswapAdapters = ({ const txWithGasEstimation = await estimateGasLimit(populatedTx, state.chainId); response = await sendTx(txWithGasEstimation); await response.wait(1); + try { + const { saveParaswapTxToUserHistory: addParaswapTx } = await import( + 'src/utils/swapAdapterHistory' + ); + addParaswapTx({ + protocol: 'paraswap', + txHash: response.hash, + swapType: params.swapType, + chainId: state.chainId, + account: state.user, + timestamp: new Date().toISOString(), + status: OrderStatus.FULFILLED, + srcToken: { + address: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + name: state.sourceToken.symbol, + decimals: state.sourceToken.decimals, + }, + destToken: { + address: state.destinationToken.addressToSwap, + symbol: state.destinationToken.symbol, + name: state.destinationToken.symbol, + decimals: state.destinationToken.decimals, + }, + srcAmount: state.sellAmountBigInt?.toString() ?? '0', + destAmount: state.buyAmountBigInt?.toString() ?? '0', + }); + } catch {} addTransaction( response.hash, { diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index 5501cc1c00..7729f3e565 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -1,14 +1,15 @@ import { normalize } from '@aave/math-utils'; -import { getOrderToSign, LimitTradeParameters, OrderKind } from '@cowprotocol/cow-sdk'; +import { getOrderToSign, LimitTradeParameters, OrderKind, OrderStatus } from '@cowprotocol/cow-sdk'; import { AaveFlashLoanType, HASH_ZERO } from '@cowprotocol/sdk-flash-loans'; import { Trans } from '@lingui/macro'; import { Dispatch, useEffect, useMemo, useState } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; import { calculateSignedAmount } from 'src/hooks/paraswap/common'; -import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; import { useModalContext } from 'src/hooks/useModal'; +import { useSwapOrdersTracking } from 'src/hooks/useSwapOrdersTracking'; import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { saveCowOrderToUserHistory } from 'src/utils/swapAdapterHistory'; import { zeroAddress } from 'viem'; import { useShallow } from 'zustand/react/shallow'; @@ -98,7 +99,7 @@ export const DebtSwapActionsViaCoW = ({ return calculateSignedAmount(state.sellAmountFormatted, state.sellAmountToken.decimals); }, [state.sellAmountFormatted, state.sellAmountToken]); - const { hasActiveOrderForSellToken } = useCowOrderToast(); + const { hasActiveOrderForSellToken, trackSwapOrderProgress } = useSwapOrdersTracking(); const sellAssetAddress = state.sellAmountToken?.underlyingAddress || state.sourceToken.addressToSwap; const disablePermitDueToActiveOrder = hasActiveOrderForSellToken(state.chainId, sellAssetAddress); @@ -222,6 +223,31 @@ export const DebtSwapActionsViaCoW = ({ success: true, txHash: result.orderId, }); + // Save to local history and start tracking status + saveCowOrderToUserHistory({ + protocol: 'cow', + orderId: result.orderId, + status: OrderStatus.OPEN, + swapType: state.swapType, + chainId: state.chainId, + account: user, + timestamp: new Date().toISOString(), + srcToken: { + address: state.sellAmountToken.underlyingAddress, + symbol: state.sellAmountToken.symbol, + name: state.sellAmountToken.symbol, + decimals: state.sellAmountToken.decimals, + }, + destToken: { + address: state.buyAmountToken.underlyingAddress, + symbol: state.buyAmountToken.symbol, + name: state.buyAmountToken.symbol, + decimals: state.buyAmountToken.decimals, + }, + srcAmount: state.buyAmountBigInt.toString(), + destAmount: state.sellAmountBigInt.toString(), + }); + trackSwapOrderProgress(result.orderId, state.chainId); setState({ actionsLoading: false, }); diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx index 0fccb9c63b..1fa2dbd958 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx @@ -1,4 +1,5 @@ import { valueToBigNumber } from '@aave/math-utils'; +import { OrderStatus } from '@cowprotocol/cow-sdk'; import { Trans } from '@lingui/macro'; import { parseUnits } from 'ethers/lib/utils'; import { Dispatch } from 'react'; @@ -134,6 +135,34 @@ export const DebtSwapActionsViaParaswap = ({ debtSwitchTxData = await estimateGasLimit(debtSwitchTxData); const response = await sendTx(debtSwitchTxData); await response.wait(1); + try { + const { saveParaswapTxToUserHistory: addParaswapTx } = await import( + 'src/utils/swapAdapterHistory' + ); + addParaswapTx({ + protocol: 'paraswap', + txHash: response.hash, + swapType: state.swapType, + chainId: state.chainId, + account: state.user, + timestamp: new Date().toISOString(), + status: OrderStatus.FULFILLED, + srcToken: { + address: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + name: state.sourceToken.symbol, + decimals: state.sourceToken.decimals, + }, + destToken: { + address: state.destinationToken.addressToSwap, + symbol: state.destinationToken.symbol, + name: state.destinationToken.symbol, + decimals: state.destinationToken.decimals, + }, + srcAmount: state.buyAmountBigInt?.toString() ?? '0', + destAmount: state.sellAmountBigInt?.toString() ?? '0', + }); + } catch {} setMainTxState({ txHash: response.hash, loading: false, diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx index 6a2fd00108..772cf55ac1 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -1,14 +1,15 @@ import { normalize } from '@aave/math-utils'; -import { getOrderToSign, LimitTradeParameters, OrderKind } from '@cowprotocol/cow-sdk'; +import { getOrderToSign, LimitTradeParameters, OrderKind, OrderStatus } from '@cowprotocol/cow-sdk'; import { AaveFlashLoanType, HASH_ZERO } from '@cowprotocol/sdk-flash-loans'; import { Trans } from '@lingui/macro'; import { Dispatch, useEffect, useMemo, useState } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; import { calculateSignedAmount } from 'src/hooks/paraswap/common'; -import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; import { useModalContext } from 'src/hooks/useModal'; +import { useSwapOrdersTracking } from 'src/hooks/useSwapOrdersTracking'; import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { saveCowOrderToUserHistory } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; @@ -100,7 +101,7 @@ export const RepayWithCollateralActionsViaCoW = ({ return calculateSignedAmount(state.sellAmountFormatted, state.sellAmountToken.decimals); }, [state.sellAmountFormatted, state.sellAmountToken]); - const { hasActiveOrderForSellToken } = useCowOrderToast(); + const { hasActiveOrderForSellToken, trackSwapOrderProgress } = useSwapOrdersTracking(); const sellAssetAddress = state.sellAmountToken?.underlyingAddress || state.sourceToken.addressToSwap; const disablePermitDueToActiveOrder = hasActiveOrderForSellToken(state.chainId, sellAssetAddress); @@ -221,6 +222,31 @@ export const RepayWithCollateralActionsViaCoW = ({ success: true, txHash: result.orderId, }); + // Save to local history and start tracking status + saveCowOrderToUserHistory({ + protocol: 'cow', + orderId: result.orderId, + status: OrderStatus.OPEN, + swapType: state.swapType, + chainId: state.chainId, + account: user, + timestamp: new Date().toISOString(), + srcToken: { + address: state.sellAmountToken.underlyingAddress, + symbol: state.sellAmountToken.symbol, + name: state.sellAmountToken.symbol, + decimals: state.sellAmountToken.decimals, + }, + destToken: { + address: state.buyAmountToken.underlyingAddress, + symbol: state.buyAmountToken.symbol, + name: state.buyAmountToken.symbol, + decimals: state.buyAmountToken.decimals, + }, + srcAmount: state.buyAmountBigInt.toString(), + destAmount: state.sellAmountBigInt.toString(), + }); + trackSwapOrderProgress(result.orderId, state.chainId); setState({ actionsLoading: false, }); diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx index 277d6a4a93..727d423403 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaParaswap.tsx @@ -1,4 +1,5 @@ import { normalize, normalizeBN, valueToBigNumber } from '@aave/math-utils'; +import { OrderStatus } from '@cowprotocol/cow-sdk'; import { Trans } from '@lingui/macro'; import { BigNumber, PopulatedTransaction } from 'ethers'; import { Dispatch } from 'react'; @@ -7,6 +8,7 @@ import { useModalContext } from 'src/hooks/useModal'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { saveParaswapTxToUserHistory } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/shallow'; import { TxActionsWrapper } from '../../../TxActionsWrapper'; @@ -191,6 +193,31 @@ export const RepayWithCollateralActionsViaParaswap = ({ const txWithGasEstimation = await estimateGasLimit(populatedTx, state.chainId); const response = await sendTx(txWithGasEstimation); await response.wait(1); + try { + saveParaswapTxToUserHistory({ + protocol: 'paraswap', + txHash: response.hash, + swapType: state.swapType, + chainId: state.chainId, + status: OrderStatus.FULFILLED, + account: state.user, + timestamp: new Date().toISOString(), + srcToken: { + address: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + name: state.sourceToken.symbol, + decimals: state.sourceToken.decimals, + }, + destToken: { + address: state.destinationToken.addressToSwap, + symbol: state.destinationToken.symbol, + name: state.destinationToken.symbol, + decimals: state.destinationToken.decimals, + }, + srcAmount: state.sellAmountBigInt?.toString() ?? '0', + destAmount: state.buyAmountBigInt?.toString() ?? '0', + }); + } catch {} trackingHandlers.trackSwap(); params.invalidateAppState(); diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx index bbf3751846..d983ca6076 100644 --- a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaCoW.tsx @@ -10,8 +10,8 @@ import stringify from 'json-stringify-deterministic'; import { Dispatch } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; import { isSmartContractWallet } from 'src/helpers/provider'; -import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; import { useModalContext } from 'src/hooks/useModal'; +import { useSwapOrdersTracking } from 'src/hooks/useSwapOrdersTracking'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { getEthersProvider } from 'src/libs/web3-data-provider/adapters/EthersAdapter'; import { useRootStore } from 'src/store/root'; @@ -66,7 +66,7 @@ export const SwapActionsViaCoW = ({ const { mainTxState, loadingTxns, setMainTxState, setTxError, approvalTxState } = useModalContext(); - const { hasActiveOrderForSellToken } = useCowOrderToast(); + const { hasActiveOrderForSellToken } = useSwapOrdersTracking(); const disablePermitDueToActiveOrder = hasActiveOrderForSellToken( state.chainId, diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx index 18a3a2753c..e2d5e2abb9 100644 --- a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx @@ -1,3 +1,4 @@ +import { OrderStatus } from '@cowprotocol/cow-sdk'; import { Trans } from '@lingui/macro'; import { Dispatch } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; @@ -93,6 +94,36 @@ export const SwapActionsViaParaswap = ({ const response = await sendTx(txWithGasEstimation); try { await response.wait(1); + // Save Paraswap tx locally for history + try { + const { saveParaswapTxToUserHistory: addParaswapTx } = await import( + 'src/utils/swapAdapterHistory' + ); + addParaswapTx({ + protocol: 'paraswap', + txHash: response.hash, + swapType: params.swapType, + chainId: state.chainId, + account: user, + timestamp: new Date().toISOString(), + status: OrderStatus.FULFILLED, + srcToken: { + address: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + name: state.sourceToken.symbol, + decimals: state.sourceToken.decimals, + }, + destToken: { + address: state.destinationToken.addressToSwap, + symbol: state.destinationToken.symbol, + name: state.destinationToken.symbol, + decimals: state.destinationToken.decimals, + }, + srcAmount: state.sellAmountBigInt?.toString() ?? '0', + destAmount: state.buyAmountBigInt?.toString() ?? '0', + }); + // ParaSwap is atomic onchain; no toast tracking required + } catch {} addTransaction( response.hash, { diff --git a/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx index 73a396c774..efa3f84e4e 100644 --- a/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx @@ -1,5 +1,6 @@ import { ERC20Service, ProtocolAction } from '@aave/contract-helpers'; import { valueToBigNumber } from '@aave/math-utils'; +import { OrderStatus } from '@cowprotocol/cow-sdk'; import { SignatureLike } from '@ethersproject/bytes'; import { Trans } from '@lingui/macro'; import { useQueryClient } from '@tanstack/react-query'; @@ -140,6 +141,34 @@ export const WithdrawAndSwapActionsViaParaswap = ({ const txDataWithGasEstimation = await estimateGasLimit(tx); const response = await sendTx(txDataWithGasEstimation); await response.wait(1); + try { + const { saveParaswapTxToUserHistory: addParaswapTx } = await import( + 'src/utils/swapAdapterHistory' + ); + addParaswapTx({ + protocol: 'paraswap', + txHash: response.hash, + swapType: state.swapType, + chainId: state.chainId, + account: state.user, + timestamp: new Date().toISOString(), + status: OrderStatus.FULFILLED, + srcToken: { + address: state.sourceToken.addressToSwap, + symbol: state.sourceToken.symbol, + name: state.sourceToken.symbol, + decimals: state.sourceToken.decimals, + }, + destToken: { + address: state.destinationToken.addressToSwap, + symbol: state.destinationToken.symbol, + name: state.destinationToken.symbol, + decimals: state.destinationToken.decimals, + }, + srcAmount: state.sellAmountBigInt?.toString() ?? '0', + destAmount: state.buyAmountBigInt?.toString() ?? '0', + }); + } catch {} queryClient.invalidateQueries({ queryKey: queryKeysFactory.pool }); queryClient.invalidateQueries({ queryKey: queryKeysFactory.gho }); setMainTxState({ diff --git a/src/components/transactions/Swap/modals/result/SwapResultView.tsx b/src/components/transactions/Swap/modals/result/SwapResultView.tsx index 4ed4578df6..29f40c673f 100644 --- a/src/components/transactions/Swap/modals/result/SwapResultView.tsx +++ b/src/components/transactions/Swap/modals/result/SwapResultView.tsx @@ -7,7 +7,7 @@ import { DarkTooltip } from 'src/components/infoTooltips/DarkTooltip'; import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; import { ExternalTokenIcon } from 'src/components/primitives/TokenIcon'; import { TextWithTooltip, TextWithTooltipProps } from 'src/components/TextWithTooltip'; -import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; +import { useSwapOrdersTracking } from 'src/hooks/useSwapOrdersTracking'; import { networkConfigs } from 'src/ui-config/networksConfig'; import { parseUnits } from 'viem'; @@ -132,7 +132,7 @@ export const SwapTxSuccessView = ({ invalidateAppState, trackingHandlers, }: SwapTxSuccessViewProps & { trackingHandlers?: TrackAnalyticsHandlers }) => { - const { trackOrder, setHasActiveOrders } = useCowOrderToast(); + const { trackSwapOrderProgress, setHasActiveOrders } = useSwapOrdersTracking(); // Do polling each 10 seconds until the order get's filled const [orderStatus, setOrderStatus] = useState<'succeed' | 'failed' | 'open'>('open'); @@ -148,12 +148,12 @@ export const SwapTxSuccessView = ({ // Start tracking the order when the component mounts useEffect(() => { if (provider === 'cowprotocol' && txHashOrOrderId) { - trackOrder(txHashOrOrderId, chainId); + trackSwapOrderProgress(txHashOrOrderId, chainId); } else if (provider === 'cowprotocol' && orderStatus === 'open') { // If the order is open, force the spinner to show, waiting for order details e.g. eth flow setHasActiveOrders(true); } - }, [txHashOrOrderId, chainId, provider, trackOrder, setHasActiveOrders]); + }, [txHashOrOrderId, chainId, provider]); // Poll the order status for UI updates const interval = useRef(null); diff --git a/src/components/transactions/Swap/warnings/preInputs/CowOpenOrdersWarning.tsx b/src/components/transactions/Swap/warnings/preInputs/CowOpenOrdersWarning.tsx index a7934e6f65..21ba7cf07c 100644 --- a/src/components/transactions/Swap/warnings/preInputs/CowOpenOrdersWarning.tsx +++ b/src/components/transactions/Swap/warnings/preInputs/CowOpenOrdersWarning.tsx @@ -3,6 +3,7 @@ import { OrderStatus } from '@cowprotocol/cow-sdk'; import { Link, Typography } from '@mui/material'; import { useEffect, useState } from 'react'; import { Warning } from 'src/components/primitives/Warning'; +import { useSwapOrdersTracking } from 'src/hooks/useSwapOrdersTracking'; import { useRootStore } from 'src/store/root'; import { findByChainId } from 'src/ui-config/marketsConfig'; @@ -11,6 +12,7 @@ import { SwapState } from '../../types'; export function CowOpenOrdersWarning({ state }: { state: SwapState }) { const user = useRootStore((store) => store.account); + const { hasActiveOrderForSellToken } = useSwapOrdersTracking(); const [cowOpenOrdersTotalAmountFormatted, setCowOpenOrdersTotalAmountFormatted] = useState< string | undefined >(undefined); @@ -53,12 +55,23 @@ export function CowOpenOrdersWarning({ state }: { state: SwapState }) { } }, [state.sourceToken, state.destinationToken, state.provider, state.chainId, user]); - if (!cowOpenOrdersTotalAmountFormatted) return null; + const hasActiveForToken = + !!state.chainId && !!state.sourceToken?.addressToSwap + ? hasActiveOrderForSellToken(state.chainId, state.sourceToken.addressToSwap) + : false; + + if (!cowOpenOrdersTotalAmountFormatted && !hasActiveForToken) return null; return ( - You have open orders for {cowOpenOrdersTotalAmountFormatted} {state.sourceToken.symbol}.{' '} + {cowOpenOrdersTotalAmountFormatted ? ( + <> + You have open orders for {cowOpenOrdersTotalAmountFormatted} {state.sourceToken.symbol}.{' '} + + ) : ( + <>You have in-progress swaps for {state.sourceToken.symbol}. + )}
Track them in your{' '} transaction history diff --git a/src/hooks/useModal.tsx b/src/hooks/useModal.tsx index ed5a690547..fde11eff64 100644 --- a/src/hooks/useModal.tsx +++ b/src/hooks/useModal.tsx @@ -2,7 +2,7 @@ import { ChainId, Stake } from '@aave/contract-helpers'; import { AaveV3Ethereum } from '@bgd-labs/aave-address-book'; import { createContext, PropsWithChildren, useContext, useState } from 'react'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; -import { ActionFields, TransactionHistoryItem } from 'src/modules/history/types'; +import { ActionName, SwapActionFields, TransactionHistoryItem } from 'src/modules/history/types'; import { useRootStore } from 'src/store/root'; import { TxErrorType } from 'src/ui-config/errorMapping'; import { GENERAL } from 'src/utils/events'; @@ -62,7 +62,7 @@ export interface ModalArgsType { umbrellaAssetName?: string; stataTokenAToken?: string; stataTokenAsset?: string; - cowOrder?: TransactionHistoryItem; + cowOrder?: TransactionHistoryItem; } export type TxStateType = { @@ -147,7 +147,9 @@ export interface ModalContextType { ) => void; openSavingsGhoDeposit: () => void; openSavingsGhoWithdraw: () => void; - openCancelCowOrder: (transaction: TransactionHistoryItem) => void; + openCancelCowOrder: ( + transaction: TransactionHistoryItem + ) => void; close: () => void; closeWithCb: (callback: CallbackFn) => void; type?: ModalType; @@ -426,7 +428,7 @@ export const ModalContextProvider: React.FC = ({ children }) openCancelCowOrder: (transaction) => { trackEvent(GENERAL.OPEN_MODAL, { modal: 'Cancel CoW Order', - orderId: transaction.orderId, + orderId: transaction.id, }); setType(ModalType.CancelCowOrder); setArgs({ cowOrder: transaction }); diff --git a/src/hooks/useCowOrderToast.tsx b/src/hooks/useSwapOrdersTracking.tsx similarity index 70% rename from src/hooks/useCowOrderToast.tsx rename to src/hooks/useSwapOrdersTracking.tsx index da402480cc..d32aa609ea 100644 --- a/src/hooks/useCowOrderToast.tsx +++ b/src/hooks/useSwapOrdersTracking.tsx @@ -1,3 +1,4 @@ +import { OrderStatus } from '@cowprotocol/cow-sdk'; import { useQueryClient } from '@tanstack/react-query'; import { createContext, @@ -20,12 +21,15 @@ import { import { invalidateAppStateForSwap } from 'src/components/transactions/Swap/helpers/shared'; import { CowSwapSubset, - isCowSwapTransaction, + isCowSwapSubset, + isSwapTransaction, TransactionHistoryItemUnion, } from 'src/modules/history/types'; import { useRootStore } from 'src/store/root'; import { findTokenSymbol } from 'src/ui-config/TokenList'; import { GENERAL } from 'src/utils/events'; +import { getProvider } from 'src/utils/marketsAndNetworksConfig'; +import { updateCowOrderStatus, updateParaswapStatus } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/shallow'; import { useTransactionHistory } from './useTransactionHistory'; @@ -38,8 +42,9 @@ interface OrderDetails { sellToken?: string; } -interface CowOrderToastContextType { - trackOrder: (orderId: string, chainId: number) => void; +interface SwapOrdersTrackingContextType { + trackSwapOrderProgress: (orderId: string, chainId: number) => void; + trackParaswapTx: (txHash: string, chainId: number, sellTokenAddress?: string) => void; stopTracking: (orderId: string) => void; hasActiveOrders: boolean; setHasActiveOrders: (hasActiveOrders: boolean) => void; @@ -47,11 +52,11 @@ interface CowOrderToastContextType { hasActiveOrderForSellToken: (chainId: number, sellTokenAddress: string) => boolean; } -const CowOrderToastContext = createContext( - {} as CowOrderToastContextType +const SwapOrdersTrackingContext = createContext( + {} as SwapOrdersTrackingContextType ); -export const CowOrderToastProvider: React.FC = ({ children }) => { +export const SwapOrdersTrackingProvider: React.FC = ({ children }) => { const [activeOrders, setActiveOrders] = useState>(new Map()); const processedOrdersRef = useRef>(new Set()); const { data: transactions } = useTransactionHistory({ isFilterActive: false }); @@ -73,12 +78,13 @@ export const CowOrderToastProvider: React.FC = ({ children }) useEffect(() => { if (transactions?.pages[0] && activeOrders.size === 0) { transactions.pages[0] - .filter((tx: TransactionHistoryItemUnion) => isCowSwapTransaction(tx)) - .filter(isCowSwapTransaction) + .filter((tx: TransactionHistoryItemUnion) => isSwapTransaction(tx)) + .filter(isSwapTransaction) + .filter((tx: TransactionHistoryItemUnion) => isCowSwapSubset(tx)) .filter((tx: CowSwapSubset) => isOrderLoading(tx.status)) .filter((tx: CowSwapSubset) => !activeOrders.has(tx.orderId)) .forEach((tx: CowSwapSubset) => { - trackOrder(tx.orderId, tx.chainId); + trackSwapOrderProgress(tx.orderId, tx.chainId); }); } }, [transactions?.pages[0]]); @@ -121,7 +127,7 @@ export const CowOrderToastProvider: React.FC = ({ children }) [queryClient, account, currentMarketData] ); - const trackOrder = useCallback( + const trackSwapOrderProgress = useCallback( (orderId: string, chainId: number) => { // Clear any existing interval for this order stopTracking(orderId); @@ -156,6 +162,9 @@ export const CowOrderToastProvider: React.FC = ({ children }) }; if (isOrderFilled(order.status) && !processedOrdersRef.current.has(orderId)) { + try { + updateCowOrderStatus(chainId, account || '', orderId, order.status); + } catch {} processedOrdersRef.current.add(orderId); toast.success('Swap completed successfully.', { action: { @@ -171,6 +180,9 @@ export const CowOrderToastProvider: React.FC = ({ children }) executedFee: order.executedFee, }); } else if (isOrderCancelled(order.status) && !processedOrdersRef.current.has(orderId)) { + try { + updateCowOrderStatus(chainId, account || '', orderId, order.status); + } catch {} processedOrdersRef.current.add(orderId); toast.error('Swap could not be completed.', { action: { @@ -219,6 +231,48 @@ export const CowOrderToastProvider: React.FC = ({ children }) [stopTracking] ); + const trackParaswapTx = useCallback( + (txHash: string, chainId: number, sellTokenAddress?: string) => { + // Clear any existing interval for this hash + stopTracking(txHash); + + const provider = getProvider(chainId); + const interval = setInterval(async () => { + try { + const receipt = await provider.getTransactionReceipt(txHash); + if (!receipt) return; // still pending + + const success = receipt.status === 1; + if (success && !processedOrdersRef.current.has(txHash)) { + processedOrdersRef.current.add(txHash); + toast.success('Swap completed successfully.'); + stopTracking(txHash); + try { + updateParaswapStatus(chainId, account || '', txHash, OrderStatus.FULFILLED); + } catch {} + } else if (!success && !processedOrdersRef.current.has(txHash)) { + processedOrdersRef.current.add(txHash); + toast.error('Swap could not be completed.'); + stopTracking(txHash); + try { + updateParaswapStatus(chainId, account || '', txHash, OrderStatus.CANCELLED); + } catch {} + } + } catch (error) { + console.error('Error checking paraswap tx status:', error); + } + }, 10000); + + setActiveOrders((prev) => { + const next = new Map(prev); + next.set(txHash, { orderId: txHash, chainId, interval, sellToken: sellTokenAddress }); + return next; + }); + setHasActiveOrders(true); + }, + [stopTracking, account] + ); + const hasActiveOrderForSellToken = useCallback( (chainId: number, sellTokenAddress: string) => { const needle = sellTokenAddress.toLowerCase(); @@ -233,9 +287,10 @@ export const CowOrderToastProvider: React.FC = ({ children }) ); return ( - = ({ children }) }} > {children} - + ); }; -export const useCowOrderToast = () => { - const context = useContext(CowOrderToastContext); +export const useSwapOrdersTracking = () => { + const context = useContext(SwapOrdersTrackingContext); if (!context) { - throw new Error('useCowOrderToast must be used within a CowOrderToastProvider'); + throw new Error('useSwapOrdersTracking must be used within a SwapOrdersTrackingProvider'); } return context; }; diff --git a/src/hooks/useTransactionHistory.tsx b/src/hooks/useTransactionHistory.tsx index ab4063b15b..c1a476be53 100644 --- a/src/hooks/useTransactionHistory.tsx +++ b/src/hooks/useTransactionHistory.tsx @@ -18,11 +18,14 @@ import { SwapType } from 'src/components/transactions/Swap/types'; import { getTransactionAction, getTransactionId } from 'src/modules/history/helpers'; import { actionFilterMap, + ActionName, + CowSwapSubset, hasCollateralReserve, hasPrincipalReserve, hasReserve, hasSrcOrDestToken, HistoryFilters, + isCowSwapSubset, swapTypeToTransactionHistoryItemType, TransactionHistoryItemUnion, UserTransactionItem, @@ -32,6 +35,11 @@ import { useRootStore } from 'src/store/root'; import { queryKeysFactory } from 'src/ui-config/queries'; import { TOKEN_LIST } from 'src/ui-config/TokenList'; import { getProvider } from 'src/utils/marketsAndNetworksConfig'; +import { + CowAdapterEntry, + getAdapterSwapHistory, + ParaswapAdapterEntry, +} from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/shallow'; import { useAppDataContext } from './app-data-provider/useAppDataProvider'; @@ -82,8 +90,12 @@ export const applyTxHistoryFilters = ({ // CowSwap structure if (hasSrcOrDestToken(txn)) { - srcToken = txn.underlyingSrcToken.symbol.toLowerCase(); - destToken = txn.underlyingDestToken.symbol.toLowerCase(); + const swapTxn = txn as unknown as { + underlyingSrcToken: { symbol: string }; + underlyingDestToken: { symbol: string }; + }; + srcToken = swapTxn.underlyingSrcToken.symbol.toLowerCase(); + destToken = swapTxn.underlyingDestToken.symbol.toLowerCase(); } // handle special case where user searches for ethereum but asset names are abbreviated as ether @@ -237,7 +249,7 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool return []; } - const orderBookApi = new OrderBookApi({ chainId: chainId, env: 'staging' }); // TODO: use prod for production + const orderBookApi = new OrderBookApi({ chainId: chainId }); // TODO: use prod for production const orders = await orderBookApi.getOrders({ owner: account, limit: first, @@ -262,7 +274,7 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool ) ).filter((order) => order !== null); - return Promise.all( + const apiTxns = await Promise.all( filteredCowAaveOrders.map>(async (order) => { const erc20Service = new ERC20Service(getProvider); @@ -357,7 +369,8 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool console.log('swapType', swapType); return { - action: swapTypeToTransactionHistoryItemType(swapType ?? SwapType.Swap) ?? '', + action: + swapTypeToTransactionHistoryItemType(swapType ?? SwapType.Swap) ?? ActionName.Swap, id: order.uid, timestamp: new Date(order.creationDate).toISOString(), underlyingSrcToken: { @@ -374,6 +387,7 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool decimals: destToken.decimals, }, destAToken: destToken.isAToken, + protocol: 'cow', srcAmount: order.executedSellAmount && order.executedBuyAmount != '0' ? order.executedSellAmount @@ -388,6 +402,79 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool }; }) ).then((txns) => txns.filter((txn) => txn !== null)); + + // Merge in locally stored adapter entries (CoW + ParaSwap) for this account/chain + // This is needed because Paraswap txs are not included in the subgraph yet and CoW adapters orders are sent by the adapters instances therefore not returned by asking for the user's trades. + const localEntries = getAdapterSwapHistory(chainId, account || ''); + + // Build a set of CoW orderIds returned by API to dedupe + const apiCowIds = new Set( + apiTxns + .filter((t: TransactionHistoryItemUnion) => !!t && isCowSwapSubset(t)) + .map((t: CowSwapSubset) => t.orderId) + .filter(Boolean) + ); + + const localCowTxns: TransactionHistoryItemUnion[] = (localEntries as CowAdapterEntry[]) + .filter((e) => e.protocol === 'cow' && !apiCowIds.has(e.orderId)) + .map((e: CowAdapterEntry) => ({ + action: swapTypeToTransactionHistoryItemType(e.swapType) ?? ActionName.Swap, + id: e.orderId, + timestamp: e.timestamp, + underlyingSrcToken: { + underlyingAsset: e.srcToken.address, + name: e.srcToken.name, + symbol: e.srcToken.symbol, + decimals: e.srcToken.decimals, + }, + srcAToken: e.srcToken.isAToken, + underlyingDestToken: { + underlyingAsset: e.destToken.address, + name: e.destToken.name, + symbol: e.destToken.symbol, + decimals: e.destToken.decimals, + }, + destAToken: e.destToken.isAToken, + srcAmount: e.srcAmount, + destAmount: e.destAmount, + status: e.status, + protocol: 'cow', + orderId: e.orderId, + chainId: e.chainId, + })); + + const localParaswapTxns: TransactionHistoryItemUnion[] = ( + localEntries as ParaswapAdapterEntry[] + ) + .filter((e) => e.protocol === 'paraswap') + .map((e: ParaswapAdapterEntry) => ({ + action: swapTypeToTransactionHistoryItemType(e.swapType) ?? ActionName.Swap, + id: e.txHash, + timestamp: e.timestamp, + underlyingSrcToken: { + underlyingAsset: e.srcToken.address, + name: e.srcToken.name, + symbol: e.srcToken.symbol, + decimals: e.srcToken.decimals, + }, + protocol: 'paraswap', + srcAToken: e.srcToken.isAToken, + underlyingDestToken: { + underlyingAsset: e.destToken.address, + name: e.destToken.name, + symbol: e.destToken.symbol, + decimals: e.destToken.decimals, + }, + destAToken: e.destToken.isAToken, + srcAmount: e.srcAmount, + destAmount: e.destAmount, + status: e.status, + txHash: e.txHash, + chainId: e.chainId, + })); + + const combined = [...apiTxns, ...localCowTxns, ...localParaswapTxns]; + return combined.sort(sortTransactionsByTimestampDesc); }; const PAGE_SIZE = 50; //Limit SDK and CowSwap to same page size diff --git a/src/layouts/AppHeader.tsx b/src/layouts/AppHeader.tsx index 08818dacc2..8d164e2c81 100644 --- a/src/layouts/AppHeader.tsx +++ b/src/layouts/AppHeader.tsx @@ -24,8 +24,8 @@ import { AvatarSize } from 'src/components/Avatar'; import { ContentWithTooltip } from 'src/components/ContentWithTooltip'; import { UserDisplay } from 'src/components/UserDisplay'; import { ConnectWalletButton } from 'src/components/WalletConnection/ConnectWalletButton'; -import { useCowOrderToast } from 'src/hooks/useCowOrderToast'; import { useModalContext } from 'src/hooks/useModal'; +import { useSwapOrdersTracking } from 'src/hooks/useSwapOrdersTracking'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { useRootStore } from 'src/store/root'; import { ENABLE_TESTNET, FORK_ENABLED } from 'src/utils/marketsAndNetworksConfig'; @@ -111,7 +111,7 @@ export function AppHeader() { const { readOnlyMode } = useWeb3Context(); const [walletWidgetOpen, setWalletWidgetOpen] = useState(false); const [mobileMenuOpen, setMobileMenuOpen] = useState(false); - const { hasActiveOrders } = useCowOrderToast(); + const { hasActiveOrders } = useSwapOrdersTracking(); useEffect(() => { if (mobileDrawerOpen && !md) { diff --git a/src/modules/history/HistoryFilterMenu.tsx b/src/modules/history/HistoryFilterMenu.tsx index 3896426132..f29114545c 100644 --- a/src/modules/history/HistoryFilterMenu.tsx +++ b/src/modules/history/HistoryFilterMenu.tsx @@ -44,8 +44,16 @@ const FilterLabel: React.FC = ({ filter }) => { return Collateral change; case FilterOptions.LIQUIDATION: return Liquidation; - case FilterOptions.COWSWAP: + case FilterOptions.SWAP: return Swap; + case FilterOptions.COLLATERAL_SWAP: + return Collateral Swap; + case FilterOptions.DEBT_SWAP: + return Debt Swap; + case FilterOptions.REPAY_WITH_COLLATERAL: + return Repay with Collateral; + case FilterOptions.WITHDRAW_AND_SWAP: + return Withdraw and Swap; } }; diff --git a/src/modules/history/TransactionMobileRowItem.tsx b/src/modules/history/TransactionMobileRowItem.tsx index 29709ebc09..43a99b2586 100644 --- a/src/modules/history/TransactionMobileRowItem.tsx +++ b/src/modules/history/TransactionMobileRowItem.tsx @@ -104,7 +104,7 @@ function TransactionMobileRowItem({ transaction }: TransactionHistoryItemProps) trackEvent(GENERAL.EXTERNAL_LINK, { funnel: 'TxHistoy', Link: 'Etherscan' }) } > - VIEW TX{' '} + VIEW{' '} @@ -85,11 +90,13 @@ function TransactionRowItem({ transaction }: TransactionHistoryItemProps) {
- {isCowSwapTransaction(transaction) && transaction.status === OrderStatus.OPEN && ( - - )} + {isSwapTransaction(transaction) && + isCowSwapSubset(transaction) && + transaction.status === OrderStatus.OPEN && ( + + )} {!downToMD && explorerLink && ( diff --git a/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx b/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx index 79961f51ef..26a147e444 100644 --- a/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx @@ -80,6 +80,12 @@ export const CollateralSwapModalContent = ({ underlyingAsset }: { underlyingAsse resultScreenTokensFromTitle: 'Collateral sent', resultScreenTokensToTitle: 'Collateral received', resultScreenTitleItems: 'collateral', + + // Note: Collateral Swap order is not inverted + inputInputTitleSell: 'Swap', + outputInputTitleSell: 'Receive at most', + inputInputTitleBuy: 'Swap at most', + outputInputTitleBuy: 'Receive', }; return ; diff --git a/src/components/transactions/Swap/modals/request/DebtSwapModalContent.tsx b/src/components/transactions/Swap/modals/request/DebtSwapModalContent.tsx index 1eb3811286..74a7060b0d 100644 --- a/src/components/transactions/Swap/modals/request/DebtSwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/DebtSwapModalContent.tsx @@ -60,11 +60,19 @@ export const DebtSwapModalContent = ({ underlyingAsset }: { underlyingAsset: str sourceTokens: tokensFrom, destinationTokens: tokensTo, showSwitchInputAndOutputAssetsButton: false, + showOutputBalance: true, + outputBalanceTitle: 'Current', chainId: currentNetworkConfig.wagmiChain.id, titleTokenPostfix: 'debt', resultScreenTokensFromTitle: 'Debt sent', resultScreenTokensToTitle: 'Debt received', resultScreenTitleItems: 'debt', + + // Note: Debt Swap order is inverted + inputInputTitleSell: 'Swap at most', + outputInputTitleSell: 'Receive', + inputInputTitleBuy: 'Swap', + outputInputTitleBuy: 'Receive at most', }; return ; diff --git a/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx b/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx index eb748e5865..89d5b2f26c 100644 --- a/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx @@ -91,6 +91,12 @@ export const RepayWithCollateralModalContent = ({ resultScreenTokensToTitle: 'With', resultScreenTitleItems: 'repay', customReceivedTitle: 'Repaid', + + // Note: Repay With Collateral order is inverted + inputInputTitleSell: 'Repay at most', + outputInputTitleSell: 'Using', + inputInputTitleBuy: 'Repay', + outputInputTitleBuy: 'Use at most', }; return ; diff --git a/src/components/transactions/Swap/modals/request/SwapModalContent.tsx b/src/components/transactions/Swap/modals/request/SwapModalContent.tsx index b445ccf0a1..d064d43ffa 100644 --- a/src/components/transactions/Swap/modals/request/SwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/SwapModalContent.tsx @@ -92,6 +92,8 @@ export const SwapModalContent = ({ chainId, refreshTokens, supportedNetworks: supportedNetworksWithEnabledMarket, + showOutputBalance: true, + outputBalanceTitle: 'Current balance', }; if (tokensLoading) { diff --git a/src/components/transactions/Swap/modals/request/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Swap/modals/request/WithdrawAndSwapModalContent.tsx index f534728b31..f1333dfd1f 100644 --- a/src/components/transactions/Swap/modals/request/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/WithdrawAndSwapModalContent.tsx @@ -91,6 +91,12 @@ export const WithdrawAndSwapModalContent = ({ underlyingAsset }: { underlyingAss showOutputBalance: true, inputInputTitle: 'Withdraw', outputInputTitle: 'And swap to', + + // Note: Withdraw And Swap order is not inverted + inputInputTitleSell: 'Withdraw', + outputInputTitleSell: 'And swap to at most', + inputInputTitleBuy: 'Withdraw at most', + outputInputTitleBuy: 'And swap to', }; if (tokensLoading) { diff --git a/src/components/transactions/Swap/types/params.types.ts b/src/components/transactions/Swap/types/params.types.ts index 2c49378613..358469619e 100644 --- a/src/components/transactions/Swap/types/params.types.ts +++ b/src/components/transactions/Swap/types/params.types.ts @@ -55,6 +55,16 @@ export type TokensSwapParams = { inputInputTitle?: string; /** Optional label above the output-amount field. */ outputInputTitle?: string; + + /** Optional label above the input-amount field for the buy side. Only in Limit Orders mode.*/ + inputInputTitleBuy?: string; + /** Optional label above the output-amount field for the buy side. Only in Limit Orders mode.*/ + outputInputTitleBuy?: string; + /** Optional label above the input-amount field for the sell side. Only in Limit Orders mode.*/ + inputInputTitleSell?: string; + /** Optional label above the output-amount field for the sell side. Only in Limit Orders mode.*/ + outputInputTitleSell?: string; + /** Callback to invalidate/refresh app-wide state when closing/completing. */ invalidateAppState: () => void; /** Callback to refresh tokens when the chain/network changes. */ diff --git a/src/components/transactions/Swap/types/quote.types.ts b/src/components/transactions/Swap/types/quote.types.ts index 7fd6a84f9e..1af26369dc 100644 --- a/src/components/transactions/Swap/types/quote.types.ts +++ b/src/components/transactions/Swap/types/quote.types.ts @@ -60,6 +60,9 @@ export type BaseSwitchRates = { afterFeesUSD: string; afterFeesAmount: string; + srcTokenPriceUsd: number; + destTokenPriceUsd: number; + provider: SwapProvider; }; @@ -76,8 +79,6 @@ export type CowProtocolRatesType = BaseSwitchRates & { suggestedSlippage: number; amountAndCosts: QuoteAmountsAndCosts; - srcTokenPriceUsd: number; - destTokenPriceUsd: number; order: OrderParameters; quoteId?: number; diff --git a/src/components/transactions/Swap/types/state.types.ts b/src/components/transactions/Swap/types/state.types.ts index eca0a97fcf..41b4d7e593 100644 --- a/src/components/transactions/Swap/types/state.types.ts +++ b/src/components/transactions/Swap/types/state.types.ts @@ -74,6 +74,16 @@ export type TokensSwapState = { /** Side that was actually quoted after considering inversion (e.g. if the quote route is inverted, the processed side is the opposite of the side). */ processedSide: SwapKind; + // Costs (shared across details views) + /** Network fee expressed in sell currency, normalized to sell token decimals. */ + networkFeeAmountInSellFormatted?: string; + /** Network fee expressed in buy currency, normalized to buy token decimals. */ + networkFeeAmountInBuyFormatted?: string; + /** Partner fee amount applied to this order, normalized to the fee token units (depends on side). */ + partnerFeeAmountFormatted?: string; + /** Partner fee in basis points used to compute partnerFeeAmountFormatted. */ + partnerFeeBps?: number; + /** User-selected slippage in percentage (e.g. '0.10' -> 0.10%). */ slippage: string; /** Safe default slippage used for warnings and guardrails. */ @@ -244,6 +254,10 @@ export const swapDefaultState: SwapState = { buyAmountUSD: undefined, isInvertedSwap: false, processedSide: 'sell', + networkFeeAmountInSellFormatted: '0', + networkFeeAmountInBuyFormatted: '0', + partnerFeeAmountFormatted: '0', + partnerFeeBps: 0, limitsOrderButtonBlocked: false, showSlippageWarning: false, diff --git a/src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx b/src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx index 82905e2968..42e7c0aa3b 100644 --- a/src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx +++ b/src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx @@ -57,8 +57,8 @@ export function HighPriceImpactWarning({ > - High price impact ({(lostValue * 100).toFixed(1)}%). This route may return less due to low - liquidity or small order size. + High price impact ({(lostValue * 100).toFixed(1)}%). This route may return{' '} + {state.isInvertedSwap ? 'more' : 'less'} due to low liquidity or small order size. @@ -73,7 +73,8 @@ export function HighPriceImpactWarning({ > - I confirm the swap with a potential {(lostValue * 100).toFixed(0)}% value loss + I confirm the swap with a potential {(lostValue * 100).toFixed(0)}% value{' '} + {state.isInvertedSwap ? 'increase' : 'loss'} = 20% worse considered significant + const significant = diffPct.isLessThan(-10); // >= 10% worse considered significant return [shouldShow, significant, diffPct]; }, [ state.orderType, - state.swapRate?.srcSpotUSD, - state.swapRate?.destSpotUSD, - state.swapRate?.srcSpotAmount, - state.swapRate?.destSpotAmount, - state.swapRate?.srcDecimals, - state.swapRate?.destDecimals, - state.inputAmount, - state.outputAmount, + state.swapRate?.srcTokenPriceUsd, + state.swapRate?.destTokenPriceUsd, + state.sellAmountUSD, + state.buyAmountUSD, suggestedSlippage, ]); diff --git a/src/hooks/useSwapOrdersTracking.tsx b/src/hooks/useSwapOrdersTracking.tsx index 2b092970ab..f2c10e8a8c 100644 --- a/src/hooks/useSwapOrdersTracking.tsx +++ b/src/hooks/useSwapOrdersTracking.tsx @@ -15,6 +15,7 @@ import { generateCoWExplorerLink, getOrder, isOrderCancelled, + isOrderExpired, isOrderFilled, isOrderLoading, } from 'src/components/transactions/Swap/helpers/cow'; @@ -187,17 +188,23 @@ export const SwapOrdersTrackingProvider: React.FC = ({ childr executedAmount: order.executedBuyAmount, executedFee: order.executedFee, }); - } else if (isOrderCancelled(order.status) && !processedOrdersRef.current.has(orderId)) { + } else if ( + (isOrderCancelled(order.status) || isOrderExpired(order.status)) && + !processedOrdersRef.current.has(orderId) + ) { try { updateCowOrderStatus(chainId, account || '', orderId, order.status); } catch {} processedOrdersRef.current.add(orderId); - toast.error('Swap could not be completed.', { - action: { - label: 'View', - onClick: () => window.open(generateCoWExplorerLink(chainId, orderId), '_blank'), - }, - }); + toast.error( + isOrderExpired(order.status) ? 'Swap order expired.' : 'Swap could not be completed.', + { + action: { + label: 'View', + onClick: () => window.open(generateCoWExplorerLink(chainId, orderId), '_blank'), + }, + } + ); stopTracking(orderId); try { queryClient.invalidateQueries({ From 35bdc2d57342f881cdec51508befa6ab240eaea1 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Thu, 6 Nov 2025 23:19:09 -0300 Subject: [PATCH 28/66] misc --- .../actions/approval/useSwapTokenApproval.ts | 1 + .../Swap/helpers/cow/adapters.helpers.ts | 1 - .../Swap/modals/result/SwapResultView.tsx | 25 +++++++++++++++++++ src/locales/el/messages.js | 2 +- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 24 ++++++++++++------ src/locales/es/messages.js | 2 +- src/locales/fr/messages.js | 2 +- src/modules/history/HistoryWrapper.tsx | 13 +++++++--- src/ui-config/TokenList.ts | 8 ++++++ 10 files changed, 64 insertions(+), 16 deletions(-) diff --git a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts index 42bfa502b6..66fe0d5173 100644 --- a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts +++ b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts @@ -235,6 +235,7 @@ export const useSwapTokenApproval = ({ setLoadingPermitData(true); const rpc = getProvider(chainId); const supported = await isPermitSupportedWithFallback(chainId, token, rpc); + console.log('[useSwapTokenApproval] permitSupported', supported); if (!cancelled) setPermitSupported(supported); setLoadingPermitData(false); } catch { diff --git a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts index bc944cc270..787aea13ad 100644 --- a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts @@ -117,7 +117,6 @@ export const calculateFlashLoanAmounts = ( const flashLoanSdk = new AaveCollateralSwapSdk(); const sellAmount = state.sellAmountBigInt; - console.log('[calculateFlashLoanAmounts] sellAmount', sellAmount); if (!sellAmount) return { flashLoanFeeAmount: BigInt(0), diff --git a/src/components/transactions/Swap/modals/result/SwapResultView.tsx b/src/components/transactions/Swap/modals/result/SwapResultView.tsx index d2f31d8ce4..83d7a734ad 100644 --- a/src/components/transactions/Swap/modals/result/SwapResultView.tsx +++ b/src/components/transactions/Swap/modals/result/SwapResultView.tsx @@ -5,9 +5,11 @@ import { BigNumber } from 'ethers'; import { useEffect, useMemo, useRef, useState } from 'react'; import { DarkTooltip } from 'src/components/infoTooltips/DarkTooltip'; import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; +import { Link } from 'src/components/primitives/Link'; import { ExternalTokenIcon } from 'src/components/primitives/TokenIcon'; import { TextWithTooltip, TextWithTooltipProps } from 'src/components/TextWithTooltip'; import { useSwapOrdersTracking } from 'src/hooks/useSwapOrdersTracking'; +import { findByChainId } from 'src/ui-config/marketsConfig'; import { networkConfigs } from 'src/ui-config/networksConfig'; import { parseUnits } from 'viem'; @@ -399,6 +401,29 @@ export const SwapTxSuccessView = ({
)}
+ + + + + Swap saved in your{' '} + + history + {' '} + section. + + + ); }; diff --git a/src/locales/el/messages.js b/src/locales/el/messages.js index 3ff77ae895..350eafcd67 100644 --- a/src/locales/el/messages.js +++ b/src/locales/el/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Εάν ΔΕΝ ξεκλειδώσετε εντός \",[\"0\"],\" του παραθύρου ξεκλειδώματος, θα πρέπει να ενεργοποιήσετε ξανά τη διαδικασία ψύξης.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Η συμμετοχή σε αυτό το αποθεματικό \",[\"symbol\"],\" δίνει ετήσιες ανταμοιβές.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Ανώτατο όριο δανεισμού\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Ο σταθερός δανεισμός δεν είναι ενεργοποιημένος\",\"/yQcJM\":\"Συνολική αξία\",\"00AB2i\":\"Ο χρήστης δεν δανείστηκε το καθορισμένο νόμισμα\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να προμηθεύσετε σε αυτό το αποθεματικό. Μπορείτε να προμηθεύσετε το υπόλοιπο του πορτοφολιού σας μέχρι να επιτευχθεί το ανώτατο όριο προμηθειών.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Παρακαλούμε συνδέστε ένα πορτοφόλι για να δείτε τις προσωπικές σας πληροφορίες εδώ.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Ρευστοποίηση <0/> κατώτατο όριο\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Προβολή λεπτομερειών\",\"2FYpfJ\":\"Περισσότερα\",\"2O3qp5\":\"Διαθέσιμη ρευστότητα\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Ο σταθερός δανεισμός είναι ενεργοποιημένος\",\"34Qfwy\":\"Υπέρβαση του ανώτατου ορίου δανεισμού\",\"39eQRj\":[\"Δανεισμός \",[\"symbol\"]],\"3BL1xB\":\"Σύνολο παρεχόμενων\",\"3K0oMo\":\"Υπολειπόμενη προσφορά\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"Δεν υπάρχουν επαρκείς εξασφαλίσεις για την κάλυψη ενός νέου δανείου\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Προσφορά \",[\"symbol\"]],\"3mXg0z\":\"Μέγιστο LTV\",\"3q3mFy\":\"Αποπληρωμή\",\"3qsjtp\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα παρεχόμενα περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"3rL+os\":\"Μπορείτε να αποσύρετε τα περιουσιακά σας στοιχεία από τη Μονάδα Ασφαλείας μόνο αφού λήξει η περίοδος αναμονής και το παράθυρο ξεκλειδώματος είναι ενεργό.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Αποτελέσματα ψηφοφορίας\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"ΜΕΓΙΣΤΟ\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"τεκμηρίωση\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο της προσφοράς του. Μόνο \",[\"messageValue\"],\" μπορεί να παρασχεθεί σε αυτή την αγορά.\"],\"5cZ/KX\":\"Η προσφορά μεταβλητού χρέους δεν είναι μηδενική\",\"5che++\":\"Για να ζητήσετε πρόσβαση σε αυτή την αδειοδοτημένη αγορά, επισκεφθείτε την ιστοσελίδα: <0>Όνομα Παρόχου Πρόσβασης\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Απαιτούμενη δράση επιδότησης\",\"5rsnKT\":\"Διαθέσιμες ανταμοιβές\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Επισκόπηση\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Εγγύηση\",\"65A04M\":\"Ισπανικά\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Αποπληρωμή \",[\"symbol\"]],\"6Xr0UU\":\"Ψύξη...\",\"6bxci/\":\"Δύναμη ψήφου\",\"6f8S68\":\"Αγορές\",\"6g1gi0\":\"Προτάσεις\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Αλλαγή Δικτύου\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Συντελεστής υγείας\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Επιτεύχθηκε\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Διεκδικήστε τα όλα\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Ταμπλό\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Προσοχή - Είστε πολύ κοντά στην ρευστοποίηση. Εξετάστε το ενδεχόμενο να καταθέσετε περισσότερες εγγυήσεις ή να εξοφλήσετε κάποιες από τις δανειακές σας θέσεις\",\"87pUEW\":[\"Το πορτοφόλι σας \",[\"name\"],\" είναι άδειο. Αγοράστε ή μεταφέρετε περιουσιακά στοιχεία.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"Όλες οι προτάσεις\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Μη έγκυρο ποσό για νομισματοκοπία\",\"8Z5FPv\":\"Αποσυνδέστε το πορτοφόλι\",\"8Zz7s5\":\"περιουσιακά στοιχεία\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Ποσοστό χρησιμοποίησης\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Εμφάνιση\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Εισέρχεστε σε λειτουργία απομόνωσης\",\"9CDK3/\":[\"Ο δανεισμός δεν είναι επί του παρόντος διαθέσιμος για \",[\"0\"],\".\"],\"9GIj3z\":\"Μέγεθος Αποθεματικού\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Απαρτία\",\"9QHoGr\":\"Τρέχουσες ψήφοι\",\"9Rw96f\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο δανεισμού του. Υπάρχει μόνο \",[\"messageValue\"],\" διαθέσιμο για δανεισμό από αυτή την αγορά.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Αυτό το περιουσιακό στοιχείο έχει φτάσει στο όριο της προσφοράς του. Τίποτα δεν είναι διαθέσιμο για προμήθεια από αυτή την αγορά.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Δεδομένου ότι πρόκειται για ένα δοκιμαστικό δίκτυο, μπορείτε να αποκτήσετε οποιοδήποτε από τα περιουσιακά στοιχεία αν έχετε ETH στο πορτοφόλι σας\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Τα δάνεια σας\",\"AV7cGz\":\"Αναθεώρηση λεπτομερειών έγκρισης συναλλαγής\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Η δύναμη δανεισμού και τα περιουσιακά στοιχεία είναι περιορισμένα λόγω της λειτουργίας απομόνωσης.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Η χρήση εγγύησης είναι περιορισμένη λόγω της λειτουργίας απομόνωσης. <0>Μάθετε περισσότερα\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Κατηγορία περιουσιακών στοιχείων\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Βρύση\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Μεγιστο\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Διεκδίκηση \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Βρύση\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Η εγγύηση είναι (ως επί το πλείστον) το ίδιο νόμισμα που δανείζεται\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"Το υποκείμενο περιουσιακό στοιχείο δεν μπορεί να διασωθεί\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave ανά μήνα\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Εξασφάλιση\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Απενεργοποιημένο\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Ανάληψη \",[\"symbol\"]],\"EdQY6l\":\"Κανένα\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Μάθετε περισσότερα.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Δανεισμός χρησιμοποιημένης ισχύος\",\"FPKEug\":\"Η λειτουργία δεν υποστηρίζεται\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"ενεργοποίηση\",\"Fjw9N+\":\"Περιουσιακά στοιχεία προς προμήθεια\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Περιουσιακά Στοιχεία\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"τελειώνει\",\"GtP2hp\":[\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη λειτουργία Αποδοτικότητας (E-Mode) για την κατηγορία \",[\"0\"],\". Για να διαχειριστείτε τις κατηγορίες E-Mode επισκεφθείτε τον <0>Πίνακα ελέγχου.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"η\"],\"HmkYqM\":\"Παράθυρο ξεκλειδώματος\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"Το συνολικό ποσό των περιουσιακών σας στοιχείων σε δολάρια ΗΠΑ που μπορούν να χρησιμοποιηθούν ως εγγύηση για δανεισμό περιουσιακών στοιχείων.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Περίοδος ψύξης\",\"IaA40H\":\"Ρευστοποίηση στο\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Κλειδώστε\",\"JZMxX0\":\"Δεν υπάρχει αρκετό υπόλοιπο στο πορτοφόλι σας\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Υπόλοιπο πορτοφολιού\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Αυτό αντιπροσωπεύει το κατώτατο όριο στο οποίο μια θέση δανεισμού θα θεωρηθεί υποεγγυημένη και θα υπόκειται σε ρευστοποίηση για κάθε εγγύηση. Για παράδειγμα, εάν μια εγγύηση έχει κατώτατο όριο ρευστοποίησης 80%, αυτό σημαίνει ότι η θέση θα ρευστοποιηθεί όταν η αξία του χρέους ανέρχεται στο 80% της αξίας της εγγύησης.\",\"KYAjf3\":\"Απομονωμένο\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Λήγει\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Λάθος δίκτυο\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Κλείδωμα\",\"KuBTQq\":\"Εισάγετε διεύθυνση ETH\",\"KvG1xW\":\"Διεκδίκηση\",\"L+8Lzs\":\"Τρέχον LTV\",\"L+qiq+\":\"Αγορά\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Δεν υπάρχει δικαίωμα ψήφου\",\"LL0zks\":\"Μπορεί να αποτελέσει εγγύηση\",\"LLdJWu\":\"Διεκδικήσιμο AAVE\",\"LSIpNK\":\"Δεν επιτρέπεται ο δανεισμός και η αποπληρωμή στο ίδιο block\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Διεύθυνση παραλήπτη\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"προβολή κλειδώματος\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, μεταβλητό\",\"MghdTe\":\"Εάν ο συντελεστής υγείας πέσει κάτω από το 1, ενδέχεται να ενεργοποιηθεί η ρευστοποίηση των εγγυήσεών σας.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Ακυρώσατε τη συναλλαγή.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Μη έγκυρη τιμή επιστροφής της συνάρτησης εκτελεστή flashloan\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Εκκρεμεί...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Τίποτα κλειδωμένο\",\"Nh9DAo\":[[\"m\"],\"λ\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Υπέρβαση του ανώτατου ορίου νομισματοκοπείου χωρίς αντίκρισμα\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Επισκόπηση πρότασης\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"απενεργοποιημένο\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Ανάληψη\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"Όταν πραγματοποιείται ρευστοποίηση, οι ρευστοποιητές επιστρέφουν έως και το 50% του ανεξόφλητου δανεισμένου ποσού για λογαριασμό του δανειολήπτη. Σε αντάλλαγμα, μπορούν να αγοράσουν τις εξασφαλίσεις με έκπτωση και να κρατήσουν τη διαφορά (ποινή ρευστοποίησης) ως μπόνους.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα δανειακά περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Κατώτατο όριο ρευστοποίησης\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Δεν έχει επιτευχθεί\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Διαφορικό\",\"RNK49r\":\"Μη έγκυρη υπογραφή\",\"RS0o7b\":\"Κατάσταση\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Λεπτομέρειες πρότασης\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Το περιουσιακό στοιχείο δεν περιλαμβάνεται στον κατάλογο\",\"Rj01Fz\":\"Σύνδεσμοι\",\"RmWFEe\":\"Κλείδωμα APR\",\"RtBLm7\":\"Ο συντελεστής υγείας είναι μικρότερος από το όριο ρευστοποίησης\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Ενεργοποιημένο\",\"SDav7h\":\"Κεφάλαια στην Μονάδα Ασφάλειας\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Σύνολο διαθέσιμων\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Απενεργοποίηση E-Mode\",\"SxaD0o\":\"Ο πάροχος διευθύνσεων κοινόχρηστων ταμείων δεν είναι εγγεγραμμένος\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Δανεισμός\",\"TFxQlw\":\"Ποινή ρευστοποίησης\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"To περιουσιακό στοιχείο μπορεί να χρησιμοποιηθεί ως εγγύηση μόνο σε λειτουργία απομόνωσης.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος σταθερού επιτοκίου σε αυτό το αποθεματικό\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Το περιουσιακό στοιχείο δεν είναι δανείσιμο σε λειτουργία απομόνωσης\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Λεπτομέρειες\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"Τα κεφάλαια αυτά έχουν δανειστεί και δεν είναι διαθέσιμα για ανάληψη αυτή τη στιγμή.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Ο δείκτης μέγιστου LTV αντιπροσωπεύει τη μέγιστη δανειοληπτική ικανότητα μιας συγκεκριμένης εγγύησης. Για παράδειγμα, εάν μια εγγύηση έχει LTV 75%, ο χρήστης μπορεί να δανειστεί έως και 0,75 ETH στο κύριο νόμισμα για κάθε 1 ETH αξίας εγγύησης.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Δεν υπάρχουν ανταμοιβές για διεκδίκηση\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Συνδέστε το πορτοφόλι\",\"VMfYUK\":\"Ασφάλεια των κατατεθειμένων εξασφαλίσεών σας έναντι των δανειζόμενων περιουσιακών στοιχείων και της υποκείμενης αξίας τους.\",\"VOAZJh\":\"Σύνολο δανείων\",\"ViKYxK\":\"ΥΠΕΡ\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Αναθεώρηση λεπτομερειών συναλλαγής\",\"W5hVah\":\"Τίποτα δεν έχει παρασχεθεί ακόμη\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Μη υποστηριζόμενο\",\"WNGZwH\":\"Το E-Mode αυξάνει το LTV σας για μια επιλεγμένη κατηγορία περιουσιακών στοιχείων έως και <0/>. <1>Μάθετε περισσότερα\",\"WPWG/y\":\"Κατάσταση & διαμόρφωση αποθεματικού\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"Ο χρήστης δεν μπορεί να κάνει ανάληψη μεγαλύτερη από το διαθέσιμο υπόλοιπο\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Για να δανειστείτε πρέπει να προσκομίσετε οποιοδήποτε περιουσιακό στοιχείο που θα χρησιμοποιηθεί ως εγγύηση.\",\"X/ITG9\":\"Κείμενο σφάλματος αντιγραφής\",\"X3Pp6x\":\"Χρησιμοποιείται ως εγγύηση\",\"X4Zt7j\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή η εφεδρεία βρίσκεται σε παύση\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"ΨΗΦΙΣΤΕ ΚΑΤΑ\",\"YDIOks\":\"Ενεργοποίηση E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"Εάν το δάνειο προς αξία υπερβεί το όριο ρευστοποίησης, η παρεχόμενη εγγύηση σας μπορεί να ρευστοποιηθεί.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Δεν τηρήθηκαν οι όροι επανεξισορρόπησης των επιτοκίων\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Διακυβέρνηση Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Λειτουργία αποδοτικότητας (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Μέγιστη περικοπή\",\"ZfUGFb\":\"Πριν από την προμήθεια\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Αξία ρευστοποίησης\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"ενεργοποιημένο\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Χρόνος που απομένει για το ξεκλείδωμα\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Ψηφίστε ΚΑΤΑ\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Οι παράμετροι της συστοιχίας που θα έπρεπε να είναι ίσου μήκους δεν είναι\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Δανεισμός APY, μεταβλητό\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Προειδοποίηση περιόδου ψύξης\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Περιουσιακό στοιχείο\",\"bXQ/Og\":\"Μοιραστείτε το στο twitter\",\"bXr0ee\":\"Τα απομονωμένα περιουσιακά στοιχεία έχουν περιορισμένη δανειοληπτική ικανότητα και άλλα περιουσιακά στοιχεία δεν μπορούν να χρησιμοποιηθούν ως εγγύηση.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Το αιτούμενο ποσό είναι μεγαλύτερο από το μέγιστο μέγεθος δανείου στη λειτουργία σταθερού επιτοκίου\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Προσφορά\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Η διεύθυνση δεν είναι συμβόλαιο\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Δεν μπορείτε να αποσύρετε αυτό το ποσό, διότι θα προκληθεί κλήση εγγύησης\",\"cBc+4A\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να δανειστείτε. Μπορείτε να δανειστείτε με βάση την εξασφάλισή σας και μέχρι να επιτευχθεί το ανώτατο όριο δανεισμού.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Λεπτομέρειες κινδύνου\",\"cNT+ij\":\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη Λειτουργία Αποδοτικότητας (E-Mode) και τη λειτουργία Απομόνωσης. Για να διαχειριστείτε τη λειτουργία E-Mode και τη λειτουργία Απομόνωσης, επισκεφθείτε τον <0>Πίνακα ελέγχου.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Ψηφίστε ΥΠΕΡ\",\"ckf7gX\":[\"Αποπληρώνοντας \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Συζήτηση φόρουμ\",\"csDS2L\":\"Διαθέσιμο\",\"cu7Stb\":\"Δεν συμμετείχατε στην παρούσα πρόταση\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Διακυβέρνηση\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Η επικύρωση του Ltv απέτυχε\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Δεν έχετε αρκετά χρήματα στο πορτοφόλι σας για να αποπληρώσετε ολόκληρο το ποσό. Εάν προχωρήσετε στην αποπληρωμή με το τρέχον ποσό των χρημάτων σας, θα εξακολουθείτε να έχετε μια μικρή θέση δανεισμού στο ταμπλό σας.\",\"dXUQFX\":\"Περιουσιακά στοιχεία προς δανεισμό\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Χρησιμοποίηση εγγυήσεων\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Η δράση απαιτεί ενεργό απόθεμα\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Σύνολο δανεικών\",\"ecqEvn\":\"Το υπόλοιπο των εγγυήσεων είναι 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Ξεκλειδώστε τώρα\",\"evw5ha\":\"Καθαρή αξία\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Αλλάξατε σε ποσοστό \",[\"0\"]],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Το τρέχον δάνειο προς αξία με βάση τις παρεχόμενες εξασφαλίσεις σας.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Υπόλοιπο\",\"fu1Dbh\":[\"Ανάληψη \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Λειτουργία Testnet\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"Ο χρήστης προσπαθεί να δανειστεί πολλαπλά περιουσιακά στοιχεία, συμπεριλαμβανομένου ενός απομονωμένου περιουσιακού στοιχείου\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Η μηδενική διεύθυνση δεν είναι έγκυρη\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Το καθαρό ΑΡΥ είναι η συνδυασμένη επίδραση όλων των θέσεων προσφοράς και δανεισμού στην καθαρή αξία, συμπεριλαμβανομένων των κινήτρων. Είναι δυνατόν να υπάρχει αρνητικό καθαρό APY εάν το χρεωστικό APY είναι υψηλότερο από το προσφερόμενο APY.\",\"gzcch9\":\"Μη έγκυρη αμοιβή πρωτοκόλλου γέφυρας\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Καθαρό APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Το % της συνολικής δανειοληπτικής σας δύναμης που χρησιμοποιείται. Αυτό βασίζεται στο ποσό της παρεχόμενης εξασφάλισής σας και στο συνολικό ποσό που μπορείτε να δανειστείτε.\",\"hehnjM\":\"Ποσό\",\"hjDCQr\":\"Υπήρξε κάποιο σφάλμα. Προσπαθήστε να αλλάξετε τις παραμέτρους ή <0><1>αντιγράψτε το σφάλμα\",\"hom7qf\":\"Διεκδίκηση\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Δανεισμός \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Ασυνεπείς παράμετροι flashloan\",\"iEPVHF\":\"Δεν έχει αρκετή δύναμη ψήφου για να συμμετάσχει στην παρούσα πρόταση\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"Ψηφίσατε \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Εισάγετε ένα ποσό\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens δεν είναι το ίδιο με το να τα κλειδώνετε. Εάν επιθυμείτε να κλειδώσετε τα\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"H χρήση εγγυήσεων είναι περιορισμένη λόγω της λειτουργίας Απομόνωσης.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Προμηθεύοντας το\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Απενεργοποίηση E-Mode\",\"jKYzR1\":\"Ενεργοποίηση E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"δ\"],\"jbFMap\":\"Χρόνος ψύξης που έχει απομείνει\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"Στο E-Mode ορισμένα περιουσιακά στοιχεία δεν είναι δανείσιμα. Βγείτε από το E-Mode για να αποκτήσετε πρόσβαση σε όλα τα περιουσιακά στοιχεία\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Μη διαθέσιμο\",\"k/sb6z\":\"Επιλέξτε γλώσσα\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Διεκδίκηση \",[\"0\"]],\"kH6wUX\":\"Επίδραση στην τιμή\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Για την εξόφληση εκ μέρους ενός χρήστη απαιτείται ένα ρητό ποσό προς εξόφληση\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Υπέρβαση του ανώτατου ορίου προσφοράς\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Το ανώτατο όριο χρέους δεν είναι μηδενικό\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Αγγλικά\",\"lfEjIE\":\"Μάθετε περισσότερα στον οδηγό <0>Συχνών Ερωτήσεων\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Συνολικές εκπομπές ανά ημέρα\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Εντάξει, Κλείσιμο\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Το περιουσιακό στοιχείο δεν μπορεί να χρησιμοποιηθεί ως εγγύηση.\",\"n+SX4g\":\"Προγραμματιστές\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Προσφορά apy\",\"nJgsQu\":\"Με δύναμη ψήφου <0/>\",\"nLC6tu\":\"Γαλλικά\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Μπορεί να εκτελεστεί\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"ω\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Ο συντελεστής υγείας και το δάνειο προς αξία καθορίζουν τη διασφάλιση των εξασφαλίσεών σας. Για να αποφύγετε τις ρευστοποιήσεις μπορείτε να παράσχετε περισσότερες εξασφαλίσεις ή να εξοφλήσετε δανειακές θέσεις.\",\"o1xc2V\":\"Η προσφορά AToken δεν είναι μηδενική\",\"o5ooMr\":\"Χρέος\",\"o7J4JM\":\"Φίλτρο\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Ψύξτε για ξεκλείδωμα\",\"oJ5ZiG\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος μεταβλητού επιτοκίου σε αυτό το αποθεματικό\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Το σταθερό επιτόκιο θα <0>μείνει το ίδιο για όλη τη διάρκεια του δανείου σας. Συνιστάται για μακροχρόνιες περιόδους δανεισμού και για χρήστες που προτιμούν την προβλεψιμότητα.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Διαθέσιμο για προμήθεια\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"Αυτό το περιουσιακό στοιχείο έχει φθάσει στο ανώτατο όριο δανεισμού του. Τίποτα δεν είναι διαθέσιμο για δανεισμό από αυτή την αγορά.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Το υποκείμενο υπόλοιπο πρέπει να είναι μεγαλύτερο από 0\",\"pgWG9H\":\"Δεν υπάρχει αρκετό κλειδωμένο υπόλοιπο\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"παρακαλούμε ελέγξτε ότι το ποσό που θέλετε να παρέχετε δεν χρησιμοποιείται επί του παρόντος για κλείδωμα. Εάν χρησιμοποιείται για κλείδωμα, η συναλλαγή σας ενδέχεται να αποτύχει.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Καταλαβαίνω πώς λειτουργεί η ψύξη (\",[\"0\"],\") και το ξεκλείδωμα (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"Ο καλών αυτής της συνάρτησης πρέπει να είναι ένα κοινόχρηστο ταμείο\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Κλειδωμένο\",\"qB4kPi\":\"Προσφορά APY\",\"qENI8q\":\"Γενικές ρυθμίσεις\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"αντιγράψτε το σφάλμα\",\"qXCkEM\":\"Συνδέστε το πορτοφόλι σας για να δείτε τις προμήθειες, τα δάνεια και τις ανοιχτές θέσεις σας.\",\"qY2jnw\":\"Μη έγκυρη λήξη\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Μη έγκυρη ποσότητα προς καύση\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Το ποσό πρέπει να είναι μεγαλύτερο από 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"rcT+yy\":\"Εμφάνιση περιουσιακών στοιχείων με υπόλοιπο 0\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Διεκδικήστε όλες τις ανταμοιβές\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"ΚΑΤΑ\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Μπορείτε να ξεκλειδώσετε εδώ\",\"smJNwH\":\"Διαθέσιμο για δανεισμό\",\"solypO\":\"Ο παράγοντας υγείας δεν είναι κάτω από το όριο\",\"sr0UJD\":\"Πηγαίνετε Πίσω\",\"ss5GCK\":\"Η διεύθυνση του παρόχου διευθύνσεων κοινόχρηστου ταμείου είναι άκυρη\",\"swEgK4\":\"Οι πληροφορίες ψήφου σας\",\"t+wtgf\":\"Τίποτα δανεισμένο ακόμα\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Τιμή Oracle\",\"tFZLf8\":\"Αυτός ο υπολογισμός gas είναι μόνο μια εκτίμηση. Το πορτοφόλι σας θα καθορίσει την τιμή της συναλλαγής. Μπορείτε να τροποποιήσετε τις ρυθμίσεις gas απευθείας από τον πάροχο του πορτοφολιού σας.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Παρακαλώ, συνδέστε το πορτοφόλι σας\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Οι προμήθειές σας\",\"u3ZeYl\":\"Η συναλλαγή απέτυχε\",\"u706uF\":\"Άκυρη πριμοδότηση flashloan\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Για την αποπληρωμή ενός συγκεκριμένου τύπου χρέους, ο χρήστης πρέπει να έχει χρέος αυτού του τύπου\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Απόκρυψη\",\"vMba49\":\"Ο δανεισμός δεν είναι ενεργοποιημένος\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Γλώσσα\",\"vesuBJ\":\"Σας επιτρέπει να αποφασίσετε αν θα χρησιμοποιήσετε ένα παρεχόμενο περιουσιακό στοιχείο ως εγγύηση. Ένα περιουσιακό στοιχείο που χρησιμοποιείται ως εγγύηση θα επηρεάσει τη δανειοληπτική σας ικανότητα και τον συντελεστή υγείας.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Σταθερό νόμισμα\",\"w/JtJ3\":\"Η σταθερή προσφορά χρέους δεν είναι μηδενική\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Ανταμοιβές APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Εσείς \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"Ο καλών της συνάρτησης δεν είναι AToken\",\"wZFvVU\":\"ΨΗΦΙΣΤΕ ΥΠΕΡ\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Βρύση \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Τρέχον διαφορικό\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, παρακαλούμε μεταβείτε στο\",\"xNy/UG\":\"Αποπληρωμή με\",\"xPm8wv\":\"Μάθετε περισσότερα για τους κινδύνους\",\"xXYpZl\":[[\"0\"],\" Βρύση\"],\"xaVBSS\":\"Οι πληροφορίες σας\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Σκοτεινή λειτουργία\",\"yCrG6m\":\"Συνολικό μέγεθος της αγοράς\",\"yJUUbn\":\"Επισκόπηση συναλλαγής\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Μη έγκυρη διεύθυνση\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Δεν υπάρχουν αρκετά κεφάλαια στο\",[\"0\"],\"αποθεματικό για δανεισμό\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Κλείσιμο\",\"z4uGQg\":\"Υπέρβαση του ανώτατου ορίου χρέους\",\"z5UQOM\":\"Η εγγύηση που έχει επιλεγεί δεν μπορεί να ρευστοποιηθεί\",\"z5Y+p6\":[\"Παροχή \",[\"symbol\"]],\"zCjNKs\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή το αποθεματικό έχει παγώσει\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Υπολειπόμενο χρέος\",\"zmTPiV\":\"Υπόλοιπο προσφοράς\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Μενού\",\"zwWKhA\":\"Μάθετε περισσότερα\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"+EGVI0\":\"Receive (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Φαίνεται ότι δεν μπορούμε να αλλάξουμε το δίκτυο αυτόματα. Ελέγξτε αν μπορείτε να το αλλάξετε από το πορτοφόλι.\",\"+kLZGu\":\"Supplied asset amount\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Minimum staked Aave amount\",\"00OflG\":\"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.\",\"08/rZ9\":\"The cooldown period is the time required prior to unstaking your tokens (20 days). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window.<0>Learn more\",\"1Onqx8\":[\"Έγκριση του \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Blocked Address\",\"2bAhR7\":\"Meet GHO\",\"2o/xRt\":\"Επίτευξη του ανώτατου ορίου εφοδιασμού στο αποθεματικό-στόχο. Δοκιμάστε να \\nμειώσετε την ποσότητα.\",\"3O8YTV\":\"Total interest accrued\",\"4iPAI3\":\"Minimum GHO borrow amount\",\"6NGLTR\":\"Discountable amount\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Discount parameters are decided by the Aave community and may be changed over time. Check Governance for updates and vote to participate. <0>Learn more\",\"ARu1L4\":\"Repaid\",\"B6aXGH\":\"Σταθερό\",\"B9Gqbz\":\"Variable rate\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"At a discount\",\"CMHmbm\":\"Slippage\",\"EBL9Gz\":\"COPIED!\",\"ES8dkb\":\"Fixed rate\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Discount\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Save and share\",\"JK9zf1\":[\"Estimated compounding interest, including discount for Staking \",[\"0\"],\"AAVE in Safety Module.\"],\"JPrLjO\":\"Δεν μπορείτε να χρησιμοποιήσετε αυτό το νόμισμα ως εγγύηση\",\"JU6q+W\":\"Ανταμοιβή(ες) προς διεκδίκηση\",\"K05qZY\":\"Withdraw & Switch\",\"KRpokz\":\"VIEW TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Η ενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση αυξάνει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας. Ωστόσο, μπορεί να ρευστοποιηθεί εάν ο συντελεστής υγείας σας πέσει κάτω από το 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Απενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Send feedback\",\"TeCFg/\":\"Borrow rate change\",\"TskbEN\":\"Holders of stkAAVE receive a discount on the GHO borrowing rate\",\"TtZL6q\":\"Discount model parameters\",\"Tz0GSZ\":\"blocked activities\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"W8ekPc\":\"Back to Dashboard\",\"XZzneG\":\"Θα βγείτε από τη λειτουργία απομόνωσης και άλλα tokens μπορούν πλέον να χρησιμοποιηθούν ως εγγύηση\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Η απενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση επηρεάζει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας.\",\"al6Pyz\":\"Exceeds the discount\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Δεν υπάρχουν επαρκείς εγγυήσεις για την αποπληρωμή αυτού του ποσού χρέους με\",\"cqnmnD\":\"Effective interest rate\",\"dMtLDE\":\"to\",\"dpc0qG\":\"Μεταβλητό\",\"euScGB\":\"APY with discount applied\",\"fHcELk\":\"Καθαρό APR\",\"flRCF/\":\"Staking discount\",\"gncRUO\":\"This address is blocked on app.aave.com because it is associated with one or more\",\"gr8mYw\":\"You may borrow up to <0/> GHO at <1/> (max discount)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Borrow balance\",\"i2JTiw\":\"You may enter a custom amount in the field.\",\"jMam5g\":[[\"0\"],\" Υπόλοιπο\"],\"jpctdh\":\"View\",\"kwwn6i\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate. The discount applies to 100 GHO for every 1 stkAAVE held. Use the calculator below to see GHO borrow rate with the discount applied.\",\"lNVG7i\":\"Select an asset\",\"lt6bpt\":\"Collateral to repay with\",\"mIM0qu\":\"Expected amount to repay\",\"mzI/c+\":\"Download\",\"n8Psk4\":\"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.\",\"nOy4ob\":\"We suggest you go back to the Dashboard.\",\"nakd8r\":\"stkAAVE holders get a discount on GHO borrow rate\",\"nh2EJK\":[\"Παρακαλώ μεταβείτε στο \",[\"networkName\"],\".\"],\"ntkAoE\":\"Discount applied for <0/> staking AAVE\",\"o4tCu3\":\"Borrow APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"Η περίοδος ψύξης είναι \",[\"0\"],\". Μετά την \",[\"1\"],\" περίοδο ψύξης, θα εισέλθετε στο παράθυρο ξεκλειδώματος \",[\"2\"],\". Θα συνεχίσετε να λαμβάνετε ανταμοιβές κατά τη διάρκεια της ψύξης και του παραθύρου ξεκλειδώματος.\"],\"p3j+mb\":\"Το υπόλοιπο της ανταμοιβής σας είναι 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interest accrued\",\"rf8POi\":\"Borrowed asset amount\",\"ruc7X+\":\"Add stkAAVE to see borrow APY with the discount\",\"sK+Nag\":\"Αναθεώρηση συναλλαγής\",\"t81DpC\":[\"Approve \",[\"symbol\"],\" to continue\"],\"umICAY\":\"<0><1><2/>Add stkAAVE to see borrow rate with discount\",\"uwAUvj\":\"COPY IMAGE\",\"v8x7Mg\":\"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.\",\"wRRqvW\":\"Δεν έχετε προμήθειες σε αυτό το νόμισμα\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Ενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"yW1oWB\":\"Τύπος APY\",\"yhvj6d\":\"Δεν μπορείτε να αλλάξετε τη χρήση ως λειτουργία εγγύησης για αυτό το νόμισμα, διότι θα προκαλέσει κλήση εγγύησης\",\"zevmS2\":\"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Εάν ΔΕΝ ξεκλειδώσετε εντός \",[\"0\"],\" του παραθύρου ξεκλειδώματος, θα πρέπει να ενεργοποιήσετε ξανά τη διαδικασία ψύξης.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Η συμμετοχή σε αυτό το αποθεματικό \",[\"symbol\"],\" δίνει ετήσιες ανταμοιβές.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Ανώτατο όριο δανεισμού\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Ο σταθερός δανεισμός δεν είναι ενεργοποιημένος\",\"/yQcJM\":\"Συνολική αξία\",\"00AB2i\":\"Ο χρήστης δεν δανείστηκε το καθορισμένο νόμισμα\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να προμηθεύσετε σε αυτό το αποθεματικό. Μπορείτε να προμηθεύσετε το υπόλοιπο του πορτοφολιού σας μέχρι να επιτευχθεί το ανώτατο όριο προμηθειών.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Παρακαλούμε συνδέστε ένα πορτοφόλι για να δείτε τις προσωπικές σας πληροφορίες εδώ.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Ρευστοποίηση <0/> κατώτατο όριο\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Προβολή λεπτομερειών\",\"2FYpfJ\":\"Περισσότερα\",\"2O3qp5\":\"Διαθέσιμη ρευστότητα\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Ο σταθερός δανεισμός είναι ενεργοποιημένος\",\"34Qfwy\":\"Υπέρβαση του ανώτατου ορίου δανεισμού\",\"39eQRj\":[\"Δανεισμός \",[\"symbol\"]],\"3BL1xB\":\"Σύνολο παρεχόμενων\",\"3K0oMo\":\"Υπολειπόμενη προσφορά\",\"3MoZhl\":\"Δεν υπάρχουν επαρκείς εξασφαλίσεις για την κάλυψη ενός νέου δανείου\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Προσφορά \",[\"symbol\"]],\"3mXg0z\":\"Μέγιστο LTV\",\"3q3mFy\":\"Αποπληρωμή\",\"3qsjtp\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα παρεχόμενα περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"3rL+os\":\"Μπορείτε να αποσύρετε τα περιουσιακά σας στοιχεία από τη Μονάδα Ασφαλείας μόνο αφού λήξει η περίοδος αναμονής και το παράθυρο ξεκλειδώματος είναι ενεργό.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Αποτελέσματα ψηφοφορίας\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"ΜΕΓΙΣΤΟ\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"τεκμηρίωση\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο της προσφοράς του. Μόνο \",[\"messageValue\"],\" μπορεί να παρασχεθεί σε αυτή την αγορά.\"],\"5cZ/KX\":\"Η προσφορά μεταβλητού χρέους δεν είναι μηδενική\",\"5che++\":\"Για να ζητήσετε πρόσβαση σε αυτή την αδειοδοτημένη αγορά, επισκεφθείτε την ιστοσελίδα: <0>Όνομα Παρόχου Πρόσβασης\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Απαιτούμενη δράση επιδότησης\",\"5rsnKT\":\"Διαθέσιμες ανταμοιβές\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Επισκόπηση\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Εγγύηση\",\"65A04M\":\"Ισπανικά\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Αποπληρωμή \",[\"symbol\"]],\"6Xr0UU\":\"Ψύξη...\",\"6bxci/\":\"Δύναμη ψήφου\",\"6f8S68\":\"Αγορές\",\"6g1gi0\":\"Προτάσεις\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Αλλαγή Δικτύου\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Συντελεστής υγείας\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Επιτεύχθηκε\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Διεκδικήστε τα όλα\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Ταμπλό\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Προσοχή - Είστε πολύ κοντά στην ρευστοποίηση. Εξετάστε το ενδεχόμενο να καταθέσετε περισσότερες εγγυήσεις ή να εξοφλήσετε κάποιες από τις δανειακές σας θέσεις\",\"87pUEW\":[\"Το πορτοφόλι σας \",[\"name\"],\" είναι άδειο. Αγοράστε ή μεταφέρετε περιουσιακά στοιχεία.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"Όλες οι προτάσεις\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Μη έγκυρο ποσό για νομισματοκοπία\",\"8Z5FPv\":\"Αποσυνδέστε το πορτοφόλι\",\"8Zz7s5\":\"περιουσιακά στοιχεία\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Ποσοστό χρησιμοποίησης\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Εμφάνιση\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Εισέρχεστε σε λειτουργία απομόνωσης\",\"9CDK3/\":[\"Ο δανεισμός δεν είναι επί του παρόντος διαθέσιμος για \",[\"0\"],\".\"],\"9GIj3z\":\"Μέγεθος Αποθεματικού\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Απαρτία\",\"9QHoGr\":\"Τρέχουσες ψήφοι\",\"9Rw96f\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο δανεισμού του. Υπάρχει μόνο \",[\"messageValue\"],\" διαθέσιμο για δανεισμό από αυτή την αγορά.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Αυτό το περιουσιακό στοιχείο έχει φτάσει στο όριο της προσφοράς του. Τίποτα δεν είναι διαθέσιμο για προμήθεια από αυτή την αγορά.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Δεδομένου ότι πρόκειται για ένα δοκιμαστικό δίκτυο, μπορείτε να αποκτήσετε οποιοδήποτε από τα περιουσιακά στοιχεία αν έχετε ETH στο πορτοφόλι σας\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Τα δάνεια σας\",\"AV7cGz\":\"Αναθεώρηση λεπτομερειών έγκρισης συναλλαγής\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Η δύναμη δανεισμού και τα περιουσιακά στοιχεία είναι περιορισμένα λόγω της λειτουργίας απομόνωσης.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Η χρήση εγγύησης είναι περιορισμένη λόγω της λειτουργίας απομόνωσης. <0>Μάθετε περισσότερα\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Κατηγορία περιουσιακών στοιχείων\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Βρύση\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Μεγιστο\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Διεκδίκηση \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Βρύση\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Η εγγύηση είναι (ως επί το πλείστον) το ίδιο νόμισμα που δανείζεται\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"Το υποκείμενο περιουσιακό στοιχείο δεν μπορεί να διασωθεί\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave ανά μήνα\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Εξασφάλιση\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Απενεργοποιημένο\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Ανάληψη \",[\"symbol\"]],\"EdQY6l\":\"Κανένα\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Μάθετε περισσότερα.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Δανεισμός χρησιμοποιημένης ισχύος\",\"FPKEug\":\"Η λειτουργία δεν υποστηρίζεται\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"ενεργοποίηση\",\"Fjw9N+\":\"Περιουσιακά στοιχεία προς προμήθεια\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Περιουσιακά Στοιχεία\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"τελειώνει\",\"GtP2hp\":[\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη λειτουργία Αποδοτικότητας (E-Mode) για την κατηγορία \",[\"0\"],\". Για να διαχειριστείτε τις κατηγορίες E-Mode επισκεφθείτε τον <0>Πίνακα ελέγχου.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"η\"],\"HmkYqM\":\"Παράθυρο ξεκλειδώματος\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"Το συνολικό ποσό των περιουσιακών σας στοιχείων σε δολάρια ΗΠΑ που μπορούν να χρησιμοποιηθούν ως εγγύηση για δανεισμό περιουσιακών στοιχείων.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Περίοδος ψύξης\",\"IaA40H\":\"Ρευστοποίηση στο\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Κλειδώστε\",\"JZMxX0\":\"Δεν υπάρχει αρκετό υπόλοιπο στο πορτοφόλι σας\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Υπόλοιπο πορτοφολιού\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Αυτό αντιπροσωπεύει το κατώτατο όριο στο οποίο μια θέση δανεισμού θα θεωρηθεί υποεγγυημένη και θα υπόκειται σε ρευστοποίηση για κάθε εγγύηση. Για παράδειγμα, εάν μια εγγύηση έχει κατώτατο όριο ρευστοποίησης 80%, αυτό σημαίνει ότι η θέση θα ρευστοποιηθεί όταν η αξία του χρέους ανέρχεται στο 80% της αξίας της εγγύησης.\",\"KYAjf3\":\"Απομονωμένο\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Λήγει\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Λάθος δίκτυο\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Κλείδωμα\",\"KuBTQq\":\"Εισάγετε διεύθυνση ETH\",\"KvG1xW\":\"Διεκδίκηση\",\"L+8Lzs\":\"Τρέχον LTV\",\"L+qiq+\":\"Αγορά\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Δεν υπάρχει δικαίωμα ψήφου\",\"LL0zks\":\"Μπορεί να αποτελέσει εγγύηση\",\"LLdJWu\":\"Διεκδικήσιμο AAVE\",\"LSIpNK\":\"Δεν επιτρέπεται ο δανεισμός και η αποπληρωμή στο ίδιο block\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Διεύθυνση παραλήπτη\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"προβολή κλειδώματος\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, μεταβλητό\",\"MghdTe\":\"Εάν ο συντελεστής υγείας πέσει κάτω από το 1, ενδέχεται να ενεργοποιηθεί η ρευστοποίηση των εγγυήσεών σας.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Ακυρώσατε τη συναλλαγή.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Μη έγκυρη τιμή επιστροφής της συνάρτησης εκτελεστή flashloan\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Εκκρεμεί...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Τίποτα κλειδωμένο\",\"Nh9DAo\":[[\"m\"],\"λ\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Υπέρβαση του ανώτατου ορίου νομισματοκοπείου χωρίς αντίκρισμα\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Επισκόπηση πρότασης\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"απενεργοποιημένο\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Ανάληψη\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"Όταν πραγματοποιείται ρευστοποίηση, οι ρευστοποιητές επιστρέφουν έως και το 50% του ανεξόφλητου δανεισμένου ποσού για λογαριασμό του δανειολήπτη. Σε αντάλλαγμα, μπορούν να αγοράσουν τις εξασφαλίσεις με έκπτωση και να κρατήσουν τη διαφορά (ποινή ρευστοποίησης) ως μπόνους.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα δανειακά περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Κατώτατο όριο ρευστοποίησης\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Δεν έχει επιτευχθεί\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Διαφορικό\",\"RNK49r\":\"Μη έγκυρη υπογραφή\",\"RS0o7b\":\"Κατάσταση\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Λεπτομέρειες πρότασης\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Το περιουσιακό στοιχείο δεν περιλαμβάνεται στον κατάλογο\",\"Rj01Fz\":\"Σύνδεσμοι\",\"RmWFEe\":\"Κλείδωμα APR\",\"RtBLm7\":\"Ο συντελεστής υγείας είναι μικρότερος από το όριο ρευστοποίησης\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Ενεργοποιημένο\",\"SDav7h\":\"Κεφάλαια στην Μονάδα Ασφάλειας\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Σύνολο διαθέσιμων\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Απενεργοποίηση E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Ο πάροχος διευθύνσεων κοινόχρηστων ταμείων δεν είναι εγγεγραμμένος\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Δανεισμός\",\"TFxQlw\":\"Ποινή ρευστοποίησης\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"To περιουσιακό στοιχείο μπορεί να χρησιμοποιηθεί ως εγγύηση μόνο σε λειτουργία απομόνωσης.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος σταθερού επιτοκίου σε αυτό το αποθεματικό\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Το περιουσιακό στοιχείο δεν είναι δανείσιμο σε λειτουργία απομόνωσης\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Λεπτομέρειες\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"Τα κεφάλαια αυτά έχουν δανειστεί και δεν είναι διαθέσιμα για ανάληψη αυτή τη στιγμή.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Ο δείκτης μέγιστου LTV αντιπροσωπεύει τη μέγιστη δανειοληπτική ικανότητα μιας συγκεκριμένης εγγύησης. Για παράδειγμα, εάν μια εγγύηση έχει LTV 75%, ο χρήστης μπορεί να δανειστεί έως και 0,75 ETH στο κύριο νόμισμα για κάθε 1 ETH αξίας εγγύησης.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Δεν υπάρχουν ανταμοιβές για διεκδίκηση\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Συνδέστε το πορτοφόλι\",\"VMfYUK\":\"Ασφάλεια των κατατεθειμένων εξασφαλίσεών σας έναντι των δανειζόμενων περιουσιακών στοιχείων και της υποκείμενης αξίας τους.\",\"VOAZJh\":\"Σύνολο δανείων\",\"ViKYxK\":\"ΥΠΕΡ\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Αναθεώρηση λεπτομερειών συναλλαγής\",\"W5hVah\":\"Τίποτα δεν έχει παρασχεθεί ακόμη\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Μη υποστηριζόμενο\",\"WNGZwH\":\"Το E-Mode αυξάνει το LTV σας για μια επιλεγμένη κατηγορία περιουσιακών στοιχείων έως και <0/>. <1>Μάθετε περισσότερα\",\"WPWG/y\":\"Κατάσταση & διαμόρφωση αποθεματικού\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"Ο χρήστης δεν μπορεί να κάνει ανάληψη μεγαλύτερη από το διαθέσιμο υπόλοιπο\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Για να δανειστείτε πρέπει να προσκομίσετε οποιοδήποτε περιουσιακό στοιχείο που θα χρησιμοποιηθεί ως εγγύηση.\",\"X/ITG9\":\"Κείμενο σφάλματος αντιγραφής\",\"X3Pp6x\":\"Χρησιμοποιείται ως εγγύηση\",\"X4Zt7j\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή η εφεδρεία βρίσκεται σε παύση\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"ΨΗΦΙΣΤΕ ΚΑΤΑ\",\"YDIOks\":\"Ενεργοποίηση E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"Εάν το δάνειο προς αξία υπερβεί το όριο ρευστοποίησης, η παρεχόμενη εγγύηση σας μπορεί να ρευστοποιηθεί.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Δεν τηρήθηκαν οι όροι επανεξισορρόπησης των επιτοκίων\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Διακυβέρνηση Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Λειτουργία αποδοτικότητας (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Μέγιστη περικοπή\",\"ZfUGFb\":\"Πριν από την προμήθεια\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Αξία ρευστοποίησης\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"ενεργοποιημένο\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Χρόνος που απομένει για το ξεκλείδωμα\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Ψηφίστε ΚΑΤΑ\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Οι παράμετροι της συστοιχίας που θα έπρεπε να είναι ίσου μήκους δεν είναι\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Δανεισμός APY, μεταβλητό\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Προειδοποίηση περιόδου ψύξης\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Περιουσιακό στοιχείο\",\"bXQ/Og\":\"Μοιραστείτε το στο twitter\",\"bXr0ee\":\"Τα απομονωμένα περιουσιακά στοιχεία έχουν περιορισμένη δανειοληπτική ικανότητα και άλλα περιουσιακά στοιχεία δεν μπορούν να χρησιμοποιηθούν ως εγγύηση.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Το αιτούμενο ποσό είναι μεγαλύτερο από το μέγιστο μέγεθος δανείου στη λειτουργία σταθερού επιτοκίου\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Προσφορά\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Η διεύθυνση δεν είναι συμβόλαιο\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Δεν μπορείτε να αποσύρετε αυτό το ποσό, διότι θα προκληθεί κλήση εγγύησης\",\"cBc+4A\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να δανειστείτε. Μπορείτε να δανειστείτε με βάση την εξασφάλισή σας και μέχρι να επιτευχθεί το ανώτατο όριο δανεισμού.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Λεπτομέρειες κινδύνου\",\"cNT+ij\":\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη Λειτουργία Αποδοτικότητας (E-Mode) και τη λειτουργία Απομόνωσης. Για να διαχειριστείτε τη λειτουργία E-Mode και τη λειτουργία Απομόνωσης, επισκεφθείτε τον <0>Πίνακα ελέγχου.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Ψηφίστε ΥΠΕΡ\",\"ckf7gX\":[\"Αποπληρώνοντας \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Συζήτηση φόρουμ\",\"csDS2L\":\"Διαθέσιμο\",\"cu7Stb\":\"Δεν συμμετείχατε στην παρούσα πρόταση\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Διακυβέρνηση\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Η επικύρωση του Ltv απέτυχε\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Δεν έχετε αρκετά χρήματα στο πορτοφόλι σας για να αποπληρώσετε ολόκληρο το ποσό. Εάν προχωρήσετε στην αποπληρωμή με το τρέχον ποσό των χρημάτων σας, θα εξακολουθείτε να έχετε μια μικρή θέση δανεισμού στο ταμπλό σας.\",\"dXUQFX\":\"Περιουσιακά στοιχεία προς δανεισμό\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Χρησιμοποίηση εγγυήσεων\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Η δράση απαιτεί ενεργό απόθεμα\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Σύνολο δανεικών\",\"ecqEvn\":\"Το υπόλοιπο των εγγυήσεων είναι 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Ξεκλειδώστε τώρα\",\"evw5ha\":\"Καθαρή αξία\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Αλλάξατε σε ποσοστό \",[\"0\"]],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Το τρέχον δάνειο προς αξία με βάση τις παρεχόμενες εξασφαλίσεις σας.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Υπόλοιπο\",\"fu1Dbh\":[\"Ανάληψη \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Λειτουργία Testnet\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"Ο χρήστης προσπαθεί να δανειστεί πολλαπλά περιουσιακά στοιχεία, συμπεριλαμβανομένου ενός απομονωμένου περιουσιακού στοιχείου\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Η μηδενική διεύθυνση δεν είναι έγκυρη\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Το καθαρό ΑΡΥ είναι η συνδυασμένη επίδραση όλων των θέσεων προσφοράς και δανεισμού στην καθαρή αξία, συμπεριλαμβανομένων των κινήτρων. Είναι δυνατόν να υπάρχει αρνητικό καθαρό APY εάν το χρεωστικό APY είναι υψηλότερο από το προσφερόμενο APY.\",\"gzcch9\":\"Μη έγκυρη αμοιβή πρωτοκόλλου γέφυρας\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Καθαρό APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Το % της συνολικής δανειοληπτικής σας δύναμης που χρησιμοποιείται. Αυτό βασίζεται στο ποσό της παρεχόμενης εξασφάλισής σας και στο συνολικό ποσό που μπορείτε να δανειστείτε.\",\"hehnjM\":\"Ποσό\",\"hjDCQr\":\"Υπήρξε κάποιο σφάλμα. Προσπαθήστε να αλλάξετε τις παραμέτρους ή <0><1>αντιγράψτε το σφάλμα\",\"hom7qf\":\"Διεκδίκηση\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Δανεισμός \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Ασυνεπείς παράμετροι flashloan\",\"iEPVHF\":\"Δεν έχει αρκετή δύναμη ψήφου για να συμμετάσχει στην παρούσα πρόταση\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"Ψηφίσατε \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Εισάγετε ένα ποσό\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens δεν είναι το ίδιο με το να τα κλειδώνετε. Εάν επιθυμείτε να κλειδώσετε τα\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"H χρήση εγγυήσεων είναι περιορισμένη λόγω της λειτουργίας Απομόνωσης.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Προμηθεύοντας το\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Απενεργοποίηση E-Mode\",\"jKYzR1\":\"Ενεργοποίηση E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"δ\"],\"jbFMap\":\"Χρόνος ψύξης που έχει απομείνει\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"Στο E-Mode ορισμένα περιουσιακά στοιχεία δεν είναι δανείσιμα. Βγείτε από το E-Mode για να αποκτήσετε πρόσβαση σε όλα τα περιουσιακά στοιχεία\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Μη διαθέσιμο\",\"k/sb6z\":\"Επιλέξτε γλώσσα\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Διεκδίκηση \",[\"0\"]],\"kH6wUX\":\"Επίδραση στην τιμή\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Για την εξόφληση εκ μέρους ενός χρήστη απαιτείται ένα ρητό ποσό προς εξόφληση\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Υπέρβαση του ανώτατου ορίου προσφοράς\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Το ανώτατο όριο χρέους δεν είναι μηδενικό\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Αγγλικά\",\"lfEjIE\":\"Μάθετε περισσότερα στον οδηγό <0>Συχνών Ερωτήσεων\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Συνολικές εκπομπές ανά ημέρα\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Εντάξει, Κλείσιμο\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Το περιουσιακό στοιχείο δεν μπορεί να χρησιμοποιηθεί ως εγγύηση.\",\"n+SX4g\":\"Προγραμματιστές\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Προσφορά apy\",\"nJgsQu\":\"Με δύναμη ψήφου <0/>\",\"nLC6tu\":\"Γαλλικά\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Μπορεί να εκτελεστεί\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"ω\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Ο συντελεστής υγείας και το δάνειο προς αξία καθορίζουν τη διασφάλιση των εξασφαλίσεών σας. Για να αποφύγετε τις ρευστοποιήσεις μπορείτε να παράσχετε περισσότερες εξασφαλίσεις ή να εξοφλήσετε δανειακές θέσεις.\",\"o1xc2V\":\"Η προσφορά AToken δεν είναι μηδενική\",\"o5ooMr\":\"Χρέος\",\"o7J4JM\":\"Φίλτρο\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Ψύξτε για ξεκλείδωμα\",\"oJ5ZiG\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος μεταβλητού επιτοκίου σε αυτό το αποθεματικό\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Το σταθερό επιτόκιο θα <0>μείνει το ίδιο για όλη τη διάρκεια του δανείου σας. Συνιστάται για μακροχρόνιες περιόδους δανεισμού και για χρήστες που προτιμούν την προβλεψιμότητα.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Διαθέσιμο για προμήθεια\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"Αυτό το περιουσιακό στοιχείο έχει φθάσει στο ανώτατο όριο δανεισμού του. Τίποτα δεν είναι διαθέσιμο για δανεισμό από αυτή την αγορά.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Το υποκείμενο υπόλοιπο πρέπει να είναι μεγαλύτερο από 0\",\"pgWG9H\":\"Δεν υπάρχει αρκετό κλειδωμένο υπόλοιπο\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"παρακαλούμε ελέγξτε ότι το ποσό που θέλετε να παρέχετε δεν χρησιμοποιείται επί του παρόντος για κλείδωμα. Εάν χρησιμοποιείται για κλείδωμα, η συναλλαγή σας ενδέχεται να αποτύχει.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Καταλαβαίνω πώς λειτουργεί η ψύξη (\",[\"0\"],\") και το ξεκλείδωμα (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"Ο καλών αυτής της συνάρτησης πρέπει να είναι ένα κοινόχρηστο ταμείο\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Κλειδωμένο\",\"qB4kPi\":\"Προσφορά APY\",\"qENI8q\":\"Γενικές ρυθμίσεις\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"αντιγράψτε το σφάλμα\",\"qXCkEM\":\"Συνδέστε το πορτοφόλι σας για να δείτε τις προμήθειες, τα δάνεια και τις ανοιχτές θέσεις σας.\",\"qY2jnw\":\"Μη έγκυρη λήξη\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Μη έγκυρη ποσότητα προς καύση\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Το ποσό πρέπει να είναι μεγαλύτερο από 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Εμφάνιση περιουσιακών στοιχείων με υπόλοιπο 0\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Διεκδικήστε όλες τις ανταμοιβές\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"ΚΑΤΑ\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Μπορείτε να ξεκλειδώσετε εδώ\",\"smJNwH\":\"Διαθέσιμο για δανεισμό\",\"solypO\":\"Ο παράγοντας υγείας δεν είναι κάτω από το όριο\",\"sr0UJD\":\"Πηγαίνετε Πίσω\",\"ss5GCK\":\"Η διεύθυνση του παρόχου διευθύνσεων κοινόχρηστου ταμείου είναι άκυρη\",\"swEgK4\":\"Οι πληροφορίες ψήφου σας\",\"t+wtgf\":\"Τίποτα δανεισμένο ακόμα\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Τιμή Oracle\",\"tFZLf8\":\"Αυτός ο υπολογισμός gas είναι μόνο μια εκτίμηση. Το πορτοφόλι σας θα καθορίσει την τιμή της συναλλαγής. Μπορείτε να τροποποιήσετε τις ρυθμίσεις gas απευθείας από τον πάροχο του πορτοφολιού σας.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Παρακαλώ, συνδέστε το πορτοφόλι σας\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Οι προμήθειές σας\",\"u3ZeYl\":\"Η συναλλαγή απέτυχε\",\"u706uF\":\"Άκυρη πριμοδότηση flashloan\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Για την αποπληρωμή ενός συγκεκριμένου τύπου χρέους, ο χρήστης πρέπει να έχει χρέος αυτού του τύπου\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Απόκρυψη\",\"vMba49\":\"Ο δανεισμός δεν είναι ενεργοποιημένος\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Γλώσσα\",\"vesuBJ\":\"Σας επιτρέπει να αποφασίσετε αν θα χρησιμοποιήσετε ένα παρεχόμενο περιουσιακό στοιχείο ως εγγύηση. Ένα περιουσιακό στοιχείο που χρησιμοποιείται ως εγγύηση θα επηρεάσει τη δανειοληπτική σας ικανότητα και τον συντελεστή υγείας.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Σταθερό νόμισμα\",\"w/JtJ3\":\"Η σταθερή προσφορά χρέους δεν είναι μηδενική\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Ανταμοιβές APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Εσείς \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"Ο καλών της συνάρτησης δεν είναι AToken\",\"wZFvVU\":\"ΨΗΦΙΣΤΕ ΥΠΕΡ\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Βρύση \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Τρέχον διαφορικό\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, παρακαλούμε μεταβείτε στο\",\"xNy/UG\":\"Αποπληρωμή με\",\"xPm8wv\":\"Μάθετε περισσότερα για τους κινδύνους\",\"xXYpZl\":[[\"0\"],\" Βρύση\"],\"xaVBSS\":\"Οι πληροφορίες σας\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Σκοτεινή λειτουργία\",\"yCrG6m\":\"Συνολικό μέγεθος της αγοράς\",\"yJUUbn\":\"Επισκόπηση συναλλαγής\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Μη έγκυρη διεύθυνση\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Δεν υπάρχουν αρκετά κεφάλαια στο\",[\"0\"],\"αποθεματικό για δανεισμό\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Κλείσιμο\",\"z4uGQg\":\"Υπέρβαση του ανώτατου ορίου χρέους\",\"z5UQOM\":\"Η εγγύηση που έχει επιλεγεί δεν μπορεί να ρευστοποιηθεί\",\"z5Y+p6\":[\"Παροχή \",[\"symbol\"]],\"zCjNKs\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή το αποθεματικό έχει παγώσει\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Υπολειπόμενο χρέος\",\"zmTPiV\":\"Υπόλοιπο προσφοράς\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Μενού\",\"zwWKhA\":\"Μάθετε περισσότερα\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"+EGVI0\":\"Receive (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Φαίνεται ότι δεν μπορούμε να αλλάξουμε το δίκτυο αυτόματα. Ελέγξτε αν μπορείτε να το αλλάξετε από το πορτοφόλι.\",\"+kLZGu\":\"Supplied asset amount\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Minimum staked Aave amount\",\"00OflG\":\"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.\",\"08/rZ9\":\"The cooldown period is the time required prior to unstaking your tokens (20 days). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window.<0>Learn more\",\"1Onqx8\":[\"Έγκριση του \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Blocked Address\",\"2bAhR7\":\"Meet GHO\",\"2o/xRt\":\"Επίτευξη του ανώτατου ορίου εφοδιασμού στο αποθεματικό-στόχο. Δοκιμάστε να \\nμειώσετε την ποσότητα.\",\"3O8YTV\":\"Total interest accrued\",\"4iPAI3\":\"Minimum GHO borrow amount\",\"6NGLTR\":\"Discountable amount\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Discount parameters are decided by the Aave community and may be changed over time. Check Governance for updates and vote to participate. <0>Learn more\",\"ARu1L4\":\"Repaid\",\"B6aXGH\":\"Σταθερό\",\"B9Gqbz\":\"Variable rate\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"At a discount\",\"CMHmbm\":\"Slippage\",\"EBL9Gz\":\"COPIED!\",\"ES8dkb\":\"Fixed rate\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Discount\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Save and share\",\"JK9zf1\":[\"Estimated compounding interest, including discount for Staking \",[\"0\"],\"AAVE in Safety Module.\"],\"JPrLjO\":\"Δεν μπορείτε να χρησιμοποιήσετε αυτό το νόμισμα ως εγγύηση\",\"JU6q+W\":\"Ανταμοιβή(ες) προς διεκδίκηση\",\"K05qZY\":\"Withdraw & Switch\",\"KRpokz\":\"VIEW TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Η ενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση αυξάνει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας. Ωστόσο, μπορεί να ρευστοποιηθεί εάν ο συντελεστής υγείας σας πέσει κάτω από το 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Απενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Send feedback\",\"TeCFg/\":\"Borrow rate change\",\"TskbEN\":\"Holders of stkAAVE receive a discount on the GHO borrowing rate\",\"TtZL6q\":\"Discount model parameters\",\"Tz0GSZ\":\"blocked activities\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"W8ekPc\":\"Back to Dashboard\",\"XZzneG\":\"Θα βγείτε από τη λειτουργία απομόνωσης και άλλα tokens μπορούν πλέον να χρησιμοποιηθούν ως εγγύηση\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Η απενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση επηρεάζει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας.\",\"al6Pyz\":\"Exceeds the discount\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Δεν υπάρχουν επαρκείς εγγυήσεις για την αποπληρωμή αυτού του ποσού χρέους με\",\"cqnmnD\":\"Effective interest rate\",\"dMtLDE\":\"to\",\"dpc0qG\":\"Μεταβλητό\",\"euScGB\":\"APY with discount applied\",\"fHcELk\":\"Καθαρό APR\",\"flRCF/\":\"Staking discount\",\"gncRUO\":\"This address is blocked on app.aave.com because it is associated with one or more\",\"gr8mYw\":\"You may borrow up to <0/> GHO at <1/> (max discount)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Borrow balance\",\"i2JTiw\":\"You may enter a custom amount in the field.\",\"jMam5g\":[[\"0\"],\" Υπόλοιπο\"],\"jpctdh\":\"View\",\"kwwn6i\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate. The discount applies to 100 GHO for every 1 stkAAVE held. Use the calculator below to see GHO borrow rate with the discount applied.\",\"lNVG7i\":\"Select an asset\",\"lt6bpt\":\"Collateral to repay with\",\"mIM0qu\":\"Expected amount to repay\",\"mzI/c+\":\"Download\",\"n8Psk4\":\"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.\",\"nOy4ob\":\"We suggest you go back to the Dashboard.\",\"nakd8r\":\"stkAAVE holders get a discount on GHO borrow rate\",\"nh2EJK\":[\"Παρακαλώ μεταβείτε στο \",[\"networkName\"],\".\"],\"ntkAoE\":\"Discount applied for <0/> staking AAVE\",\"o4tCu3\":\"Borrow APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"Η περίοδος ψύξης είναι \",[\"0\"],\". Μετά την \",[\"1\"],\" περίοδο ψύξης, θα εισέλθετε στο παράθυρο ξεκλειδώματος \",[\"2\"],\". Θα συνεχίσετε να λαμβάνετε ανταμοιβές κατά τη διάρκεια της ψύξης και του παραθύρου ξεκλειδώματος.\"],\"p3j+mb\":\"Το υπόλοιπο της ανταμοιβής σας είναι 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interest accrued\",\"rf8POi\":\"Borrowed asset amount\",\"ruc7X+\":\"Add stkAAVE to see borrow APY with the discount\",\"sK+Nag\":\"Αναθεώρηση συναλλαγής\",\"t81DpC\":[\"Approve \",[\"symbol\"],\" to continue\"],\"umICAY\":\"<0><1><2/>Add stkAAVE to see borrow rate with discount\",\"uwAUvj\":\"COPY IMAGE\",\"v8x7Mg\":\"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.\",\"wRRqvW\":\"Δεν έχετε προμήθειες σε αυτό το νόμισμα\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Ενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"yW1oWB\":\"Τύπος APY\",\"yhvj6d\":\"Δεν μπορείτε να αλλάξετε τη χρήση ως λειτουργία εγγύησης για αυτό το νόμισμα, διότι θα προκαλέσει κλήση εγγύησης\",\"zevmS2\":\"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index 0a505df066..d7e06ab82a 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"If you DO NOT unstake within \",[\"0\"],\" of unstake window, you will need to activate cooldown process again.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participating in this \",[\"symbol\"],\" reserve gives annualized rewards.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Borrow cap\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Stable borrowing is not enabled\",\"/yQcJM\":\"Total worth\",\"00AB2i\":\"User did not borrow the specified currency\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"This is the total amount that you are able to supply to in this reserve. You are able to supply your wallet balance up until the supply cap is reached.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Please connect a wallet to view your personal information here.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Liquidation <0/> threshold\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"View details\",\"2FYpfJ\":\"More\",\"2O3qp5\":\"Available liquidity\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Stable borrowing is enabled\",\"34Qfwy\":\"Borrow cap is exceeded\",\"39eQRj\":[\"Borrow \",[\"symbol\"]],\"3BL1xB\":\"Total supplied\",\"3K0oMo\":\"Remaining supply\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"There is not enough collateral to cover a new borrow\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Supply \",[\"symbol\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Repay\",\"3qsjtp\":\"The weighted average of APY for all supplied assets, including incentives.\",\"3rL+os\":\"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Voting results\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"This asset has almost reached its supply cap. There can only be \",[\"messageValue\"],\" supplied to this market.\"],\"5cZ/KX\":\"Variable debt supply is not zero\",\"5che++\":\"To request access for this permissioned market, please visit: <0>Acces Provider Name\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Allowance required action\",\"5rsnKT\":\"Available rewards\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Overview\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Collateral\",\"65A04M\":\"Spanish\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Repay \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Voting power\",\"6f8S68\":\"Markets\",\"6g1gi0\":\"Proposals\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Switch Network\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Health factor\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Reached\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Claim all\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Dashboard\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions\",\"87pUEW\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"All proposals\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Invalid amount to mint\",\"8Z5FPv\":\"Disconnect Wallet\",\"8Zz7s5\":\"assets\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Utilization Rate\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Show\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"You are entering Isolation mode\",\"9CDK3/\":[\"Borrowing is currently unavailable for \",[\"0\"],\".\"],\"9GIj3z\":\"Reserve Size\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Current votes\",\"9Rw96f\":[\"This asset has almost reached its borrow cap. There is only \",[\"messageValue\"],\" available to be borrowed from this market.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"This asset has reached its supply cap. Nothing is available to be supplied from this market.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Since this is a test network, you can get any of the assets if you have ETH on your wallet\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Your borrows\",\"AV7cGz\":\"Review approval tx details\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Borrowing power and assets are limited due to Isolation mode.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Collateral usage is limited because of isolation mode. <0>Learn More\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Asset category\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Claim \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Faucet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Collateral is (mostly) the same currency that is being borrowed\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"The underlying asset cannot be rescued\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave per month\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collateralization\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Disabled\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Withdrawing \",[\"symbol\"]],\"EdQY6l\":\"None\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Learn more.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Borrow power used\",\"FPKEug\":\"Operation not supported\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"on\",\"Fjw9N+\":\"Assets to supply\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Assets\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"ends\",\"GtP2hp\":[\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for \",[\"0\"],\" category. To manage E-Mode categories visit your <0>Dashboard.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Unstake window\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Cooldown period\",\"IaA40H\":\"Liquidation at\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Not enough balance on your wallet\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Wallet balance\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"This represents the threshold at which a borrow position will be considered undercollateralized and subject to liquidation for each collateral. For example, if a collateral has a liquidation threshold of 80%, it means that the position will be liquidated when the debt value is worth 80% of the collateral value.\",\"KYAjf3\":\"Isolated\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Expires\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Wrong Network\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Enter ETH address\",\"KvG1xW\":\"Claiming\",\"L+8Lzs\":\"Current LTV\",\"L+qiq+\":\"Market\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"No voting power\",\"LL0zks\":\"Can be collateral\",\"LLdJWu\":\"Claimable AAVE\",\"LSIpNK\":\"Borrow and repay in same block is not allowed\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Recipient address\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"staking view\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"If the health factor goes below 1, the liquidation of your collateral might be triggered.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"You cancelled the transaction.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Invalid return value of the flashloan executor function\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pending...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nothing staked\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Unbacked mint cap is exceeded\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Proposal overview\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"disabled\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Withdraw\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"When a liquidation occurs, liquidators repay up to 50% of the outstanding borrowed amount on behalf of the borrower. In return, they can buy the collateral at a discount and keep the difference (liquidation penalty) as a bonus.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"The weighted average of APY for all borrowed assets, including incentives.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Liquidation threshold\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Not reached\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Differential\",\"RNK49r\":\"Invalid signature\",\"RS0o7b\":\"State\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Proposal details\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Asset is not listed\",\"Rj01Fz\":\"Links\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"Health factor is lesser than the liquidation threshold\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Enabled\",\"SDav7h\":\"Funds in the Safety Module\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Total available\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Disabling E-Mode\",\"SxaD0o\":\"Pool addresses provider is not registered\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Borrow\",\"TFxQlw\":\"Liquidation penalty\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"Asset can only be used as collateral in isolation mode only.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"User does not have outstanding stable rate debt on this reserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Asset is not borrowable in isolation mode\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Details\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"These funds have been borrowed and are not available for withdrawal at this time.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"The Maximum LTV ratio represents the maximum borrowing power of a specific collateral. For example, if a collateral has an LTV of 75%, the user can borrow up to 0.75 worth of ETH in the principal currency for every 1 ETH worth of collateral.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No rewards to claim\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Connect wallet\",\"VMfYUK\":\"Safety of your deposited collateral against the borrowed assets and its underlying value.\",\"VOAZJh\":\"Total borrows\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Review tx details\",\"W5hVah\":\"Nothing supplied yet\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Unbacked\",\"WNGZwH\":\"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more\",\"WPWG/y\":\"Reserve status & configuration\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"User cannot withdraw more than the available balance\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"To borrow you need to supply any asset to be used as collateral.\",\"X/ITG9\":\"Copy error text\",\"X3Pp6x\":\"Used as collateral\",\"X4Zt7j\":\"Action cannot be performed because the reserve is paused\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTE NAY\",\"YDIOks\":\"Enabling E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Interest rate rebalance conditions were not met\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Aave Governance\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Efficiency mode (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Before supplying\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Liquidation value\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"enabled\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Time left to unstake\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Array parameters that should be equal length are not\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Borrow APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Cooldown period warning\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Asset\",\"bXQ/Og\":\"Share on twitter\",\"bXr0ee\":\"Isolated assets have limited borrowing power and other assets cannot be used as collateral.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"The requested amount is greater than the max loan size in stable rate mode\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Supply\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Address is not a contract\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"You can not withdraw this amount because it will cause collateral call\",\"cBc+4A\":\"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Risk details\",\"cNT+ij\":\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) and Isolation mode. To manage E-Mode and Isolation mode visit your <0>Dashboard.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Repaying \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Forum discussion\",\"csDS2L\":\"Available\",\"cu7Stb\":\"You did not participate in this proposal\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Governance\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Ltv validation failed\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"You don’t have enough funds in your wallet to repay the full amount. If you proceed to repay with your current amount of funds, you will still have a small borrowing position in your dashboard.\",\"dXUQFX\":\"Assets to borrow\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Collateral usage\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Action requires an active reserve\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Total borrowed\",\"ecqEvn\":\"The collateral balance is 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Unstake now\",\"evw5ha\":\"Net worth\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"You switched to \",[\"0\"],\" rate\"],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Your current loan to value based on your collateral supplied.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Withdraw \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"User is trying to borrow multiple assets including a siloed one\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Zero address not valid\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Net APY is the combined effect of all supply and borrow positions on net worth, including incentives. It is possible to have a negative net APY if debt APY is higher than supply APY.\",\"gzcch9\":\"Invalid bridge protocol fee\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Net APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"The % of your total borrowing power used. This is based on the amount of your collateral supplied and the total amount that you can borrow.\",\"hehnjM\":\"Amount\",\"hjDCQr\":\"There was some error. Please try changing the parameters or <0><1>copy the error\",\"hom7qf\":\"Claim\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Borrowing \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Inconsistent flashloan parameters\",\"iEPVHF\":\"Not enough voting power to participate in this proposal\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"You voted \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Enter an amount\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens is not the same as staking them. If you wish to stake your\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"Collateral usage is limited because of Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Supplying your\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Disable E-Mode\",\"jKYzR1\":\"Enable E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Cooldown time left\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Unavailable\",\"k/sb6z\":\"Select language\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Claim \",[\"0\"]],\"kH6wUX\":\"Price impact\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"To repay on behalf of a user an explicit amount to repay is needed\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Supply cap is exceeded\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Debt ceiling is not zero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"English\",\"lfEjIE\":\"Learn more in our <0>FAQ guide\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Total emission per day\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Ok, Close\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Asset cannot be used as collateral.\",\"n+SX4g\":\"Developers\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Supply apy\",\"nJgsQu\":\"With a voting power of <0/>\",\"nLC6tu\":\"French\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Can be executed\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Your health factor and loan to value determine the assurance of your collateral. To avoid liquidations you can supply more collateral or repay borrow positions.\",\"o1xc2V\":\"AToken supply is not zero\",\"o5ooMr\":\"Debt\",\"o7J4JM\":\"Filter\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Cooldown to unstake\",\"oJ5ZiG\":\"User does not have outstanding variable rate debt on this reserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Stable interest rate will <0>stay the same for the duration of your loan. Recommended for long-term loan periods and for users who prefer predictability.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Available to supply\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"The underlying balance needs to be greater than 0\",\"pgWG9H\":\"Not enough staked balance\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"please check that the amount you want to supply is not currently being used for staking. If it is being used for staking, your transaction might fail.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"I understand how cooldown (\",[\"0\"],\") and unstaking (\",[\"1\"],\") work\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"The caller of this function must be a pool\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Staked\",\"qB4kPi\":\"Supply APY\",\"qENI8q\":\"Global settings\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copy the error\",\"qXCkEM\":\"Please connect your wallet to see your supplies, borrowings, and open positions.\",\"qY2jnw\":\"Invalid expiration\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Invalid amount to burn\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Amount must be greater than 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"rcT+yy\":\"Show assets with 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Claim all rewards\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NAY\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"You unstake here\",\"smJNwH\":\"Available to borrow\",\"solypO\":\"Health factor is not below the threshold\",\"sr0UJD\":\"Go Back\",\"ss5GCK\":\"The address of the pool addresses provider is invalid\",\"swEgK4\":\"Your voting info\",\"t+wtgf\":\"Nothing borrowed yet\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Oracle price\",\"tFZLf8\":\"This gas calculation is only an estimation. Your wallet will set the price of the transaction. You can modify the gas settings directly from your wallet provider.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Please, connect your wallet\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Your supplies\",\"u3ZeYl\":\"Transaction failed\",\"u706uF\":\"Invalid flashloan premium\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Hide\",\"vMba49\":\"Borrowing is not enabled\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Allows you to decide whether to use a supplied asset as collateral. An asset used as collateral will affect your borrowing power and health factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"Stable debt supply is not zero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Rewards APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"You \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"The caller of the function is not an AToken\",\"wZFvVU\":\"VOTE YAE\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Current differential\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, please go to the\",\"xNy/UG\":\"Repay with\",\"xPm8wv\":\"Learn more about risks involved\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Your info\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Dark mode\",\"yCrG6m\":\"Total market size\",\"yJUUbn\":\"Transaction overview\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Not a valid address\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"There are not enough funds in the\",[\"0\"],\"reserve to borrow\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Close\",\"z4uGQg\":\"Debt ceiling is exceeded\",\"z5UQOM\":\"The collateral chosen cannot be liquidated\",\"z5Y+p6\":[\"Supplying \",[\"symbol\"]],\"zCjNKs\":\"Action cannot be performed because the reserve is frozen\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Remaining debt\",\"zmTPiV\":\"Supply balance\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Learn more\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"If you DO NOT unstake within \",[\"0\"],\" of unstake window, you will need to activate cooldown process again.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participating in this \",[\"symbol\"],\" reserve gives annualized rewards.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Borrow cap\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Stable borrowing is not enabled\",\"/yQcJM\":\"Total worth\",\"00AB2i\":\"User did not borrow the specified currency\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"This is the total amount that you are able to supply to in this reserve. You are able to supply your wallet balance up until the supply cap is reached.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Please connect a wallet to view your personal information here.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Liquidation <0/> threshold\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"View details\",\"2FYpfJ\":\"More\",\"2O3qp5\":\"Available liquidity\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Stable borrowing is enabled\",\"34Qfwy\":\"Borrow cap is exceeded\",\"39eQRj\":[\"Borrow \",[\"symbol\"]],\"3BL1xB\":\"Total supplied\",\"3K0oMo\":\"Remaining supply\",\"3MoZhl\":\"There is not enough collateral to cover a new borrow\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Supply \",[\"symbol\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Repay\",\"3qsjtp\":\"The weighted average of APY for all supplied assets, including incentives.\",\"3rL+os\":\"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Voting results\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"This asset has almost reached its supply cap. There can only be \",[\"messageValue\"],\" supplied to this market.\"],\"5cZ/KX\":\"Variable debt supply is not zero\",\"5che++\":\"To request access for this permissioned market, please visit: <0>Acces Provider Name\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Allowance required action\",\"5rsnKT\":\"Available rewards\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Overview\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Collateral\",\"65A04M\":\"Spanish\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Repay \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Voting power\",\"6f8S68\":\"Markets\",\"6g1gi0\":\"Proposals\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Switch Network\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Health factor\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Reached\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Claim all\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Dashboard\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions\",\"87pUEW\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"All proposals\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Invalid amount to mint\",\"8Z5FPv\":\"Disconnect Wallet\",\"8Zz7s5\":\"assets\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Utilization Rate\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Show\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"You are entering Isolation mode\",\"9CDK3/\":[\"Borrowing is currently unavailable for \",[\"0\"],\".\"],\"9GIj3z\":\"Reserve Size\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Current votes\",\"9Rw96f\":[\"This asset has almost reached its borrow cap. There is only \",[\"messageValue\"],\" available to be borrowed from this market.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"This asset has reached its supply cap. Nothing is available to be supplied from this market.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Since this is a test network, you can get any of the assets if you have ETH on your wallet\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Your borrows\",\"AV7cGz\":\"Review approval tx details\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Borrowing power and assets are limited due to Isolation mode.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Collateral usage is limited because of isolation mode. <0>Learn More\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Asset category\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Claim \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Faucet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Collateral is (mostly) the same currency that is being borrowed\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"The underlying asset cannot be rescued\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave per month\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collateralization\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Disabled\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Withdrawing \",[\"symbol\"]],\"EdQY6l\":\"None\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Learn more.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Borrow power used\",\"FPKEug\":\"Operation not supported\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"on\",\"Fjw9N+\":\"Assets to supply\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Assets\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"ends\",\"GtP2hp\":[\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for \",[\"0\"],\" category. To manage E-Mode categories visit your <0>Dashboard.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Unstake window\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Cooldown period\",\"IaA40H\":\"Liquidation at\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Not enough balance on your wallet\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Wallet balance\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"This represents the threshold at which a borrow position will be considered undercollateralized and subject to liquidation for each collateral. For example, if a collateral has a liquidation threshold of 80%, it means that the position will be liquidated when the debt value is worth 80% of the collateral value.\",\"KYAjf3\":\"Isolated\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Expires\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Wrong Network\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Enter ETH address\",\"KvG1xW\":\"Claiming\",\"L+8Lzs\":\"Current LTV\",\"L+qiq+\":\"Market\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"No voting power\",\"LL0zks\":\"Can be collateral\",\"LLdJWu\":\"Claimable AAVE\",\"LSIpNK\":\"Borrow and repay in same block is not allowed\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Recipient address\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"staking view\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"If the health factor goes below 1, the liquidation of your collateral might be triggered.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"You cancelled the transaction.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Invalid return value of the flashloan executor function\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pending...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nothing staked\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Unbacked mint cap is exceeded\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Proposal overview\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"disabled\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Withdraw\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"When a liquidation occurs, liquidators repay up to 50% of the outstanding borrowed amount on behalf of the borrower. In return, they can buy the collateral at a discount and keep the difference (liquidation penalty) as a bonus.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"The weighted average of APY for all borrowed assets, including incentives.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Liquidation threshold\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Not reached\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Differential\",\"RNK49r\":\"Invalid signature\",\"RS0o7b\":\"State\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Proposal details\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Asset is not listed\",\"Rj01Fz\":\"Links\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"Health factor is lesser than the liquidation threshold\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Enabled\",\"SDav7h\":\"Funds in the Safety Module\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Total available\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Disabling E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Pool addresses provider is not registered\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Borrow\",\"TFxQlw\":\"Liquidation penalty\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"Asset can only be used as collateral in isolation mode only.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"User does not have outstanding stable rate debt on this reserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Asset is not borrowable in isolation mode\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Details\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"These funds have been borrowed and are not available for withdrawal at this time.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"The Maximum LTV ratio represents the maximum borrowing power of a specific collateral. For example, if a collateral has an LTV of 75%, the user can borrow up to 0.75 worth of ETH in the principal currency for every 1 ETH worth of collateral.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No rewards to claim\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Connect wallet\",\"VMfYUK\":\"Safety of your deposited collateral against the borrowed assets and its underlying value.\",\"VOAZJh\":\"Total borrows\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Review tx details\",\"W5hVah\":\"Nothing supplied yet\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Unbacked\",\"WNGZwH\":\"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more\",\"WPWG/y\":\"Reserve status & configuration\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"User cannot withdraw more than the available balance\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"To borrow you need to supply any asset to be used as collateral.\",\"X/ITG9\":\"Copy error text\",\"X3Pp6x\":\"Used as collateral\",\"X4Zt7j\":\"Action cannot be performed because the reserve is paused\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTE NAY\",\"YDIOks\":\"Enabling E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Interest rate rebalance conditions were not met\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Aave Governance\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Efficiency mode (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Before supplying\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Liquidation value\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"enabled\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Time left to unstake\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Array parameters that should be equal length are not\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Borrow APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Cooldown period warning\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Asset\",\"bXQ/Og\":\"Share on twitter\",\"bXr0ee\":\"Isolated assets have limited borrowing power and other assets cannot be used as collateral.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"The requested amount is greater than the max loan size in stable rate mode\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Supply\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Address is not a contract\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"You can not withdraw this amount because it will cause collateral call\",\"cBc+4A\":\"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Risk details\",\"cNT+ij\":\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) and Isolation mode. To manage E-Mode and Isolation mode visit your <0>Dashboard.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Repaying \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Forum discussion\",\"csDS2L\":\"Available\",\"cu7Stb\":\"You did not participate in this proposal\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Governance\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Ltv validation failed\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"You don’t have enough funds in your wallet to repay the full amount. If you proceed to repay with your current amount of funds, you will still have a small borrowing position in your dashboard.\",\"dXUQFX\":\"Assets to borrow\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Collateral usage\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Action requires an active reserve\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Total borrowed\",\"ecqEvn\":\"The collateral balance is 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Unstake now\",\"evw5ha\":\"Net worth\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"You switched to \",[\"0\"],\" rate\"],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Your current loan to value based on your collateral supplied.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Withdraw \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"User is trying to borrow multiple assets including a siloed one\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Zero address not valid\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Net APY is the combined effect of all supply and borrow positions on net worth, including incentives. It is possible to have a negative net APY if debt APY is higher than supply APY.\",\"gzcch9\":\"Invalid bridge protocol fee\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Net APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"The % of your total borrowing power used. This is based on the amount of your collateral supplied and the total amount that you can borrow.\",\"hehnjM\":\"Amount\",\"hjDCQr\":\"There was some error. Please try changing the parameters or <0><1>copy the error\",\"hom7qf\":\"Claim\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Borrowing \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Inconsistent flashloan parameters\",\"iEPVHF\":\"Not enough voting power to participate in this proposal\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"You voted \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Enter an amount\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens is not the same as staking them. If you wish to stake your\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"Collateral usage is limited because of Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Supplying your\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Disable E-Mode\",\"jKYzR1\":\"Enable E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Cooldown time left\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Unavailable\",\"k/sb6z\":\"Select language\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Claim \",[\"0\"]],\"kH6wUX\":\"Price impact\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"To repay on behalf of a user an explicit amount to repay is needed\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Supply cap is exceeded\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Debt ceiling is not zero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"English\",\"lfEjIE\":\"Learn more in our <0>FAQ guide\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Total emission per day\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Ok, Close\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Asset cannot be used as collateral.\",\"n+SX4g\":\"Developers\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Supply apy\",\"nJgsQu\":\"With a voting power of <0/>\",\"nLC6tu\":\"French\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Can be executed\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Your health factor and loan to value determine the assurance of your collateral. To avoid liquidations you can supply more collateral or repay borrow positions.\",\"o1xc2V\":\"AToken supply is not zero\",\"o5ooMr\":\"Debt\",\"o7J4JM\":\"Filter\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown to unstake\",\"oJ5ZiG\":\"User does not have outstanding variable rate debt on this reserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Stable interest rate will <0>stay the same for the duration of your loan. Recommended for long-term loan periods and for users who prefer predictability.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Available to supply\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"The underlying balance needs to be greater than 0\",\"pgWG9H\":\"Not enough staked balance\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"please check that the amount you want to supply is not currently being used for staking. If it is being used for staking, your transaction might fail.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"I understand how cooldown (\",[\"0\"],\") and unstaking (\",[\"1\"],\") work\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"The caller of this function must be a pool\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Staked\",\"qB4kPi\":\"Supply APY\",\"qENI8q\":\"Global settings\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copy the error\",\"qXCkEM\":\"Please connect your wallet to see your supplies, borrowings, and open positions.\",\"qY2jnw\":\"Invalid expiration\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Invalid amount to burn\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Amount must be greater than 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Show assets with 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Claim all rewards\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NAY\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"You unstake here\",\"smJNwH\":\"Available to borrow\",\"solypO\":\"Health factor is not below the threshold\",\"sr0UJD\":\"Go Back\",\"ss5GCK\":\"The address of the pool addresses provider is invalid\",\"swEgK4\":\"Your voting info\",\"t+wtgf\":\"Nothing borrowed yet\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Oracle price\",\"tFZLf8\":\"This gas calculation is only an estimation. Your wallet will set the price of the transaction. You can modify the gas settings directly from your wallet provider.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Please, connect your wallet\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Your supplies\",\"u3ZeYl\":\"Transaction failed\",\"u706uF\":\"Invalid flashloan premium\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Hide\",\"vMba49\":\"Borrowing is not enabled\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Allows you to decide whether to use a supplied asset as collateral. An asset used as collateral will affect your borrowing power and health factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"Stable debt supply is not zero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Rewards APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"You \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"The caller of the function is not an AToken\",\"wZFvVU\":\"VOTE YAE\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Current differential\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, please go to the\",\"xNy/UG\":\"Repay with\",\"xPm8wv\":\"Learn more about risks involved\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Your info\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Dark mode\",\"yCrG6m\":\"Total market size\",\"yJUUbn\":\"Transaction overview\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Not a valid address\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"There are not enough funds in the\",[\"0\"],\"reserve to borrow\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Close\",\"z4uGQg\":\"Debt ceiling is exceeded\",\"z5UQOM\":\"The collateral chosen cannot be liquidated\",\"z5Y+p6\":[\"Supplying \",[\"symbol\"]],\"zCjNKs\":\"Action cannot be performed because the reserve is frozen\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Remaining debt\",\"zmTPiV\":\"Supply balance\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Learn more\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\"}")}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index edecee7ce4..e2b593d3ff 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -307,10 +307,6 @@ msgstr "Total supplied" msgid "Remaining supply" msgstr "Remaining supply" -#: src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx -msgid "High price impact ({0}%). This route may return less due to low liquidity or small order size." -msgstr "High price impact ({0}%). This route may return less due to low liquidity or small order size." - #: src/ui-config/errorMapping.tsx msgid "There is not enough collateral to cover a new borrow" msgstr "There is not enough collateral to cover a new borrow" @@ -827,6 +823,10 @@ msgstr "Borrowed assets" msgid "Collateral usage is limited because of isolation mode. <0>Learn More" msgstr "Collateral usage is limited because of isolation mode. <0>Learn More" +#: src/components/transactions/Swap/modals/result/SwapResultView.tsx +msgid "Swap saved in your <0>history section." +msgstr "Swap saved in your <0>history section." + #: src/modules/migration/MigrationBottomPanel.tsx msgid "Migrate your assets" msgstr "Migrate your assets" @@ -1252,10 +1252,6 @@ msgstr "Liquidation at" msgid "Costs & Fees" msgstr "Costs & Fees" -#: src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx -msgid "I confirm the swap with a potential {0}% value loss" -msgstr "I confirm the swap with a potential {0}% value loss" - #: src/components/transactions/SavingsGho/SavingsGhoModalDepositContent.tsx msgid "deposited" msgstr "deposited" @@ -1890,6 +1886,10 @@ msgstr "Protocol borrow cap is at 100% for this asset. Further borrowing unavail msgid "Disabling E-Mode" msgstr "Disabling E-Mode" +#: src/modules/history/HistoryWrapper.tsx +msgid "This list may not include all your swaps." +msgstr "This list may not include all your swaps." + #: src/ui-config/errorMapping.tsx msgid "Pool addresses provider is not registered" msgstr "Pool addresses provider is not registered" @@ -3224,6 +3224,10 @@ msgstr "Filter" msgid "Learn more about the Ether.fi program" msgstr "Learn more about the Ether.fi program" +#: src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx +msgid "High price impact ({0}%). This route may return {1} due to low liquidity or small order size." +msgstr "High price impact ({0}%). This route may return {1} due to low liquidity or small order size." + #: src/modules/sGho/SavingsGhoCard.tsx #: src/modules/staking/StakingPanel.tsx #: src/modules/umbrella/helpers/StakingDropdown.tsx @@ -3487,6 +3491,10 @@ msgstr "APY" msgid "Asset cannot be migrated because you have isolated collateral in {marketName} v3 Market which limits borrowable assets. You can manage your collateral in <0>{marketName} V3 Dashboard" msgstr "Asset cannot be migrated because you have isolated collateral in {marketName} v3 Market which limits borrowable assets. You can manage your collateral in <0>{marketName} V3 Dashboard" +#: src/components/transactions/Swap/warnings/postInputs/HighPriceImpactWarning.tsx +msgid "I confirm the swap with a potential {0}% value {1}" +msgstr "I confirm the swap with a potential {0}% value {1}" + #: src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsList.tsx msgid "Show assets with 0 balance" msgstr "Show assets with 0 balance" diff --git a/src/locales/es/messages.js b/src/locales/es/messages.js index 99e8e03535..30890f1012 100644 --- a/src/locales/es/messages.js +++ b/src/locales/es/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si NO unstakeas entre \",[\"0\"],\" de la ventana de unstakeo, necesitarás activar el proceso de cooldown de nuevo.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participar en esta reserva de \",[\"symbol\"],\" da recompensas anuales.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Utiliza tu balance de AAVE, stkAAVE o aAava para delegar tu voto y poder de proposición. No enviarás ningún token, solo los derechos de votar y proponer cambios en el protocolo. Puedes volver a delegar o revocar el poder de vuelta en cualquier momento.\",\"+i3Pd2\":\"Límite del préstamo\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Cantidad para migrar\",\"/7ykiW\":\"Tomar prestado esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"Preguntas frecuentes\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"El préstamo estable no está habilitado\",\"/yQcJM\":\"Valor total\",\"00AB2i\":\"El usuario no tomó prestado el activo especificado\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Cambio de tasa\",\"0BF3yK\":\"Lo sentimos, no hemos podido encontrar la página que estabas buscando.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Riesgo de liquidación\",\"0ojY+Y\":\"Balance actual v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Cambio de garantía\",\"0wGCWc\":\"Esta es la cantidad total que puedes suministrar en esta reserva. Puedes suministrar el balance de tu cartera hasta que se alcance el límite de suministro.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Los datos de los precios no están disponibles actualmente para esta reserva en el subgraph del protocolo\",\"1LjK22\":\"Historial de transacciones\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Por favor conecta una cartera para ver tu información personal aquí.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Umbral <0/> de liquidación\",\"1m9Qqc\":\"Retirando y Cambiando\",\"1t7rez\":\"El suministro de activos está limitado a una cierta cantidad para reducir la exposición del protocolo a este activo y ayudar a manejar los riesgos implicados.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Ver detalles\",\"2FYpfJ\":\"Más\",\"2O3qp5\":\"Liquidez disponible\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Este activo no se puede migrar debido a una restricción del límite de suministro en el mercado v3 de \",[\"marketName\"],\".\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave es un protocolo totalmente descentralizado, gobernado por la comunidad de poseedores de tokens AAVE. Los poseedores de tokens AAVE discuten, proponen y votan colectivamente sobre las actualizaciones del protocolo. Los poseedores de tokens AAVE (solo en la red Ethereum) pueden votar ellos mismos sobre nuevas propuestas o delegarse a una dirección de su elección. Para aprender más, consulta la\",\"2a6G7d\":\"Por favor introduce una dirección de cartera válida.\",\"2eBWE6\":\"Acepto los riesgos involucadros.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"El préstamo estable no está habilitado\",\"34Qfwy\":\"El límite del préstamo se ha sobrepasado\",\"39eQRj\":[\"Tomar prestado \",[\"symbol\"]],\"3BL1xB\":\"Total suministrado\",\"3K0oMo\":\"Suministro restante\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"No hay suficiente garantía para cubrir un nuevo préstamo\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Suministrar \",[\"symbol\"]],\"3mXg0z\":\"LTV máximo\",\"3q3mFy\":\"Pagar\",\"3qsjtp\":\"El promedio ponderado de APY para todos los activos suministrados, incluidos los incentivos.\",\"3rL+os\":\"Solo puedes retirar tus activos del Módulo de Seguridad después de que finalice el período de cooldown y la ventana de unstakeo esté activa.\",\"42UgDM\":[\"Migrar al mercado V3 de \",[\"0\"]],\"49UFQA\":\"Resultados de la votación\",\"4DMZUI\":\"Ver Transacciones\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Términos\",\"4YYh4d\":\"Máximo disponible para tomar prestado\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Firma para continuar\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transacciones\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue activos de prueba gratis en\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentación\",\"5NOSGa\":\"El límite de deuda limita la cantidad posible que los usuarios del protocolo pueden tomar prestado contra este activo. El límite de deuda es específico para los activos en isolation mode y se indica en USD.\",\"5Ncc6j\":[\"Este activo casi ha alcanzado su límite de suministro. Solo se puede suministrar \",[\"messageValue\"],\" a este mercado.\"],\"5cZ/KX\":\"El suministro de deuda variable no es cero\",\"5che++\":\"Para solicitar acceso a este mercado, porfavor visita: <0>Nombre del proveedor de acceso\",\"5ctNdV\":[\"Mínimo \",[\"0\"],\" recibido\"],\"5hDe9v\":\"Acción de permiso requerida\",\"5rsnKT\":\"Recompensas disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Ver todos los votos\",\"6/dCYd\":\"Resumen\",\"60crCe\":\"Todas las transacciones\",\"62Xcjh\":\"Garantía\",\"65A04M\":\"Español\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Firmando\",\"6Jrv+z\":[\"Pagar \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Poder de votación\",\"6f8S68\":\"Mercados\",\"6g1gi0\":\"Propuestas\",\"6gvoHP\":\"Copiar mensaje de error\",\"6h3Q5G\":\"reembolsado\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Cambiar de red\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Factor de salud\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Alcanzado\",\"7YlcXu\":\"El fork mode está activado\",\"7Z76Iw\":\"Tomar prestado no está disponible porque estás usando el Isolation mode. Para administrar el Isolation mode, visita tu <0>Panel de control.\",\"7aKlMS\":\"Compartir en Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Reclamar todo\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"No se pudieron recuperar los datos, por favor recarga el gráfico.\",\"7p5kLi\":\"Panel de control\",\"7sofdl\":\"Retirar y Cambiar\",\"8+6BI0\":\"Ten cuidado - Estás muy cerca de la liquidación. Considera depositar más garantía o pagar alguno de tus préstamos\",\"87pUEW\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos.\"],\"8F1i42\":\"Página no encontrada\",\"8G8M0u\":\"Cargando datos...\",\"8Iu1QS\":\"retirado\",\"8JL93T\":\"Todas las propuestas\",\"8Q51DU\":\"Añadir a la cartera\",\"8X/oyn\":\"Cantidad invalidad para generar\",\"8Z5FPv\":\"Desconectar cartera\",\"8Zz7s5\":\"activos\",\"8aLW8H\":\"Balance a revocar\",\"8bOT3H\":\"Tasa de uso\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Ver contrato\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Mostrar\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Estás entrando en el Isolation mode\",\"9CDK3/\":[\"Tomar prestado no está disponible actualmente para \",[\"0\"],\".\"],\"9GIj3z\":\"Tamaño de la reserva\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Balance stakeado\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votos actuales\",\"9Rw96f\":[\"Este activo casi ha alcanzado su límite de préstamo. Solo hay \",[\"messageValue\"],\" disponibles para ser prestado de este mercado.\"],\"9Xj/qR\":[\"Algunos activos migrados no se utilizarán como garantía debido al isolation mode habilitado en el mercado V3 de \",[\"marketName\"],\". Visita el <0>Panel de control de \",[\"marketName\"],\" V3 para administrar el isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Este activo ha alcanzado su límite de suministro. No queda nada disponible para ser suministrado desde este mercado.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI ha sido pausado debido a una decisión de la comunidad. Los suministros, préstamos y pagos se han visto afectados. <0>Más información\",\"9lXchd\":\"Token subyacente\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Puesto que esta es una red de pruebas, puedes obtener cualquiera de los activos si tienes ETH en tu cartera\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Elige uno de los servicios on-ramp\",\"A6dCI6\":[\"La máxima cantidad disponible para tomar prestado es <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Tus préstamos\",\"AV7cGz\":\"Revisa los detalles del approve\",\"AZOjB8\":\"Recuperando datos...\",\"Ai0jas\":\"Únete a la discusión de la comunidad\",\"Ajl2rq\":\"El poder de préstamo y los activos están limitados debido al Isolation mode.\",\"AqgYNC\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH suministrado como garantía continuará acumulando recompensas de staking proporcionadas por rebases diarios.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"El uso como garantía está limitado debido al isolation mode. <0>Aprende más\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Categoría de activos\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Este activo está congelado debido a una decisión de la comunidad de Aave. <0>Más información\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Documento técnico\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Griego\",\"CkTRmy\":[\"Reclamar \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Por favor conecta tu cartera para ver la herramienta de migración.\",\"CtGlFb\":[\"Faucet \",[\"networkName\"]],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Esta acción reducirá el factor de salud de V3 por debajo del umbral de liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"Este activo ha sido pausado debido a una decisión de la comunidad. El suministro, los retiros, los préstamos y los pagos se han visto afectados.\",\"DAma/S\":\"La garantía es (en su mayoría) el mismo activo que se está tomando prestado\",\"DCnFg0\":[\"Direcciones (\",[\"0\"],\")\"],\"DG3Lv1\":\"Entiendo completamente los riesgos de migrar.\",\"DONJcV\":\"El activo base no puede ser rescatado\",\"DR+4uL\":\"Balance del suministro después del cambio\",\"DWjrck\":[\"Este activo no se puede migrar al mercado V3 de \",[\"marketName\"],\" debido a las restricciones del E-mode. Puedes deshabilitar o administrar las categorías del E-mode en tu <0>Panel de control V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave por mes\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Colateralización\",\"DxfsGs\":\"Puedes reportar cualquier incidente a nuestro <0>Discord o <1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Deshabilitado\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restakeando \",[\"symbol\"]],\"Ebgc76\":[\"Retirando \",[\"symbol\"]],\"EdQY6l\":\"Ninguno\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivar el periodo de cooldown para unstakear \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrar a V3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Aprende más.\",\"FHlMf/\":\"Balance actual v2\",\"FHpxjF\":[\"El factor de reserva es un porcentaje de interés que va a un \",[\"0\"],\" que es controlado por el gobierno de Aave para promover el crecimiento del ecosistema.\"],\"FOBZa6\":\"Capacidad de préstamo utilizada\",\"FPKEug\":\"Operación no soportada\",\"FbmMe7\":\"Direcciones vinculadas\",\"Fdp03t\":\"en\",\"Fjw9N+\":\"Activos a suministrar\",\"FmN0fk\":\"Restakear\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO es un activo nativo descentralizado, digital y respaldado por garantía, vinculado al USD. Es creado por los usuarios que lo toman prestado contra múltiples garantías. Cuando el usuario paga su posición de préstamo de GHO, el protocolo quema el GHO de ese usuario. Todos los pagos de interés acumulados por los acuñadores de GHO serán transferidos directamente a la tesorería de\xA0la\xA0DAO\xA0de\xA0Aave.\",\"GQrBTq\":\"Cambiar E-Mode\",\"GWswcZ\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. El 20 de diciembre de 2022, renFIL ya no será compatible y no se podrá conectar de nuevo a su red nativa. Se recomienda retirar las posiciones de suministro y pagar las posiciones de préstamo para que renFIL se pueda convertir de nuevo a FIL antes de la fecha límite. Después de esta fecha, ya no será posible convertir renFIL a FIL. <0>Más detalles\",\"GX8GKD\":\"Activos\",\"GgEj+0\":\"Modo de solo lectura. Conéctate a una cartera para realizar transacciones.\",\"GjkIKV\":\"finaliza\",\"GtP2hp\":[\"Tomar prestado no está disponible porque has habilitado el Efficieny Mode (E-Mode) para la categoría \",[\"0\"],\". Para manejar las categorías del E-Mode visita tu <0>Panel de control.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Lo sentimos, se produjo un error imprevisto. Mientras tanto, puedes intentar recargar la página, o volver después.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Ventana de unstakeo\",\"HpK/8d\":\"Recargar\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Este activo no se puede migrar al mercado v3 de \",[\"marketName\"],\", ya que el activo de garantía habilitará el isolation mode.\"],\"Hvwnm9\":[\"La cantidad máxima disponible para suministrar está limitada porque el límite de suministro del protocolo está al \",[\"0\"],\"%.\"],\"I8CX2c\":\"La cantidad total de tus activos denominados en USD que pueden ser usados como garantía para activos de préstamo.\",\"IAD2SB\":[\"Reclamando \",[\"symbol\"]],\"IG9X9/\":\"Tomar prestado este activo está limitado a una cierta cantidad para minimizar la insolvencia del fondo de liquidez.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Está previsto que este activo se desvincule debido a una decisión del Gobierno del Protocolo Aave. <0>Más detalles\",\"IP+I/j\":\"Periodo de cooldown\",\"IaA40H\":\"Liquidación en\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Administrar analíticas\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstakeando \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stakear\",\"JZMxX0\":\"No hay suficiente balance en tu cartera\",\"Jgflkm\":\"Obtener GHO\",\"JoMQnI\":\"Balance de la cartera\",\"JtwD8u\":\"Balance tomado prestado tras pagar\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"KLXVqE\":[\"Los tokens stETH se migrarán a Wrapped stETH usando el wrapper del protocolo de Lido, lo que provoca un cambio en el balance de suministro después de la migración: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Esto representa el umbral en el que un préstamo será considerado sin garantía suficiente y sujeto a la liquidación de la misma. Por ejemplo, si una garantía tiene un umbral de liquidación del 80 %, significa que el préstamo será liquidado cuando el valor de la deuda alcanze el 80% del valor de la garantía.\",\"KYAjf3\":\"Aislado\",\"KkPgim\":\"Cambiando E-Mode\",\"KnN1Tu\":\"Caduca\",\"KoOBI2\":\"Debido a mecánicas internas de stETH requeridas para el soporte del rebase, no es posible realizar un cambio de garantía donde stETH es el token de origen.\",\"KojyJ4\":\"Red incorrecta\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Introduce la dirección ETH\",\"KvG1xW\":\"Reclamando\",\"L+8Lzs\":\"LTV actual\",\"L+qiq+\":\"Mercado\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Sin poder de voto\",\"LL0zks\":\"Puede ser garantía\",\"LLdJWu\":\"AAVE Reclamable\",\"LSIpNK\":\"Tomar prestado y pagar en el mismo bloque no está permitido\",\"LVt3TI\":[\"<0>Tolerancia de deslizamiento <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Modo E\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Intenta aumentar el deslizamiento o reduce la cantidad de entrada\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Dirección del destinatario\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vista de stakeo\",\"McHlGl\":\"Cambio de APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si el factor de salud se encuentra por debajo de 1, la liquidación de tu colateral puede ser activada.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Has cancelado la transacción.\",\"MnE2QX\":\"Información de préstamo\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valor de retorno inválido en la función executor del préstamo flash\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Este activo solo se puede utilizar como garantía en isolation mode con poder de préstamo limitado. Para entrar en el isolation mode, deshabilita todas las demás garantías.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pendiente...\",\"NK9ikO\":\"Balance de la cartera\",\"NMt2CB\":\"Cantidad reclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nada invertido\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"El límite de minteo sin respaldo ha sido excedido\",\"O+tyU+\":[\"La cantidad máxima disponible para tomar prestado contra este activo está limitada porque el límite de deuda está al \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstakear\",\"OR8cYX\":\"Resumen de la propuesta\",\"OYuJ9K\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"OfhWJH\":\"Restablecer\",\"Og2SKn\":\"deshabilitado\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Página web\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirar\",\"P1dURE\":\"Revocar poder\",\"P2WCD/\":[\"El activo subyacente no existe en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"P2sL6B\":\"Cuando ocurre una liquidación, los liquidadores pagan hasta el 50% de la cantidad pendiente del préstamo en nombre del prestatario. A cambio, pueden comprar la garantía con descuento y quedarse con la diferencia (sanción de liquidación) como bonificación.\",\"P6sRoL\":\"Stakea ABPT\",\"P72/OW\":\"El promedio ponderado de APY para todos los activos prestados, incluidos los incentivos.\",\"P7e6Ug\":\"Por favor conecta tu cartera para ver el historial de transacciones.\",\"PByO0X\":\"Votos\",\"PI+kVe\":\"Deshabilitar fork\",\"PJK9u/\":\"Apy préstamo\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Umbral de liquidación\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Esta acción reducirá el factor de salud V2 por debajo del umbral de liquidación. Mantén la garantía o migra la posición de préstamo para continuar.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"El Aave Balancer Pool Token (ABPT) es un token de pool de liquidez. Puedes recibir ABPT depositando una combinación de AAVE + wstETH en el pool de liquidez de Balancer. Luego puedes stakear tu BPT en el módulo de seguridad para asegurar el protocolo y ganar incentivos de seguridad.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Retirando\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"No alcanzado\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Diferencial\",\"RNK49r\":\"Firma inválida\",\"RS0o7b\":\"Estado\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Detalles de la propuesta\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"El activo no está listado\",\"Rj01Fz\":\"Enlaces\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"El factor de salud es menor que el umbral de liquidación\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Habilitado\",\"SDav7h\":\"Fondos en el Módulo de Seguridad\",\"SENccp\":\"Si el error persiste, <0/> podrías reportarlo a esto\",\"SIWumd\":\"Mostrar activos congelados o pausados\",\"SM58dD\":\"Cantidad en cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Error al cargar los votantes de la propuesta. Por favor actualiza la página.\",\"SSQVIz\":\"Umbral de liquidación\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"El modo de solo lectura permite ver las posiciones de las direcciones en Aave, pero no podrás realizar transacciones.\",\"SZRUQ4\":\"Deslizamiento máximo\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"Sk2zW9\":\"Desactivando E-Mode\",\"SxaD0o\":\"La dirección del proveedor del pool no esta registrada\",\"T/AIqG\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"T0xCO9\":\"No se puede validar la dirección de la cartera. Vuelve a intentarlo.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Tomar prestado\",\"TFxQlw\":\"Penalización de liquidación\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"El activo solo puede usarse como garantía en el Isolation mode únicamente.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"El usuario no tiene deuda pendiente de tasa estable en esta reserva\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Balance de préstamo después del cambio\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recarga la página\",\"U2r8nY\":\"Elige cuánto poder de voto/proposición otorgar a otra persona delegando parte de tu balance de AAVe o stkAAVE. Tus tokens permanecerán en tu cuenta, pero tu delegado podrá votar o proponer en tu lugar. Si tu balance de AAVE, stkAAVE o aAave cambia, el poder de voto/proposición de tu delegado se ajustará automáticamente.\",\"U8IubP\":\"La aplicación se está ejecutando en testnet mode. Aprende como funciona en\",\"U9btTk\":\"El activo no se puede pedir prestado en isolation mode\",\"UAOZRe\":\"El impacto del precio es la diferencia entre el valor total de los tokens de entrada cambiados y los tokens de destino obtenidos (en USD), que resulta de la liquidez limitada del par de cambio.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Detalles\",\"UTTKmT\":\"Cooldown de stakeo activado\",\"UXeR72\":\"Estos fondos se han tomado prestados y no están disponibles para su retirada en este momento.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"El ratio LTV máximo representa el poder de endeudamiento máximo de una garantía específica. Por ejemplo, si una garantía tiene un LTV del 75 %, el usuario puede pedir prestado hasta 0,75 ETH en la moneda principal por cada 1 ETH de garantía.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No hay recompensas para reclamar\",\"V0f2Xv\":\"Factor de reserva\",\"V1HK43\":\"Riesgos de migración\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Deuda cubierta\",\"VHOVEJ\":\"Conectar cartera\",\"VMfYUK\":\"Seguridad de tu garantía depositada contra los activos prestados y su valor subyacente.\",\"VOAZJh\":\"Total de préstamos\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Revisar detalles de la tx\",\"W5hVah\":\"Nada suministrado aún\",\"W5kTFy\":\"Votando\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"No respaldado\",\"WNGZwH\":\"El E-Mode incrementa tu LTV para una categoría seleccionada de activos hasta el <0/>. <1>Aprende más\",\"WPWG/y\":\"Configuración y estado de la reserva\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"El usuario no puede retirar más que el balance disponible\",\"WaZyaV\":\"<0>Ampleforth es un activo con rebase. Visita la <1>documentación para aprender más.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Debido a que este activo está en pausa, no se pueden realizar acciones hasta nuevo aviso\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Para tomar prestado, necesitas suministrar cualquier activo para ser utilizado como garantía.\",\"X/ITG9\":\"Copiar el texto del error\",\"X3Pp6x\":\"Utilizado como garantía\",\"X4Zt7j\":\"No se puede realizar la acción porque la reserva está pausada\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Direcciones de cartera de contrato inteligente representativas (Safe) en otras cadenas.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Por favor ten siempre en cuenta tu <0>factor de salud (HF) cuando migres parcialmente una posición y que tus tasas serán actualizadas a tasas de la V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTAR NO\",\"YDIOks\":\"Habilitar E-Mode\",\"YSodyW\":\"Esta acción reducirá tu factor de salud. Por favor ten en cuenta el riesgo incrementado de liquidación de la garantía.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode está ON\",\"YrDxdO\":\"Si tu relación préstamo-valor supera el umbral de liquidación, tu garantía puede ser liquidada.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"No se cumplieron las condiciones de ajuste de tasas de interés\",\"YyydIq\":[\"Añade \",[\"0\"],\" a tu cartera para hacer un seguimiento del balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gobierno de Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Modo de eficiencia (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Deshabilitar testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Antes de suministrar\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valor de liquidación\",\"ZrEc8j\":\"No pudimos encontrar ningún activo relacionado con tu búsqueda. Vuelve a intentarlo con un nombre diferente de activo, símbolo o dirección.\",\"ZsLF7e\":\"habilitado\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Tempo restante para unstakear\",\"a7u1N9\":\"Precio\",\"a9D+6D\":\"Unstakeado\",\"aEtiwq\":\"Votar NO\",\"aMmFE1\":\"Comprar Crypto con Fiat\",\"aOKIms\":\"Los parámetros del array que deberían ser iguales en longitud no lo son\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Tu balance es más bajo que la cantidad seleccionada.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"Se ha producido un error al recuperar la propuesta.\",\"aoXTT7\":\"APY préstamo, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Advertencia periodo de cooldown\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Activo\",\"bXQ/Og\":\"Compartir en twitter\",\"bXr0ee\":\"Los activos aislados han limitado tu capacidad de préstamo y otros activos no pueden ser usados como garantía.\",\"bYmAV1\":\"Direcciones\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"La cantidad solicitada es mayor que el tamaño máximo del préstamo en el modo de tasa estable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Suministrar\",\"bxN6EM\":\"No se puede deshabilitar E-Mode\",\"c91vuQ\":\"La dirección no es un contrato\",\"c97os2\":\"aToken de Aave\",\"c9b44w\":\"No puedes retirar esta cantidad porque causará una liquidación\",\"cBc+4A\":\"Esta es la cantidad total disponible que puedes tomar prestada. Puedes tomar prestado basado en tu garantía y hasta que el límite de préstamo se alcance.\",\"cIl5kp\":\"Tu poder de voto se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"cLo09S\":\"Detalles de riesgo\",\"cNT+ij\":\"Tomar prestado no está disponible porque has habilitado el Efficiency Mode (E-Mode) y el Isolation mode. Para administrar el E-Mode y el Isolation Mode, visita tu <0>Panel de control.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Para enviar una propuesta de cambios menores al protocolo, necesitarás al menos 80K de poder. Si deseas cambiar la base central del código, necesitarás un poder de 320K.<0>Aprende más\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Votar SI\",\"ckf7gX\":[\"Pagando \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Hilo de discusión del foro\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"No has participado en esta propuesta\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gobierno\",\"dEgA5A\":\"Cancelar\",\"dIsyWh\":\"La validación del LTV ha fallado\",\"dOB5nW\":[\"La cantidad máxima disponible para suministrar es <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"No tienes suficientes fondos en tu cartera para pagar la cantidad total. Si procedes a pagar con tu cantidad actual de fondos, aún tendrás un pequeño préstamo en tu panel de control.\",\"dXUQFX\":\"Activos a tomar prestado\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Tomar prestado está deshabilitado debido a una decisión de la comunidad de Aave. <0>Más información\",\"djsg0o\":\"Uso de la garantía\",\"drdV8R\":\"Liquidación\",\"dxW8cS\":\"Token de deuda de Aave\",\"e4V3oW\":\"Top 10 direcciones\",\"eD8WX/\":\"La acción requiere una reserva activa\",\"eJRJ04\":\"Cantidad para unstakear\",\"eLh0cL\":\"El deslizamiento es la diferencia entre las cantidades calculadas y las recibidas debido a las condiciones cambiantes del mercado entre el momento en que se envía la transacción y su verificación.\",\"ePK91l\":\"Editar\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Recompensas de Staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aún no hay transacciones.\",\"ebLGGN\":\"Total tomado prestado\",\"ecqEvn\":\"El balance de garantía es 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible en\",\"enruNF\":\"empieza\",\"eqLYiD\":\"Unstakea ahora\",\"evw5ha\":\"Valor neto\",\"ezcU16\":\"Obtener Token ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Has cambiado a tasa \",[\"0\"]],\"fMJQZK\":\"Prestado\",\"fZ5Vnu\":\"Recibido\",\"firl9Q\":\"Tu actual relación préstamo-valor basado en tu garantía suministrada.\",\"fldjW9\":\"Previsualizar la tx y migrar\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Retirar \",[\"symbol\"]],\"fwjWSI\":\"Suministrado\",\"fwyTMb\":\"Migrar a stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Votó NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. <0>More información\",\"gTHi2T\":\"El usuario está intentando tomar prestado múltiples activos incluido uno aislado\",\"gVW59Y\":\"Por favor conecta tu cartera para obtener activos testnet gratis.\",\"gcFNxP\":\"Aprobación confirmada\",\"goff7V\":\"Dirección cero no válida\",\"gp+f1B\":\"Versión 3\",\"gvTM4B\":\"El APY neto es el efecto combinado de todos los suministros y préstamos sobre total, incluidos los incentivos. Es posible tener un APY neto negativo si el APY de la deuda es mayor que el APY de suministro.\",\"gzcch9\":\"Comisión de puente de protocolo inválida\",\"h33MxW\":\"Direcciones de cartera de contrato inteligente representantes (Safe) en otras cadenas.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activar Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY neto\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Reclamado\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"El % de tu poder de préstamo total utilizado. Esto se basa en la cantidad de tu garantía suministrada y la cantidad total que puedes pedir prestado.\",\"hehnjM\":\"Cantidad\",\"hjDCQr\":\"Hubo un error. Por favor intenta cambiar los parámetros o <0><1>copiar el error\",\"hom7qf\":\"Reclamar\",\"hpHJ4I\":\"Garantía liquidada\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Tomando prestado \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"Sobre GHO\",\"iChbOF\":\"Parámetros inconsistentes del préstamo flash\",\"iEPVHF\":\"No hay suficiente poder de voto para participar en esta propuesta\",\"iEW87X\":\"Poder delegado\",\"iEju36\":[\"Has votado \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Seleccionar tolerancia de deslizamiento\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Ingresa una cantidad\",\"iSLIjg\":\"Conectar\",\"iUo5rv\":\"tokens no es lo mismo que stakearlos. Si deseas stakearlos\",\"iZxa38\":\"Úsalo para votar a favor o en contra de propuestas activas.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"En el Isolation mode, no puedes suministrar otros activos como garantía. Un límite de deuda global limita la capacidad de préstamo del activo aislado. Para salir del Isolation mode, deshabilita \",[\"0\"],\" como garantía antes de tomar prestado otro activo. Lee más en nuestras <0>preguntas frecuentes \"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"El uso de garantías está limitado debido al Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Suministrando tu\",\"jFi7dz\":\"Tasa de interés determinada por el gobierno de Aave. Esta tasa puede cambiar con el tiempo dependiendo de la necesidad de que el suministro de GHO se contraiga/expanda. <0>Aprende más\",\"jG3UJ7\":\"Desactivar el E-Mode\",\"jKYzR1\":\"Habilitar E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Periodo restante de cooldown\",\"jeMZNr\":[[\"0\"],\" el servicio on-ramp es proporcionado por proveedores externos y al seleccionarlo, estás aceptando los términos de dichos proveedores. Tu acceso al servicio podría depender de que el proveedor externo esté operativo.\"],\"jfl9OP\":\"Migrado\",\"jmXdoY\":\"En E-Mode algunos activos no se pueden pedir prestados. Sal del E-Mode para obtener acceso a todos los activos\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"No disponible\",\"k/sb6z\":\"Seleccionar idioma\",\"k3wP3f\":\"<0>Atención: Los cambios de parámetros a través de la gobernanza pueden alterar el factor de salud de tu cuenta y el riesgo de liquidación. Sigue el <1>foro de gobierno de Aave para mantenerte actualizado.\",\"kACpF3\":[\"Reclamar \",[\"0\"]],\"kH6wUX\":\"Impacto del precio\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" activos seleccionados\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Para pagar en nombre de un usuario, se necesita una cantidad explícita para pagar\",\"kRTD40\":[\"Cantidad a pagar para alcanzar el \",[\"0\"],\"% de utilización\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"El límite de suministro se ha sobrepasado\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"El límite de deuda no es cero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"El balance de DAI se convertirá a través de los contratos de DSR y luego se suministrará como sDAI. El cambio no genera costos adicionales ni deslizamientos.\",\"lU2d1/\":[\"Este activo no se puede migrar debido a una liquidez insuficiente o a una limitación del límite de préstamo en el mercado v3 de \",[\"marketName\"],\".\"],\"lVhKKI\":\"Votó YAE\",\"lWLqxB\":\"No pudimos encontrar ninguna transacción relacionada con tu búsqueda. Vuelve a intentarlo con un nombre de activo diferente o restablece los filtros.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Inglés\",\"lfEjIE\":\"Aprende más en nuestra guía <0>Preguntas frecuentes\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Emisiones totales por día\",\"m7r7Hh\":\"Activos de préstamo seleccionados\",\"mDDK4p\":\"Pool de Balancer\",\"mUAFd6\":\"Versión 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos o usa <0>\",[\"0\"],\" para transferir tus activos de \",[\"network\"],\".\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Comprar \",[\"cryptoSymbol\"],\" con Fiat\"],\"mvCXBY\":\"Stakea AAVE\",\"mwdzil\":\"Vale, cerrar\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Este activo no puede usarse como garantía.\",\"n+SX4g\":\"Desarrolladores\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Apy de suministro\",\"nJgsQu\":\"Con un poder de votación de <0/>\",\"nLC6tu\":\"Francés\",\"nNHV0z\":\"Migrar múltiples garantías y activos prestados al mismo tiempo puede ser una operación costosa y podría fallar en ciertas situaciones.<0>Por lo tanto, no se recomienda migrar posiciones con más de 5 activos (depositados + tomados prestados) al mismo tiempo.\",\"nNbnzu\":\"Proposición\",\"nPGNMh\":\"Puede ser ejecutado\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Ambos\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Se produjo un error\",\"nxyWvj\":\"Retirar esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"o17QVP\":\"Tu factor de salud y la relación préstamo-valor determinan la seguridad de tu garantía. Para evitar liquidaciones, puedes suministrar más garantía o pagar las posiciones de préstamo.\",\"o1xc2V\":\"El balance de AToken no es cero\",\"o5ooMr\":\"Deuda\",\"o7J4JM\":\"Filtro\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Cooldown para undstakear\",\"oJ5ZiG\":\"El usuario no tiene deuda pendiente de tasa variable en esta reserva\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Activos de prueba\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"La tasa de interés estable <0>permanecerá igual durante la duración de su préstamo. Está recomendado para los períodos de préstamo a largo plazo y para los usuarios que prefieren la previsibilidad.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible para suministrar\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Sin resultados\",\"owSsI3\":\"Firmas listas\",\"p+R52m\":\"Ir al pool de Balancer\",\"p2S64u\":\"La relación préstamo-valor de las posiciones migradas provocaría la liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"p2Z2Qi\":\"Este activo ha alcanzado su límite de préstamo. No queda nada disponible para ser prestado de este mercado.\",\"p45alK\":\"Configurar la delegación\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"El balance subyacente debe ser mayor que 0\",\"pgWG9H\":\"No hay suficiente balance stakeado\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"por favor comprueba que la cantidad que deseas depositar no está siendo utilizada actualmente para stakear. Si está utilizando para stakear, tu transacción podría fallar.\",\"pjO/iH\":\"Cantidad mínima recibida\",\"pooutM\":\"La votación está activa\",\"pqaM5s\":\"Confirmando transacción\",\"ptaxX3\":[\"Entiendo como el cooldown (\",[\"0\"],\") y el proceso de unstaking (\",[\"1\"],\") funcionan\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"La función debe ser llamada por un pool\",\"q/51mF\":\"Migrar a V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Estrategia de tasa de interés\",\"q6lAbz\":\"Stakeado\",\"qB4kPi\":\"Suministrar APY\",\"qENI8q\":\"Configuración global\",\"qGz5zl\":\"Balance de la garantía tras pagar\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copiar el error\",\"qXCkEM\":\"Por favor, conecta tu cartera para ver tus suministros, préstamos y posiciones abiertas.\",\"qY2jnw\":\"Expiración inválida\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Cantidad inválida para quemar\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"La cantidad debe ser mayor que 0\",\"rQ+R+0\":\"Activos de suministro seleccionados\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Este activo no se puede migrar porque tienes una garantía en Isolation Mode en el mercado v3 de \",[\"marketName\"],\" que limita los activos prestados. Puedes administrar tu garantía en el <0>Panel de control V3 de \",[\"marketName\"],\"\"],\"rcT+yy\":\"Mostrar activos con 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacidad\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Reclamar todas las recompensas\",\"rwyUva\":\"Estos activos están temporalmente congelados o pausados por decisiones de la comunidad de Aave, lo que significa que no se puede suministrar / tomar prestado o intercambiar tasas de estos activos. Se permiten retiros y pagos de deuda. Sigue el <0>foro de gobierno de Aave para más actualizaciones.\",\"rxJW5W\":\"Tu poder de proposición se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstakear \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NO\",\"sQv06Y\":\"para\",\"sTtO6J\":\"Confirmar transacción\",\"sXKb3l\":\"Tasa de cambio\",\"sb0q4+\":\"Unstakea aquí\",\"smJNwH\":\"Disponible para tomar prestado\",\"solypO\":\"El factor de salud no está por debajo del umbral\",\"sr0UJD\":\"Volver atrás\",\"ss5GCK\":\"La dirección del proveedor del grupo de direcciones no es válida\",\"swEgK4\":\"Tu información de voto\",\"t+wtgf\":\"Nada tomado prestado aún\",\"t/YqKh\":\"Eliminar\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Precio del oráculo\",\"tFZLf8\":\"Este cálculo de gas es solo una estimación. Tu cartera establecerá el precio de la transacción. Puedes modificar la configuración de gas directamente desde tu proveedor de cartera.\",\"tHuvQI\":\"Ir al panel de control V3\",\"tOcg3N\":\"Dado que este activo está congelado, las únicas acciones disponibles son retirar y pagar, a las que se puede acceder desde el <0>Panel de control\",\"tOuXfv\":[\"Cantidad a tomar prestado para alcanzar el \",[\"0\"],\"% de utilización\"],\"te9Bfl\":\"Por favor, conecta tu cartera\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Tus suministros\",\"u3ZeYl\":\"Error en la transacción\",\"u706uF\":\"Préstamo flash inválido\",\"u8Gfu7\":[\"Sin resultados de búsqueda\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No hay activos seleccionados para migrar.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrando\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Para el pago de un tipo específico de deuda, el usuario necesita tener una deuda de ese tipo\",\"ulNuNq\":\"Exportar datos a\",\"ulup2p\":\"Comprar Crypto con Fiat\",\"usB84Z\":\"La cantidad máxima disponible para tomar prestado está limitada porque casi se ha alcanzado el límite de préstamo del protocolo.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restakeado\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Ocultar\",\"vMba49\":\"Tomar prestado no está habilitado\",\"vMpNwt\":\"Aprobar con\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Idioma\",\"vesuBJ\":\"Te permite decidir si utilizar un activo suministrado como garantía. Un activo utilizado como garantía afectará a tu poder de préstamo y factor de salud.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"El balance de deuda estable no es cero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"APR de recompensas\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Tu \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Canal de Discord\",\"wQZbc/\":\"El llamador de la función no es un AToken\",\"wZFvVU\":\"VOTAR SI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"El Protocolo Aave está programado para usar siempre el precio de 1 GHO = $1. Esto es diferente del uso del precio de mercado a través de oráculos para otros criptoactivos. Esto crea oportunidades de arbitraje estabilizadoras cuando el precio de GHO fluctúa.\",\"wh7Ezv\":\"No tienes balance de AAVE/stkAAVE/aAave para delegar.\",\"wlsIx7\":\"Con la testnet Faucet puedes obtener activos gratuitos para probar el Protocolo Aave. Asegúrate de cambiar tu proveedor de cartera a la red de testnet adecuada, selecciona el activo deseado y haz clic en \\\"Faucet\\\" para obtener tokens transferidos a tu cartera. Los activos de una testnet no son \\\"reales\\\", lo que significada que no tienen valor monetario. <0>Aprende más\",\"wmE285\":\"Obtener Token ABP v2\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"Como resultado de las decisiones del gobierno, este pool de stakeo de ABPT está obsoleto. Tienes la flexibilidad de migrar todos tus tokens a v2 o unstakearlos sin ningún periodo de cooldown.\",\"x5KiLL\":\"Los activos seleccionados se han migrado correctamente. Visita el panel de control del mercado para verlos.\",\"x7F2p6\":\"Diferencial actual\",\"x7K5ib\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue \",[\"0\"],\" de prueba gratis en\"],\"x9iLRD\":\"tokens, por favor ve al\",\"xNy/UG\":\"Pagar con\",\"xPm8wv\":\"Aprende más sobre los riesgos involucrados\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Tu información\",\"xaWZ6f\":\"Cambio tipo de APY\",\"xh6k71\":\"El uso de garantías está limitado debido al isolation mode.\",\"xvIklc\":\"El préstamo flash está deshabilitado para este activo, por lo tanto, esta posición no se puede migrar.\",\"y5rS9U\":\"Migrar\",\"yB1YpA\":\"Modo oscuro\",\"yCrG6m\":\"Tamaño total del mercado\",\"yJUUbn\":\"Resumen de la transacción\",\"yLGmLX\":[\"Restakear \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Dirección no válida\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Haz seguimiento de tu cartera\",\"yh2sjd\":[\"Impacto en el precio \",[\"0\"],\"%\"],\"ylmtBZ\":\"La aplicación se ejecuta en fork mode.\",\"ymNY32\":[\"No hay fondos suficientes en la reserva\",[\"0\"],\"para tomar prestado\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Cerrar\",\"z4uGQg\":\"El límite de deuda está sobrepasado\",\"z5UQOM\":\"La garantía elegida no puede ser liquidada\",\"z5Y+p6\":[\"Suministrando \",[\"symbol\"]],\"zCjNKs\":\"No se puede realizar la acción porque la reserva está congelada\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Límite de deuda aislado\",\"zTOjMP\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Deuda restante\",\"zmTPiV\":\"Balance de suministro\",\"zpPbZl\":\"Parámetros de riesgo de liquidación\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menú\",\"zwWKhA\":\"Aprende más\",\"zy9fXn\":[\"Este activo está congelado en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"zys+R6\":\"Ten en cuenta la congestión de la red y los precios del gas.\",\"+EGVI0\":\"Recibir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Parece que no podemos cambiar la red automáticamente. Por favor, comprueba si puedes cambiarla desde la cartera.\",\"+kLZGu\":\"Cantidad de activos suministrados\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Cantidad mínima de Aave stakeado\",\"00OflG\":\"No hay suficiente liquidez para que el activo seleccionado realice el cambio. Prueba reduciendo la cantidad.\",\"08/rZ9\":\"El periodo de cooldown es el tiempo requerido antes de unstakear tus tokens (20 días). Solo puedes retirar tus activos del Módulo de Seguridad después del periodo de cooldown y dentro de la ventana de unstakeo.<0>Aprende más\",\"1Onqx8\":[\"Aprobando \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Dirección bloqueada\",\"2bAhR7\":\"Conoce GHO\",\"2o/xRt\":\"Se ha alcanzado el límite de suministro en la reserva especificada. Prueba reduciendo la cantidad.\",\"3O8YTV\":\"Interés total acumulado\",\"4iPAI3\":\"Cantidad de préstamo mínima de GHO\",\"6NGLTR\":\"Cantidad descontable\",\"6yAAbq\":\"APY, tasa de préstamo\",\"73Auuq\":\"Los parámetros de descuento son decididos por la comunidad de Aave y pueden cambiar con el tiempo. Consulta el Gobierno para ver actualizaciones y vota para participar. <0>-Aprende más\",\"ARu1L4\":\"Pagado\",\"B6aXGH\":\"Estable\",\"B9Gqbz\":\"Tasa variable\",\"BJyN77\":\"Debido al impacto del factor de salud, se requiere un préstamo flash para realizar esta transacción, pero el Gobierno de Aave ha inhabilitado la disponibilidad de préstamos flash para este activo. Intenta reducir la cantidad o suministrar garantía adicional.\",\"BjLdl1\":\"Con un descuento\",\"CMHmbm\":\"Deslizamiento\",\"EBL9Gz\":\"¡COPIADO!\",\"ES8dkb\":\"Interés fijo\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Descuento\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Guardar y compartir\",\"JK9zf1\":[\"Interés compuesto estimado, incluyendo el descuento por Staking \",[\"0\"],\"AAVE en el Módulo de Seguridad.\"],\"JPrLjO\":\"No puedes usar este activo como garantía\",\"JU6q+W\":\"Recompensa(s) por reclamar\",\"K05qZY\":\"Retirar y Cambiar\",\"KRpokz\":\"VER TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Habilitar este activo como garantía aumenta tu poder préstamo y el factor de salud. Sin embargo, puede ser liquidado si tu factor de salud cae por debajo de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stakear GHO\",\"RIfckG\":[\"Desactivar \",[\"symbol\"],\" como garantía\"],\"RbXH+k\":\"Los poseedores de AAVE, GHO y ABPT (solo en la red de Ethereum) pueden stakear sus activos en el Módulo de Seguridad para añadir más seguridad al protocolo y obtener incentivos de seguridad. En el caso de un evento de shortfall, tu stakeo puede ser reducido para cubrir el déficit. proporcionando una capa adicional de protección para el protocolo.\",\"RoafuO\":\"Enviar feedback\",\"TeCFg/\":\"Cambio de tasa de préstamo\",\"TskbEN\":\"Los poseedores de stkAAVE reciben un descuento en la tasa de préstamo de GHO\",\"TtZL6q\":\"Parámetros del modelo de descuento\",\"Tz0GSZ\":\"actividades bloqueadas\",\"UE3KJZ\":\"El historial de transacciones no está disponible actualmente para este mercado\",\"W8ekPc\":\"Volver al panel de control\",\"XZzneG\":\"Saldrás del modo aislamiento y otros tokens pueden ser usados ahora como garantía\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Deshabilitar este activo como garantía afecta tu poder de préstamo y Factor de Salud.\",\"al6Pyz\":\"Supera el descuento\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"No hay suficiente garantía para pagar esta cantidad de deuda con\",\"cqnmnD\":\"Tasa de interés efectiva\",\"dMtLDE\":\"para\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY con descuento aplicado\",\"fHcELk\":\"APR Neto\",\"flRCF/\":\"Descuento por staking\",\"gncRUO\":\"Esta dirección está bloqueada en app.aave.com porque está asociada con una o más\",\"gr8mYw\":\"Puedes tomar prestado hasta <0/> GHO al <1/> (descuento máximo)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Balance tomado prestado\",\"i2JTiw\":\"Puedes ingresar una cantidad específica en el campo.\",\"jMam5g\":[\"Balance \",[\"0\"]],\"jpctdh\":\"Ver\",\"kwwn6i\":\"Los usuarios que stakean AAVE en el Modulo de Seguridad (es decir, poseedores de stkAAVE) reciben un descuento en la tasa de interés de préstamo de GHO. Este descuento se aplica a 100 GHO por cada 1 stkAAVE en posesión. Usa el calculador de abajo para ver la tasa de préstamo de GHO con el descuento aplicado.\",\"lNVG7i\":\"Selecciona un activo\",\"lt6bpt\":\"Garantía a pagar con\",\"mIM0qu\":\"Cantidad esperada a pagar\",\"mzI/c+\":\"Descargar\",\"n8Psk4\":\"No podemos detectar una cartera. Conecta una cartera para stakear y ver tu balance.\",\"nOy4ob\":\"Te sugerimos volver al Panel de control.\",\"nakd8r\":\"poseedores de stkAAVE obtienen un descuento en la tasa de préstamo de GHO\",\"nh2EJK\":[\"Por favor, cambia a \",[\"networkName\"],\".\"],\"ntkAoE\":\"Descuento aplicado para <0/> AAVE stakeados\",\"o4tCu3\":\"APY préstamo\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"El periodo de cooldown es \",[\"0\"],\". Después \",[\"1\"],\" del cooldown, entrarás a la ventana de unstakeo de \",[\"2\"],\". Continuarás recibiendo premios durante el cooldown y la ventana de unstakeo.\"],\"p3j+mb\":\"Tu balance de recompensa es 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interés acumulado\",\"rf8POi\":\"Cantidad de activos tomados prestados\",\"ruc7X+\":\"Añade stkAAVE para ver el APY de préstamo con el descuento\",\"sK+Nag\":\"Revisión tx\",\"t81DpC\":[\"Aprueba \",[\"symbol\"],\" para continuar\"],\"umICAY\":\"<0><1><2/>Añade stkAAVE para ver la tasa de préstamo con descuento\",\"uwAUvj\":\"COPIAR IMAGEN\",\"v8x7Mg\":\"Garantía insuficiente para cubrir la nueva posición de préstamo. La cartera debe tener poder de préstamo suficiente para realizar el cambio de deuda.\",\"wRRqvW\":\"No tienes suministros en este activo\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Habilitar \",[\"symbol\"],\" como garantía\"],\"yW1oWB\":\"Tipo APY\",\"yhvj6d\":\"No puedes cambiar el uso como modo de garantía para este activo, porque causará una liquidación\",\"zevmS2\":\"<0><1><2/>añade <3/> stkAAVE para tomar prestado al <4/> (descuento máximo)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si NO unstakeas entre \",[\"0\"],\" de la ventana de unstakeo, necesitarás activar el proceso de cooldown de nuevo.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participar en esta reserva de \",[\"symbol\"],\" da recompensas anuales.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Utiliza tu balance de AAVE, stkAAVE o aAava para delegar tu voto y poder de proposición. No enviarás ningún token, solo los derechos de votar y proponer cambios en el protocolo. Puedes volver a delegar o revocar el poder de vuelta en cualquier momento.\",\"+i3Pd2\":\"Límite del préstamo\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Cantidad para migrar\",\"/7ykiW\":\"Tomar prestado esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"Preguntas frecuentes\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"El préstamo estable no está habilitado\",\"/yQcJM\":\"Valor total\",\"00AB2i\":\"El usuario no tomó prestado el activo especificado\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Cambio de tasa\",\"0BF3yK\":\"Lo sentimos, no hemos podido encontrar la página que estabas buscando.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Riesgo de liquidación\",\"0ojY+Y\":\"Balance actual v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Cambio de garantía\",\"0wGCWc\":\"Esta es la cantidad total que puedes suministrar en esta reserva. Puedes suministrar el balance de tu cartera hasta que se alcance el límite de suministro.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Los datos de los precios no están disponibles actualmente para esta reserva en el subgraph del protocolo\",\"1LjK22\":\"Historial de transacciones\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Por favor conecta una cartera para ver tu información personal aquí.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Umbral <0/> de liquidación\",\"1m9Qqc\":\"Retirando y Cambiando\",\"1t7rez\":\"El suministro de activos está limitado a una cierta cantidad para reducir la exposición del protocolo a este activo y ayudar a manejar los riesgos implicados.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Ver detalles\",\"2FYpfJ\":\"Más\",\"2O3qp5\":\"Liquidez disponible\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Este activo no se puede migrar debido a una restricción del límite de suministro en el mercado v3 de \",[\"marketName\"],\".\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave es un protocolo totalmente descentralizado, gobernado por la comunidad de poseedores de tokens AAVE. Los poseedores de tokens AAVE discuten, proponen y votan colectivamente sobre las actualizaciones del protocolo. Los poseedores de tokens AAVE (solo en la red Ethereum) pueden votar ellos mismos sobre nuevas propuestas o delegarse a una dirección de su elección. Para aprender más, consulta la\",\"2a6G7d\":\"Por favor introduce una dirección de cartera válida.\",\"2eBWE6\":\"Acepto los riesgos involucadros.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"El préstamo estable no está habilitado\",\"34Qfwy\":\"El límite del préstamo se ha sobrepasado\",\"39eQRj\":[\"Tomar prestado \",[\"symbol\"]],\"3BL1xB\":\"Total suministrado\",\"3K0oMo\":\"Suministro restante\",\"3MoZhl\":\"No hay suficiente garantía para cubrir un nuevo préstamo\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Suministrar \",[\"symbol\"]],\"3mXg0z\":\"LTV máximo\",\"3q3mFy\":\"Pagar\",\"3qsjtp\":\"El promedio ponderado de APY para todos los activos suministrados, incluidos los incentivos.\",\"3rL+os\":\"Solo puedes retirar tus activos del Módulo de Seguridad después de que finalice el período de cooldown y la ventana de unstakeo esté activa.\",\"42UgDM\":[\"Migrar al mercado V3 de \",[\"0\"]],\"49UFQA\":\"Resultados de la votación\",\"4DMZUI\":\"Ver Transacciones\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Términos\",\"4YYh4d\":\"Máximo disponible para tomar prestado\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Firma para continuar\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transacciones\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue activos de prueba gratis en\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentación\",\"5NOSGa\":\"El límite de deuda limita la cantidad posible que los usuarios del protocolo pueden tomar prestado contra este activo. El límite de deuda es específico para los activos en isolation mode y se indica en USD.\",\"5Ncc6j\":[\"Este activo casi ha alcanzado su límite de suministro. Solo se puede suministrar \",[\"messageValue\"],\" a este mercado.\"],\"5cZ/KX\":\"El suministro de deuda variable no es cero\",\"5che++\":\"Para solicitar acceso a este mercado, porfavor visita: <0>Nombre del proveedor de acceso\",\"5ctNdV\":[\"Mínimo \",[\"0\"],\" recibido\"],\"5hDe9v\":\"Acción de permiso requerida\",\"5rsnKT\":\"Recompensas disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Ver todos los votos\",\"6/dCYd\":\"Resumen\",\"60crCe\":\"Todas las transacciones\",\"62Xcjh\":\"Garantía\",\"65A04M\":\"Español\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Firmando\",\"6Jrv+z\":[\"Pagar \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Poder de votación\",\"6f8S68\":\"Mercados\",\"6g1gi0\":\"Propuestas\",\"6gvoHP\":\"Copiar mensaje de error\",\"6h3Q5G\":\"reembolsado\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Cambiar de red\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Factor de salud\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Alcanzado\",\"7YlcXu\":\"El fork mode está activado\",\"7Z76Iw\":\"Tomar prestado no está disponible porque estás usando el Isolation mode. Para administrar el Isolation mode, visita tu <0>Panel de control.\",\"7aKlMS\":\"Compartir en Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Reclamar todo\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"No se pudieron recuperar los datos, por favor recarga el gráfico.\",\"7p5kLi\":\"Panel de control\",\"7sofdl\":\"Retirar y Cambiar\",\"8+6BI0\":\"Ten cuidado - Estás muy cerca de la liquidación. Considera depositar más garantía o pagar alguno de tus préstamos\",\"87pUEW\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos.\"],\"8F1i42\":\"Página no encontrada\",\"8G8M0u\":\"Cargando datos...\",\"8Iu1QS\":\"retirado\",\"8JL93T\":\"Todas las propuestas\",\"8Q51DU\":\"Añadir a la cartera\",\"8X/oyn\":\"Cantidad invalidad para generar\",\"8Z5FPv\":\"Desconectar cartera\",\"8Zz7s5\":\"activos\",\"8aLW8H\":\"Balance a revocar\",\"8bOT3H\":\"Tasa de uso\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Ver contrato\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Mostrar\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Estás entrando en el Isolation mode\",\"9CDK3/\":[\"Tomar prestado no está disponible actualmente para \",[\"0\"],\".\"],\"9GIj3z\":\"Tamaño de la reserva\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Balance stakeado\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votos actuales\",\"9Rw96f\":[\"Este activo casi ha alcanzado su límite de préstamo. Solo hay \",[\"messageValue\"],\" disponibles para ser prestado de este mercado.\"],\"9Xj/qR\":[\"Algunos activos migrados no se utilizarán como garantía debido al isolation mode habilitado en el mercado V3 de \",[\"marketName\"],\". Visita el <0>Panel de control de \",[\"marketName\"],\" V3 para administrar el isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Este activo ha alcanzado su límite de suministro. No queda nada disponible para ser suministrado desde este mercado.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI ha sido pausado debido a una decisión de la comunidad. Los suministros, préstamos y pagos se han visto afectados. <0>Más información\",\"9lXchd\":\"Token subyacente\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Puesto que esta es una red de pruebas, puedes obtener cualquiera de los activos si tienes ETH en tu cartera\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Elige uno de los servicios on-ramp\",\"A6dCI6\":[\"La máxima cantidad disponible para tomar prestado es <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Tus préstamos\",\"AV7cGz\":\"Revisa los detalles del approve\",\"AZOjB8\":\"Recuperando datos...\",\"Ai0jas\":\"Únete a la discusión de la comunidad\",\"Ajl2rq\":\"El poder de préstamo y los activos están limitados debido al Isolation mode.\",\"AqgYNC\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH suministrado como garantía continuará acumulando recompensas de staking proporcionadas por rebases diarios.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"El uso como garantía está limitado debido al isolation mode. <0>Aprende más\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Categoría de activos\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Este activo está congelado debido a una decisión de la comunidad de Aave. <0>Más información\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Documento técnico\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Griego\",\"CkTRmy\":[\"Reclamar \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Por favor conecta tu cartera para ver la herramienta de migración.\",\"CtGlFb\":[\"Faucet \",[\"networkName\"]],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Esta acción reducirá el factor de salud de V3 por debajo del umbral de liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"Este activo ha sido pausado debido a una decisión de la comunidad. El suministro, los retiros, los préstamos y los pagos se han visto afectados.\",\"DAma/S\":\"La garantía es (en su mayoría) el mismo activo que se está tomando prestado\",\"DCnFg0\":[\"Direcciones (\",[\"0\"],\")\"],\"DG3Lv1\":\"Entiendo completamente los riesgos de migrar.\",\"DONJcV\":\"El activo base no puede ser rescatado\",\"DR+4uL\":\"Balance del suministro después del cambio\",\"DWjrck\":[\"Este activo no se puede migrar al mercado V3 de \",[\"marketName\"],\" debido a las restricciones del E-mode. Puedes deshabilitar o administrar las categorías del E-mode en tu <0>Panel de control V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave por mes\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Colateralización\",\"DxfsGs\":\"Puedes reportar cualquier incidente a nuestro <0>Discord o <1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Deshabilitado\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restakeando \",[\"symbol\"]],\"Ebgc76\":[\"Retirando \",[\"symbol\"]],\"EdQY6l\":\"Ninguno\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivar el periodo de cooldown para unstakear \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrar a V3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Aprende más.\",\"FHlMf/\":\"Balance actual v2\",\"FHpxjF\":[\"El factor de reserva es un porcentaje de interés que va a un \",[\"0\"],\" que es controlado por el gobierno de Aave para promover el crecimiento del ecosistema.\"],\"FOBZa6\":\"Capacidad de préstamo utilizada\",\"FPKEug\":\"Operación no soportada\",\"FbmMe7\":\"Direcciones vinculadas\",\"Fdp03t\":\"en\",\"Fjw9N+\":\"Activos a suministrar\",\"FmN0fk\":\"Restakear\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO es un activo nativo descentralizado, digital y respaldado por garantía, vinculado al USD. Es creado por los usuarios que lo toman prestado contra múltiples garantías. Cuando el usuario paga su posición de préstamo de GHO, el protocolo quema el GHO de ese usuario. Todos los pagos de interés acumulados por los acuñadores de GHO serán transferidos directamente a la tesorería de\xA0la\xA0DAO\xA0de\xA0Aave.\",\"GQrBTq\":\"Cambiar E-Mode\",\"GWswcZ\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. El 20 de diciembre de 2022, renFIL ya no será compatible y no se podrá conectar de nuevo a su red nativa. Se recomienda retirar las posiciones de suministro y pagar las posiciones de préstamo para que renFIL se pueda convertir de nuevo a FIL antes de la fecha límite. Después de esta fecha, ya no será posible convertir renFIL a FIL. <0>Más detalles\",\"GX8GKD\":\"Activos\",\"GgEj+0\":\"Modo de solo lectura. Conéctate a una cartera para realizar transacciones.\",\"GjkIKV\":\"finaliza\",\"GtP2hp\":[\"Tomar prestado no está disponible porque has habilitado el Efficieny Mode (E-Mode) para la categoría \",[\"0\"],\". Para manejar las categorías del E-Mode visita tu <0>Panel de control.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Lo sentimos, se produjo un error imprevisto. Mientras tanto, puedes intentar recargar la página, o volver después.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Ventana de unstakeo\",\"HpK/8d\":\"Recargar\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Este activo no se puede migrar al mercado v3 de \",[\"marketName\"],\", ya que el activo de garantía habilitará el isolation mode.\"],\"Hvwnm9\":[\"La cantidad máxima disponible para suministrar está limitada porque el límite de suministro del protocolo está al \",[\"0\"],\"%.\"],\"I8CX2c\":\"La cantidad total de tus activos denominados en USD que pueden ser usados como garantía para activos de préstamo.\",\"IAD2SB\":[\"Reclamando \",[\"symbol\"]],\"IG9X9/\":\"Tomar prestado este activo está limitado a una cierta cantidad para minimizar la insolvencia del fondo de liquidez.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Está previsto que este activo se desvincule debido a una decisión del Gobierno del Protocolo Aave. <0>Más detalles\",\"IP+I/j\":\"Periodo de cooldown\",\"IaA40H\":\"Liquidación en\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Administrar analíticas\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstakeando \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stakear\",\"JZMxX0\":\"No hay suficiente balance en tu cartera\",\"Jgflkm\":\"Obtener GHO\",\"JoMQnI\":\"Balance de la cartera\",\"JtwD8u\":\"Balance tomado prestado tras pagar\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"KLXVqE\":[\"Los tokens stETH se migrarán a Wrapped stETH usando el wrapper del protocolo de Lido, lo que provoca un cambio en el balance de suministro después de la migración: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Esto representa el umbral en el que un préstamo será considerado sin garantía suficiente y sujeto a la liquidación de la misma. Por ejemplo, si una garantía tiene un umbral de liquidación del 80 %, significa que el préstamo será liquidado cuando el valor de la deuda alcanze el 80% del valor de la garantía.\",\"KYAjf3\":\"Aislado\",\"KkPgim\":\"Cambiando E-Mode\",\"KnN1Tu\":\"Caduca\",\"KoOBI2\":\"Debido a mecánicas internas de stETH requeridas para el soporte del rebase, no es posible realizar un cambio de garantía donde stETH es el token de origen.\",\"KojyJ4\":\"Red incorrecta\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Introduce la dirección ETH\",\"KvG1xW\":\"Reclamando\",\"L+8Lzs\":\"LTV actual\",\"L+qiq+\":\"Mercado\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Sin poder de voto\",\"LL0zks\":\"Puede ser garantía\",\"LLdJWu\":\"AAVE Reclamable\",\"LSIpNK\":\"Tomar prestado y pagar en el mismo bloque no está permitido\",\"LVt3TI\":[\"<0>Tolerancia de deslizamiento <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Modo E\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Intenta aumentar el deslizamiento o reduce la cantidad de entrada\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Dirección del destinatario\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vista de stakeo\",\"McHlGl\":\"Cambio de APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si el factor de salud se encuentra por debajo de 1, la liquidación de tu colateral puede ser activada.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Has cancelado la transacción.\",\"MnE2QX\":\"Información de préstamo\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valor de retorno inválido en la función executor del préstamo flash\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Este activo solo se puede utilizar como garantía en isolation mode con poder de préstamo limitado. Para entrar en el isolation mode, deshabilita todas las demás garantías.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pendiente...\",\"NK9ikO\":\"Balance de la cartera\",\"NMt2CB\":\"Cantidad reclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nada invertido\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"El límite de minteo sin respaldo ha sido excedido\",\"O+tyU+\":[\"La cantidad máxima disponible para tomar prestado contra este activo está limitada porque el límite de deuda está al \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstakear\",\"OR8cYX\":\"Resumen de la propuesta\",\"OYuJ9K\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"OfhWJH\":\"Restablecer\",\"Og2SKn\":\"deshabilitado\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Página web\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirar\",\"P1dURE\":\"Revocar poder\",\"P2WCD/\":[\"El activo subyacente no existe en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"P2sL6B\":\"Cuando ocurre una liquidación, los liquidadores pagan hasta el 50% de la cantidad pendiente del préstamo en nombre del prestatario. A cambio, pueden comprar la garantía con descuento y quedarse con la diferencia (sanción de liquidación) como bonificación.\",\"P6sRoL\":\"Stakea ABPT\",\"P72/OW\":\"El promedio ponderado de APY para todos los activos prestados, incluidos los incentivos.\",\"P7e6Ug\":\"Por favor conecta tu cartera para ver el historial de transacciones.\",\"PByO0X\":\"Votos\",\"PI+kVe\":\"Deshabilitar fork\",\"PJK9u/\":\"Apy préstamo\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Umbral de liquidación\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Esta acción reducirá el factor de salud V2 por debajo del umbral de liquidación. Mantén la garantía o migra la posición de préstamo para continuar.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"El Aave Balancer Pool Token (ABPT) es un token de pool de liquidez. Puedes recibir ABPT depositando una combinación de AAVE + wstETH en el pool de liquidez de Balancer. Luego puedes stakear tu BPT en el módulo de seguridad para asegurar el protocolo y ganar incentivos de seguridad.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Retirando\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"No alcanzado\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Diferencial\",\"RNK49r\":\"Firma inválida\",\"RS0o7b\":\"Estado\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Detalles de la propuesta\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"El activo no está listado\",\"Rj01Fz\":\"Enlaces\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"El factor de salud es menor que el umbral de liquidación\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Habilitado\",\"SDav7h\":\"Fondos en el Módulo de Seguridad\",\"SENccp\":\"Si el error persiste, <0/> podrías reportarlo a esto\",\"SIWumd\":\"Mostrar activos congelados o pausados\",\"SM58dD\":\"Cantidad en cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Error al cargar los votantes de la propuesta. Por favor actualiza la página.\",\"SSQVIz\":\"Umbral de liquidación\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"El modo de solo lectura permite ver las posiciones de las direcciones en Aave, pero no podrás realizar transacciones.\",\"SZRUQ4\":\"Deslizamiento máximo\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"Sk2zW9\":\"Desactivando E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"La dirección del proveedor del pool no esta registrada\",\"T/AIqG\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"T0xCO9\":\"No se puede validar la dirección de la cartera. Vuelve a intentarlo.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Tomar prestado\",\"TFxQlw\":\"Penalización de liquidación\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"El activo solo puede usarse como garantía en el Isolation mode únicamente.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"El usuario no tiene deuda pendiente de tasa estable en esta reserva\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Balance de préstamo después del cambio\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recarga la página\",\"U2r8nY\":\"Elige cuánto poder de voto/proposición otorgar a otra persona delegando parte de tu balance de AAVe o stkAAVE. Tus tokens permanecerán en tu cuenta, pero tu delegado podrá votar o proponer en tu lugar. Si tu balance de AAVE, stkAAVE o aAave cambia, el poder de voto/proposición de tu delegado se ajustará automáticamente.\",\"U8IubP\":\"La aplicación se está ejecutando en testnet mode. Aprende como funciona en\",\"U9btTk\":\"El activo no se puede pedir prestado en isolation mode\",\"UAOZRe\":\"El impacto del precio es la diferencia entre el valor total de los tokens de entrada cambiados y los tokens de destino obtenidos (en USD), que resulta de la liquidez limitada del par de cambio.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Detalles\",\"UTTKmT\":\"Cooldown de stakeo activado\",\"UXeR72\":\"Estos fondos se han tomado prestados y no están disponibles para su retirada en este momento.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"El ratio LTV máximo representa el poder de endeudamiento máximo de una garantía específica. Por ejemplo, si una garantía tiene un LTV del 75 %, el usuario puede pedir prestado hasta 0,75 ETH en la moneda principal por cada 1 ETH de garantía.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No hay recompensas para reclamar\",\"V0f2Xv\":\"Factor de reserva\",\"V1HK43\":\"Riesgos de migración\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Deuda cubierta\",\"VHOVEJ\":\"Conectar cartera\",\"VMfYUK\":\"Seguridad de tu garantía depositada contra los activos prestados y su valor subyacente.\",\"VOAZJh\":\"Total de préstamos\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Revisar detalles de la tx\",\"W5hVah\":\"Nada suministrado aún\",\"W5kTFy\":\"Votando\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"No respaldado\",\"WNGZwH\":\"El E-Mode incrementa tu LTV para una categoría seleccionada de activos hasta el <0/>. <1>Aprende más\",\"WPWG/y\":\"Configuración y estado de la reserva\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"El usuario no puede retirar más que el balance disponible\",\"WaZyaV\":\"<0>Ampleforth es un activo con rebase. Visita la <1>documentación para aprender más.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Debido a que este activo está en pausa, no se pueden realizar acciones hasta nuevo aviso\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Para tomar prestado, necesitas suministrar cualquier activo para ser utilizado como garantía.\",\"X/ITG9\":\"Copiar el texto del error\",\"X3Pp6x\":\"Utilizado como garantía\",\"X4Zt7j\":\"No se puede realizar la acción porque la reserva está pausada\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Direcciones de cartera de contrato inteligente representativas (Safe) en otras cadenas.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Por favor ten siempre en cuenta tu <0>factor de salud (HF) cuando migres parcialmente una posición y que tus tasas serán actualizadas a tasas de la V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTAR NO\",\"YDIOks\":\"Habilitar E-Mode\",\"YSodyW\":\"Esta acción reducirá tu factor de salud. Por favor ten en cuenta el riesgo incrementado de liquidación de la garantía.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode está ON\",\"YrDxdO\":\"Si tu relación préstamo-valor supera el umbral de liquidación, tu garantía puede ser liquidada.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"No se cumplieron las condiciones de ajuste de tasas de interés\",\"YyydIq\":[\"Añade \",[\"0\"],\" a tu cartera para hacer un seguimiento del balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gobierno de Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Modo de eficiencia (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Deshabilitar testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Antes de suministrar\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valor de liquidación\",\"ZrEc8j\":\"No pudimos encontrar ningún activo relacionado con tu búsqueda. Vuelve a intentarlo con un nombre diferente de activo, símbolo o dirección.\",\"ZsLF7e\":\"habilitado\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Tempo restante para unstakear\",\"a7u1N9\":\"Precio\",\"a9D+6D\":\"Unstakeado\",\"aEtiwq\":\"Votar NO\",\"aMmFE1\":\"Comprar Crypto con Fiat\",\"aOKIms\":\"Los parámetros del array que deberían ser iguales en longitud no lo son\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Tu balance es más bajo que la cantidad seleccionada.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"Se ha producido un error al recuperar la propuesta.\",\"aoXTT7\":\"APY préstamo, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Advertencia periodo de cooldown\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Activo\",\"bXQ/Og\":\"Compartir en twitter\",\"bXr0ee\":\"Los activos aislados han limitado tu capacidad de préstamo y otros activos no pueden ser usados como garantía.\",\"bYmAV1\":\"Direcciones\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"La cantidad solicitada es mayor que el tamaño máximo del préstamo en el modo de tasa estable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Suministrar\",\"bxN6EM\":\"No se puede deshabilitar E-Mode\",\"c91vuQ\":\"La dirección no es un contrato\",\"c97os2\":\"aToken de Aave\",\"c9b44w\":\"No puedes retirar esta cantidad porque causará una liquidación\",\"cBc+4A\":\"Esta es la cantidad total disponible que puedes tomar prestada. Puedes tomar prestado basado en tu garantía y hasta que el límite de préstamo se alcance.\",\"cIl5kp\":\"Tu poder de voto se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"cLo09S\":\"Detalles de riesgo\",\"cNT+ij\":\"Tomar prestado no está disponible porque has habilitado el Efficiency Mode (E-Mode) y el Isolation mode. Para administrar el E-Mode y el Isolation Mode, visita tu <0>Panel de control.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Para enviar una propuesta de cambios menores al protocolo, necesitarás al menos 80K de poder. Si deseas cambiar la base central del código, necesitarás un poder de 320K.<0>Aprende más\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Votar SI\",\"ckf7gX\":[\"Pagando \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Hilo de discusión del foro\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"No has participado en esta propuesta\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gobierno\",\"dEgA5A\":\"Cancelar\",\"dIsyWh\":\"La validación del LTV ha fallado\",\"dOB5nW\":[\"La cantidad máxima disponible para suministrar es <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"No tienes suficientes fondos en tu cartera para pagar la cantidad total. Si procedes a pagar con tu cantidad actual de fondos, aún tendrás un pequeño préstamo en tu panel de control.\",\"dXUQFX\":\"Activos a tomar prestado\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Tomar prestado está deshabilitado debido a una decisión de la comunidad de Aave. <0>Más información\",\"djsg0o\":\"Uso de la garantía\",\"drdV8R\":\"Liquidación\",\"dxW8cS\":\"Token de deuda de Aave\",\"e4V3oW\":\"Top 10 direcciones\",\"eD8WX/\":\"La acción requiere una reserva activa\",\"eJRJ04\":\"Cantidad para unstakear\",\"eLh0cL\":\"El deslizamiento es la diferencia entre las cantidades calculadas y las recibidas debido a las condiciones cambiantes del mercado entre el momento en que se envía la transacción y su verificación.\",\"ePK91l\":\"Editar\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Recompensas de Staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aún no hay transacciones.\",\"ebLGGN\":\"Total tomado prestado\",\"ecqEvn\":\"El balance de garantía es 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible en\",\"enruNF\":\"empieza\",\"eqLYiD\":\"Unstakea ahora\",\"evw5ha\":\"Valor neto\",\"ezcU16\":\"Obtener Token ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Has cambiado a tasa \",[\"0\"]],\"fMJQZK\":\"Prestado\",\"fZ5Vnu\":\"Recibido\",\"firl9Q\":\"Tu actual relación préstamo-valor basado en tu garantía suministrada.\",\"fldjW9\":\"Previsualizar la tx y migrar\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Retirar \",[\"symbol\"]],\"fwjWSI\":\"Suministrado\",\"fwyTMb\":\"Migrar a stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Votó NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. <0>More información\",\"gTHi2T\":\"El usuario está intentando tomar prestado múltiples activos incluido uno aislado\",\"gVW59Y\":\"Por favor conecta tu cartera para obtener activos testnet gratis.\",\"gcFNxP\":\"Aprobación confirmada\",\"goff7V\":\"Dirección cero no válida\",\"gp+f1B\":\"Versión 3\",\"gvTM4B\":\"El APY neto es el efecto combinado de todos los suministros y préstamos sobre total, incluidos los incentivos. Es posible tener un APY neto negativo si el APY de la deuda es mayor que el APY de suministro.\",\"gzcch9\":\"Comisión de puente de protocolo inválida\",\"h33MxW\":\"Direcciones de cartera de contrato inteligente representantes (Safe) en otras cadenas.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activar Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY neto\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Reclamado\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"El % de tu poder de préstamo total utilizado. Esto se basa en la cantidad de tu garantía suministrada y la cantidad total que puedes pedir prestado.\",\"hehnjM\":\"Cantidad\",\"hjDCQr\":\"Hubo un error. Por favor intenta cambiar los parámetros o <0><1>copiar el error\",\"hom7qf\":\"Reclamar\",\"hpHJ4I\":\"Garantía liquidada\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Tomando prestado \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"Sobre GHO\",\"iChbOF\":\"Parámetros inconsistentes del préstamo flash\",\"iEPVHF\":\"No hay suficiente poder de voto para participar en esta propuesta\",\"iEW87X\":\"Poder delegado\",\"iEju36\":[\"Has votado \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Seleccionar tolerancia de deslizamiento\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Ingresa una cantidad\",\"iSLIjg\":\"Conectar\",\"iUo5rv\":\"tokens no es lo mismo que stakearlos. Si deseas stakearlos\",\"iZxa38\":\"Úsalo para votar a favor o en contra de propuestas activas.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"En el Isolation mode, no puedes suministrar otros activos como garantía. Un límite de deuda global limita la capacidad de préstamo del activo aislado. Para salir del Isolation mode, deshabilita \",[\"0\"],\" como garantía antes de tomar prestado otro activo. Lee más en nuestras <0>preguntas frecuentes \"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"El uso de garantías está limitado debido al Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Suministrando tu\",\"jFi7dz\":\"Tasa de interés determinada por el gobierno de Aave. Esta tasa puede cambiar con el tiempo dependiendo de la necesidad de que el suministro de GHO se contraiga/expanda. <0>Aprende más\",\"jG3UJ7\":\"Desactivar el E-Mode\",\"jKYzR1\":\"Habilitar E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Periodo restante de cooldown\",\"jeMZNr\":[[\"0\"],\" el servicio on-ramp es proporcionado por proveedores externos y al seleccionarlo, estás aceptando los términos de dichos proveedores. Tu acceso al servicio podría depender de que el proveedor externo esté operativo.\"],\"jfl9OP\":\"Migrado\",\"jmXdoY\":\"En E-Mode algunos activos no se pueden pedir prestados. Sal del E-Mode para obtener acceso a todos los activos\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"No disponible\",\"k/sb6z\":\"Seleccionar idioma\",\"k3wP3f\":\"<0>Atención: Los cambios de parámetros a través de la gobernanza pueden alterar el factor de salud de tu cuenta y el riesgo de liquidación. Sigue el <1>foro de gobierno de Aave para mantenerte actualizado.\",\"kACpF3\":[\"Reclamar \",[\"0\"]],\"kH6wUX\":\"Impacto del precio\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" activos seleccionados\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Para pagar en nombre de un usuario, se necesita una cantidad explícita para pagar\",\"kRTD40\":[\"Cantidad a pagar para alcanzar el \",[\"0\"],\"% de utilización\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"El límite de suministro se ha sobrepasado\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"El límite de deuda no es cero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"El balance de DAI se convertirá a través de los contratos de DSR y luego se suministrará como sDAI. El cambio no genera costos adicionales ni deslizamientos.\",\"lU2d1/\":[\"Este activo no se puede migrar debido a una liquidez insuficiente o a una limitación del límite de préstamo en el mercado v3 de \",[\"marketName\"],\".\"],\"lVhKKI\":\"Votó YAE\",\"lWLqxB\":\"No pudimos encontrar ninguna transacción relacionada con tu búsqueda. Vuelve a intentarlo con un nombre de activo diferente o restablece los filtros.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Inglés\",\"lfEjIE\":\"Aprende más en nuestra guía <0>Preguntas frecuentes\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Emisiones totales por día\",\"m7r7Hh\":\"Activos de préstamo seleccionados\",\"mDDK4p\":\"Pool de Balancer\",\"mUAFd6\":\"Versión 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos o usa <0>\",[\"0\"],\" para transferir tus activos de \",[\"network\"],\".\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Comprar \",[\"cryptoSymbol\"],\" con Fiat\"],\"mvCXBY\":\"Stakea AAVE\",\"mwdzil\":\"Vale, cerrar\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Este activo no puede usarse como garantía.\",\"n+SX4g\":\"Desarrolladores\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Apy de suministro\",\"nJgsQu\":\"Con un poder de votación de <0/>\",\"nLC6tu\":\"Francés\",\"nNHV0z\":\"Migrar múltiples garantías y activos prestados al mismo tiempo puede ser una operación costosa y podría fallar en ciertas situaciones.<0>Por lo tanto, no se recomienda migrar posiciones con más de 5 activos (depositados + tomados prestados) al mismo tiempo.\",\"nNbnzu\":\"Proposición\",\"nPGNMh\":\"Puede ser ejecutado\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Ambos\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Se produjo un error\",\"nxyWvj\":\"Retirar esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"o17QVP\":\"Tu factor de salud y la relación préstamo-valor determinan la seguridad de tu garantía. Para evitar liquidaciones, puedes suministrar más garantía o pagar las posiciones de préstamo.\",\"o1xc2V\":\"El balance de AToken no es cero\",\"o5ooMr\":\"Deuda\",\"o7J4JM\":\"Filtro\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown para undstakear\",\"oJ5ZiG\":\"El usuario no tiene deuda pendiente de tasa variable en esta reserva\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Activos de prueba\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"La tasa de interés estable <0>permanecerá igual durante la duración de su préstamo. Está recomendado para los períodos de préstamo a largo plazo y para los usuarios que prefieren la previsibilidad.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible para suministrar\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Sin resultados\",\"owSsI3\":\"Firmas listas\",\"p+R52m\":\"Ir al pool de Balancer\",\"p2S64u\":\"La relación préstamo-valor de las posiciones migradas provocaría la liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"p2Z2Qi\":\"Este activo ha alcanzado su límite de préstamo. No queda nada disponible para ser prestado de este mercado.\",\"p45alK\":\"Configurar la delegación\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"El balance subyacente debe ser mayor que 0\",\"pgWG9H\":\"No hay suficiente balance stakeado\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"por favor comprueba que la cantidad que deseas depositar no está siendo utilizada actualmente para stakear. Si está utilizando para stakear, tu transacción podría fallar.\",\"pjO/iH\":\"Cantidad mínima recibida\",\"pooutM\":\"La votación está activa\",\"pqaM5s\":\"Confirmando transacción\",\"ptaxX3\":[\"Entiendo como el cooldown (\",[\"0\"],\") y el proceso de unstaking (\",[\"1\"],\") funcionan\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"La función debe ser llamada por un pool\",\"q/51mF\":\"Migrar a V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Estrategia de tasa de interés\",\"q6lAbz\":\"Stakeado\",\"qB4kPi\":\"Suministrar APY\",\"qENI8q\":\"Configuración global\",\"qGz5zl\":\"Balance de la garantía tras pagar\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copiar el error\",\"qXCkEM\":\"Por favor, conecta tu cartera para ver tus suministros, préstamos y posiciones abiertas.\",\"qY2jnw\":\"Expiración inválida\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Cantidad inválida para quemar\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"La cantidad debe ser mayor que 0\",\"rQ+R+0\":\"Activos de suministro seleccionados\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Este activo no se puede migrar porque tienes una garantía en Isolation Mode en el mercado v3 de \",[\"marketName\"],\" que limita los activos prestados. Puedes administrar tu garantía en el <0>Panel de control V3 de \",[\"marketName\"],\"\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Mostrar activos con 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacidad\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Reclamar todas las recompensas\",\"rwyUva\":\"Estos activos están temporalmente congelados o pausados por decisiones de la comunidad de Aave, lo que significa que no se puede suministrar / tomar prestado o intercambiar tasas de estos activos. Se permiten retiros y pagos de deuda. Sigue el <0>foro de gobierno de Aave para más actualizaciones.\",\"rxJW5W\":\"Tu poder de proposición se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstakear \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NO\",\"sQv06Y\":\"para\",\"sTtO6J\":\"Confirmar transacción\",\"sXKb3l\":\"Tasa de cambio\",\"sb0q4+\":\"Unstakea aquí\",\"smJNwH\":\"Disponible para tomar prestado\",\"solypO\":\"El factor de salud no está por debajo del umbral\",\"sr0UJD\":\"Volver atrás\",\"ss5GCK\":\"La dirección del proveedor del grupo de direcciones no es válida\",\"swEgK4\":\"Tu información de voto\",\"t+wtgf\":\"Nada tomado prestado aún\",\"t/YqKh\":\"Eliminar\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Precio del oráculo\",\"tFZLf8\":\"Este cálculo de gas es solo una estimación. Tu cartera establecerá el precio de la transacción. Puedes modificar la configuración de gas directamente desde tu proveedor de cartera.\",\"tHuvQI\":\"Ir al panel de control V3\",\"tOcg3N\":\"Dado que este activo está congelado, las únicas acciones disponibles son retirar y pagar, a las que se puede acceder desde el <0>Panel de control\",\"tOuXfv\":[\"Cantidad a tomar prestado para alcanzar el \",[\"0\"],\"% de utilización\"],\"te9Bfl\":\"Por favor, conecta tu cartera\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Tus suministros\",\"u3ZeYl\":\"Error en la transacción\",\"u706uF\":\"Préstamo flash inválido\",\"u8Gfu7\":[\"Sin resultados de búsqueda\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No hay activos seleccionados para migrar.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrando\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Para el pago de un tipo específico de deuda, el usuario necesita tener una deuda de ese tipo\",\"ulNuNq\":\"Exportar datos a\",\"ulup2p\":\"Comprar Crypto con Fiat\",\"usB84Z\":\"La cantidad máxima disponible para tomar prestado está limitada porque casi se ha alcanzado el límite de préstamo del protocolo.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restakeado\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Ocultar\",\"vMba49\":\"Tomar prestado no está habilitado\",\"vMpNwt\":\"Aprobar con\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Idioma\",\"vesuBJ\":\"Te permite decidir si utilizar un activo suministrado como garantía. Un activo utilizado como garantía afectará a tu poder de préstamo y factor de salud.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"El balance de deuda estable no es cero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"APR de recompensas\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Tu \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Canal de Discord\",\"wQZbc/\":\"El llamador de la función no es un AToken\",\"wZFvVU\":\"VOTAR SI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"El Protocolo Aave está programado para usar siempre el precio de 1 GHO = $1. Esto es diferente del uso del precio de mercado a través de oráculos para otros criptoactivos. Esto crea oportunidades de arbitraje estabilizadoras cuando el precio de GHO fluctúa.\",\"wh7Ezv\":\"No tienes balance de AAVE/stkAAVE/aAave para delegar.\",\"wlsIx7\":\"Con la testnet Faucet puedes obtener activos gratuitos para probar el Protocolo Aave. Asegúrate de cambiar tu proveedor de cartera a la red de testnet adecuada, selecciona el activo deseado y haz clic en \\\"Faucet\\\" para obtener tokens transferidos a tu cartera. Los activos de una testnet no son \\\"reales\\\", lo que significada que no tienen valor monetario. <0>Aprende más\",\"wmE285\":\"Obtener Token ABP v2\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"Como resultado de las decisiones del gobierno, este pool de stakeo de ABPT está obsoleto. Tienes la flexibilidad de migrar todos tus tokens a v2 o unstakearlos sin ningún periodo de cooldown.\",\"x5KiLL\":\"Los activos seleccionados se han migrado correctamente. Visita el panel de control del mercado para verlos.\",\"x7F2p6\":\"Diferencial actual\",\"x7K5ib\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue \",[\"0\"],\" de prueba gratis en\"],\"x9iLRD\":\"tokens, por favor ve al\",\"xNy/UG\":\"Pagar con\",\"xPm8wv\":\"Aprende más sobre los riesgos involucrados\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Tu información\",\"xaWZ6f\":\"Cambio tipo de APY\",\"xh6k71\":\"El uso de garantías está limitado debido al isolation mode.\",\"xvIklc\":\"El préstamo flash está deshabilitado para este activo, por lo tanto, esta posición no se puede migrar.\",\"y5rS9U\":\"Migrar\",\"yB1YpA\":\"Modo oscuro\",\"yCrG6m\":\"Tamaño total del mercado\",\"yJUUbn\":\"Resumen de la transacción\",\"yLGmLX\":[\"Restakear \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Dirección no válida\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Haz seguimiento de tu cartera\",\"yh2sjd\":[\"Impacto en el precio \",[\"0\"],\"%\"],\"ylmtBZ\":\"La aplicación se ejecuta en fork mode.\",\"ymNY32\":[\"No hay fondos suficientes en la reserva\",[\"0\"],\"para tomar prestado\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Cerrar\",\"z4uGQg\":\"El límite de deuda está sobrepasado\",\"z5UQOM\":\"La garantía elegida no puede ser liquidada\",\"z5Y+p6\":[\"Suministrando \",[\"symbol\"]],\"zCjNKs\":\"No se puede realizar la acción porque la reserva está congelada\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Límite de deuda aislado\",\"zTOjMP\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Deuda restante\",\"zmTPiV\":\"Balance de suministro\",\"zpPbZl\":\"Parámetros de riesgo de liquidación\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menú\",\"zwWKhA\":\"Aprende más\",\"zy9fXn\":[\"Este activo está congelado en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"zys+R6\":\"Ten en cuenta la congestión de la red y los precios del gas.\",\"+EGVI0\":\"Recibir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Parece que no podemos cambiar la red automáticamente. Por favor, comprueba si puedes cambiarla desde la cartera.\",\"+kLZGu\":\"Cantidad de activos suministrados\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Cantidad mínima de Aave stakeado\",\"00OflG\":\"No hay suficiente liquidez para que el activo seleccionado realice el cambio. Prueba reduciendo la cantidad.\",\"08/rZ9\":\"El periodo de cooldown es el tiempo requerido antes de unstakear tus tokens (20 días). Solo puedes retirar tus activos del Módulo de Seguridad después del periodo de cooldown y dentro de la ventana de unstakeo.<0>Aprende más\",\"1Onqx8\":[\"Aprobando \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Dirección bloqueada\",\"2bAhR7\":\"Conoce GHO\",\"2o/xRt\":\"Se ha alcanzado el límite de suministro en la reserva especificada. Prueba reduciendo la cantidad.\",\"3O8YTV\":\"Interés total acumulado\",\"4iPAI3\":\"Cantidad de préstamo mínima de GHO\",\"6NGLTR\":\"Cantidad descontable\",\"6yAAbq\":\"APY, tasa de préstamo\",\"73Auuq\":\"Los parámetros de descuento son decididos por la comunidad de Aave y pueden cambiar con el tiempo. Consulta el Gobierno para ver actualizaciones y vota para participar. <0>-Aprende más\",\"ARu1L4\":\"Pagado\",\"B6aXGH\":\"Estable\",\"B9Gqbz\":\"Tasa variable\",\"BJyN77\":\"Debido al impacto del factor de salud, se requiere un préstamo flash para realizar esta transacción, pero el Gobierno de Aave ha inhabilitado la disponibilidad de préstamos flash para este activo. Intenta reducir la cantidad o suministrar garantía adicional.\",\"BjLdl1\":\"Con un descuento\",\"CMHmbm\":\"Deslizamiento\",\"EBL9Gz\":\"¡COPIADO!\",\"ES8dkb\":\"Interés fijo\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Descuento\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Guardar y compartir\",\"JK9zf1\":[\"Interés compuesto estimado, incluyendo el descuento por Staking \",[\"0\"],\"AAVE en el Módulo de Seguridad.\"],\"JPrLjO\":\"No puedes usar este activo como garantía\",\"JU6q+W\":\"Recompensa(s) por reclamar\",\"K05qZY\":\"Retirar y Cambiar\",\"KRpokz\":\"VER TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Habilitar este activo como garantía aumenta tu poder préstamo y el factor de salud. Sin embargo, puede ser liquidado si tu factor de salud cae por debajo de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stakear GHO\",\"RIfckG\":[\"Desactivar \",[\"symbol\"],\" como garantía\"],\"RbXH+k\":\"Los poseedores de AAVE, GHO y ABPT (solo en la red de Ethereum) pueden stakear sus activos en el Módulo de Seguridad para añadir más seguridad al protocolo y obtener incentivos de seguridad. En el caso de un evento de shortfall, tu stakeo puede ser reducido para cubrir el déficit. proporcionando una capa adicional de protección para el protocolo.\",\"RoafuO\":\"Enviar feedback\",\"TeCFg/\":\"Cambio de tasa de préstamo\",\"TskbEN\":\"Los poseedores de stkAAVE reciben un descuento en la tasa de préstamo de GHO\",\"TtZL6q\":\"Parámetros del modelo de descuento\",\"Tz0GSZ\":\"actividades bloqueadas\",\"UE3KJZ\":\"El historial de transacciones no está disponible actualmente para este mercado\",\"W8ekPc\":\"Volver al panel de control\",\"XZzneG\":\"Saldrás del modo aislamiento y otros tokens pueden ser usados ahora como garantía\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Deshabilitar este activo como garantía afecta tu poder de préstamo y Factor de Salud.\",\"al6Pyz\":\"Supera el descuento\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"No hay suficiente garantía para pagar esta cantidad de deuda con\",\"cqnmnD\":\"Tasa de interés efectiva\",\"dMtLDE\":\"para\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY con descuento aplicado\",\"fHcELk\":\"APR Neto\",\"flRCF/\":\"Descuento por staking\",\"gncRUO\":\"Esta dirección está bloqueada en app.aave.com porque está asociada con una o más\",\"gr8mYw\":\"Puedes tomar prestado hasta <0/> GHO al <1/> (descuento máximo)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Balance tomado prestado\",\"i2JTiw\":\"Puedes ingresar una cantidad específica en el campo.\",\"jMam5g\":[\"Balance \",[\"0\"]],\"jpctdh\":\"Ver\",\"kwwn6i\":\"Los usuarios que stakean AAVE en el Modulo de Seguridad (es decir, poseedores de stkAAVE) reciben un descuento en la tasa de interés de préstamo de GHO. Este descuento se aplica a 100 GHO por cada 1 stkAAVE en posesión. Usa el calculador de abajo para ver la tasa de préstamo de GHO con el descuento aplicado.\",\"lNVG7i\":\"Selecciona un activo\",\"lt6bpt\":\"Garantía a pagar con\",\"mIM0qu\":\"Cantidad esperada a pagar\",\"mzI/c+\":\"Descargar\",\"n8Psk4\":\"No podemos detectar una cartera. Conecta una cartera para stakear y ver tu balance.\",\"nOy4ob\":\"Te sugerimos volver al Panel de control.\",\"nakd8r\":\"poseedores de stkAAVE obtienen un descuento en la tasa de préstamo de GHO\",\"nh2EJK\":[\"Por favor, cambia a \",[\"networkName\"],\".\"],\"ntkAoE\":\"Descuento aplicado para <0/> AAVE stakeados\",\"o4tCu3\":\"APY préstamo\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"El periodo de cooldown es \",[\"0\"],\". Después \",[\"1\"],\" del cooldown, entrarás a la ventana de unstakeo de \",[\"2\"],\". Continuarás recibiendo premios durante el cooldown y la ventana de unstakeo.\"],\"p3j+mb\":\"Tu balance de recompensa es 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interés acumulado\",\"rf8POi\":\"Cantidad de activos tomados prestados\",\"ruc7X+\":\"Añade stkAAVE para ver el APY de préstamo con el descuento\",\"sK+Nag\":\"Revisión tx\",\"t81DpC\":[\"Aprueba \",[\"symbol\"],\" para continuar\"],\"umICAY\":\"<0><1><2/>Añade stkAAVE para ver la tasa de préstamo con descuento\",\"uwAUvj\":\"COPIAR IMAGEN\",\"v8x7Mg\":\"Garantía insuficiente para cubrir la nueva posición de préstamo. La cartera debe tener poder de préstamo suficiente para realizar el cambio de deuda.\",\"wRRqvW\":\"No tienes suministros en este activo\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Habilitar \",[\"symbol\"],\" como garantía\"],\"yW1oWB\":\"Tipo APY\",\"yhvj6d\":\"No puedes cambiar el uso como modo de garantía para este activo, porque causará una liquidación\",\"zevmS2\":\"<0><1><2/>añade <3/> stkAAVE para tomar prestado al <4/> (descuento máximo)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/locales/fr/messages.js b/src/locales/fr/messages.js index 0c54d37af3..5899fe34af 100644 --- a/src/locales/fr/messages.js +++ b/src/locales/fr/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si vous NE vous désengagez PAS dans les \",[\"0\"],\" de la fenêtre de désengagement, vous devrez réactiver le processus de refroidissement.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participer à cette réserve \",[\"symbol\"],\" donne des récompenses annualisées.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Limite d'emprunt\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Emprunter ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"L'emprunt stable n'est pas activé\",\"/yQcJM\":\"Valeur totale\",\"00AB2i\":\"L'utilisateur n'a pas emprunté la devise spécifiée\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Changement de taux\",\"0BF3yK\":\"Désolé, nous n’avons pas trouvé la page que vous cherchiez.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Risque de liquidation\",\"0ojY+Y\":\"Solde actuel v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Modification des garanties\",\"0wGCWc\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"À l’heure actuelle, les données sur les prix ne sont pas disponibles pour cette réserve dans le sous-graphe du protocole\",\"1LjK22\":\"Historique des transactions\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Veuillez connecter un portefeuille pour afficher vos informations personnelles ici.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Seuil de liquidation <0/>\",\"1m9Qqc\":\"Retrait et changement\",\"1t7rez\":\"L’offre d’actifs est limitée à un certain montant afin de réduire l’exposition du protocole à l’actif et d’aider à gérer les risques encourus.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Voir détails\",\"2FYpfJ\":\"Plus\",\"2O3qp5\":\"Liquidités disponibles\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"L’actif ne peut pas être migré en raison d’une restriction de plafond d’approvisionnement dans \",[\"marketName\"],\" v3 marché.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave est un protocole entièrement décentralisé et régi par la communauté par les détenteurs de jetons AAVE. Les détenteurs de jetons AAVE discutent, proposent et votent collectivement sur les mises à niveau du protocole. Les détenteurs de jetons AAVE (réseau Ethereum uniquement) peuvent soit voter eux-mêmes sur de nouvelles propositions, soit choisir l’adresse de leur choix. Pour en savoir plus, consultez la page Gouvernance\",\"2a6G7d\":\"Veuillez saisir une adresse de portefeuille valide.\",\"2eBWE6\":\"Je reconnais les risques encourus.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"L'emprunt stable est activé\",\"34Qfwy\":\"Le plafond d'emprunt est dépassé\",\"39eQRj\":[\"Emprunter \",[\"symbole\"]],\"3BL1xB\":\"Total fourni\",\"3K0oMo\":\"Offre restante\",\"3LVNIp\":[\"High price impact (\",[\"0\"],\"%). This route may return less due to low liquidity or small order size.\"],\"3MoZhl\":\"Il n'y a pas assez de collatéral pour couvrir un nouvel emprunt\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Fournir \",[\"symbole\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Rembourser\",\"3qsjtp\":\"La moyenne pondérée de l'APY pour tous les actifs fournis, y compris les incitations.\",\"3rL+os\":\"Vous ne pouvez retirer vos actifs du module de sécurité qu'après la fin de la période de refroidissement et que la fenêtre de retrait est active.\",\"42UgDM\":[\"Migrer vers \",[\"0\"],\" Marché v3\"],\"49UFQA\":\"Résultats du vote\",\"4DMZUI\":\"Afficher les transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Petits caractères\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Signez pour continuer\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenez des ressources de test gratuites à l’adresse suivante :\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Le plafond de la dette limite le montant que les utilisateurs du protocole peuvent emprunter sur cet actif. Le plafond de la dette est spécifique aux actifs isolés et est indiqué en USD.\",\"5Ncc6j\":[\"Cet actif a presque atteint son plafond d'offre. Il ne peut y avoir que \",[\"messageValue\"],\" fourni à ce marché.\"],\"5cZ/KX\":\"L'offre de dette variable n'est pas nulle\",\"5che++\":\"Pour demander l'accès à ce marché autorisé, veuillez consulter\xA0: <0>Nom du fournisseur d'accès\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" reçu\"],\"5hDe9v\":\"Allocation action requise\",\"5rsnKT\":\"Récompenses disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Voir tous les votes\",\"6/dCYd\":\"Aperçu\",\"60crCe\":\"Toutes les transactions\",\"62Xcjh\":\"Collatérale\",\"65A04M\":\"Espagnol\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signature\",\"6Jrv+z\":[\"Rembourser \",[\"symbole\"]],\"6Xr0UU\":\"Refroidissement...\",\"6bxci/\":\"Pouvoir de vote\",\"6f8S68\":\"Marchés\",\"6g1gi0\":\"Les propositions\",\"6gvoHP\":\"Copier le message d’erreur\",\"6h3Q5G\":\"Remboursé\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Changer de réseau\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Facteur de santé\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Atteint\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"L’emprunt n’est pas disponible car vous utilisez le mode Isolation. Pour gérer le mode d’isolation, rendez-vous sur votre <0>tableau de bord.\",\"7aKlMS\":\"Partager sur Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Réclamer tout\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Les données n’ont pas pu être récupérées, veuillez recharger le graphique.\",\"7p5kLi\":\"Tableau de bord\",\"7sofdl\":\"Retrait et échange\",\"8+6BI0\":\"Soyez prudent - Vous êtes très proche de la liquidation. Envisagez de déposer plus de collatéral ou de rembourser certaines de vos positions empruntées\",\"87pUEW\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs.\"],\"8F1i42\":\"Page introuvable\",\"8G8M0u\":\"Chargement des données...\",\"8Iu1QS\":\"Retiré\",\"8JL93T\":\"Toutes les propositions\",\"8Q51DU\":\"Ajouter au portefeuille\",\"8X/oyn\":\"Montant invalide à frapper\",\"8Z5FPv\":\"Déconnecter le portefeuille\",\"8Zz7s5\":\"actifs\",\"8aLW8H\":\"Solde à révoquer\",\"8bOT3H\":\"Taux d'utilisation\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Voir le contrat\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Montrer\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Vous entrez en mode Isolation\",\"9CDK3/\":[\"L'emprunt n'est actuellement pas disponible pour \",[\"0\"],\".\"],\"9GIj3z\":\"Taille de réserve\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Solde de mise en jeu\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votes actuels\",\"9Rw96f\":[\"Cet actif a presque atteint son plafond d'emprunt. Il n'y a que \",[\"messageValue\"],\" disponible pour être emprunté sur ce marché.\"],\"9Xj/qR\":[\"Certaines ressources migrées ne seront pas utilisées comme garantie en raison de l’activation du mode d’isolement dans \",[\"marketName\"],\" Marché V3. Visite <0>\",[\"marketName\"],\" Tableau de bord V3 pour gérer le mode d’isolation.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Cet actif a atteint son plafond d'offre. Rien n'est disponible pour être fourni à partir de ce marché.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"L’AMI a été suspendu en raison d’une décision de la communauté. L’offre, les emprunts et les remboursements sont impactés. <0>Plus d’informations\",\"9lXchd\":\"Jeton sous-jacent\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Comme il s'agit d'un réseau de test, vous pouvez obtenir n'importe lequel des actifs si vous avez ETH dans votre portefeuille\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choisissez l’un des services de rampe d’accès\",\"A6dCI6\":[\"Le montant maximal disponible pour emprunter est de <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Vos emprunts\",\"AV7cGz\":\"Examiner les détails de la taxe d'approbation\",\"AZOjB8\":\"Récupération de données...\",\"Ai0jas\":\"Rejoignez la discussion de la communauté\",\"Ajl2rq\":\"Le pouvoir d'emprunt et les actifs sont limités en raison du mode d'isolement.\",\"AqgYNC\":\"Plafond d’emprunt du protocole à 100% pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"Les stETH fournis en garantie continueront d’accumuler des récompenses de staking fournies par les rebasages quotidiens.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"L'utilisation de la garantie est limitée en raison du mode d'isolement. <0>En savoir plus\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Catégorie d'actifs\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Cet actif est gelé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Fiche technique\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Grec\",\"CkTRmy\":[\"Revendication \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Veuillez connecter votre portefeuille pour voir l’outil de migration.\",\"CtGlFb\":[[\"networkName\"],\" Robinet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Cette action réduira le facteur de santé de V3 en dessous du seuil de liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"La garantie est (principalement) la même devise que celle qui est empruntée\",\"DCnFg0\":[\"Adresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"Je comprends parfaitement les risques liés à la migration.\",\"DONJcV\":\"L'actif sous-jacent ne peut pas être sauvé\",\"DR+4uL\":\"Bilan de l’alimentation après le changement\",\"DWjrck\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" V3 Market en raison des restrictions du mode E. Vous pouvez désactiver ou gérer les catégories du mode E dans votre <0>tableau de bord V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave par mois\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collatéralisation\",\"DxfsGs\":\"Vous pouvez signaler un incident sur notre <0>Discord ou<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Désactivé\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Reprise \",[\"symbol\"]],\"Ebgc76\":[\"Retrait \",[\"symbole\"]],\"EdQY6l\":\"Aucun/Aucune\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Réactiver la période de recharge pour annuler le pieu \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrer vers la v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Pour en savoir plus.\",\"FHlMf/\":\"Solde actuel de la v2\",\"FHpxjF\":[\"Le facteur de réserve est un pourcentage de l’intérêt qui va à un \",[\"0\"],\" qui est contrôlé par la gouvernance Aave pour promouvoir la croissance de l’écosystème.\"],\"FOBZa6\":\"Puissance d'emprunt utilisée\",\"FPKEug\":\"Opération non prise en charge\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"sur\",\"Fjw9N+\":\"Actifs à déposer\",\"FmN0fk\":\"Remise en jeu\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO est un actif numérique natif décentralisé et adossé à des garanties, indexé sur le dollar américain. Il est créé par les utilisateurs en empruntant contre plusieurs garanties. Lorsque l’utilisateur rembourse sa position d’emprunt de HO, le protocole brûle le GHO de cet utilisateur. Tous les paiements d’intérêts accumulés par les minters de GHO seraient directement transférés à la trésorerie d’AaveDAO.\",\"GQrBTq\":\"Changer de mode E\",\"GWswcZ\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. Le 20 décembre 2022, renFIL ne sera plus pris en charge et ne pourra plus être reconnecté à son réseau natif. Il est recommandé de retirer les positions d’offre et de rembourser les positions d’emprunt afin que renFIL puisse être relié à FIL avant la date limite. Après cette date, il ne sera plus possible de convertir renFIL en FIL. <0>Plus d’informations\",\"GX8GKD\":\"Actifs\",\"GgEj+0\":\"Mode lecture seule. Connectez-vous à un portefeuille pour effectuer des transactions.\",\"GjkIKV\":\"Prend fin\",\"GtP2hp\":[\"L'emprunt n'est pas disponible, car vous avez activé le mode d'efficacité (E-Mode) pour la catégorie \",[\"0\"],\". Pour gérer les catégories E-Mode, visitez votre <0>tableau de bord.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Désolé, une erreur inattendue s’est produite. En attendant, vous pouvez essayer de recharger la page, ou revenir plus tard.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Fenêtre d'arrêt de staking\",\"HpK/8d\":\"Recharger\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" v3 Marché puisque l’actif collatéral activera le mode d’isolation.\"],\"Hvwnm9\":[\"La quantité maximale disponible pour l’approvisionnement est limitée parce que le plafond d’approvisionnement du protocole est à \",[\"0\"],\"%.\"],\"I8CX2c\":\"Le montant total de vos actifs libellés en USD qui peut être utilisé comme garantie pour emprunter des actifs.\",\"IAD2SB\":[\"Prétendant \",[\"symbol\"]],\"IG9X9/\":\"L’emprunt de cet actif est limité à un certain montant afin de minimiser l’insolvabilité du pool de liquidités.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Il est prévu que cet actif soit désactivé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"IP+I/j\":\"Période de recharge\",\"IaA40H\":\"Liquidation à\",\"IhAc6F\":\"Costs & Fees\",\"IhcCYz\":[\"I confirm the swap with a potential \",[\"0\"],\"% value loss\"],\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Gérer l’analytique\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Déjalonnement \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Pas assez de solde sur votre portefeuille\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Solde du portefeuille\",\"JtwD8u\":\"Emprunter le solde après le remboursement\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter davantage sur cet actif.\",\"KLXVqE\":[\"Les tokens stETH seront migrés vers Wrapped stETH à l’aide du wrapper Lido Protocol, ce qui entraîne une modification de l’équilibre de l’offre après la migration : \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Cela représente le seuil auquel une position d'emprunt sera considérée comme sous-garantie et sujette à liquidation pour chaque garantie. Par exemple, si une garantie a un seuil de liquidation de 80\xA0%, cela signifie que la position sera liquidée lorsque la valeur de la dette vaut 80 % de la valeur de la garantie.\",\"KYAjf3\":\"Isolé\",\"KkPgim\":\"Changement de mode E\",\"KnN1Tu\":\"Expire\",\"KoOBI2\":\"En raison de la mécanique interne de stETH requise pour le rebasage de la prise en charge, il n’est pas possible d’effectuer un changement de garantie où stETH est le jeton source.\",\"KojyJ4\":\"Mauvais réseau\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Entrez l'adresse ETH\",\"KvG1xW\":\"Réclamer\",\"L+8Lzs\":\"LTV actuelle\",\"L+qiq+\":\"Marché\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Pas de pouvoir de vote\",\"LL0zks\":\"Peut être collatéral\",\"LLdJWu\":\"AAVE Réclamable\",\"LSIpNK\":\"Emprunter et rembourser dans le même bloc n'est pas autorisé\",\"LVt3TI\":[\"<0>Tolérance de glissement <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Astuce : Essayez d’augmenter le glissement ou de réduire la quantité d’entrée\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Adresse du destinataire\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vue de staking\",\"McHlGl\":\"Changement d’APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si le facteur de santé descend en dessous de 1, la liquidation de votre collatéral peut être déclenchée.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Vous avez annulé la transaction.\",\"MnE2QX\":\"Emprunter des informations\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valeur de retour invalide de la fonction flashloan executor\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"L’actif ne peut être utilisé comme garantie qu’en mode isolé avec un pouvoir d’emprunt limité. Pour passer en mode d’isolation, désactivez toutes les autres garanties.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"En attente...\",\"NK9ikO\":\"Solde du portefeuille\",\"NMt2CB\":\"Montant réclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Contrat de collectionneur\",\"NfpPeS\":\"Rien staké\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Le plafond de mintage non soutenu est dépassé\",\"O+tyU+\":[\"Le montant maximal disponible pour emprunter sur cet actif est limité car le plafond de la dette est à \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Aperçu de la proposition\",\"OYuJ9K\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter sur cet actif.\",\"OfhWJH\":\"Réinitialisation\",\"Og2SKn\":\"handicapé\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Site internet\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirer\",\"P1dURE\":\"Révoquer le pouvoir\",\"P2WCD/\":[\"L’actif sous-jacent n’existe pas dans \",[\"marketName\"],\" v3 Market, par conséquent, cette position ne peut pas être migrée.\"],\"P2sL6B\":\"Lorsqu'une liquidation survient, les liquidateurs remboursent jusqu'à 50 % de l'encours emprunté au nom de l'emprunteur. En contrepartie, ils peuvent acheter le collatéral à prix réduit et conserver la différence (pénalité de liquidation) en bonus.\",\"P6sRoL\":\"Mise en jeu ABPT\",\"P72/OW\":\"La moyenne pondérée de l'APY pour tous les actifs empruntés, y compris les incitatifs.\",\"P7e6Ug\":\"Veuillez connecter votre portefeuille pour consulter l’historique des transactions.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Emprunter apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Seuil de liquidation\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Cette action réduira le facteur de santé V2 en dessous du seuil de liquidation. Conservez la garantie ou migrez la position d’emprunt pour continuer.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Non atteint\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Différentiel\",\"RNK49r\":\"Signature non valide\",\"RS0o7b\":\"État\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Détails de la proposition\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"L'actif n'est pas répertorié\",\"Rj01Fz\":\"Liens\",\"RmWFEe\":\"APR staké\",\"RtBLm7\":\"Le facteur santé est inférieur au seuil de liquidation\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Activé\",\"SDav7h\":\"Fonds dans le Safety Module\",\"SENccp\":\"Si l’erreur persiste,<0/> vous pouvez la signaler à ce\",\"SIWumd\":\"Afficher les ressources gelées ou mises en pause\",\"SM58dD\":\"Quantité en temps de recharge\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Impossible de charger les votants de proposition. Veuillez rafraîchir la page.\",\"SSQVIz\":\"Seuil de liquidation\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Le mode lecture seule permet de voir les positions d’adresses dans Aave, mais vous ne pourrez pas effectuer de transactions.\",\"SZRUQ4\":\"Glissement maximal\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Le plafond d’emprunt du protocole est de 100 % pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"Sk2zW9\":\"Désactiver le E-mode\",\"SxaD0o\":\"Le fournisseur d'adresses de pool n'est pas enregistré\",\"T/AIqG\":\"Limite d’approvisionnement du protocole à 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Emprunter\",\"TFxQlw\":\"Pénalité de liquidation\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"L'actif ne peut être utilisé comme garantie qu'en mode isolé.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"L'utilisateur n'a pas de dette à taux stable impayée sur cette réserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Emprunter le solde après le changement\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recharger la page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"L’application s’exécute en mode réseau de test. Découvrez comment cela fonctionne dans\",\"U9btTk\":\"L'actif n'est pas empruntable en mode d'isolement\",\"UAOZRe\":\"L’impact sur les prix est l’écart entre la valeur totale des tokens d’entrée échangés et les tokens de destination obtenus (en USD), qui résulte de la liquidité limitée de la paire de trading.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Détails\",\"UTTKmT\":\"Temps de recharge de la mise activé\",\"UXeR72\":\"Ces fonds ont été empruntés et ne peuvent pas être retirés pour le moment.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Le ratio LTV maximum représente le pouvoir d'emprunt maximum d'une garantie spécifique. Par exemple, si une garantie a un LTV de 75 %, l'utilisateur peut emprunter jusqu'à 0,75 ETH dans la devise principale pour chaque 1 ETH de garantie.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Aucune récompense à réclamer\",\"V0f2Xv\":\"Facteur de réserve\",\"V1HK43\":\"Risques liés à la migration\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Dette couverte\",\"VHOVEJ\":\"Connecter le portefeuille\",\"VMfYUK\":\"Sécurité de votre garantie déposée contre les actifs empruntés et sa valeur sous-jacente.\",\"VOAZJh\":\"Total des emprunts\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Examiner les détails de la transaction\",\"W5hVah\":\"Rien fourni pour le moment\",\"W5kTFy\":\"Vote\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Sans support\",\"WNGZwH\":\"E-Mode augmente votre LTV pour une catégorie d'actifs sélectionnée jusqu'à <0/>. <1>En savoir plus\",\"WPWG/y\":\"Statut et configuration de la réserve\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"L'utilisateur ne peut pas retirer plus que le solde disponible\",\"WaZyaV\":\"<0>Ampleforth est un actif de rebasage. Consultez la <1>documentation pour en savoir plus.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Étant donné que cette ressource est suspendue, aucune action ne peut être entreprise jusqu’à nouvel ordre\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Pour emprunter, vous devez fournir tout actif à utiliser comme garantie.\",\"X/ITG9\":\"Copier le texte d'erreur\",\"X3Pp6x\":\"Utilisé comme collatéral\",\"X4Zt7j\":\"L'action ne peut pas être effectuée car la réserve est mise en pause\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Veuillez toujours tenir compte de votre <0>facteur de santé (HF) lors de la migration partielle d’une position et que vos tarifs seront mis à jour vers les taux V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTER NON\",\"YDIOks\":\"Activation du E-Mode\",\"YSodyW\":\"Cette action réduira votre facteur de santé. Veuillez garder à l’esprit le risque accru de liquidation des garanties.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Le mode réseau de test est activé\",\"YrDxdO\":\"Si votre prêt à la valeur dépasse le seuil de liquidation, votre garantie fournie peut être liquidée.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Les conditions de rééquilibrage des taux d'intérêt n'ont pas été remplies\",\"YyydIq\":[\"Ajouter \",[\"0\"],\" à Wallet pour suivre votre solde.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gouvernance Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Mode efficacité (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Désactiver le réseau de test\",\"Zbyywy\":\"Coupure maximale\",\"ZfUGFb\":\"Avant de déposer\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valeur de liquidation\",\"ZrEc8j\":\"Nous n’avons trouvé aucun élément lié à votre recherche. Réessayez avec un autre nom, symbole ou adresse de ressource.\",\"ZsLF7e\":\"Activé\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Temps restant pour dépiquer\",\"a7u1N9\":\"Prix\",\"a9D+6D\":\"Non jalonné\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"aOKIms\":\"Les paramètres de tableau devraient être de même longueur ne sont pas\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Votre solde est inférieur au montant sélectionné.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Prêt APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Avertissement de période de refroidissement\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Actif\",\"bXQ/Og\":\"Partager sur Twitter\",\"bXr0ee\":\"Les actifs isolés ont un pouvoir d'emprunt limité et les autres actifs ne peuvent pas être utilisés comme garantie.\",\"bYmAV1\":\"Adresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Le montant demandé est supérieur au montant maximum du prêt en mode taux stable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Fournir\",\"bxN6EM\":\"Impossible de désactiver le mode E\",\"c91vuQ\":\"L'adresse n'est pas un contrat\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Vous ne pouvez pas retirer ce montant car cela entraînera un appel de garantie\",\"cBc+4A\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"cIl5kp\":\"Votre pouvoir de vote est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"cLo09S\":\"Détails des risques\",\"cNT+ij\":\"L'emprunt n'est pas disponible car vous avez activé le mode Efficacité (E-Mode) et le mode Isolation. Pour gérer le mode E et le mode Isolation, rendez-vous sur votre <0>tableau de bord.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Pour soumettre une proposition de modifications mineures du protocole, vous aurez besoin d’une puissance d’au moins 80,00 K. Si vous souhaitez modifier la base de code de base, vous aurez besoin d’une puissance de 320k. <0>Pour en savoir plus.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Remboursement \",[\"symbole\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Discussion de forum\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"Vous n'avez pas participé à cette proposition\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gouvernance\",\"dEgA5A\":\"Annuler\",\"dIsyWh\":\"Échec de la validation LTV\",\"dOB5nW\":[\"La quantité maximale disponible pour la fourniture est de <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Vous n'avez pas assez de fonds dans votre portefeuille pour rembourser le montant total. Si vous continuez à rembourser avec votre montant actuel de fonds, vous aurez toujours une petite position d'emprunt dans votre tableau de bord.\",\"dXUQFX\":\"Actifs à emprunter\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"L’emprunt est désactivé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"djsg0o\":\"Usage de collatéral\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Jeton de dette Aave\",\"e4V3oW\":\"Top 10 des adresses\",\"eD8WX/\":\"L'action nécessite une réserve active\",\"eJRJ04\":\"Montant à la mise en jeu\",\"eLh0cL\":\"Le slippage est la différence entre les montants cotés et reçus en raison de l’évolution des conditions du marché entre le moment où la transaction est soumise et sa vérification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Récompenses de staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aucune transaction n’a encore été effectuée.\",\"ebLGGN\":\"Total emprunté\",\"ecqEvn\":\"Le solde de la garantie est de 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible sur\",\"enruNF\":\"Commence\",\"eqLYiD\":\"Arrêter de staker maintenant\",\"evw5ha\":\"Valeur nette\",\"ezcU16\":\"Obtenir le jeton ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Vous êtes passé au tarif \",[\"0\"]],\"fMJQZK\":\"Emprunté\",\"fZ5Vnu\":\"Reçu\",\"firl9Q\":\"Votre prêt actuel à la valeur en fonction de votre collatéral fournie.\",\"fldjW9\":\"Prévisualiser tx et migrer\",\"fsBGk0\":\"Solde\",\"fu1Dbh\":[\"Retirer \",[\"symbole\"]],\"fwjWSI\":\"Fourni\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Alimenté par\",\"g8KGoA\":\"Foire aux questions\",\"g9zzqS\":\"A voté NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Mode réseau test\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"gTHi2T\":\"L'utilisateur essaie d'emprunter plusieurs actifs, y compris un en silo\",\"gVW59Y\":\"Veuillez connecter votre portefeuille pour obtenir des ressources de réseau de test gratuites.\",\"gcFNxP\":\"Approuver Confirmé\",\"goff7V\":\"Adresse zéro non-valide\",\"gp+f1B\":\"Variante 3\",\"gvTM4B\":\"L'APY net est l'effet combiné de toutes les positions d'offre et d'emprunt sur la valeur nette, y compris les incitations. Il est possible d'avoir un APY net négatif si l'APY de la dette est supérieur à l'APY de l'offre.\",\"gzcch9\":\"Frais de protocole de pont invalide\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\". .CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activer le temps de recharge\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY Net\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Revendiqué\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Le % de votre pouvoir d'emprunt total utilisé. Ceci est basé sur le montant de votre garantie fournie et le montant total que vous pouvez emprunter.\",\"hehnjM\":\"Montant\",\"hjDCQr\":\"Il y a eu une erreur. Veuillez essayer de modifier les paramètres ou <0><1>copier l'erreur\",\"hom7qf\":\"Réclamer\",\"hpHJ4I\":\"Garantie liquidée\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Emprunter \",[\"symbole\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"À propos de GHO\",\"iChbOF\":\"Paramètres de prêt flash incohérents\",\"iEPVHF\":\"Pas assez de pouvoir de vote pour participer à cette proposition\",\"iEW87X\":\"Délégation de pouvoirs\",\"iEju36\":[\"Vous avez voté \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Sélectionner la tolérance de glissement\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Entrez un montant\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens n'est pas la même chose que de les staker . Si vous souhaitez staker votre\",\"iZxa38\":\"Utilisez-le pour voter pour ou contre les propositions actives.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Informations sur le collectionneur\",\"igkfR1\":[\"En mode Isolation, vous ne pouvez pas fournir d’autres actifs en garantie. Un plafond d’endettement global limite le pouvoir d’emprunt de l’actif isolé. Pour quitter le mode d’isolement, désactivez \",[\"0\"],\" en garantie avant d’emprunter un autre actif. Pour en savoir plus, consultez notre <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"L'utilisation du collatéral est limitée en raison du mode d'isolation.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Fournir votre\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Désactiver le E-mode\",\"jKYzR1\":\"Activer le E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Temps de recharge restant\",\"jeMZNr\":[[\"0\"],\" Le service de rampe d’accès est fourni par le fournisseur externe et, en le sélectionnant, vous acceptez les conditions du fournisseur. Votre accès au service peut dépendre de l’opérationnalité du fournisseur externe.\"],\"jfl9OP\":\"Migré\",\"jmXdoY\":\"En E-Mode, certains actifs ne sont pas empruntables. Quittez le E-mode pour accéder à tous les actifs\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Non disponible\",\"k/sb6z\":\"Choisir la langue\",\"k3wP3f\":\"<0>Attention: Les changements de paramètres via la gouvernance peuvent modifier le facteur de santé de votre compte et le risque de liquidation. Suivez le <1>forum de gouvernance d’Aave pour les mises à jour.\",\"kACpF3\":[\"Réclamer \",[\"0\"]],\"kH6wUX\":\"Impact sur les prix\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" Actifs sélectionnés\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Pour rembourser au nom d'un utilisateur, un montant explicite à rembourser est nécessaire\",\"kRTD40\":[\"Montant de remboursement à atteindre \",[\"0\"],\"% d’utilisation\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Le plafond d'approvisionnement est dépassé\",\"knxE+G\":\". JSON (en anglais seulement)\",\"ks2LWT\":\"Le plafond de la dette n'est pas nul\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"L’actif ne peut pas être migré en raison d’une liquidité insuffisante ou d’une limitation du plafond d’emprunt \",[\"marketName\"],\" v3 marché.\"],\"lVhKKI\":\"A voté YAE\",\"lWLqxB\":\"Nous n’avons trouvé aucune transaction liée à votre recherche. Réessayez avec un autre nom de ressource ou réinitialisez les filtres.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Anglais\",\"lfEjIE\":\"En savoir plus dans notre <0>guide FAQ\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Émission totale par jour\",\"m7r7Hh\":\"Sélection d’actifs d’emprunt\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Variante 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs ou utiliser <0>\",[\"0\"],\" pour transférer votre \",[\"network\"],\" actif.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Acheter \",[\"cryptoSymbol\"],\" avec Fiat\"],\"mvCXBY\":\"Mise en jeu AAVE\",\"mwdzil\":\"D'accord, fermer\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"L'actif ne peut pas être utilisé comme collatéral.\",\"n+SX4g\":\"Développeurs\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Fournir apy\",\"nJgsQu\":\"Avec un pouvoir de vote de <0/>\",\"nLC6tu\":\"Français\",\"nNHV0z\":\"La migration simultanée de plusieurs garanties et d’actifs empruntés peut s’avérer coûteuse et peut échouer dans certaines situations. <0>Par conséquent, il n’est pas recommandé de migrer des positions avec plus de 5 actifs (déposés + empruntés) en même temps.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Peut être exécuté\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Les deux\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Quelque chose s’est mal passé\",\"nxyWvj\":\"Le retrait de ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"o17QVP\":\"Votre facteur de santé et votre prêt à la valeur déterminent l'assurance de votre collatéral. Pour éviter les liquidations, vous pouvez fournir plus de garanties ou rembourser les positions d'emprunt.\",\"o1xc2V\":\"L'approvisionnement en aTokens n'est pas nul\",\"o5ooMr\":\"Dette\",\"o7J4JM\":\"Filtrer\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"oHFrpj\":\"Temps de recharge pour déstaker\",\"oJ5ZiG\":\"L'utilisateur n'a pas de dette à taux variable impayée sur cette réserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Ressources de test\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Le taux d'intérêt stable <0>restera le même pendant toute la durée de votre prêt. Recommandé pour les périodes de prêt à long terme et pour les utilisateurs qui préfèrent la prévisibilité.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible au dépôt\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Rien n’a été trouvé\",\"owSsI3\":\"Signatures prêtes\",\"p+R52m\":\"Accéder à Balancer Pool\",\"p2S64u\":\"Le ratio prêt/valeur des positions migrées entraînerait la liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"p2Z2Qi\":\"Cet actif a atteint son plafond d'emprunt. Rien n'est disponible pour être emprunté à ce marché.\",\"p45alK\":\"Configurer la délégation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Le solde sous-jacent doit être supérieur à 0\",\"pgWG9H\":\"Pas assez de solde staké\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"veuillez vérifier que le montant que vous souhaitez fournir n'est pas actuellement utilisé pour le staking. S'il est utilisé pour le staking, votre transaction peut échouer.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Je comprends comment fonctionnent le temps de recharge (\",[\"0\"],\") et le retrait (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"L'appelant de cette fonction doit être un pool\",\"q/51mF\":\"Migrer vers la V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Stratégie de taux d’intérêt\",\"q6lAbz\":\"Staké\",\"qB4kPi\":\"Fournir APY\",\"qENI8q\":\"Paramètres globaux\",\"qGz5zl\":\"Solde de garantie après remboursement\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copier l'erreur\",\"qXCkEM\":\"Veuillez connecter votre portefeuille pour voir vos fournitures, vos emprunts et vos positions ouvertes.\",\"qY2jnw\":\"Expiration invalide\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Montant non valide à brûler\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Le montant doit être supérieur à 0\",\"rQ+R+0\":\"Sélection d’actifs d’approvisionnement\",\"rSayea\":\"APY\",\"rTBDeu\":[\"L’actif ne peut pas être migré car vous disposez d’une garantie isolée dans \",[\"marketName\"],\" v3 Marché qui limite les actifs empruntables. Vous pouvez gérer vos garanties dans <0>\",[\"marketName\"],\" Tableau de bord V3\"],\"rcT+yy\":\"Afficher les actifs avec 0 solde\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Vie privée\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Réclamez toutes les récompenses\",\"rwyUva\":\"Ces actifs sont temporairement gelés ou suspendus par des décisions de la communauté Aave, ce qui signifie qu’il n’est pas possible d’obtenir / emprunter ou d’échanger des taux de ces actifs. Les retraits et les remboursements de dettes sont autorisés. Suivez le <0>forum de gouvernance d’Aave pour d’autres mises à jour.\",\"rxJW5W\":\"Votre pouvoir de proposition est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NON\",\"sQv06Y\":\"pour\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Vous unstaké ici\",\"smJNwH\":\"Disponible à emprunter\",\"solypO\":\"Le facteur de santé n'est pas inférieur au seuil\",\"sr0UJD\":\"Retourner\",\"ss5GCK\":\"L'adresse du fournisseur d'adresses du pool n'est pas valide\",\"swEgK4\":\"Vos informations de vote\",\"t+wtgf\":\"Aucun emprunt pour l'instant\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Prix Oracle\",\"tFZLf8\":\"Ce calcul de gaz n'est qu'une estimation. Votre portefeuille fixera le prix de la transaction. Vous pouvez modifier les paramètres de gaz directement depuis votre fournisseur de portefeuille.\",\"tHuvQI\":\"Accéder au tableau de bord V3\",\"tOcg3N\":\"Étant donné que cet actif est gelé, les seules actions disponibles sont le retrait et le remboursement, accessibles depuis le <0>tableau de bord\",\"tOuXfv\":[\"Emprunter le montant à atteindre \",[\"0\"],\"% d’utilisation\"],\"te9Bfl\":\"S'il vous plaît, connectez votre portefeuille\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Vos ressources\",\"u3ZeYl\":\"La transaction a échoué\",\"u706uF\":\"Prime flash non valide\",\"u8Gfu7\":[\"Aucun résultat de recherche\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"Aucune ressource n’a été sélectionnée pour la migration.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migration\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Exporter des données vers\",\"ulup2p\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"usB84Z\":\"Le montant maximum disponible pour emprunter est limité car le plafond d’emprunt du protocole est presque atteint.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restauré\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Cacher\",\"vMba49\":\"L'emprunt n'est pas activé\",\"vMpNwt\":\"Approuvez avec\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Vous permet de décider si vous souhaitez utiliser un actif fourni en tant que collatéral. Un actif utilisé comme collatéral affectera votre pouvoir d'emprunt et votre Health Factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"L'offre de dette stable n'est pas nulle\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Récompenses APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Vous \",[\"action\"],\" <0/> \",[\"symbole\"]],\"wBIsjb\":\"Canal Discord\",\"wQZbc/\":\"L'appelant de la fonction n'est pas un AToken\",\"wZFvVU\":\"VOTER OUI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"Le protocole Aave est programmé pour toujours utiliser le prix de 1 GHO = 1 $. C’est différent de l’utilisation des prix du marché via des oracles pour d’autres actifs cryptographiques. Cela crée des opportunités d’arbitrage stabilisatrices lorsque le prix du GHO fluctue.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"Avec testnet Faucet, vous pouvez obtenir des ressources gratuites pour tester le protocole Aave. Assurez-vous de changer votre fournisseur de portefeuille pour le réseau de test approprié, sélectionnez l’actif souhaité et cliquez sur «\xA0Faucet\xA0» pour obtenir des jetons transférés vers votre portefeuille. Les actifs d’un réseau de test ne sont pas « réels », ce qui signifie qu’ils n’ont aucune valeur monétaire. <0>Pour en savoir plus\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Les ressources sélectionnées ont été migrées avec succès. Rendez-vous sur le tableau de bord du marché pour les voir.\",\"x7F2p6\":\"Différentiel de courant\",\"x7K5ib\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenir un test gratuit \",[\"0\"],\" à\"],\"x9iLRD\":\"tokens, veuillez vous rendre sur\",\"xNy/UG\":\"Rembourser avec\",\"xPm8wv\":\"En savoir plus sur les risques encourus\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Vos informations\",\"xaWZ6f\":\"Changement de type APY\",\"xh6k71\":\"L’utilisation des garanties est limitée en raison du mode d’isolation.\",\"xvIklc\":\"Flashloan est désactivé pour cet actif, cette position ne peut donc pas être migrée.\",\"y5rS9U\":\"Émigrer\",\"yB1YpA\":\"Mode Sombre\",\"yCrG6m\":\"Taille totale du marché\",\"yJUUbn\":\"Aperçu des transactions\",\"yLGmLX\":[\"Remise en jeu \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Pas une adresse valide\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Suivre le portefeuille\",\"yh2sjd\":[\"Impact sur les prix \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Il n'y a pas assez de fonds dans la \",[\"0\"],\" réserve pour emprunter\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Fermer\",\"z4uGQg\":\"Le plafond de la dette est dépassé\",\"z5UQOM\":\"La garantie choisie ne peut être liquidée\",\"z5Y+p6\":[\"Fournir \",[\"symbole\"]],\"zCjNKs\":\"L'action ne peut pas être effectuée car la réserve est gelée\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Plafond de la dette isolée\",\"zTOjMP\":\"La limite d’approvisionnement du protocole est de 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Dette restante\",\"zmTPiV\":\"Bilan d'approvisionnement\",\"zpPbZl\":\"Paramètres du risque de liquidation\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Apprendre encore plus\",\"zy9fXn\":[\"L’actif est gelé \",[\"marketName\"],\" v3, donc cette position ne peut pas être migrée.\"],\"zys+R6\":\"Faites attention à la congestion du réseau et aux prix de l’essence.\",\"+EGVI0\":\"Recevoir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"On dirait que nous ne pouvons pas changer de réseau automatiquement. Veuillez vérifier si vous pouvez le changer depuis le portefeuille.\",\"+kLZGu\":\"Montant de l’actif fourni\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Montant minimum d’Aave mis en jeu\",\"00OflG\":\"Il n’y a pas assez de liquidités pour que l’actif cible puisse effectuer le changement. Essayez de réduire le montant.\",\"08/rZ9\":\"La période de recharge est le temps nécessaire avant de retirer vos jetons (20 jours). Vous ne pouvez retirer vos actifs du module de sécurité qu’après la période de recharge et pendant la période de désenjeu. <0>Pour en savoir plus\",\"1Onqx8\":[\"Approuver \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Adresse bloquée\",\"2bAhR7\":\"Rencontrez GHO\",\"2o/xRt\":\"Plafond d'approvisionnement sur la réserve cible atteint. Essayez de réduire le montant.\",\"3O8YTV\":\"Total des intérêts courus\",\"4iPAI3\":\"Montant minimum d’emprunt GHO\",\"6NGLTR\":\"Montant actualisable\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Les paramètres de remise sont décidés par la communauté Aave et peuvent être modifiés au fil du temps. Consultez la section Gouvernance pour les mises à jour et votez pour participer. <0>Pour en savoir plus\",\"ARu1L4\":\"Remboursé\",\"B6aXGH\":\"Stable\",\"B9Gqbz\":\"Taux variable\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"À prix réduit\",\"CMHmbm\":\"Glissement\",\"EBL9Gz\":\"COPIÉ!\",\"ES8dkb\":\"Taux fixe\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Rabais\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Enregistrer et partager\",\"JK9zf1\":[\"Intérêts composés estimés, y compris l’escompte pour le jalonnement \",[\"0\"],\"AAVE dans le module de sécurité.\"],\"JPrLjO\":\"Vous ne pouvez pas utiliser cette devise comme garantie\",\"JU6q+W\":\"Récompense(s) à réclamer\",\"K05qZY\":\"Retrait et échange\",\"KRpokz\":\"VOIR TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"L'activation de cet actif comme garantie augmente votre pouvoir d'emprunt et votre facteur de santé. Cependant, il peut être liquidé si votre facteur de santé tombe en dessous de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Désactiver \",[\"symbol\"],\" comme garantie\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Envoyer des commentaires\",\"TeCFg/\":\"Modification du taux d’emprunt\",\"TskbEN\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"TtZL6q\":\"Paramètres du modèle de remise\",\"Tz0GSZ\":\"Activités bloquées\",\"UE3KJZ\":\"L’historique des transactions n’est actuellement pas disponible pour ce marché\",\"W8ekPc\":\"Retour au tableau de bord\",\"XZzneG\":\"Vous quitterez le mode d'isolement et d'autres jetons peuvent désormais être utilisés comme collatéral\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"La désactivation de cet actif en tant que garantie affecte votre pouvoir d'emprunt et votre facteur de santé.\",\"al6Pyz\":\"Dépasse la remise\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Pas assez de collatéral pour rembourser ce montant de dette avec\",\"cqnmnD\":\"Taux d’intérêt effectif\",\"dMtLDE\":\"À\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY avec remise appliquée\",\"fHcELk\":\"APR Net\",\"flRCF/\":\"Remise sur le staking\",\"gncRUO\":\"Cette adresse est bloquée sur app.aave.com car elle est associée à un ou plusieurs\",\"gr8mYw\":\"Vous pouvez emprunter jusqu’à GHO à <0/> <1/> (rabais maximum)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Emprunter le solde\",\"i2JTiw\":\"Vous pouvez saisir un montant personnalisé dans le champ.\",\"jMam5g\":[[\"0\"],\" Balance\"],\"jpctdh\":\"Vue\",\"kwwn6i\":\"Les utilisateurs qui misent des AAVE dans le module de sécurité (c’est-à-dire les détenteurs de stkAAVE) bénéficient d’une réduction sur le taux d’intérêt d’emprunt de HO. La réduction s’applique à 100 GHO pour chaque 1 stkAAVE détenu. Utilisez le calculateur ci-dessous pour voir le taux d’emprunt GHO avec le rabais appliqué.\",\"lNVG7i\":\"Sélectionner une ressource\",\"lt6bpt\":\"Garantie à rembourser\",\"mIM0qu\":\"Montant prévu à rembourser\",\"mzI/c+\":\"Télécharger\",\"n8Psk4\":\"Nous n’avons pas pu détecter de portefeuille. Connectez un portefeuille pour staker et consulter votre solde.\",\"nOy4ob\":\"Nous vous suggérons de revenir au tableau de bord.\",\"nakd8r\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"nh2EJK\":[\"Veuillez passer à \",[\"networkName\"],\".\"],\"ntkAoE\":\"Remise appliquée pour <0/> le staking d’AAVE\",\"o4tCu3\":\"Emprunter de l’APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"La période de recharge est de \",[\"0\"],\". Après \",[\"1\"],\" de temps de recharge, vous entrerez dans la fenêtre de désengagement de \",[\"2\"],\". Vous continuerez à recevoir des récompenses pendant le temps de recharge et la fenêtre de retrait.\"],\"p3j+mb\":\"Votre solde de récompenses est de 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Intérêts courus\",\"rf8POi\":\"Montant de l’actif emprunté\",\"ruc7X+\":\"Ajoutez stkAAVE pour voir l’APY d’emprunt avec la remise\",\"sK+Nag\":\"Réviser tx\",\"t81DpC\":[\"Approuver \",[\"symbol\"],\" pour continuer\"],\"umICAY\":\"<0><1><2/>Ajoutez stkAAVE pour voir le taux d’emprunt avec escompte\",\"uwAUvj\":\"COPIER L’IMAGE\",\"v8x7Mg\":\"Garantie insuffisante pour couvrir une nouvelle position d’emprunt. Le portefeuille doit avoir une capacité d’emprunt restante pour effectuer le transfert de dette.\",\"wRRqvW\":\"Vous n'avez pas de fournitures dans cette devise\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Activer \",[\"symbol\"],\" comme collatéral\"],\"yW1oWB\":\"APY type\",\"yhvj6d\":\"Vous ne pouvez pas changer d'utilisation en tant que mode de garantie pour cette devise, car cela entraînera un appel de garantie\",\"zevmS2\":\"<0><1><2/>Ajoutez <3/> stkAAVE pour emprunter à <4/> (remise maximale)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si vous NE vous désengagez PAS dans les \",[\"0\"],\" de la fenêtre de désengagement, vous devrez réactiver le processus de refroidissement.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participer à cette réserve \",[\"symbol\"],\" donne des récompenses annualisées.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Limite d'emprunt\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Emprunter ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"L'emprunt stable n'est pas activé\",\"/yQcJM\":\"Valeur totale\",\"00AB2i\":\"L'utilisateur n'a pas emprunté la devise spécifiée\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Changement de taux\",\"0BF3yK\":\"Désolé, nous n’avons pas trouvé la page que vous cherchiez.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Risque de liquidation\",\"0ojY+Y\":\"Solde actuel v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Modification des garanties\",\"0wGCWc\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"À l’heure actuelle, les données sur les prix ne sont pas disponibles pour cette réserve dans le sous-graphe du protocole\",\"1LjK22\":\"Historique des transactions\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Veuillez connecter un portefeuille pour afficher vos informations personnelles ici.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Seuil de liquidation <0/>\",\"1m9Qqc\":\"Retrait et changement\",\"1t7rez\":\"L’offre d’actifs est limitée à un certain montant afin de réduire l’exposition du protocole à l’actif et d’aider à gérer les risques encourus.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Voir détails\",\"2FYpfJ\":\"Plus\",\"2O3qp5\":\"Liquidités disponibles\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"L’actif ne peut pas être migré en raison d’une restriction de plafond d’approvisionnement dans \",[\"marketName\"],\" v3 marché.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave est un protocole entièrement décentralisé et régi par la communauté par les détenteurs de jetons AAVE. Les détenteurs de jetons AAVE discutent, proposent et votent collectivement sur les mises à niveau du protocole. Les détenteurs de jetons AAVE (réseau Ethereum uniquement) peuvent soit voter eux-mêmes sur de nouvelles propositions, soit choisir l’adresse de leur choix. Pour en savoir plus, consultez la page Gouvernance\",\"2a6G7d\":\"Veuillez saisir une adresse de portefeuille valide.\",\"2eBWE6\":\"Je reconnais les risques encourus.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"L'emprunt stable est activé\",\"34Qfwy\":\"Le plafond d'emprunt est dépassé\",\"39eQRj\":[\"Emprunter \",[\"symbole\"]],\"3BL1xB\":\"Total fourni\",\"3K0oMo\":\"Offre restante\",\"3MoZhl\":\"Il n'y a pas assez de collatéral pour couvrir un nouvel emprunt\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Fournir \",[\"symbole\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Rembourser\",\"3qsjtp\":\"La moyenne pondérée de l'APY pour tous les actifs fournis, y compris les incitations.\",\"3rL+os\":\"Vous ne pouvez retirer vos actifs du module de sécurité qu'après la fin de la période de refroidissement et que la fenêtre de retrait est active.\",\"42UgDM\":[\"Migrer vers \",[\"0\"],\" Marché v3\"],\"49UFQA\":\"Résultats du vote\",\"4DMZUI\":\"Afficher les transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Petits caractères\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Signez pour continuer\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenez des ressources de test gratuites à l’adresse suivante :\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Le plafond de la dette limite le montant que les utilisateurs du protocole peuvent emprunter sur cet actif. Le plafond de la dette est spécifique aux actifs isolés et est indiqué en USD.\",\"5Ncc6j\":[\"Cet actif a presque atteint son plafond d'offre. Il ne peut y avoir que \",[\"messageValue\"],\" fourni à ce marché.\"],\"5cZ/KX\":\"L'offre de dette variable n'est pas nulle\",\"5che++\":\"Pour demander l'accès à ce marché autorisé, veuillez consulter\xA0: <0>Nom du fournisseur d'accès\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" reçu\"],\"5hDe9v\":\"Allocation action requise\",\"5rsnKT\":\"Récompenses disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Voir tous les votes\",\"6/dCYd\":\"Aperçu\",\"60crCe\":\"Toutes les transactions\",\"62Xcjh\":\"Collatérale\",\"65A04M\":\"Espagnol\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signature\",\"6Jrv+z\":[\"Rembourser \",[\"symbole\"]],\"6Xr0UU\":\"Refroidissement...\",\"6bxci/\":\"Pouvoir de vote\",\"6f8S68\":\"Marchés\",\"6g1gi0\":\"Les propositions\",\"6gvoHP\":\"Copier le message d’erreur\",\"6h3Q5G\":\"Remboursé\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Changer de réseau\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Facteur de santé\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Atteint\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"L’emprunt n’est pas disponible car vous utilisez le mode Isolation. Pour gérer le mode d’isolation, rendez-vous sur votre <0>tableau de bord.\",\"7aKlMS\":\"Partager sur Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Réclamer tout\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Les données n’ont pas pu être récupérées, veuillez recharger le graphique.\",\"7p5kLi\":\"Tableau de bord\",\"7sofdl\":\"Retrait et échange\",\"8+6BI0\":\"Soyez prudent - Vous êtes très proche de la liquidation. Envisagez de déposer plus de collatéral ou de rembourser certaines de vos positions empruntées\",\"87pUEW\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs.\"],\"8F1i42\":\"Page introuvable\",\"8G8M0u\":\"Chargement des données...\",\"8Iu1QS\":\"Retiré\",\"8JL93T\":\"Toutes les propositions\",\"8Q51DU\":\"Ajouter au portefeuille\",\"8X/oyn\":\"Montant invalide à frapper\",\"8Z5FPv\":\"Déconnecter le portefeuille\",\"8Zz7s5\":\"actifs\",\"8aLW8H\":\"Solde à révoquer\",\"8bOT3H\":\"Taux d'utilisation\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Voir le contrat\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Montrer\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Vous entrez en mode Isolation\",\"9CDK3/\":[\"L'emprunt n'est actuellement pas disponible pour \",[\"0\"],\".\"],\"9GIj3z\":\"Taille de réserve\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Solde de mise en jeu\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votes actuels\",\"9Rw96f\":[\"Cet actif a presque atteint son plafond d'emprunt. Il n'y a que \",[\"messageValue\"],\" disponible pour être emprunté sur ce marché.\"],\"9Xj/qR\":[\"Certaines ressources migrées ne seront pas utilisées comme garantie en raison de l’activation du mode d’isolement dans \",[\"marketName\"],\" Marché V3. Visite <0>\",[\"marketName\"],\" Tableau de bord V3 pour gérer le mode d’isolation.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Cet actif a atteint son plafond d'offre. Rien n'est disponible pour être fourni à partir de ce marché.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"L’AMI a été suspendu en raison d’une décision de la communauté. L’offre, les emprunts et les remboursements sont impactés. <0>Plus d’informations\",\"9lXchd\":\"Jeton sous-jacent\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Comme il s'agit d'un réseau de test, vous pouvez obtenir n'importe lequel des actifs si vous avez ETH dans votre portefeuille\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choisissez l’un des services de rampe d’accès\",\"A6dCI6\":[\"Le montant maximal disponible pour emprunter est de <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Vos emprunts\",\"AV7cGz\":\"Examiner les détails de la taxe d'approbation\",\"AZOjB8\":\"Récupération de données...\",\"Ai0jas\":\"Rejoignez la discussion de la communauté\",\"Ajl2rq\":\"Le pouvoir d'emprunt et les actifs sont limités en raison du mode d'isolement.\",\"AqgYNC\":\"Plafond d’emprunt du protocole à 100% pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"Les stETH fournis en garantie continueront d’accumuler des récompenses de staking fournies par les rebasages quotidiens.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"L'utilisation de la garantie est limitée en raison du mode d'isolement. <0>En savoir plus\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Catégorie d'actifs\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Cet actif est gelé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Fiche technique\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Grec\",\"CkTRmy\":[\"Revendication \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Veuillez connecter votre portefeuille pour voir l’outil de migration.\",\"CtGlFb\":[[\"networkName\"],\" Robinet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Cette action réduira le facteur de santé de V3 en dessous du seuil de liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"La garantie est (principalement) la même devise que celle qui est empruntée\",\"DCnFg0\":[\"Adresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"Je comprends parfaitement les risques liés à la migration.\",\"DONJcV\":\"L'actif sous-jacent ne peut pas être sauvé\",\"DR+4uL\":\"Bilan de l’alimentation après le changement\",\"DWjrck\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" V3 Market en raison des restrictions du mode E. Vous pouvez désactiver ou gérer les catégories du mode E dans votre <0>tableau de bord V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave par mois\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collatéralisation\",\"DxfsGs\":\"Vous pouvez signaler un incident sur notre <0>Discord ou<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Désactivé\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Reprise \",[\"symbol\"]],\"Ebgc76\":[\"Retrait \",[\"symbole\"]],\"EdQY6l\":\"Aucun/Aucune\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Réactiver la période de recharge pour annuler le pieu \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrer vers la v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Pour en savoir plus.\",\"FHlMf/\":\"Solde actuel de la v2\",\"FHpxjF\":[\"Le facteur de réserve est un pourcentage de l’intérêt qui va à un \",[\"0\"],\" qui est contrôlé par la gouvernance Aave pour promouvoir la croissance de l’écosystème.\"],\"FOBZa6\":\"Puissance d'emprunt utilisée\",\"FPKEug\":\"Opération non prise en charge\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"sur\",\"Fjw9N+\":\"Actifs à déposer\",\"FmN0fk\":\"Remise en jeu\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO est un actif numérique natif décentralisé et adossé à des garanties, indexé sur le dollar américain. Il est créé par les utilisateurs en empruntant contre plusieurs garanties. Lorsque l’utilisateur rembourse sa position d’emprunt de HO, le protocole brûle le GHO de cet utilisateur. Tous les paiements d’intérêts accumulés par les minters de GHO seraient directement transférés à la trésorerie d’AaveDAO.\",\"GQrBTq\":\"Changer de mode E\",\"GWswcZ\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. Le 20 décembre 2022, renFIL ne sera plus pris en charge et ne pourra plus être reconnecté à son réseau natif. Il est recommandé de retirer les positions d’offre et de rembourser les positions d’emprunt afin que renFIL puisse être relié à FIL avant la date limite. Après cette date, il ne sera plus possible de convertir renFIL en FIL. <0>Plus d’informations\",\"GX8GKD\":\"Actifs\",\"GgEj+0\":\"Mode lecture seule. Connectez-vous à un portefeuille pour effectuer des transactions.\",\"GjkIKV\":\"Prend fin\",\"GtP2hp\":[\"L'emprunt n'est pas disponible, car vous avez activé le mode d'efficacité (E-Mode) pour la catégorie \",[\"0\"],\". Pour gérer les catégories E-Mode, visitez votre <0>tableau de bord.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Désolé, une erreur inattendue s’est produite. En attendant, vous pouvez essayer de recharger la page, ou revenir plus tard.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Fenêtre d'arrêt de staking\",\"HpK/8d\":\"Recharger\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" v3 Marché puisque l’actif collatéral activera le mode d’isolation.\"],\"Hvwnm9\":[\"La quantité maximale disponible pour l’approvisionnement est limitée parce que le plafond d’approvisionnement du protocole est à \",[\"0\"],\"%.\"],\"I8CX2c\":\"Le montant total de vos actifs libellés en USD qui peut être utilisé comme garantie pour emprunter des actifs.\",\"IAD2SB\":[\"Prétendant \",[\"symbol\"]],\"IG9X9/\":\"L’emprunt de cet actif est limité à un certain montant afin de minimiser l’insolvabilité du pool de liquidités.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Il est prévu que cet actif soit désactivé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"IP+I/j\":\"Période de recharge\",\"IaA40H\":\"Liquidation à\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Gérer l’analytique\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Déjalonnement \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Pas assez de solde sur votre portefeuille\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Solde du portefeuille\",\"JtwD8u\":\"Emprunter le solde après le remboursement\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter davantage sur cet actif.\",\"KLXVqE\":[\"Les tokens stETH seront migrés vers Wrapped stETH à l’aide du wrapper Lido Protocol, ce qui entraîne une modification de l’équilibre de l’offre après la migration : \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Cela représente le seuil auquel une position d'emprunt sera considérée comme sous-garantie et sujette à liquidation pour chaque garantie. Par exemple, si une garantie a un seuil de liquidation de 80\xA0%, cela signifie que la position sera liquidée lorsque la valeur de la dette vaut 80 % de la valeur de la garantie.\",\"KYAjf3\":\"Isolé\",\"KkPgim\":\"Changement de mode E\",\"KnN1Tu\":\"Expire\",\"KoOBI2\":\"En raison de la mécanique interne de stETH requise pour le rebasage de la prise en charge, il n’est pas possible d’effectuer un changement de garantie où stETH est le jeton source.\",\"KojyJ4\":\"Mauvais réseau\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Entrez l'adresse ETH\",\"KvG1xW\":\"Réclamer\",\"L+8Lzs\":\"LTV actuelle\",\"L+qiq+\":\"Marché\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Pas de pouvoir de vote\",\"LL0zks\":\"Peut être collatéral\",\"LLdJWu\":\"AAVE Réclamable\",\"LSIpNK\":\"Emprunter et rembourser dans le même bloc n'est pas autorisé\",\"LVt3TI\":[\"<0>Tolérance de glissement <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Astuce : Essayez d’augmenter le glissement ou de réduire la quantité d’entrée\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Adresse du destinataire\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vue de staking\",\"McHlGl\":\"Changement d’APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si le facteur de santé descend en dessous de 1, la liquidation de votre collatéral peut être déclenchée.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Vous avez annulé la transaction.\",\"MnE2QX\":\"Emprunter des informations\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valeur de retour invalide de la fonction flashloan executor\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"L’actif ne peut être utilisé comme garantie qu’en mode isolé avec un pouvoir d’emprunt limité. Pour passer en mode d’isolation, désactivez toutes les autres garanties.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"En attente...\",\"NK9ikO\":\"Solde du portefeuille\",\"NMt2CB\":\"Montant réclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Contrat de collectionneur\",\"NfpPeS\":\"Rien staké\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Le plafond de mintage non soutenu est dépassé\",\"O+tyU+\":[\"Le montant maximal disponible pour emprunter sur cet actif est limité car le plafond de la dette est à \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Aperçu de la proposition\",\"OYuJ9K\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter sur cet actif.\",\"OfhWJH\":\"Réinitialisation\",\"Og2SKn\":\"handicapé\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Site internet\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirer\",\"P1dURE\":\"Révoquer le pouvoir\",\"P2WCD/\":[\"L’actif sous-jacent n’existe pas dans \",[\"marketName\"],\" v3 Market, par conséquent, cette position ne peut pas être migrée.\"],\"P2sL6B\":\"Lorsqu'une liquidation survient, les liquidateurs remboursent jusqu'à 50 % de l'encours emprunté au nom de l'emprunteur. En contrepartie, ils peuvent acheter le collatéral à prix réduit et conserver la différence (pénalité de liquidation) en bonus.\",\"P6sRoL\":\"Mise en jeu ABPT\",\"P72/OW\":\"La moyenne pondérée de l'APY pour tous les actifs empruntés, y compris les incitatifs.\",\"P7e6Ug\":\"Veuillez connecter votre portefeuille pour consulter l’historique des transactions.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Emprunter apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Seuil de liquidation\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Cette action réduira le facteur de santé V2 en dessous du seuil de liquidation. Conservez la garantie ou migrez la position d’emprunt pour continuer.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Non atteint\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Différentiel\",\"RNK49r\":\"Signature non valide\",\"RS0o7b\":\"État\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Détails de la proposition\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"L'actif n'est pas répertorié\",\"Rj01Fz\":\"Liens\",\"RmWFEe\":\"APR staké\",\"RtBLm7\":\"Le facteur santé est inférieur au seuil de liquidation\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Activé\",\"SDav7h\":\"Fonds dans le Safety Module\",\"SENccp\":\"Si l’erreur persiste,<0/> vous pouvez la signaler à ce\",\"SIWumd\":\"Afficher les ressources gelées ou mises en pause\",\"SM58dD\":\"Quantité en temps de recharge\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Impossible de charger les votants de proposition. Veuillez rafraîchir la page.\",\"SSQVIz\":\"Seuil de liquidation\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Le mode lecture seule permet de voir les positions d’adresses dans Aave, mais vous ne pourrez pas effectuer de transactions.\",\"SZRUQ4\":\"Glissement maximal\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Le plafond d’emprunt du protocole est de 100 % pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"Sk2zW9\":\"Désactiver le E-mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Le fournisseur d'adresses de pool n'est pas enregistré\",\"T/AIqG\":\"Limite d’approvisionnement du protocole à 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Emprunter\",\"TFxQlw\":\"Pénalité de liquidation\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"L'actif ne peut être utilisé comme garantie qu'en mode isolé.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"L'utilisateur n'a pas de dette à taux stable impayée sur cette réserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Emprunter le solde après le changement\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recharger la page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"L’application s’exécute en mode réseau de test. Découvrez comment cela fonctionne dans\",\"U9btTk\":\"L'actif n'est pas empruntable en mode d'isolement\",\"UAOZRe\":\"L’impact sur les prix est l’écart entre la valeur totale des tokens d’entrée échangés et les tokens de destination obtenus (en USD), qui résulte de la liquidité limitée de la paire de trading.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Détails\",\"UTTKmT\":\"Temps de recharge de la mise activé\",\"UXeR72\":\"Ces fonds ont été empruntés et ne peuvent pas être retirés pour le moment.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Le ratio LTV maximum représente le pouvoir d'emprunt maximum d'une garantie spécifique. Par exemple, si une garantie a un LTV de 75 %, l'utilisateur peut emprunter jusqu'à 0,75 ETH dans la devise principale pour chaque 1 ETH de garantie.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Aucune récompense à réclamer\",\"V0f2Xv\":\"Facteur de réserve\",\"V1HK43\":\"Risques liés à la migration\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Dette couverte\",\"VHOVEJ\":\"Connecter le portefeuille\",\"VMfYUK\":\"Sécurité de votre garantie déposée contre les actifs empruntés et sa valeur sous-jacente.\",\"VOAZJh\":\"Total des emprunts\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Examiner les détails de la transaction\",\"W5hVah\":\"Rien fourni pour le moment\",\"W5kTFy\":\"Vote\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Sans support\",\"WNGZwH\":\"E-Mode augmente votre LTV pour une catégorie d'actifs sélectionnée jusqu'à <0/>. <1>En savoir plus\",\"WPWG/y\":\"Statut et configuration de la réserve\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"L'utilisateur ne peut pas retirer plus que le solde disponible\",\"WaZyaV\":\"<0>Ampleforth est un actif de rebasage. Consultez la <1>documentation pour en savoir plus.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Étant donné que cette ressource est suspendue, aucune action ne peut être entreprise jusqu’à nouvel ordre\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Pour emprunter, vous devez fournir tout actif à utiliser comme garantie.\",\"X/ITG9\":\"Copier le texte d'erreur\",\"X3Pp6x\":\"Utilisé comme collatéral\",\"X4Zt7j\":\"L'action ne peut pas être effectuée car la réserve est mise en pause\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Veuillez toujours tenir compte de votre <0>facteur de santé (HF) lors de la migration partielle d’une position et que vos tarifs seront mis à jour vers les taux V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTER NON\",\"YDIOks\":\"Activation du E-Mode\",\"YSodyW\":\"Cette action réduira votre facteur de santé. Veuillez garder à l’esprit le risque accru de liquidation des garanties.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Le mode réseau de test est activé\",\"YrDxdO\":\"Si votre prêt à la valeur dépasse le seuil de liquidation, votre garantie fournie peut être liquidée.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Les conditions de rééquilibrage des taux d'intérêt n'ont pas été remplies\",\"YyydIq\":[\"Ajouter \",[\"0\"],\" à Wallet pour suivre votre solde.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gouvernance Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Mode efficacité (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Désactiver le réseau de test\",\"Zbyywy\":\"Coupure maximale\",\"ZfUGFb\":\"Avant de déposer\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valeur de liquidation\",\"ZrEc8j\":\"Nous n’avons trouvé aucun élément lié à votre recherche. Réessayez avec un autre nom, symbole ou adresse de ressource.\",\"ZsLF7e\":\"Activé\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Temps restant pour dépiquer\",\"a7u1N9\":\"Prix\",\"a9D+6D\":\"Non jalonné\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"aOKIms\":\"Les paramètres de tableau devraient être de même longueur ne sont pas\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Votre solde est inférieur au montant sélectionné.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Prêt APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Avertissement de période de refroidissement\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Actif\",\"bXQ/Og\":\"Partager sur Twitter\",\"bXr0ee\":\"Les actifs isolés ont un pouvoir d'emprunt limité et les autres actifs ne peuvent pas être utilisés comme garantie.\",\"bYmAV1\":\"Adresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Le montant demandé est supérieur au montant maximum du prêt en mode taux stable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Fournir\",\"bxN6EM\":\"Impossible de désactiver le mode E\",\"c91vuQ\":\"L'adresse n'est pas un contrat\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Vous ne pouvez pas retirer ce montant car cela entraînera un appel de garantie\",\"cBc+4A\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"cIl5kp\":\"Votre pouvoir de vote est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"cLo09S\":\"Détails des risques\",\"cNT+ij\":\"L'emprunt n'est pas disponible car vous avez activé le mode Efficacité (E-Mode) et le mode Isolation. Pour gérer le mode E et le mode Isolation, rendez-vous sur votre <0>tableau de bord.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Pour soumettre une proposition de modifications mineures du protocole, vous aurez besoin d’une puissance d’au moins 80,00 K. Si vous souhaitez modifier la base de code de base, vous aurez besoin d’une puissance de 320k. <0>Pour en savoir plus.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Remboursement \",[\"symbole\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Discussion de forum\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"Vous n'avez pas participé à cette proposition\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gouvernance\",\"dEgA5A\":\"Annuler\",\"dIsyWh\":\"Échec de la validation LTV\",\"dOB5nW\":[\"La quantité maximale disponible pour la fourniture est de <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Vous n'avez pas assez de fonds dans votre portefeuille pour rembourser le montant total. Si vous continuez à rembourser avec votre montant actuel de fonds, vous aurez toujours une petite position d'emprunt dans votre tableau de bord.\",\"dXUQFX\":\"Actifs à emprunter\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"L’emprunt est désactivé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"djsg0o\":\"Usage de collatéral\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Jeton de dette Aave\",\"e4V3oW\":\"Top 10 des adresses\",\"eD8WX/\":\"L'action nécessite une réserve active\",\"eJRJ04\":\"Montant à la mise en jeu\",\"eLh0cL\":\"Le slippage est la différence entre les montants cotés et reçus en raison de l’évolution des conditions du marché entre le moment où la transaction est soumise et sa vérification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Récompenses de staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aucune transaction n’a encore été effectuée.\",\"ebLGGN\":\"Total emprunté\",\"ecqEvn\":\"Le solde de la garantie est de 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible sur\",\"enruNF\":\"Commence\",\"eqLYiD\":\"Arrêter de staker maintenant\",\"evw5ha\":\"Valeur nette\",\"ezcU16\":\"Obtenir le jeton ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Vous êtes passé au tarif \",[\"0\"]],\"fMJQZK\":\"Emprunté\",\"fZ5Vnu\":\"Reçu\",\"firl9Q\":\"Votre prêt actuel à la valeur en fonction de votre collatéral fournie.\",\"fldjW9\":\"Prévisualiser tx et migrer\",\"fsBGk0\":\"Solde\",\"fu1Dbh\":[\"Retirer \",[\"symbole\"]],\"fwjWSI\":\"Fourni\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Alimenté par\",\"g8KGoA\":\"Foire aux questions\",\"g9zzqS\":\"A voté NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Mode réseau test\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"gTHi2T\":\"L'utilisateur essaie d'emprunter plusieurs actifs, y compris un en silo\",\"gVW59Y\":\"Veuillez connecter votre portefeuille pour obtenir des ressources de réseau de test gratuites.\",\"gcFNxP\":\"Approuver Confirmé\",\"goff7V\":\"Adresse zéro non-valide\",\"gp+f1B\":\"Variante 3\",\"gvTM4B\":\"L'APY net est l'effet combiné de toutes les positions d'offre et d'emprunt sur la valeur nette, y compris les incitations. Il est possible d'avoir un APY net négatif si l'APY de la dette est supérieur à l'APY de l'offre.\",\"gzcch9\":\"Frais de protocole de pont invalide\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\". .CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activer le temps de recharge\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY Net\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Revendiqué\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Le % de votre pouvoir d'emprunt total utilisé. Ceci est basé sur le montant de votre garantie fournie et le montant total que vous pouvez emprunter.\",\"hehnjM\":\"Montant\",\"hjDCQr\":\"Il y a eu une erreur. Veuillez essayer de modifier les paramètres ou <0><1>copier l'erreur\",\"hom7qf\":\"Réclamer\",\"hpHJ4I\":\"Garantie liquidée\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Emprunter \",[\"symbole\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"À propos de GHO\",\"iChbOF\":\"Paramètres de prêt flash incohérents\",\"iEPVHF\":\"Pas assez de pouvoir de vote pour participer à cette proposition\",\"iEW87X\":\"Délégation de pouvoirs\",\"iEju36\":[\"Vous avez voté \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Sélectionner la tolérance de glissement\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Entrez un montant\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens n'est pas la même chose que de les staker . Si vous souhaitez staker votre\",\"iZxa38\":\"Utilisez-le pour voter pour ou contre les propositions actives.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Informations sur le collectionneur\",\"igkfR1\":[\"En mode Isolation, vous ne pouvez pas fournir d’autres actifs en garantie. Un plafond d’endettement global limite le pouvoir d’emprunt de l’actif isolé. Pour quitter le mode d’isolement, désactivez \",[\"0\"],\" en garantie avant d’emprunter un autre actif. Pour en savoir plus, consultez notre <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"L'utilisation du collatéral est limitée en raison du mode d'isolation.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Fournir votre\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Désactiver le E-mode\",\"jKYzR1\":\"Activer le E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Temps de recharge restant\",\"jeMZNr\":[[\"0\"],\" Le service de rampe d’accès est fourni par le fournisseur externe et, en le sélectionnant, vous acceptez les conditions du fournisseur. Votre accès au service peut dépendre de l’opérationnalité du fournisseur externe.\"],\"jfl9OP\":\"Migré\",\"jmXdoY\":\"En E-Mode, certains actifs ne sont pas empruntables. Quittez le E-mode pour accéder à tous les actifs\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Non disponible\",\"k/sb6z\":\"Choisir la langue\",\"k3wP3f\":\"<0>Attention: Les changements de paramètres via la gouvernance peuvent modifier le facteur de santé de votre compte et le risque de liquidation. Suivez le <1>forum de gouvernance d’Aave pour les mises à jour.\",\"kACpF3\":[\"Réclamer \",[\"0\"]],\"kH6wUX\":\"Impact sur les prix\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" Actifs sélectionnés\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Pour rembourser au nom d'un utilisateur, un montant explicite à rembourser est nécessaire\",\"kRTD40\":[\"Montant de remboursement à atteindre \",[\"0\"],\"% d’utilisation\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Le plafond d'approvisionnement est dépassé\",\"knxE+G\":\". JSON (en anglais seulement)\",\"ks2LWT\":\"Le plafond de la dette n'est pas nul\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"L’actif ne peut pas être migré en raison d’une liquidité insuffisante ou d’une limitation du plafond d’emprunt \",[\"marketName\"],\" v3 marché.\"],\"lVhKKI\":\"A voté YAE\",\"lWLqxB\":\"Nous n’avons trouvé aucune transaction liée à votre recherche. Réessayez avec un autre nom de ressource ou réinitialisez les filtres.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Anglais\",\"lfEjIE\":\"En savoir plus dans notre <0>guide FAQ\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Émission totale par jour\",\"m7r7Hh\":\"Sélection d’actifs d’emprunt\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Variante 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs ou utiliser <0>\",[\"0\"],\" pour transférer votre \",[\"network\"],\" actif.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Acheter \",[\"cryptoSymbol\"],\" avec Fiat\"],\"mvCXBY\":\"Mise en jeu AAVE\",\"mwdzil\":\"D'accord, fermer\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"L'actif ne peut pas être utilisé comme collatéral.\",\"n+SX4g\":\"Développeurs\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Fournir apy\",\"nJgsQu\":\"Avec un pouvoir de vote de <0/>\",\"nLC6tu\":\"Français\",\"nNHV0z\":\"La migration simultanée de plusieurs garanties et d’actifs empruntés peut s’avérer coûteuse et peut échouer dans certaines situations. <0>Par conséquent, il n’est pas recommandé de migrer des positions avec plus de 5 actifs (déposés + empruntés) en même temps.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Peut être exécuté\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Les deux\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Quelque chose s’est mal passé\",\"nxyWvj\":\"Le retrait de ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"o17QVP\":\"Votre facteur de santé et votre prêt à la valeur déterminent l'assurance de votre collatéral. Pour éviter les liquidations, vous pouvez fournir plus de garanties ou rembourser les positions d'emprunt.\",\"o1xc2V\":\"L'approvisionnement en aTokens n'est pas nul\",\"o5ooMr\":\"Dette\",\"o7J4JM\":\"Filtrer\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Temps de recharge pour déstaker\",\"oJ5ZiG\":\"L'utilisateur n'a pas de dette à taux variable impayée sur cette réserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Ressources de test\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Le taux d'intérêt stable <0>restera le même pendant toute la durée de votre prêt. Recommandé pour les périodes de prêt à long terme et pour les utilisateurs qui préfèrent la prévisibilité.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible au dépôt\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Rien n’a été trouvé\",\"owSsI3\":\"Signatures prêtes\",\"p+R52m\":\"Accéder à Balancer Pool\",\"p2S64u\":\"Le ratio prêt/valeur des positions migrées entraînerait la liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"p2Z2Qi\":\"Cet actif a atteint son plafond d'emprunt. Rien n'est disponible pour être emprunté à ce marché.\",\"p45alK\":\"Configurer la délégation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Le solde sous-jacent doit être supérieur à 0\",\"pgWG9H\":\"Pas assez de solde staké\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"veuillez vérifier que le montant que vous souhaitez fournir n'est pas actuellement utilisé pour le staking. S'il est utilisé pour le staking, votre transaction peut échouer.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Je comprends comment fonctionnent le temps de recharge (\",[\"0\"],\") et le retrait (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"L'appelant de cette fonction doit être un pool\",\"q/51mF\":\"Migrer vers la V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Stratégie de taux d’intérêt\",\"q6lAbz\":\"Staké\",\"qB4kPi\":\"Fournir APY\",\"qENI8q\":\"Paramètres globaux\",\"qGz5zl\":\"Solde de garantie après remboursement\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copier l'erreur\",\"qXCkEM\":\"Veuillez connecter votre portefeuille pour voir vos fournitures, vos emprunts et vos positions ouvertes.\",\"qY2jnw\":\"Expiration invalide\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Montant non valide à brûler\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Le montant doit être supérieur à 0\",\"rQ+R+0\":\"Sélection d’actifs d’approvisionnement\",\"rSayea\":\"APY\",\"rTBDeu\":[\"L’actif ne peut pas être migré car vous disposez d’une garantie isolée dans \",[\"marketName\"],\" v3 Marché qui limite les actifs empruntables. Vous pouvez gérer vos garanties dans <0>\",[\"marketName\"],\" Tableau de bord V3\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Afficher les actifs avec 0 solde\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Vie privée\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Réclamez toutes les récompenses\",\"rwyUva\":\"Ces actifs sont temporairement gelés ou suspendus par des décisions de la communauté Aave, ce qui signifie qu’il n’est pas possible d’obtenir / emprunter ou d’échanger des taux de ces actifs. Les retraits et les remboursements de dettes sont autorisés. Suivez le <0>forum de gouvernance d’Aave pour d’autres mises à jour.\",\"rxJW5W\":\"Votre pouvoir de proposition est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NON\",\"sQv06Y\":\"pour\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Vous unstaké ici\",\"smJNwH\":\"Disponible à emprunter\",\"solypO\":\"Le facteur de santé n'est pas inférieur au seuil\",\"sr0UJD\":\"Retourner\",\"ss5GCK\":\"L'adresse du fournisseur d'adresses du pool n'est pas valide\",\"swEgK4\":\"Vos informations de vote\",\"t+wtgf\":\"Aucun emprunt pour l'instant\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Prix Oracle\",\"tFZLf8\":\"Ce calcul de gaz n'est qu'une estimation. Votre portefeuille fixera le prix de la transaction. Vous pouvez modifier les paramètres de gaz directement depuis votre fournisseur de portefeuille.\",\"tHuvQI\":\"Accéder au tableau de bord V3\",\"tOcg3N\":\"Étant donné que cet actif est gelé, les seules actions disponibles sont le retrait et le remboursement, accessibles depuis le <0>tableau de bord\",\"tOuXfv\":[\"Emprunter le montant à atteindre \",[\"0\"],\"% d’utilisation\"],\"te9Bfl\":\"S'il vous plaît, connectez votre portefeuille\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Vos ressources\",\"u3ZeYl\":\"La transaction a échoué\",\"u706uF\":\"Prime flash non valide\",\"u8Gfu7\":[\"Aucun résultat de recherche\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"Aucune ressource n’a été sélectionnée pour la migration.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migration\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Exporter des données vers\",\"ulup2p\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"usB84Z\":\"Le montant maximum disponible pour emprunter est limité car le plafond d’emprunt du protocole est presque atteint.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restauré\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Cacher\",\"vMba49\":\"L'emprunt n'est pas activé\",\"vMpNwt\":\"Approuvez avec\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Vous permet de décider si vous souhaitez utiliser un actif fourni en tant que collatéral. Un actif utilisé comme collatéral affectera votre pouvoir d'emprunt et votre Health Factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"L'offre de dette stable n'est pas nulle\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Récompenses APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Vous \",[\"action\"],\" <0/> \",[\"symbole\"]],\"wBIsjb\":\"Canal Discord\",\"wQZbc/\":\"L'appelant de la fonction n'est pas un AToken\",\"wZFvVU\":\"VOTER OUI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"Le protocole Aave est programmé pour toujours utiliser le prix de 1 GHO = 1 $. C’est différent de l’utilisation des prix du marché via des oracles pour d’autres actifs cryptographiques. Cela crée des opportunités d’arbitrage stabilisatrices lorsque le prix du GHO fluctue.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"Avec testnet Faucet, vous pouvez obtenir des ressources gratuites pour tester le protocole Aave. Assurez-vous de changer votre fournisseur de portefeuille pour le réseau de test approprié, sélectionnez l’actif souhaité et cliquez sur «\xA0Faucet\xA0» pour obtenir des jetons transférés vers votre portefeuille. Les actifs d’un réseau de test ne sont pas « réels », ce qui signifie qu’ils n’ont aucune valeur monétaire. <0>Pour en savoir plus\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Les ressources sélectionnées ont été migrées avec succès. Rendez-vous sur le tableau de bord du marché pour les voir.\",\"x7F2p6\":\"Différentiel de courant\",\"x7K5ib\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenir un test gratuit \",[\"0\"],\" à\"],\"x9iLRD\":\"tokens, veuillez vous rendre sur\",\"xNy/UG\":\"Rembourser avec\",\"xPm8wv\":\"En savoir plus sur les risques encourus\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Vos informations\",\"xaWZ6f\":\"Changement de type APY\",\"xh6k71\":\"L’utilisation des garanties est limitée en raison du mode d’isolation.\",\"xvIklc\":\"Flashloan est désactivé pour cet actif, cette position ne peut donc pas être migrée.\",\"y5rS9U\":\"Émigrer\",\"yB1YpA\":\"Mode Sombre\",\"yCrG6m\":\"Taille totale du marché\",\"yJUUbn\":\"Aperçu des transactions\",\"yLGmLX\":[\"Remise en jeu \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Pas une adresse valide\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Suivre le portefeuille\",\"yh2sjd\":[\"Impact sur les prix \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Il n'y a pas assez de fonds dans la \",[\"0\"],\" réserve pour emprunter\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Fermer\",\"z4uGQg\":\"Le plafond de la dette est dépassé\",\"z5UQOM\":\"La garantie choisie ne peut être liquidée\",\"z5Y+p6\":[\"Fournir \",[\"symbole\"]],\"zCjNKs\":\"L'action ne peut pas être effectuée car la réserve est gelée\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Plafond de la dette isolée\",\"zTOjMP\":\"La limite d’approvisionnement du protocole est de 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Dette restante\",\"zmTPiV\":\"Bilan d'approvisionnement\",\"zpPbZl\":\"Paramètres du risque de liquidation\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Apprendre encore plus\",\"zy9fXn\":[\"L’actif est gelé \",[\"marketName\"],\" v3, donc cette position ne peut pas être migrée.\"],\"zys+R6\":\"Faites attention à la congestion du réseau et aux prix de l’essence.\",\"+EGVI0\":\"Recevoir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"On dirait que nous ne pouvons pas changer de réseau automatiquement. Veuillez vérifier si vous pouvez le changer depuis le portefeuille.\",\"+kLZGu\":\"Montant de l’actif fourni\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Montant minimum d’Aave mis en jeu\",\"00OflG\":\"Il n’y a pas assez de liquidités pour que l’actif cible puisse effectuer le changement. Essayez de réduire le montant.\",\"08/rZ9\":\"La période de recharge est le temps nécessaire avant de retirer vos jetons (20 jours). Vous ne pouvez retirer vos actifs du module de sécurité qu’après la période de recharge et pendant la période de désenjeu. <0>Pour en savoir plus\",\"1Onqx8\":[\"Approuver \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Adresse bloquée\",\"2bAhR7\":\"Rencontrez GHO\",\"2o/xRt\":\"Plafond d'approvisionnement sur la réserve cible atteint. Essayez de réduire le montant.\",\"3O8YTV\":\"Total des intérêts courus\",\"4iPAI3\":\"Montant minimum d’emprunt GHO\",\"6NGLTR\":\"Montant actualisable\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Les paramètres de remise sont décidés par la communauté Aave et peuvent être modifiés au fil du temps. Consultez la section Gouvernance pour les mises à jour et votez pour participer. <0>Pour en savoir plus\",\"ARu1L4\":\"Remboursé\",\"B6aXGH\":\"Stable\",\"B9Gqbz\":\"Taux variable\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"À prix réduit\",\"CMHmbm\":\"Glissement\",\"EBL9Gz\":\"COPIÉ!\",\"ES8dkb\":\"Taux fixe\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Rabais\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Enregistrer et partager\",\"JK9zf1\":[\"Intérêts composés estimés, y compris l’escompte pour le jalonnement \",[\"0\"],\"AAVE dans le module de sécurité.\"],\"JPrLjO\":\"Vous ne pouvez pas utiliser cette devise comme garantie\",\"JU6q+W\":\"Récompense(s) à réclamer\",\"K05qZY\":\"Retrait et échange\",\"KRpokz\":\"VOIR TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"L'activation de cet actif comme garantie augmente votre pouvoir d'emprunt et votre facteur de santé. Cependant, il peut être liquidé si votre facteur de santé tombe en dessous de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Désactiver \",[\"symbol\"],\" comme garantie\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Envoyer des commentaires\",\"TeCFg/\":\"Modification du taux d’emprunt\",\"TskbEN\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"TtZL6q\":\"Paramètres du modèle de remise\",\"Tz0GSZ\":\"Activités bloquées\",\"UE3KJZ\":\"L’historique des transactions n’est actuellement pas disponible pour ce marché\",\"W8ekPc\":\"Retour au tableau de bord\",\"XZzneG\":\"Vous quitterez le mode d'isolement et d'autres jetons peuvent désormais être utilisés comme collatéral\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"La désactivation de cet actif en tant que garantie affecte votre pouvoir d'emprunt et votre facteur de santé.\",\"al6Pyz\":\"Dépasse la remise\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Pas assez de collatéral pour rembourser ce montant de dette avec\",\"cqnmnD\":\"Taux d’intérêt effectif\",\"dMtLDE\":\"À\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY avec remise appliquée\",\"fHcELk\":\"APR Net\",\"flRCF/\":\"Remise sur le staking\",\"gncRUO\":\"Cette adresse est bloquée sur app.aave.com car elle est associée à un ou plusieurs\",\"gr8mYw\":\"Vous pouvez emprunter jusqu’à GHO à <0/> <1/> (rabais maximum)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Emprunter le solde\",\"i2JTiw\":\"Vous pouvez saisir un montant personnalisé dans le champ.\",\"jMam5g\":[[\"0\"],\" Balance\"],\"jpctdh\":\"Vue\",\"kwwn6i\":\"Les utilisateurs qui misent des AAVE dans le module de sécurité (c’est-à-dire les détenteurs de stkAAVE) bénéficient d’une réduction sur le taux d’intérêt d’emprunt de HO. La réduction s’applique à 100 GHO pour chaque 1 stkAAVE détenu. Utilisez le calculateur ci-dessous pour voir le taux d’emprunt GHO avec le rabais appliqué.\",\"lNVG7i\":\"Sélectionner une ressource\",\"lt6bpt\":\"Garantie à rembourser\",\"mIM0qu\":\"Montant prévu à rembourser\",\"mzI/c+\":\"Télécharger\",\"n8Psk4\":\"Nous n’avons pas pu détecter de portefeuille. Connectez un portefeuille pour staker et consulter votre solde.\",\"nOy4ob\":\"Nous vous suggérons de revenir au tableau de bord.\",\"nakd8r\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"nh2EJK\":[\"Veuillez passer à \",[\"networkName\"],\".\"],\"ntkAoE\":\"Remise appliquée pour <0/> le staking d’AAVE\",\"o4tCu3\":\"Emprunter de l’APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"La période de recharge est de \",[\"0\"],\". Après \",[\"1\"],\" de temps de recharge, vous entrerez dans la fenêtre de désengagement de \",[\"2\"],\". Vous continuerez à recevoir des récompenses pendant le temps de recharge et la fenêtre de retrait.\"],\"p3j+mb\":\"Votre solde de récompenses est de 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Intérêts courus\",\"rf8POi\":\"Montant de l’actif emprunté\",\"ruc7X+\":\"Ajoutez stkAAVE pour voir l’APY d’emprunt avec la remise\",\"sK+Nag\":\"Réviser tx\",\"t81DpC\":[\"Approuver \",[\"symbol\"],\" pour continuer\"],\"umICAY\":\"<0><1><2/>Ajoutez stkAAVE pour voir le taux d’emprunt avec escompte\",\"uwAUvj\":\"COPIER L’IMAGE\",\"v8x7Mg\":\"Garantie insuffisante pour couvrir une nouvelle position d’emprunt. Le portefeuille doit avoir une capacité d’emprunt restante pour effectuer le transfert de dette.\",\"wRRqvW\":\"Vous n'avez pas de fournitures dans cette devise\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Activer \",[\"symbol\"],\" comme collatéral\"],\"yW1oWB\":\"APY type\",\"yhvj6d\":\"Vous ne pouvez pas changer d'utilisation en tant que mode de garantie pour cette devise, car cela entraînera un appel de garantie\",\"zevmS2\":\"<0><1><2/>Ajoutez <3/> stkAAVE pour emprunter à <4/> (remise maximale)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/modules/history/HistoryWrapper.tsx b/src/modules/history/HistoryWrapper.tsx index 44851c6aea..db1424ea09 100644 --- a/src/modules/history/HistoryWrapper.tsx +++ b/src/modules/history/HistoryWrapper.tsx @@ -131,9 +131,16 @@ export const HistoryWrapper = () => { return ( - Transactions -
+ <> + + + Transactions + + + This list may not include all your swaps. + + + } > diff --git a/src/ui-config/TokenList.ts b/src/ui-config/TokenList.ts index d4ff80fe72..81f8c05e94 100644 --- a/src/ui-config/TokenList.ts +++ b/src/ui-config/TokenList.ts @@ -9591,6 +9591,14 @@ export const TOKEN_LIST: TokenList = { }, }, }, + { + chainId: 8453, + address: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', + name: 'Coinbase Wrapped Staked BTC', + symbol: 'cbBTC', + decimals: 8, + logoURI: 'https://ethereum-optimism.github.io/data/cbBTC/logo.svg', + }, { name: 'Compound', address: '0x9e1028F5F1D5eDE59748FFceE5532509976840E0', From 82b9938fe5546d4ddebccf0f7c7329f32f746ccc Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Fri, 7 Nov 2025 10:30:49 -0300 Subject: [PATCH 29/66] cow release versions and polygon unsupported tokens --- .npmrc | 10 +- package.json | 8 +- .../Swap/constants/cow.constants.ts | 12 ++ .../Swap/helpers/shared/provider.helpers.ts | 2 +- yarn.lock | 160 +++++++++--------- 5 files changed, 103 insertions(+), 89 deletions(-) diff --git a/.npmrc b/.npmrc index 6cc47efb97..51945768ce 100644 --- a/.npmrc +++ b/.npmrc @@ -1,4 +1,6 @@ -@cowprotocol:registry=https://npm.pkg.github.com -always-auth=true -# registry=https://registry.npmjs.org/ -//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN} \ No newline at end of file +# Uncomment for CoW Preview Releases + +# @cowprotocol:registry=https://npm.pkg.github.com +# always-auth=true +# # registry=https://registry.npmjs.org/ +# //npm.pkg.github.com/:_authToken=${GITHUB_TOKEN} diff --git a/package.json b/package.json index 54f25266bd..99e451887d 100644 --- a/package.json +++ b/package.json @@ -35,10 +35,10 @@ "@aave/math-utils": "1.36.1", "@aave/react": "0.6.1", "@amplitude/analytics-browser": "^2.13.0", - "@cowprotocol/sdk-app-data": "4.1.6-pr-657-b1e54231.0", - "@cowprotocol/cow-sdk": "7.1.0-pr-657-b1e54231.0", - "@cowprotocol/sdk-flash-loans": "1.2.1-pr-657-b1e54231.0", - "@cowprotocol/sdk-viem-adapter": "0.2.0-pr-657-b1e54231.0", + "@cowprotocol/sdk-app-data": "4.1.6", + "@cowprotocol/cow-sdk": "7.1.1", + "@cowprotocol/sdk-flash-loans": "1.3.0", + "@cowprotocol/sdk-viem-adapter": "0.2.0", "@bgd-labs/aave-address-book": "^4.36.0", "@emotion/cache": "11.10.3", "@emotion/react": "11.10.4", diff --git a/src/components/transactions/Swap/constants/cow.constants.ts b/src/components/transactions/Swap/constants/cow.constants.ts index 1a4525f6f4..87e29a02c5 100644 --- a/src/components/transactions/Swap/constants/cow.constants.ts +++ b/src/components/transactions/Swap/constants/cow.constants.ts @@ -7,6 +7,18 @@ export const COW_UNSUPPORTED_ASSETS: Partial< Record>> > = { ['ALL']: { + [SupportedChainId.POLYGON]: [ + '0x8eb270e296023e9d92081fdf967ddd7878724424'.toLowerCase(), // aPOLGHST not supported + '0x38d693ce1df5aadf7bc62595a37d667ad57922e5'.toLowerCase(), // aPolEURS not supported + '0xea1132120ddcdda2f119e99fa7a27a0d036f7ac9'.toLowerCase(), // aPolSTMATIC not supported + '0x6533afac2e7bccb20dca161449a13a32d391fb00'.toLowerCase(), // aPolJEUR not supported + '0x513c7e3a9c69ca3e22550ef58ac1c0088e918fff'.toLowerCase(), // aPolCRV not supported + '0xebe517846d0f36eced99c735cbf6131e1feb775d'.toLowerCase(), // aPolMIMATIC not supported + '0xc45a479877e1e9dfe9fcd4056c699575a1045daa'.toLowerCase(), // aPolSUSHI not supported + '0x8437d7c167dfb82ed4cb79cd44b7a32a1dd95c77'.toLowerCase(), // aPolAGEUR not supported + '0x724dc807b04555b71ed48a6896b6f41593b8c637'.toLowerCase(), // aPolDPI not supported + '0x8ffdf2de812095b1d19cb146e4c004587c0a0692'.toLowerCase(), // aPolBAL not supported + ], [SupportedChainId.AVALANCHE]: [ '0x8eb270e296023e9d92081fdf967ddd7878724424'.toLowerCase(), // AVaMAI not supported '0x078f358208685046a11c85e8ad32895ded33a249'.toLowerCase(), // aVaWBTC not supported diff --git a/src/components/transactions/Swap/helpers/shared/provider.helpers.ts b/src/components/transactions/Swap/helpers/shared/provider.helpers.ts index 8447c107b3..3c334e0b54 100644 --- a/src/components/transactions/Swap/helpers/shared/provider.helpers.ts +++ b/src/components/transactions/Swap/helpers/shared/provider.helpers.ts @@ -23,7 +23,7 @@ export const isSwapSupportedByCowProtocol = ( ...((COW_UNSUPPORTED_ASSETS[swapType] && COW_UNSUPPORTED_ASSETS[swapType][chainId]) || []), ].flat(); - if (unsupportedAssetsPerChainAndModalType === undefined) return true; // No unsupported assets for this chain and modal type + if (unsupportedAssetsPerChainAndModalType.length === 0) return true; // No unsupported assets for this chain and modal type if (unsupportedAssetsPerChainAndModalType.includes('ALL')) return false; // All assets are unsupported diff --git a/yarn.lock b/yarn.lock index 1643587bd6..ff610081af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1380,104 +1380,104 @@ dependencies: chalk "^4.1.0" -"@cowprotocol/cow-sdk@7.1.0-pr-657-b1e54231.0": - version "7.1.0-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/cow-sdk/7.1.0-pr-657-b1e54231.0/7dd140bf4d4d0fce4629d882ffbc9024aacec1f1#7dd140bf4d4d0fce4629d882ffbc9024aacec1f1" - integrity sha512-pzgKm9/OF+s0HePyg9XznzLuPKcEtH7s9na1aQoHPHiIkpqMGm8g3wgaXal6wDtLLUV7FIMP1vpYmEOchj/3gw== - dependencies: - "@cowprotocol/sdk-app-data" "4.1.6-pr-657-b1e54231.0" - "@cowprotocol/sdk-common" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-config" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-contracts-ts" "0.4.4-pr-657-b1e54231.0" - "@cowprotocol/sdk-order-book" "0.2.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-order-signing" "0.1.10-pr-657-b1e54231.0" - "@cowprotocol/sdk-trading" "0.4.5-pr-657-b1e54231.0" - -"@cowprotocol/sdk-app-data@4.1.6-pr-657-b1e54231.0": - version "4.1.6-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-app-data/4.1.6-pr-657-b1e54231.0/dc7aac431cdb096c9d91737f0e01bea80da85eda#dc7aac431cdb096c9d91737f0e01bea80da85eda" - integrity sha512-7s+tTghbB5FqFgYmcjloTHMfxkl3o0gWhdZaO5JH1//kc/RACKRpgK2/uo+8xMxL/nhrVKGT7scU+4LwwBhGNg== - dependencies: - "@cowprotocol/sdk-common" "0.3.0-pr-657-b1e54231.0" +"@cowprotocol/cow-sdk@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@cowprotocol/cow-sdk/-/cow-sdk-7.1.1.tgz#8268e7f931bbcf7c0d231088590cac7abf9b6a0a" + integrity sha512-geUTHOxfMxAEK6Yd4NtglGI4uo1ecEk6VtX5a2wzw3YSz5iWKw/GamyIMp75y48+Qud1xgvQ0v+u9xLtpBMlyg== + dependencies: + "@cowprotocol/sdk-app-data" "4.1.6" + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.3.0" + "@cowprotocol/sdk-contracts-ts" "0.5.0" + "@cowprotocol/sdk-order-book" "0.2.0" + "@cowprotocol/sdk-order-signing" "0.1.11" + "@cowprotocol/sdk-trading" "0.4.6" + +"@cowprotocol/sdk-app-data@4.1.6": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-app-data/-/sdk-app-data-4.1.6.tgz#e4d5b7843fe875e8a91da48a8fa3a0045b3b778e" + integrity sha512-wPy0p1HibKKBjGrH9iRYDGGYIzIJQORRAdy/IB+PRojBLTeBEkTp9HKvNHwDaPhdAlV19e/U5p65WM4b5sKW5A== + dependencies: + "@cowprotocol/sdk-common" "0.3.0" ajv "^8.11.0" cross-fetch "^3.1.5" ipfs-only-hash "^4.0.0" json-stringify-deterministic "^1.0.8" multiformats "^9.6.4" -"@cowprotocol/sdk-common@0.3.0-pr-657-b1e54231.0": - version "0.3.0-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-common/0.3.0-pr-657-b1e54231.0/ee1d33a25b270a34bc8e0cee6a6639b06bc8b0ef#ee1d33a25b270a34bc8e0cee6a6639b06bc8b0ef" - integrity sha512-5rE3Bho81cZPHdcO6dvWzv+wIP85jxPTjWSBr3xWTr6kRnxRoI0sx23Dgm2PMrYUSrX8KAc+wRcDD1WNUq/IiQ== +"@cowprotocol/sdk-common@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-common/-/sdk-common-0.3.0.tgz#f03a5e36d67d0c5cdb6be5bd7ceda879b751542d" + integrity sha512-xk2VUjO4+XI5968r1pYFbqUxM2nmBcVPvGIw0pcqDpx4OLef0Flr3tuHtZY42RYYa6nNsNKOBV9Jd4RauYUOgQ== -"@cowprotocol/sdk-config@0.3.0-pr-657-b1e54231.0": - version "0.3.0-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-config/0.3.0-pr-657-b1e54231.0/406a900febd1190f03307539b5a21a60e75e84fe#406a900febd1190f03307539b5a21a60e75e84fe" - integrity sha512-mKEj35fkoHj5QAdeHbAnr7CyQDhdour25sIWzZaOfAa1qfHVznA/Mnik19TS6pGrhbc82Hu/iTY7tNGIetCLUw== +"@cowprotocol/sdk-config@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-config/-/sdk-config-0.3.0.tgz#8a0e8e81daf3e82c60f71ff73893a794dd08c589" + integrity sha512-EUDqXMSYsgLdXDnvC9sc9ozpsjQdP6R738R0kKNWp/mTI9j7wsI9sVrDcKIoX7qH+pu0aRmRxEFbEbW7uXUcIg== dependencies: exponential-backoff "^3.1.1" limiter "^2.1.0" -"@cowprotocol/sdk-contracts-ts@0.4.4-pr-657-b1e54231.0": - version "0.4.4-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-contracts-ts/0.4.4-pr-657-b1e54231.0/935ce6476101dfe4dc305913696055ca6ed9309d#935ce6476101dfe4dc305913696055ca6ed9309d" - integrity sha512-oX9LGUvoptmmq0fYDYH9R5IObmshRPTZF4rYr+ATWLrBNcw5ujQVjoQr5KS2yyOu9numHWnYXpI6tZ4QtTFSZQ== - dependencies: - "@cowprotocol/sdk-common" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-config" "0.3.0-pr-657-b1e54231.0" - -"@cowprotocol/sdk-flash-loans@1.2.1-pr-657-b1e54231.0": - version "1.2.1-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-flash-loans/1.2.1-pr-657-b1e54231.0/0c29fd09b85e8624cdf9cac28c5ee71e2c926612#0c29fd09b85e8624cdf9cac28c5ee71e2c926612" - integrity sha512-xzgGEtjNuxzTS4hs4uXM+FwDjVeZKo/2qIw8cQnCB4B5HHYpp8jMkWD7N6XHY4DtMpQXOwF11zo83P/vxjzE9Q== - dependencies: - "@cowprotocol/sdk-app-data" "4.1.6-pr-657-b1e54231.0" - "@cowprotocol/sdk-common" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-config" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-order-book" "0.2.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-order-signing" "0.1.10-pr-657-b1e54231.0" - "@cowprotocol/sdk-trading" "0.4.5-pr-657-b1e54231.0" - -"@cowprotocol/sdk-order-book@0.2.0-pr-657-b1e54231.0": - version "0.2.0-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-order-book/0.2.0-pr-657-b1e54231.0/30232dccfce99d2ffc3fc94bef35f9548c971edd#30232dccfce99d2ffc3fc94bef35f9548c971edd" - integrity sha512-9NcdwsK1A/XGM6T4KbEykkBxqTojvG0ut8RZDBlzxODHcWO9PoCaJpqSz/R/HRpuV86UWnOvLyF922QSfZ4TTQ== - dependencies: - "@cowprotocol/sdk-common" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-config" "0.3.0-pr-657-b1e54231.0" +"@cowprotocol/sdk-contracts-ts@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-contracts-ts/-/sdk-contracts-ts-0.5.0.tgz#db9ff973448e9f730a3a493330c26d848da10ee3" + integrity sha512-QAx07lJG1HoldgzMSqXTf5iXB7eihTBS20h3WYD7h6yaoDcKjb06/vVp1g4aCgze0n/3ceYpthVDAVTnn3/fOw== + dependencies: + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.3.0" + +"@cowprotocol/sdk-flash-loans@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-flash-loans/-/sdk-flash-loans-1.3.0.tgz#596ca419d05374fbd626996ea16ed2a561a79fad" + integrity sha512-RMK76mYJ4AXT/WxliCe/VU6E7R1pMmDAJIefOSpxZqLir8FsWptoRKj5RXmF1S6GHKSrug22amXFuU4coaG5Ww== + dependencies: + "@cowprotocol/sdk-app-data" "4.1.6" + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.3.0" + "@cowprotocol/sdk-order-book" "0.2.0" + "@cowprotocol/sdk-order-signing" "0.1.11" + "@cowprotocol/sdk-trading" "0.4.6" + +"@cowprotocol/sdk-order-book@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-book/-/sdk-order-book-0.2.0.tgz#b4c24baa50c9c9670e951d0b9059dfd66ff7ed52" + integrity sha512-OeSHMGVEx7LCX+7ZnoRwLdIkJX25/tiquCVaocagrqzyPPPxD/TOg6BGLjgvl0kzoXLtfoSQ3CSz3IfvN/Etlg== + dependencies: + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.3.0" cross-fetch "^3.2.0" exponential-backoff "^3.1.2" limiter "^3.0.0" -"@cowprotocol/sdk-order-signing@0.1.10-pr-657-b1e54231.0": - version "0.1.10-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-order-signing/0.1.10-pr-657-b1e54231.0/373b1c04f099dae6bd7addef594414ecfea925b9#373b1c04f099dae6bd7addef594414ecfea925b9" - integrity sha512-Rjkww8apnxsF+AEo58bLn4noGxyrEwhPV1ZEqfI3jfby+/NFBHknjNyiWnDeD/PSKFYYFcI/4I9w5uMAEF+2Wg== - dependencies: - "@cowprotocol/sdk-common" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-config" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-contracts-ts" "0.4.4-pr-657-b1e54231.0" - "@cowprotocol/sdk-order-book" "0.2.0-pr-657-b1e54231.0" - -"@cowprotocol/sdk-trading@0.4.5-pr-657-b1e54231.0": - version "0.4.5-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-trading/0.4.5-pr-657-b1e54231.0/5ae56bf04ae642cafea5560071587e0b19f93305#5ae56bf04ae642cafea5560071587e0b19f93305" - integrity sha512-XO9F+Wz1d9B9T8YKO0ZPFOz3grenAFvokItfqmsjPjO1ep/XK0+CVRu+gtVC/qfLXg0rXisAWVdDZMLEqECZ9Q== - dependencies: - "@cowprotocol/sdk-app-data" "4.1.6-pr-657-b1e54231.0" - "@cowprotocol/sdk-common" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-config" "0.3.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-contracts-ts" "0.4.4-pr-657-b1e54231.0" - "@cowprotocol/sdk-order-book" "0.2.0-pr-657-b1e54231.0" - "@cowprotocol/sdk-order-signing" "0.1.10-pr-657-b1e54231.0" +"@cowprotocol/sdk-order-signing@0.1.11": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-signing/-/sdk-order-signing-0.1.11.tgz#7268d74eb7d9794658ac1bda9d49ec047595e0bc" + integrity sha512-6tbAC0yv0T4fm8y8xUFQqLGooyIJt5e0XKc40KZdLOMqHBzsocgOqPDLcalWMaTREVYTgO1bUUFqfPTNjLZJBA== + dependencies: + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.3.0" + "@cowprotocol/sdk-contracts-ts" "0.5.0" + "@cowprotocol/sdk-order-book" "0.2.0" + +"@cowprotocol/sdk-trading@0.4.6": + version "0.4.6" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-trading/-/sdk-trading-0.4.6.tgz#f9bd7add17e1478a1aca176d36f1696b5474f564" + integrity sha512-vGuTZl+js0TAOa+3eeglEQvy7HA4+9uaVFwWViZm+GsqEEUuL273Xfsig3ETqIpQTk8iD7BI1D+WBn5NvEOtjA== + dependencies: + "@cowprotocol/sdk-app-data" "4.1.6" + "@cowprotocol/sdk-common" "0.3.0" + "@cowprotocol/sdk-config" "0.3.0" + "@cowprotocol/sdk-contracts-ts" "0.5.0" + "@cowprotocol/sdk-order-book" "0.2.0" + "@cowprotocol/sdk-order-signing" "0.1.11" deepmerge "^4.3.1" -"@cowprotocol/sdk-viem-adapter@0.2.0-pr-657-b1e54231.0": - version "0.2.0-pr-657-b1e54231.0" - resolved "https://npm.pkg.github.com/download/@cowprotocol/sdk-viem-adapter/0.2.0-pr-657-b1e54231.0/c9677fee3387b75b022959e26afb218075af18f4#c9677fee3387b75b022959e26afb218075af18f4" - integrity sha512-whuRC3DD+FBsl5kMhS9vCUKuAgMI2XwXgeJarAq15+TNAU9KTvaBVCzFZlWjIqCl+viivmVOWCoVozTPnG0aEQ== +"@cowprotocol/sdk-viem-adapter@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-viem-adapter/-/sdk-viem-adapter-0.2.0.tgz#5b155a2d7eceb9d6205b3db47b1e71951b4dea19" + integrity sha512-7bn2606tLmGba/sQfJYpxniU+Ztn/eKUABi8VVcE7JYaiCaDF5SbWd6i6E1/3LBSd3VoSJq/b77a5aU5g8fkrg== dependencies: - "@cowprotocol/sdk-common" "0.3.0-pr-657-b1e54231.0" + "@cowprotocol/sdk-common" "0.3.0" "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From 15f9e2f180d86e07ae565d444fea3a374fc82c9c Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Fri, 7 Nov 2025 11:23:41 -0300 Subject: [PATCH 30/66] nit message on cancel modal, and safe check for rate change --- .../CancelCowOrder/CancelCowOrderModalContent.tsx | 9 +++++++++ src/components/transactions/Swap/inputs/SwapInputs.tsx | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx b/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx index 587219a1d4..99f6b33f87 100644 --- a/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx +++ b/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx @@ -39,6 +39,15 @@ export const CancelCowOrderModalContent = ({ cowOrder }: CancelCowOrderModalCont <> {showNetworkWarning && } + + Cancel order + + + + This is an off-chain operation. Keep in mind that a solver may already have filled your + order. + + { + if (newRate.toString() === '0') return; + // User changed custom price, pause quote refresh in limit orders setState({ quoteRefreshPaused: true }); From 51607169a919dab1a3999e3c3958e02439d0cf72 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Fri, 7 Nov 2025 11:56:21 -0300 Subject: [PATCH 31/66] fix: use always underlying addresses in quotes --- .../transactions/Swap/hooks/useSwapQuote.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index b8779e6a0c..768fe8fde2 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -43,16 +43,11 @@ const getTokenSelectionForQuote = ( provider: SwapProvider, state: SwapState ): TokenSelectionParams => { + // Note: Consider the quote an approximation, we prefer underlying address for better support while aTokens value should always match const srcTokenObj = invertedQuoteRoute ? state.destinationToken : state.sourceToken; - const srcToken = - provider === SwapProvider.PARASWAP || state.useFlashloan - ? srcTokenObj.underlyingAddress - : srcTokenObj.addressToSwap; + const srcToken = srcTokenObj.underlyingAddress; const destTokenObj = invertedQuoteRoute ? state.sourceToken : state.destinationToken; - const destToken = - provider === SwapProvider.PARASWAP || state.useFlashloan - ? destTokenObj.underlyingAddress - : destTokenObj.addressToSwap; + const destToken = destTokenObj.underlyingAddress; const srcDecimals = invertedQuoteRoute ? state.destinationToken.decimals From 16a54922e94ce0539fa02a59d07152430e9efd82 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Fri, 7 Nov 2025 12:31:50 -0300 Subject: [PATCH 32/66] miisc nits --- .../CancelCowOrderModalContent.tsx | 4 +- .../actions/approval/useSwapTokenApproval.ts | 1 - .../Swap/details/CowCostsDetails.tsx | 18 +- .../Swap/helpers/cow/adapters.helpers.ts | 218 +++++++++--------- .../Swap/helpers/cow/rates.helpers.ts | 2 +- .../transactions/Swap/hooks/useSwapQuote.ts | 14 +- .../Swap/inputs/primitives/SwapAssetInput.tsx | 70 +++++- .../request/CollateralSwapModalContent.tsx | 20 +- src/ui-config/TokenList.ts | 9 +- 9 files changed, 219 insertions(+), 137 deletions(-) diff --git a/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx b/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx index 99f6b33f87..99829cd43c 100644 --- a/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx +++ b/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx @@ -39,10 +39,10 @@ export const CancelCowOrderModalContent = ({ cowOrder }: CancelCowOrderModalCont <> {showNetworkWarning && } - + Cancel order - + This is an off-chain operation. Keep in mind that a solver may already have filled your order. diff --git a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts index 66fe0d5173..42bfa502b6 100644 --- a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts +++ b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts @@ -235,7 +235,6 @@ export const useSwapTokenApproval = ({ setLoadingPermitData(true); const rpc = getProvider(chainId); const supported = await isPermitSupportedWithFallback(chainId, token, rpc); - console.log('[useSwapTokenApproval] permitSupported', supported); if (!cancelled) setPermitSupported(supported); setLoadingPermitData(false); } catch { diff --git a/src/components/transactions/Swap/details/CowCostsDetails.tsx b/src/components/transactions/Swap/details/CowCostsDetails.tsx index fe3d80b09c..4b4e35c827 100644 --- a/src/components/transactions/Swap/details/CowCostsDetails.tsx +++ b/src/components/transactions/Swap/details/CowCostsDetails.tsx @@ -51,18 +51,24 @@ export const CowCostsDetails = ({ state }: { state: SwapState }) => { if (invertedSide === 'buy') { // Fee in destination token (buy token) partnerFeeFormatted = state.partnerFeeAmountFormatted ?? '0'; - const partnerFeeAmountPriceUnitUsd = valueToBigNumber(state.sellAmountUSD ?? '0') - .dividedBy(valueToBigNumber(state.sellAmountFormatted ?? '0')) - .toNumber(); + const partnerFeeAmountPriceUnitUsd = + state.sellAmountFormatted == '0' + ? 0 + : valueToBigNumber(state.sellAmountUSD ?? '0') + .dividedBy(valueToBigNumber(state.sellAmountFormatted ?? '0')) + .toNumber(); partnerFeeUsd = Number(partnerFeeFormatted) * partnerFeeAmountPriceUnitUsd; partnerFeeToken = state.sellAmountToken; } else { // Fee in source token (sell token) partnerFeeFormatted = state.partnerFeeAmountFormatted || '0'; - const partnerFeeAmountPriceUnitUsd = valueToBigNumber(state.buyAmountUSD ?? '0') - .dividedBy(valueToBigNumber(state.buyAmountFormatted ?? '0')) - .toNumber(); + const partnerFeeAmountPriceUnitUsd = + state.buyAmountFormatted == '0' + ? 0 + : valueToBigNumber(state.buyAmountUSD ?? '0') + .dividedBy(valueToBigNumber(state.buyAmountFormatted ?? '0')) + .toNumber(); partnerFeeUsd = Number(partnerFeeFormatted) * partnerFeeAmountPriceUnitUsd; partnerFeeToken = state.buyAmountToken; diff --git a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts index 787aea13ad..c49542e6fe 100644 --- a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts @@ -1,6 +1,5 @@ import { AppDataParams, - // AppDataRootSchema, getOrderToSign, LimitTradeParameters, OrderKind, @@ -8,18 +7,12 @@ import { SupportedChainId, } from '@cowprotocol/cow-sdk'; import { - AAVE_ADAPTER_FACTORY, - AAVE_POOL_ADDRESS, AaveCollateralSwapSdk, AaveFlashLoanType, - DEFAULT_HOOK_GAS_LIMIT, EncodedOrder, - FlashLoanHint, FlashLoanHookAmounts, HASH_ZERO, } from '@cowprotocol/sdk-flash-loans'; -// import { normalize } from '@aave/math-utils'; -import { zeroAddress } from 'viem'; import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; import { SwapProvider, SwapState, SwapType } from '../../types'; @@ -147,13 +140,12 @@ export const calculateFlashLoanAmounts = ( * and therefore the quote is more precise and more chances of being executed * It's important to send the hooks and flashloan hint but not the exact amounts that will be used in the final */ -export const getAppDataForQuote = async ({ - // user, - type, - amount, - chainId, - srcToken, -}: // srcDecimals, +export const getAppDataForQuote = async ({}: // user, +// type, +// amount, +// chainId, +// srcToken, +// srcDecimals, // destToken, // destDecimals, { @@ -166,105 +158,123 @@ export const getAppDataForQuote = async ({ destToken: string; destDecimals: number; }): Promise => { - if (type === SwapType.Swap || type === SwapType.WithdrawAndSwap) { - return undefined; // no flashloan needed - plain swap - } + return undefined; - // const flashLoanSdk = new AaveCollateralSwapSdk(); - // const { flashLoanFeeAmount, sellAmountToSign } = flashLoanSdk.calculateFlashLoanAmounts({ - // sellAmount: BigInt(normalize(amount, -srcDecimals)), - // flashLoanFeeBps: FLASH_LOAN_FEE_BPS, - // }); + // NOTE: This function is prepared to add solver hooks for accurate network cost estimation, + // but such estimations are not currently supported so solvers are absorbing some costs. + // Disabled for now; enable when proper support becomes available. - // let cowType: AaveFlashLoanType; - // if (type === SwapType.CollateralSwap) { - // cowType = AaveFlashLoanType.CollateralSwap; - // } else if (type === SwapType.DebtSwap) { - // cowType = AaveFlashLoanType.DebtSwap; - // } else if(type === SwapType.RepayWithCollateral) { - // cowType = AaveFlashLoanType.RepayCollateral; - // } else { - // throw new Error('Invalid swap type'); + // if (type === SwapType.Swap || type === SwapType.WithdrawAndSwap) { + // return undefined; // no flashloan needed - plain swap // } - // const hookAmounts: FlashLoanHookAmounts = { - // flashLoanAmount: amount, - // flashLoanFeeAmount: flashLoanFeeAmount.toString(), - // sellAssetAmount: sellAmountToSign.toString(), - // buyAssetAmount: amount, - // } + // const factory = + // AAVE_ADAPTER_FACTORY[chainId].length > 0 ? AAVE_ADAPTER_FACTORY[chainId] : API_ETH_MOCK_ADDRESS; + // const pool = + // AAVE_POOL_ADDRESS[chainId].length > 0 ? AAVE_POOL_ADDRESS[chainId] : API_ETH_MOCK_ADDRESS; + // const AAVE_SWAP_TYPE_TO_COW_TYPE: Partial> = { + // [SwapType.CollateralSwap]: AaveFlashLoanType.CollateralSwap, + // [SwapType.DebtSwap]: AaveFlashLoanType.DebtSwap, + // [SwapType.RepayWithCollateral]: AaveFlashLoanType.RepayCollateral, + // } as const; + // const dappId = + // AAVE_DAPP_ID_PER_TYPE[AAVE_SWAP_TYPE_TO_COW_TYPE[type] ?? AaveFlashLoanType.CollateralSwap]; - const flashloan: FlashLoanHint = { - amount, // this is actually in UNDERLYING but aave tokens are 1:1 - receiver: AAVE_ADAPTER_FACTORY[chainId], - liquidityProvider: AAVE_POOL_ADDRESS[chainId], - protocolAdapter: AAVE_ADAPTER_FACTORY[chainId], - token: srcToken, - }; + // // const flashLoanSdk = new AaveCollateralSwapSdk(); + // // const { flashLoanFeeAmount, sellAmountToSign } = flashLoanSdk.calculateFlashLoanAmounts({ + // // sellAmount: BigInt(normalize(amount, -srcDecimals)), + // // flashLoanFeeBps: FLASH_LOAN_FEE_BPS, + // // }); - // const limitOrder: LimitTradeParameters = { - // kind: OrderKind.SELL, - // sellToken: srcToken, - // sellTokenDecimals: srcDecimals, - // buyToken: destToken, - // buyTokenDecimals: destDecimals, - // sellAmount: normalize(amount, -srcDecimals).toString(), - // buyAmount: amount, - // } + // // let cowType: AaveFlashLoanType; + // // if (type === SwapType.CollateralSwap) { + // // cowType = AaveFlashLoanType.CollateralSwap; + // // } else if (type === SwapType.DebtSwap) { + // // cowType = AaveFlashLoanType.DebtSwap; + // // } else if(type === SwapType.RepayWithCollateral) { + // // cowType = AaveFlashLoanType.RepayCollateral; + // // } else { + // // throw new Error('Invalid swap type'); + // // } - // const orderToSign = getOrderToSign( - // { - // chainId, - // from: user, - // networkCostsAmount: '0', - // isEthFlow: false, - // applyCostsSlippageAndFees: false, - // }, - // limitOrder, - // HASH_ZERO - // ); + // // const hookAmounts: FlashLoanHookAmounts = { + // // flashLoanAmount: amount, + // // flashLoanFeeAmount: flashLoanFeeAmount.toString(), + // // sellAssetAmount: sellAmountToSign.toString(), + // // buyAssetAmount: amount, + // // } - // const encodedOrder: EncodedOrder = { - // ...OrderSigningUtils.encodeUnsignedOrder(orderToSign), - // appData: HASH_ZERO, - // } + // const flashloan: FlashLoanHint = { + // amount, // this is actually in UNDERLYING but aave tokens are 1:1 + // receiver: factory, + // liquidityProvider: pool, + // protocolAdapter: factory, + // token: srcToken, + // }; - // const hooks = await getOrderHooks( - // cowType, - // chainId, - // user as `0x${string}`, - // zeroAddress, - // hookAmounts, - // { - // ...encodedOrder, - // receiver: zeroAddress, - // }, - // ); + // // const limitOrder: LimitTradeParameters = { + // // kind: OrderKind.SELL, + // // sellToken: srcToken, + // // sellTokenDecimals: srcDecimals, + // // buyToken: destToken, + // // buyTokenDecimals: destDecimals, + // // sellAmount: normalize(amount, -srcDecimals).toString(), + // // buyAmount: amount, + // // } - // TODO: send proper calldatas when available so solvers can properly simulate - const hooks = { - pre: [ - { - target: AAVE_ADAPTER_FACTORY[chainId], - callData: '0x', - gasLimit: DEFAULT_HOOK_GAS_LIMIT.pre.toString(), - dappId: '', - }, - ], - post: [ - { - target: zeroAddress, - callData: '0x', - gasLimit: DEFAULT_HOOK_GAS_LIMIT.post.toString(), - dappId: '', - }, - ], - }; + // // const orderToSign = getOrderToSign( + // // { + // // chainId, + // // from: user, + // // networkCostsAmount: '0', + // // isEthFlow: false, + // // applyCostsSlippageAndFees: false, + // // }, + // // limitOrder, + // // HASH_ZERO + // // ); - return { - metadata: { - flashloan, - hooks, - }, - }; + // // const encodedOrder: EncodedOrder = { + // // ...OrderSigningUtils.encodeUnsignedOrder(orderToSign), + // // appData: HASH_ZERO, + // // } + + // // const hooks = await getOrderHooks( + // // cowType, + // // chainId, + // // user as `0x${string}`, + // // zeroAddress, + // // hookAmounts, + // // { + // // ...encodedOrder, + // // receiver: zeroAddress, + // // }, + // // ); + + // // TODO: send proper calldatas when available so solvers can properly simulate + // const hooks = { + // pre: [ + // { + // target: factory, + // callData: '0x', + // gasLimit: 160k DEFAULT_HOOK_GAS_LIMIT.pre.toString(), + // dappId, + // }, + // ], + // post: [ + // { + // target: 0x, + // callData: '0x', + // gasLimit: 160k DEFAULT_HOOK_GAS_LIMIT.post.toString(), + // dappId, + // }, + // ], + // }; + + // return { + // metadata: { + // flashloan, + // hooks, + // }, + // }; }; diff --git a/src/components/transactions/Swap/helpers/cow/rates.helpers.ts b/src/components/transactions/Swap/helpers/cow/rates.helpers.ts index 93c08cb7a9..bf19ec15ef 100644 --- a/src/components/transactions/Swap/helpers/cow/rates.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/rates.helpers.ts @@ -235,7 +235,7 @@ export async function getCowProtocolSellRates({ const srcSpotAmount = orderBookQuote.quoteResults.orderToSign.kind === OrderKind.SELL ? orderBookQuote.quoteResults.amountsAndCosts.afterNetworkCosts.sellAmount.toString() - : orderBookQuote.quoteResults.amountsAndCosts.afterNetworkCosts.sellAmount.toString(); + : orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.sellAmount.toString(); const srcSpotUSD = BigNumber(srcTokenPriceUsd) .multipliedBy(BigNumber(srcSpotAmount).dividedBy(10 ** srcDecimals)) .toString(); diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index 768fe8fde2..86e4e4929e 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -40,7 +40,6 @@ export const swapTypesThatRequiresInvertedQuote: SwapType[] = [ const getTokenSelectionForQuote = ( invertedQuoteRoute: boolean, - provider: SwapProvider, state: SwapState ): TokenSelectionParams => { // Note: Consider the quote an approximation, we prefer underlying address for better support while aTokens value should always match @@ -302,7 +301,7 @@ const useMultiProviderSwapQuoteQuery = ({ isOutputTokenCustom, side, } = useMemo( - () => getTokenSelectionForQuote(requiresQuoteInverted, provider, state), + () => getTokenSelectionForQuote(requiresQuoteInverted, state), [provider, state.sourceToken, state.destinationToken, state.side, requiresQuoteInverted] ); @@ -393,11 +392,22 @@ const useMultiProviderSwapQuoteQuery = ({ state.user ), enabled: (() => { + console.log('state.side', state.side); + console.log('state.debouncedInputAmount', state.debouncedInputAmount); + console.log('state.debouncedOutputAmount', state.debouncedOutputAmount); + + console.log( + 'limit', + (state.orderType === OrderType.LIMIT && !state.swapRate) || + state.orderType === OrderType.MARKET + ); + // Allow fetch when user has entered a positive amount, even if normalization rounded to '0' const hasPositiveUserAmount = state.side === 'sell' ? Number(state.debouncedInputAmount || '0') > 0 : Number(state.debouncedOutputAmount || '0') > 0; + console.log('hasPositiveUserAmount', hasPositiveUserAmount); // Basic pre-blockers to avoid provider requests const isSameTokenPair = diff --git a/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx b/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx index 447c2f51d1..da26df4645 100644 --- a/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx +++ b/src/components/transactions/Swap/inputs/primitives/SwapAssetInput.tsx @@ -400,16 +400,62 @@ export const SwitchAssetInput = ({ > - - Select token - - - {networkName} + + + Select token + + + + {networkName} + + @@ -475,7 +521,7 @@ export const SwitchAssetInput = ({ {asset.symbol} @@ -539,8 +585,8 @@ export const SwitchAssetInput = ({ diff --git a/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx b/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx index 26a147e444..60b194743f 100644 --- a/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx @@ -12,7 +12,7 @@ import { displayGhoForMintableMarket } from 'src/utils/ghoUtilities'; import { useShallow } from 'zustand/shallow'; import { invalidateAppStateForSwap } from '../../helpers/shared'; -import { SwappableToken, SwapParams, SwapType } from '../../types'; +import { SwappableToken, SwapParams, SwapType, TokenType } from '../../types'; import { BaseSwapModalContent } from './BaseSwapModalContent'; export const CollateralSwapModalContent = ({ underlyingAsset }: { underlyingAsset: string }) => { @@ -164,13 +164,14 @@ const getTokensFrom = ( underlyingAddress: position.reserve.underlyingAsset, decimals: baseToken.decimals, symbol: nativeToken?.symbol ?? baseToken.symbol, - name: baseToken.name, + name: nativeToken?.name ?? baseToken.name, balance: position.underlyingBalance, chainId, usdPrice: position.reserve.priceInUSD, supplyAPY: position.reserve.supplyAPY, variableBorrowAPY: position.reserve.variableBorrowAPY, logoURI: nativeToken?.logoURI ?? baseToken.logoURI, + tokenType: nativeToken?.extensions?.isNative ? TokenType.NATIVE : TokenType.ERC20, }; } return undefined; @@ -223,19 +224,30 @@ const getTokensTo = ( position.reserve.underlyingAsset.toLowerCase() === reserve.underlyingAsset.toLowerCase() )?.underlyingBalance ?? '0'; + // Prefer showing native symbol (e.g., ETH) instead of WETH when applicable, but keep underlying address + const wrappedNative = + WRAPPED_NATIVE_CURRENCIES[chainId as SupportedChainId]?.address?.toLowerCase(); + const isWrappedNative = + wrappedNative && reserve.underlyingAsset.toLowerCase() === wrappedNative; + const nativeToken = isWrappedNative + ? TOKEN_LIST.tokens.find( + (t) => (t as TokenInfoWithBalance).extensions?.isNative && t.chainId === chainId + ) + : undefined; + return { addressToSwap: reserve.aTokenAddress, addressForUsdPrice: reserve.aTokenAddress, underlyingAddress: reserve.underlyingAsset, decimals: baseToken.decimals, - symbol: baseToken.symbol, + symbol: nativeToken?.symbol ?? baseToken.symbol, name: baseToken.name, balance: currentCollateral, chainId, usdPrice: reserve.priceInUSD, supplyAPY: reserve.supplyAPY, variableBorrowAPY: reserve.variableBorrowAPY, - logoURI: baseToken.logoURI, + logoURI: nativeToken?.logoURI ?? baseToken.logoURI, }; }) .filter((token) => token !== undefined) diff --git a/src/ui-config/TokenList.ts b/src/ui-config/TokenList.ts index 81f8c05e94..b20d4b15ff 100644 --- a/src/ui-config/TokenList.ts +++ b/src/ui-config/TokenList.ts @@ -149,13 +149,12 @@ const NETWORK_ASSETS: TokenInfo[] = [ }, }, { - name: 'Ethereum', - symbol: 'ETH', + name: 'BNB', + symbol: 'BNB', decimals: 18, address: API_ETH_MOCK_ADDRESS, chainId: 56, //bnb - logoURI: - 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png', + logoURI: 'https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970', extensions: { isNative: true, }, @@ -9597,7 +9596,7 @@ export const TOKEN_LIST: TokenList = { name: 'Coinbase Wrapped Staked BTC', symbol: 'cbBTC', decimals: 8, - logoURI: 'https://ethereum-optimism.github.io/data/cbBTC/logo.svg', + logoURI: 'https://assets.coingecko.com/coins/images/40143/standard/cbbtc.webp?1726136727', }, { name: 'Compound', From ed39bacb82ac0180b11751cb7d32a0c96c0bc121 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Fri, 7 Nov 2025 15:41:47 -0300 Subject: [PATCH 33/66] add slippage tolerance logic to quote param --- .../details/RepayWithCollateralDetails.tsx | 5 +++- .../Swap/helpers/cow/orders.helpers.ts | 27 +++++++++++++++++++ .../Swap/helpers/cow/rates.helpers.ts | 3 ++- .../transactions/Swap/hooks/useSwapQuote.ts | 11 -------- .../RepayWithCollateralModalContent.tsx | 2 +- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/components/transactions/Swap/details/RepayWithCollateralDetails.tsx b/src/components/transactions/Swap/details/RepayWithCollateralDetails.tsx index 46e513d9d6..8274597ac5 100644 --- a/src/components/transactions/Swap/details/RepayWithCollateralDetails.tsx +++ b/src/components/transactions/Swap/details/RepayWithCollateralDetails.tsx @@ -59,9 +59,12 @@ export const RepayWithCollateralDetails = ({ const displayAmountAfterRepayInUsd = debtAmountAfterRepay.multipliedBy( state.sourceReserve.reserve.priceInUSD ); - const collateralAmountAfterRepay = tokenToRepayWithBalance + const rawCollateralAmountAfterRepay = tokenToRepayWithBalance ? valueToBigNumber(tokenToRepayWithBalance).minus(state.sellAmountFormatted ?? '0') : valueToBigNumber('0'); + const collateralAmountAfterRepay = rawCollateralAmountAfterRepay.isNegative() + ? valueToBigNumber('0') + : rawCollateralAmountAfterRepay; const collateralAmountAfterRepayUSD = collateralAmountAfterRepay.multipliedBy( state.destinationReserve.reserve.priceInUSD ); diff --git a/src/components/transactions/Swap/helpers/cow/orders.helpers.ts b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts index 1ddd4f4594..7b0c5c50a9 100644 --- a/src/components/transactions/Swap/helpers/cow/orders.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/orders.helpers.ts @@ -11,6 +11,7 @@ import { QuoteAndPost, SellTokenSource, SigningScheme, + SlippageToleranceRequest, SupportedChainId, WRAPPED_NATIVE_CURRENCIES, } from '@cowprotocol/cow-sdk'; @@ -494,6 +495,32 @@ export const getPermitHook = async ({ }; }; +// This function is used to get the slippage suggestion for a token pair on the respective chain based on the pair volatility. +export const getSlippageSuggestion = async (request: SlippageToleranceRequest) => { + const { sellToken, buyToken } = request; + + try { + if (request.chainId && sellToken && buyToken) { + const chainSlug = request.chainId; // e.g., 42161 for Arbitrum + const sell = sellToken.toLowerCase(); + const buy = buyToken.toLowerCase(); + const url = `https://bff.cow.fi/${chainSlug}/markets/${sell}-${buy}/slippageTolerance`; + + const res = await fetch(url); + + if (res.ok) { + const result = await res.json(); + // The endpoint returns { slippageBps: number } + // This is expected by the CoW SDK within the Slippage logic. + return result; + } + } + } catch (e) { + console.error('Error fetching slippage suggestion:', e); + return undefined; + } +}; + export const addOrderTypeToAppData = ( orderType: OrderType, appData?: AppDataParams diff --git a/src/components/transactions/Swap/helpers/cow/rates.helpers.ts b/src/components/transactions/Swap/helpers/cow/rates.helpers.ts index bf19ec15ef..2eca632032 100644 --- a/src/components/transactions/Swap/helpers/cow/rates.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/rates.helpers.ts @@ -13,7 +13,7 @@ import { isNativeToken } from '../../helpers/cow'; import { CowProtocolRatesType, ProviderRatesParams, SwapProvider } from '../../types'; import { getAppDataForQuote } from './adapters.helpers'; import { getCowTradingSdkByChainIdAndAppCode } from './env.helpers'; -import { priceQualityToUse } from './orders.helpers'; +import { getSlippageSuggestion, priceQualityToUse } from './orders.helpers'; export const getTokenUsdPrice = async ( chainId: number, @@ -119,6 +119,7 @@ export async function getCowProtocolSellRates({ destToken, destDecimals, }), + getSlippageSuggestion, } ) .catch((cowError) => { diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index 86e4e4929e..e52bc0b317 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -392,22 +392,11 @@ const useMultiProviderSwapQuoteQuery = ({ state.user ), enabled: (() => { - console.log('state.side', state.side); - console.log('state.debouncedInputAmount', state.debouncedInputAmount); - console.log('state.debouncedOutputAmount', state.debouncedOutputAmount); - - console.log( - 'limit', - (state.orderType === OrderType.LIMIT && !state.swapRate) || - state.orderType === OrderType.MARKET - ); - // Allow fetch when user has entered a positive amount, even if normalization rounded to '0' const hasPositiveUserAmount = state.side === 'sell' ? Number(state.debouncedInputAmount || '0') > 0 : Number(state.debouncedOutputAmount || '0') > 0; - console.log('hasPositiveUserAmount', hasPositiveUserAmount); // Basic pre-blockers to avoid provider requests const isSameTokenPair = diff --git a/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx b/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx index 89d5b2f26c..85101d3eb4 100644 --- a/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/RepayWithCollateralModalContent.tsx @@ -89,7 +89,7 @@ export const RepayWithCollateralModalContent = ({ interestMode, resultScreenTokensFromTitle: 'Repay', resultScreenTokensToTitle: 'With', - resultScreenTitleItems: 'repay', + resultScreenTitleItems: ' and repaid', customReceivedTitle: 'Repaid', // Note: Repay With Collateral order is inverted From 812b152581b3fa1f86bb0250eb7bccdeae8a7a5a Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Fri, 7 Nov 2025 16:35:28 -0300 Subject: [PATCH 34/66] balance check for repay w collateral --- .../SwapActions/SwapActionsViaParaswap.tsx | 4 +- .../shared/InsufficientBalanceGuard.tsx | 45 ++++++++++++++++--- .../Swap/modals/request/SwapModalContent.tsx | 4 +- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx index dabbcc2da7..ce35ef6027 100644 --- a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx @@ -40,7 +40,9 @@ export const SwapActionsViaParaswap = ({ const { sendTx } = useWeb3Context(); const { mutateAsync: fetchParaswapTxParams } = useParaswapSellTxParams(state.chainId); + console.log('state.slippage', state.slippage); const slippageInPercent = (Number(state.slippage) * 100).toString(); + console.log('slippageInPercent', slippageInPercent); const { requiresApproval, @@ -85,7 +87,7 @@ export const SwapActionsViaParaswap = ({ destToken: state.destinationToken.addressToSwap, route: state.swapRate.optimalRateData, user, - maxSlippage: Number(slippageInPercent) * 10000, + maxSlippage: Number(slippageInPercent), permit: signatureParams && signatureParams.signature, deadline: signatureParams && signatureParams.deadline, partner: appCode, diff --git a/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx b/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx index 1173d1a7c6..15c48b486a 100644 --- a/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx +++ b/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx @@ -1,3 +1,4 @@ +import { valueToBigNumber } from '@aave/math-utils'; import { SxProps } from '@mui/material'; import React, { Dispatch, useEffect } from 'react'; @@ -5,7 +6,18 @@ import { SwapError, SwapState } from '../../types'; import { BalanceLowerThanInput } from './BalanceLowerThanInput'; export const hasInsufficientBalance = (state: SwapState) => { - return Number(state.debouncedInputAmount) > Number(state.sourceToken.balance); + // Determine which token pays for the swap (handles inverted flows like RepayWithCollateral) + const payingToken = + state.sellAmountToken || (state.isInvertedSwap ? state.destinationToken : state.sourceToken); + + // Prefer the computed sell amount if available; otherwise derive from the edited side + const requiredAmount = + state.sellAmountFormatted || + (state.side === 'sell' ? state.debouncedInputAmount : state.debouncedOutputAmount); + + return valueToBigNumber(requiredAmount || 0).isGreaterThan( + valueToBigNumber(payingToken.balance || 0) + ); }; export const InsufficientBalanceGuard = ({ @@ -20,8 +32,15 @@ export const InsufficientBalanceGuard = ({ isSwapFlowSelected: boolean; }) => { useEffect(() => { - const hasInsufficientBalance = - Number(state.debouncedInputAmount) > Number(state.sourceToken.balance); + const payingToken = + state.sellAmountToken || (state.isInvertedSwap ? state.destinationToken : state.sourceToken); + const requiredAmount = + state.sellAmountFormatted || + (state.side === 'sell' ? state.debouncedInputAmount : state.debouncedOutputAmount); + + const hasInsufficientBalance = valueToBigNumber(requiredAmount || 0).isGreaterThan( + valueToBigNumber(payingToken.balance || 0) + ); if (hasInsufficientBalance) { const isAlreadyBalanceError = @@ -46,9 +65,25 @@ export const InsufficientBalanceGuard = ({ setState({ actionsBlocked: false }); } } - }, [state.debouncedInputAmount, state.sourceToken.balance]); + }, [ + state.debouncedInputAmount, + state.debouncedOutputAmount, + state.sourceToken.balance, + state.destinationToken.balance, + state.sellAmountFormatted, + state.isInvertedSwap, + state.side, + ]); + + const payingToken = + state.sellAmountToken || (state.isInvertedSwap ? state.destinationToken : state.sourceToken); + const requiredAmount = + state.sellAmountFormatted || + (state.side === 'sell' ? state.debouncedInputAmount : state.debouncedOutputAmount); - if (Number(state.debouncedInputAmount) > Number(state.sourceToken.balance)) { + if ( + valueToBigNumber(requiredAmount || 0).isGreaterThan(valueToBigNumber(payingToken.balance || 0)) + ) { return ; } diff --git a/src/components/transactions/Swap/modals/request/SwapModalContent.tsx b/src/components/transactions/Swap/modals/request/SwapModalContent.tsx index d064d43ffa..afa0dc54f3 100644 --- a/src/components/transactions/Swap/modals/request/SwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/SwapModalContent.tsx @@ -87,8 +87,8 @@ export const SwapModalContent = ({ suggestedDefaultInputToken: defaultInputToken, suggestedDefaultOutputToken: defaultOutputToken, invalidateAppState, - sourceTokens: swappableTokens, - destinationTokens: swappableTokens, + sourceTokens: swappableTokens ?? [], + destinationTokens: swappableTokens ?? [], chainId, refreshTokens, supportedNetworks: supportedNetworksWithEnabledMarket, From 55bc7f5b96437ef3bddc70957bedbf3ae4586b39 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Mon, 10 Nov 2025 10:46:21 -0300 Subject: [PATCH 35/66] misc --- ...llateralSwapActionsViaParaswapAdapters.tsx | 6 +- .../DebtSwap/DebtSwapActionsViaCoW.tsx | 4 +- .../DebtSwap/DebtSwapActionsViaParaswap.tsx | 6 +- .../RepayWithCollateralActionsViaCoW.tsx | 4 +- .../SwapActions/SwapActionsViaParaswap.tsx | 2 - .../errors/shared/BalanceLowerThanInput.tsx | 9 +- .../shared/InsufficientBalanceGuard.tsx | 51 ++- .../Swap/helpers/paraswap/misc.helpers.ts | 15 +- .../Swap/hooks/useFlowSelector.ts | 12 +- .../Swap/hooks/useSwapOrderAmounts.ts | 48 +-- .../transactions/Swap/hooks/useSwapQuote.ts | 25 +- .../request/WithdrawAndSwapModalContent.tsx | 5 +- src/hooks/useTransactionHistory.tsx | 290 +++++++++--------- src/locales/el/messages.js | 2 +- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 16 +- src/locales/es/messages.js | 2 +- src/locales/fr/messages.js | 2 +- src/utils/hfUtils.ts | 4 +- 19 files changed, 270 insertions(+), 235 deletions(-) diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx index 6061536ce9..b218814b10 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaParaswapAdapters.tsx @@ -9,6 +9,7 @@ import { useModalContext } from 'src/hooks/useModal'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { saveParaswapTxToUserHistory } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; @@ -157,10 +158,7 @@ export const CollateralSwapActionsViaParaswapAdapters = ({ response = await sendTx(txWithGasEstimation); await response.wait(1); try { - const { saveParaswapTxToUserHistory: addParaswapTx } = await import( - 'src/utils/swapAdapterHistory' - ); - addParaswapTx({ + saveParaswapTxToUserHistory({ protocol: 'paraswap', txHash: response.hash, swapType: params.swapType, diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index f9df33a5f7..58e43308bd 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -244,8 +244,8 @@ export const DebtSwapActionsViaCoW = ({ name: state.buyAmountToken.symbol, decimals: state.buyAmountToken.decimals, }, - srcAmount: state.buyAmountBigInt.toString(), - destAmount: state.sellAmountBigInt.toString(), + srcAmount: state.sellAmountBigInt.toString(), + destAmount: state.buyAmountBigInt.toString(), }); trackSwapOrderProgress(result.orderId, state.chainId); setState({ diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx index e147b56981..ee40dcf4ba 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaParaswap.tsx @@ -9,6 +9,7 @@ import { useModalContext } from 'src/hooks/useModal'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { saveParaswapTxToUserHistory } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; @@ -137,10 +138,7 @@ export const DebtSwapActionsViaParaswap = ({ const response = await sendTx(debtSwitchTxData); await response.wait(1); try { - const { saveParaswapTxToUserHistory: addParaswapTx } = await import( - 'src/utils/swapAdapterHistory' - ); - addParaswapTx({ + saveParaswapTxToUserHistory({ protocol: 'paraswap', txHash: response.hash, swapType: state.swapType, diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx index 3231c4d98a..954ba2200d 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -243,8 +243,8 @@ export const RepayWithCollateralActionsViaCoW = ({ name: state.buyAmountToken.symbol, decimals: state.buyAmountToken.decimals, }, - srcAmount: state.buyAmountBigInt.toString(), - destAmount: state.sellAmountBigInt.toString(), + srcAmount: state.sellAmountBigInt.toString(), + destAmount: state.buyAmountBigInt.toString(), }); trackSwapOrderProgress(result.orderId, state.chainId); setState({ diff --git a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx index ce35ef6027..decf4d47e4 100644 --- a/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/SwapActions/SwapActionsViaParaswap.tsx @@ -40,9 +40,7 @@ export const SwapActionsViaParaswap = ({ const { sendTx } = useWeb3Context(); const { mutateAsync: fetchParaswapTxParams } = useParaswapSellTxParams(state.chainId); - console.log('state.slippage', state.slippage); const slippageInPercent = (Number(state.slippage) * 100).toString(); - console.log('slippageInPercent', slippageInPercent); const { requiresApproval, diff --git a/src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx b/src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx index 6dde871b11..63224ece6f 100644 --- a/src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx +++ b/src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx @@ -2,11 +2,16 @@ import { Trans } from '@lingui/macro'; import { SxProps, Typography } from '@mui/material'; import { Warning } from 'src/components/primitives/Warning'; -export const BalanceLowerThanInput = ({ sx }: { sx?: SxProps }) => { +import { SwapType } from '../../types/shared.types'; + +export const BalanceLowerThanInput = ({ sx, swapType }: { sx?: SxProps; swapType: SwapType }) => { return ( - Your balance is lower than the selected amount. + + Your {swapType === SwapType.RepayWithCollateral ? 'collateral' : ''} balance is lower than + the selected amount. + ); diff --git a/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx b/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx index 15c48b486a..8429d882fd 100644 --- a/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx +++ b/src/components/transactions/Swap/errors/shared/InsufficientBalanceGuard.tsx @@ -2,21 +2,21 @@ import { valueToBigNumber } from '@aave/math-utils'; import { SxProps } from '@mui/material'; import React, { Dispatch, useEffect } from 'react'; -import { SwapError, SwapState } from '../../types'; +import { SwapError, SwapState, SwapType } from '../../types'; import { BalanceLowerThanInput } from './BalanceLowerThanInput'; export const hasInsufficientBalance = (state: SwapState) => { - // Determine which token pays for the swap (handles inverted flows like RepayWithCollateral) - const payingToken = - state.sellAmountToken || (state.isInvertedSwap ? state.destinationToken : state.sourceToken); + // Determine which token pays and which amount to compare. + // - Default: sell side pays. + // - Inverted flows (e.g., RepayWithCollateral) use destination token. + // - DebtSwap is special: the buy side pays (repaying with the bought debt token). + const paysOnBuySide = state.swapType === SwapType.DebtSwap; + const payingToken = paysOnBuySide ? state.buyAmountToken : state.sellAmountToken; - // Prefer the computed sell amount if available; otherwise derive from the edited side - const requiredAmount = - state.sellAmountFormatted || - (state.side === 'sell' ? state.debouncedInputAmount : state.debouncedOutputAmount); + const requiredAmount = paysOnBuySide ? state.buyAmountFormatted : state.sellAmountFormatted; return valueToBigNumber(requiredAmount || 0).isGreaterThan( - valueToBigNumber(payingToken.balance || 0) + valueToBigNumber(payingToken?.balance || 0) ); }; @@ -32,17 +32,9 @@ export const InsufficientBalanceGuard = ({ isSwapFlowSelected: boolean; }) => { useEffect(() => { - const payingToken = - state.sellAmountToken || (state.isInvertedSwap ? state.destinationToken : state.sourceToken); - const requiredAmount = - state.sellAmountFormatted || - (state.side === 'sell' ? state.debouncedInputAmount : state.debouncedOutputAmount); + const insufficient = hasInsufficientBalance(state); - const hasInsufficientBalance = valueToBigNumber(requiredAmount || 0).isGreaterThan( - valueToBigNumber(payingToken.balance || 0) - ); - - if (hasInsufficientBalance) { + if (insufficient) { const isAlreadyBalanceError = state.error?.rawError instanceof Error && state.error.rawError.message === 'BalanceLowerThanInput'; @@ -59,6 +51,7 @@ export const InsufficientBalanceGuard = ({ const isBalanceError = state.error?.rawError instanceof Error && state.error.rawError.message === 'BalanceLowerThanInput'; + if (isBalanceError) { setState({ error: undefined, actionsBlocked: false }); } else if (state.actionsBlocked && !state.error?.actionBlocked) { @@ -73,18 +66,18 @@ export const InsufficientBalanceGuard = ({ state.sellAmountFormatted, state.isInvertedSwap, state.side, + state.swapType, + state.buyAmountFormatted, + state.sellAmountFormatted, ]); - const payingToken = - state.sellAmountToken || (state.isInvertedSwap ? state.destinationToken : state.sourceToken); - const requiredAmount = - state.sellAmountFormatted || - (state.side === 'sell' ? state.debouncedInputAmount : state.debouncedOutputAmount); - - if ( - valueToBigNumber(requiredAmount || 0).isGreaterThan(valueToBigNumber(payingToken.balance || 0)) - ) { - return ; + if (hasInsufficientBalance(state)) { + return ( + + ); } return null; diff --git a/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts b/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts index 0b433c5ca4..05a60a9098 100644 --- a/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts +++ b/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts @@ -1,8 +1,19 @@ +import { SwapType } from '../../types/shared.types'; import { getAssetGroup } from '../shared/assetCorrelation.helpers'; -export const getParaswapSlippage = (inputSymbol: string, outputSymbol: string): string => { +export const getParaswapSlippage = ( + inputSymbol: string, + outputSymbol: string, + swapType: SwapType +): string => { const inputGroup = getAssetGroup(inputSymbol); const outputGroup = getAssetGroup(outputSymbol); - return inputGroup === outputGroup ? '0.10' : '0.20'; + const baseSlippage = inputGroup === outputGroup ? '0.10' : '0.20'; + + if (swapType === SwapType.DebtSwap) { + return (Number(baseSlippage) * 1.5).toString(); + } + + return baseSlippage; }; diff --git a/src/components/transactions/Swap/hooks/useFlowSelector.ts b/src/components/transactions/Swap/hooks/useFlowSelector.ts index 84c3fce592..dec3de6ba2 100644 --- a/src/components/transactions/Swap/hooks/useFlowSelector.ts +++ b/src/components/transactions/Swap/hooks/useFlowSelector.ts @@ -180,7 +180,6 @@ const getHFAfterSwapParamsFromSwapType = ( fromAssetType: 'debt', toAssetType: 'debt', }; - case SwapType.RepayWithCollateral: return { fromAmount: state.sellAmountFormatted.toString(), @@ -192,6 +191,17 @@ const getHFAfterSwapParamsFromSwapType = ( fromAssetType: 'collateral', toAssetType: 'debt', }; + case SwapType.WithdrawAndSwap: + return { + fromAmount: state.sellAmountFormatted.toString(), + toAmountAfterSlippage: state.buyAmountFormatted.toString(), + fromAssetData: state.sourceReserve.reserve, + toAssetData: state.destinationReserve.reserve, + fromAssetUserData: fromAssetUserReserve, + fromAssetType: 'collateral', + toAssetType: 'none', + user, + }; default: return undefined; } diff --git a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts index fdc6e26f56..2edc80cb18 100644 --- a/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts +++ b/src/components/transactions/Swap/hooks/useSwapOrderAmounts.ts @@ -110,10 +110,10 @@ export const useSwapOrderAmounts = ({ ) { networkFeeAmountFormattedInSell = valueToBigNumber(networkFeeAmountFormattedInSell) .multipliedBy(3) - .toString(); + .toFixed(); networkFeeAmountFormattedInBuy = valueToBigNumber(networkFeeAmountFormattedInBuy) .multipliedBy(3) - .toString(); + .toFixed(); } networkFeeAmountInSellFormatted = networkFeeAmountFormattedInSell; networkFeeAmountInBuyFormatted = networkFeeAmountFormattedInBuy; @@ -122,7 +122,7 @@ export const useSwapOrderAmounts = ({ // On a classic sell market order, we send the input amount and receive the amount after partner fees and slippage if (marketOrderKind === OrderKind.SELL) { - sellAmountFormatted = state.inputAmount.toString(); + sellAmountFormatted = state.inputAmount; const outputAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).minus( networkFeeAmountFormattedInBuy @@ -133,10 +133,10 @@ export const useSwapOrderAmounts = ({ const outputAmountAfterSlippage = valueToBigNumber( outputAmountAfterPartnerFees ).multipliedBy(1 - Number(state.slippage) / 100); - buyAmountFormatted = outputAmountAfterSlippage.toString(); + buyAmountFormatted = outputAmountAfterSlippage.toFixed(); } else { // TODO: check if this is correct - buyAmountFormatted = state.inputAmount.toString(); + buyAmountFormatted = state.inputAmount; const sellAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).plus( networkFeeAmountFormattedInSell @@ -147,19 +147,19 @@ export const useSwapOrderAmounts = ({ const sellAmountAfterSlippage = valueToBigNumber(sellAmountAfterPartnerFees).multipliedBy( 1 + Number(state.slippage) / 100 ); - sellAmountFormatted = sellAmountAfterSlippage.toString(); + sellAmountFormatted = sellAmountAfterSlippage.toFixed(); } } else if (state.orderType === OrderType.LIMIT) { if (state.side === 'sell') { // on a sell limit order, we send the input amount and receive the amount after partner fees (no slippage applied) - sellAmountFormatted = state.inputAmount.toString(); + sellAmountFormatted = state.inputAmount; const buyAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).minus( networkFeeAmountFormattedInBuy ); buyAmountFormatted = valueToBigNumber(buyAmountAfterNetworkFees) .minus(partnerFeeAmount) - .toString(); + .toFixed(); } else { // on a buy limit order, we receive exactly the output amount and send the input amount after partner fees (no slippage applied) const sellAmountAfterNetworkFees = valueToBigNumber(state.inputAmount).plus( @@ -167,9 +167,9 @@ export const useSwapOrderAmounts = ({ ); sellAmountFormatted = valueToBigNumber(sellAmountAfterNetworkFees) .plus(partnerFeeAmount) - .toString(); + .toFixed(); - buyAmountFormatted = state.outputAmount.toString(); + buyAmountFormatted = state.outputAmount; } } } else { @@ -208,10 +208,10 @@ export const useSwapOrderAmounts = ({ ) { networkFeeAmountFormattedInSell = valueToBigNumber(networkFeeAmountFormattedInSell) .multipliedBy(3) - .toString(); + .toFixed(); networkFeeAmountFormattedInBuy = valueToBigNumber(networkFeeAmountFormattedInBuy) .multipliedBy(3) - .toString(); + .toFixed(); } // console.debug('networkFeeAmountFormattedInSell after trick', networkFeeAmountFormattedInSell); @@ -222,20 +222,20 @@ export const useSwapOrderAmounts = ({ if (state.orderType === OrderType.MARKET) { // on a classic inverted sell market order, we send the output amount and receive the input amount after partner fees and slippage if (marketOrderKind === OrderKind.SELL) { - sellAmountFormatted = state.outputAmount.toString(); + sellAmountFormatted = state.outputAmount; const inputAmountAfterNetworkFees = valueToBigNumber(state.inputAmount).minus( networkFeeAmountFormattedInBuy ); const inputAmountAfterPartnerFees = valueToBigNumber(inputAmountAfterNetworkFees) .minus(partnerFeeAmount) - .toString(); + .toFixed(); const inputAmountAfterSlippage = valueToBigNumber(inputAmountAfterPartnerFees) .multipliedBy(1 + Number(state.slippage) / 100) - .toString(); + .toFixed(); buyAmountFormatted = inputAmountAfterSlippage; } else { - buyAmountFormatted = state.inputAmount.toString(); + buyAmountFormatted = state.inputAmount; const sellAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).plus( networkFeeAmountFormattedInSell @@ -246,29 +246,29 @@ export const useSwapOrderAmounts = ({ const sellAmountAfterSlippage = valueToBigNumber(sellAmountAfterPartnerFees).multipliedBy( 1 + Number(state.slippage) / 100 ); - sellAmountFormatted = sellAmountAfterSlippage.toString(); + sellAmountFormatted = sellAmountAfterSlippage.toFixed(); } } else { if (processedSide === 'buy') { // on an inverted buy limit order, we buy the input amount and sell the output amount after partner fees (no slippage applied) - buyAmountFormatted = state.inputAmount.toString(); + buyAmountFormatted = state.inputAmount; const sellAmountAfterNetworkFees = valueToBigNumber(state.outputAmount).plus( networkFeeAmountFormattedInSell ); sellAmountFormatted = valueToBigNumber(sellAmountAfterNetworkFees) .plus(partnerFeeAmount) - .toString(); + .toFixed(); } else { // on an inverted sell limit order, we sell the output amount and buy the input amount after partner fees (no slippage applied) - sellAmountFormatted = state.outputAmount.toString(); + sellAmountFormatted = state.outputAmount; const buyAmountAfterNetworkFees = valueToBigNumber(state.inputAmount).minus( networkFeeAmountFormattedInBuy ); buyAmountFormatted = valueToBigNumber(buyAmountAfterNetworkFees) .minus(partnerFeeAmount) - .toString(); + .toFixed(); } } } @@ -293,10 +293,10 @@ export const useSwapOrderAmounts = ({ const sellAmountUSD = valueToBigNumber(sellAmountFormatted) .multipliedBy(sellTokenPriceUsd) - .toString(); + .toFixed(); const buyAmountUSD = valueToBigNumber(buyAmountFormatted) .multipliedBy(buyTokenPriceUsd) - .toString(); + .toFixed(); const sellAmountBigInt = BigInt( normalizeBN(sellAmountFormatted, -sellAmountToken.decimals).toFixed(0) @@ -319,7 +319,7 @@ export const useSwapOrderAmounts = ({ processedSide, networkFeeAmountInSellFormatted, networkFeeAmountInBuyFormatted, - partnerFeeAmountFormatted: partnerFeeAmount.toString(), + partnerFeeAmountFormatted: partnerFeeAmount.toFixed(), partnerFeeBps: partnetFeeBps, }); }, [ diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index e52bc0b317..172cfaf335 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -44,9 +44,15 @@ const getTokenSelectionForQuote = ( ): TokenSelectionParams => { // Note: Consider the quote an approximation, we prefer underlying address for better support while aTokens value should always match const srcTokenObj = invertedQuoteRoute ? state.destinationToken : state.sourceToken; - const srcToken = srcTokenObj.underlyingAddress; + const srcToken = + state.useFlashloan == false && state.provider === SwapProvider.PARASWAP + ? srcTokenObj.addressToSwap + : srcTokenObj.underlyingAddress; const destTokenObj = invertedQuoteRoute ? state.sourceToken : state.destinationToken; - const destToken = destTokenObj.underlyingAddress; + const destToken = + state.useFlashloan == false && state.provider === SwapProvider.PARASWAP + ? destTokenObj.addressToSwap + : destTokenObj.underlyingAddress; const srcDecimals = invertedQuoteRoute ? state.destinationToken.decimals @@ -170,7 +176,8 @@ export const useSwapQuote = ({ } else if (quote.provider === 'paraswap') { const paraswapSlippage = getParaswapSlippage( state.sourceToken.symbol || '', - state.destinationToken.symbol || '' + state.destinationToken.symbol || '', + state.swapType ); slippage = paraswapSlippage; autoSlippage = paraswapSlippage; @@ -302,7 +309,14 @@ const useMultiProviderSwapQuoteQuery = ({ side, } = useMemo( () => getTokenSelectionForQuote(requiresQuoteInverted, state), - [provider, state.sourceToken, state.destinationToken, state.side, requiresQuoteInverted] + [ + state.provider, + state.sourceToken, + state.destinationToken, + state.side, + requiresQuoteInverted, + state.useFlashloan, + ] ); return useQuery({ @@ -401,7 +415,6 @@ const useMultiProviderSwapQuoteQuery = ({ // Basic pre-blockers to avoid provider requests const isSameTokenPair = state.sourceToken.addressToSwap === state.destinationToken.addressToSwap; - const isInsufficientBalance = hasInsufficientBalance(state); const isFlashloanDisabled = hasFlashLoanDisabled(state); return ( @@ -409,9 +422,7 @@ const useMultiProviderSwapQuoteQuery = ({ ((state.orderType === OrderType.LIMIT && !state.swapRate) || state.orderType === OrderType.MARKET) && hasPositiveUserAmount && - !state.actionsBlocked && !isSameTokenPair && - !isInsufficientBalance && !isFlashloanDisabled && !state.mainTxState.success && !state.mainTxState.txHash && // Don't fetch quotes once transaction is sent diff --git a/src/components/transactions/Swap/modals/request/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Swap/modals/request/WithdrawAndSwapModalContent.tsx index f1333dfd1f..531f5b709b 100644 --- a/src/components/transactions/Swap/modals/request/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Swap/modals/request/WithdrawAndSwapModalContent.tsx @@ -86,11 +86,14 @@ export const WithdrawAndSwapModalContent = ({ underlyingAsset }: { underlyingAss showTitle: false, showSwitchInputAndOutputAssetsButton: false, titleTokenPostfix: 'and swap', - inputBalanceTitle: 'Available', + inputBalanceTitle: 'Supplied', outputBalanceTitle: 'Current balance', showOutputBalance: true, inputInputTitle: 'Withdraw', outputInputTitle: 'And swap to', + resultScreenTitleItems: 'and withdrawn', + resultScreenTokensFromTitle: 'Withdrawn', + resultScreenTokensToTitle: 'Received', // Note: Withdraw And Swap order is not inverted inputInputTitleSell: 'Withdraw', diff --git a/src/hooks/useTransactionHistory.tsx b/src/hooks/useTransactionHistory.tsx index faca945225..727ac63e80 100644 --- a/src/hooks/useTransactionHistory.tsx +++ b/src/hooks/useTransactionHistory.tsx @@ -246,161 +246,161 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool const fetchCowSwapsHistory = async (first: number, skip: number) => { const chainId = currentMarketData.chainId; - if (!isChainIdSupportedByCoWProtocol(chainId)) { - return []; - } - - const orderBookApi = new OrderBookApi({ chainId: chainId, env: COW_ENV }); - const orders = await orderBookApi.getOrders({ - owner: account, - limit: first, - offset: skip, - }); - - const filteredCowAaveOrders = ( - await Promise.all( - orders.map(async (order) => { - try { - const appData = JSON.parse(order.fullAppData ?? '{}'); - const appCode = appData.appCode; - if (APP_CODE_VALUES.includes(appCode)) { - return order; + let apiTxns: TransactionHistoryItemUnion[] = []; + if (isChainIdSupportedByCoWProtocol(chainId)) { + const orderBookApi = new OrderBookApi({ chainId: chainId, env: COW_ENV }); + const orders = await orderBookApi.getOrders({ + owner: account, + limit: first, + offset: skip, + }); + + const filteredCowAaveOrders = ( + await Promise.all( + orders.map(async (order) => { + try { + const appData = JSON.parse(order.fullAppData ?? '{}'); + const appCode = appData.appCode; + + if (APP_CODE_VALUES.includes(appCode)) { + return order; + } + } catch (error) { + console.error('Error parsing app data:', error); } - } catch (error) { - console.error('Error parsing app data:', error); - } - return null; - }) - ) - ).filter((order) => order !== null); - - const apiTxns = await Promise.all( - filteredCowAaveOrders.map>(async (order) => { - const erc20Service = new ERC20Service(getProvider); - - // Helper function to find token info from pool reserves - const findTokenFromReserves: (tokenAddress: string) => - | { - address: string; - name: string; - symbol: string; - decimals: number; - isAToken?: boolean; + return null; + }) + ) + ).filter((order) => order !== null); + + apiTxns = await Promise.all( + filteredCowAaveOrders.map>(async (order) => { + const erc20Service = new ERC20Service(getProvider); + + // Helper function to find token info from pool reserves + const findTokenFromReserves: (tokenAddress: string) => + | { + address: string; + name: string; + symbol: string; + decimals: number; + isAToken?: boolean; + } + | undefined = (tokenAddress: string) => { + const reserve = reserves?.find( + (reserve) => + reserve.underlyingAsset.toLowerCase() === tokenAddress.toLowerCase() || + reserve.aTokenAddress.toLowerCase() === tokenAddress.toLowerCase() + ); + + if (reserve) { + return { + address: tokenAddress, + name: reserve.name, + symbol: reserve.symbol, + decimals: reserve.decimals, + isAToken: reserve.aTokenAddress.toLowerCase() === tokenAddress.toLowerCase(), + }; } - | undefined = (tokenAddress: string) => { - const reserve = reserves?.find( - (reserve) => - reserve.underlyingAsset.toLowerCase() === tokenAddress.toLowerCase() || - reserve.aTokenAddress.toLowerCase() === tokenAddress.toLowerCase() - ); - - if (reserve) { - return { - address: tokenAddress, - name: reserve.name, - symbol: reserve.symbol, - decimals: reserve.decimals, - isAToken: reserve.aTokenAddress.toLowerCase() === tokenAddress.toLowerCase(), - }; + return undefined; + }; + + let srcToken = findTokenFromReserves(order.sellToken); + let destToken = findTokenFromReserves(order.buyToken); + + // Fallback to TOKEN_LIST if not found in pool reserves (for non-Aave tokens) + if (!srcToken) { + srcToken = TOKEN_LIST.tokens.find( + (token) => + token.chainId == chainId && + token.address.toLowerCase() == order.sellToken.toLowerCase() + ); } - return undefined; - }; - let srcToken = findTokenFromReserves(order.sellToken); - let destToken = findTokenFromReserves(order.buyToken); + if (!destToken) { + destToken = TOKEN_LIST.tokens.find( + (token) => + token.chainId == chainId && + token.address.toLowerCase() == order.buyToken.toLowerCase() + ); + } - // Fallback to TOKEN_LIST if not found in pool reserves (for non-Aave tokens) - if (!srcToken) { - srcToken = TOKEN_LIST.tokens.find( - (token) => - token.chainId == chainId && - token.address.toLowerCase() == order.sellToken.toLowerCase() - ); - } + // Custom tokens - only if erc20Service is available + if (!srcToken && erc20Service) { + srcToken = await erc20Service + .getTokenInfo(order.sellToken, chainId) + .then((token) => ({ ...token, underlyingAsset: token.address })) + .catch(() => { + console.error('Error fetching custom token', order.sellToken); + return undefined; + }); + } - if (!destToken) { - destToken = TOKEN_LIST.tokens.find( - (token) => - token.chainId == chainId && - token.address.toLowerCase() == order.buyToken.toLowerCase() - ); - } + if (!destToken && erc20Service) { + destToken = await erc20Service + .getTokenInfo(order.buyToken, chainId) + .then((token) => ({ ...token, underlyingAsset: token.address })) + .catch(() => { + console.error('Error fetching custom token', order.buyToken); + return undefined; + }); + } - // Custom tokens - only if erc20Service is available - if (!srcToken && erc20Service) { - srcToken = await erc20Service - .getTokenInfo(order.sellToken, chainId) - .then((token) => ({ ...token, underlyingAsset: token.address })) - .catch(() => { - console.error('Error fetching custom token', order.sellToken); - return undefined; - }); - } + // Otherwise, we can not display it + if (!srcToken || !destToken) { + return null; + } - if (!destToken && erc20Service) { - destToken = await erc20Service - .getTokenInfo(order.buyToken, chainId) - .then((token) => ({ ...token, underlyingAsset: token.address })) - .catch(() => { - console.error('Error fetching custom token', order.buyToken); + // We define the Order's swap type based on the app code + const appCode = (() => { + try { + return JSON.parse(order.fullAppData ?? '{}').appCode; + } catch (e) { + console.error('Error parsing order.fullAppData:', order.fullAppData, e); return undefined; - }); - } - - // Otherwise, we can not display it - if (!srcToken || !destToken) { - return null; - } - - // We define the Order's swap type based on the app code - const appCode = (() => { - try { - return JSON.parse(order.fullAppData ?? '{}').appCode; - } catch (e) { - console.error('Error parsing order.fullAppData:', order.fullAppData, e); - return undefined; - } - })(); - - const swapType = Object.entries(APP_CODE_PER_SWAP_TYPE).find( - ([, code]) => code === appCode - )?.[0] as keyof typeof APP_CODE_PER_SWAP_TYPE | undefined; - - return { - action: - swapTypeToTransactionHistoryItemType(swapType ?? SwapType.Swap) ?? ActionName.Swap, - id: order.uid, - timestamp: new Date(order.creationDate).toISOString(), - underlyingSrcToken: { - underlyingAsset: srcToken.address, - name: srcToken.name, - symbol: srcToken.symbol, - decimals: srcToken.decimals, - }, - srcAToken: srcToken.isAToken, - underlyingDestToken: { - underlyingAsset: destToken.address, - name: destToken.name, - symbol: destToken.symbol, - decimals: destToken.decimals, - }, - destAToken: destToken.isAToken, - protocol: 'cow', - srcAmount: - order.executedSellAmount && order.executedBuyAmount != '0' - ? order.executedSellAmount - : order.sellAmount, - destAmount: - order.executedBuyAmount && order.executedSellAmount != '0' - ? order.executedBuyAmount - : order.buyAmount, - status: order.status, - orderId: order.uid, - chainId: chainId, - }; - }) - ).then((txns) => txns.filter((txn) => txn !== null)); + } + })(); + + const swapType = Object.entries(APP_CODE_PER_SWAP_TYPE).find( + ([, code]) => code === appCode + )?.[0] as keyof typeof APP_CODE_PER_SWAP_TYPE | undefined; + + return { + action: + swapTypeToTransactionHistoryItemType(swapType ?? SwapType.Swap) ?? ActionName.Swap, + id: order.uid, + timestamp: new Date(order.creationDate).toISOString(), + underlyingSrcToken: { + underlyingAsset: srcToken.address, + name: srcToken.name, + symbol: srcToken.symbol, + decimals: srcToken.decimals, + }, + srcAToken: srcToken.isAToken, + underlyingDestToken: { + underlyingAsset: destToken.address, + name: destToken.name, + symbol: destToken.symbol, + decimals: destToken.decimals, + }, + destAToken: destToken.isAToken, + protocol: 'cow', + srcAmount: + order.executedSellAmount && order.executedBuyAmount != '0' + ? order.executedSellAmount + : order.sellAmount, + destAmount: + order.executedBuyAmount && order.executedSellAmount != '0' + ? order.executedBuyAmount + : order.buyAmount, + status: order.status, + orderId: order.uid, + chainId: chainId, + }; + }) + ).then((txns) => txns.filter((txn) => txn !== null)); + } // Merge in locally stored adapter entries (CoW + ParaSwap) for this account/chain // This is needed because Paraswap txs are not included in the subgraph yet and CoW adapters orders are sent by the adapters instances therefore not returned by asking for the user's trades. diff --git a/src/locales/el/messages.js b/src/locales/el/messages.js index 350eafcd67..3a2cc2209f 100644 --- a/src/locales/el/messages.js +++ b/src/locales/el/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Εάν ΔΕΝ ξεκλειδώσετε εντός \",[\"0\"],\" του παραθύρου ξεκλειδώματος, θα πρέπει να ενεργοποιήσετε ξανά τη διαδικασία ψύξης.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Η συμμετοχή σε αυτό το αποθεματικό \",[\"symbol\"],\" δίνει ετήσιες ανταμοιβές.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Ανώτατο όριο δανεισμού\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Ο σταθερός δανεισμός δεν είναι ενεργοποιημένος\",\"/yQcJM\":\"Συνολική αξία\",\"00AB2i\":\"Ο χρήστης δεν δανείστηκε το καθορισμένο νόμισμα\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να προμηθεύσετε σε αυτό το αποθεματικό. Μπορείτε να προμηθεύσετε το υπόλοιπο του πορτοφολιού σας μέχρι να επιτευχθεί το ανώτατο όριο προμηθειών.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Παρακαλούμε συνδέστε ένα πορτοφόλι για να δείτε τις προσωπικές σας πληροφορίες εδώ.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Ρευστοποίηση <0/> κατώτατο όριο\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Προβολή λεπτομερειών\",\"2FYpfJ\":\"Περισσότερα\",\"2O3qp5\":\"Διαθέσιμη ρευστότητα\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Ο σταθερός δανεισμός είναι ενεργοποιημένος\",\"34Qfwy\":\"Υπέρβαση του ανώτατου ορίου δανεισμού\",\"39eQRj\":[\"Δανεισμός \",[\"symbol\"]],\"3BL1xB\":\"Σύνολο παρεχόμενων\",\"3K0oMo\":\"Υπολειπόμενη προσφορά\",\"3MoZhl\":\"Δεν υπάρχουν επαρκείς εξασφαλίσεις για την κάλυψη ενός νέου δανείου\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Προσφορά \",[\"symbol\"]],\"3mXg0z\":\"Μέγιστο LTV\",\"3q3mFy\":\"Αποπληρωμή\",\"3qsjtp\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα παρεχόμενα περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"3rL+os\":\"Μπορείτε να αποσύρετε τα περιουσιακά σας στοιχεία από τη Μονάδα Ασφαλείας μόνο αφού λήξει η περίοδος αναμονής και το παράθυρο ξεκλειδώματος είναι ενεργό.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Αποτελέσματα ψηφοφορίας\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"ΜΕΓΙΣΤΟ\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"τεκμηρίωση\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο της προσφοράς του. Μόνο \",[\"messageValue\"],\" μπορεί να παρασχεθεί σε αυτή την αγορά.\"],\"5cZ/KX\":\"Η προσφορά μεταβλητού χρέους δεν είναι μηδενική\",\"5che++\":\"Για να ζητήσετε πρόσβαση σε αυτή την αδειοδοτημένη αγορά, επισκεφθείτε την ιστοσελίδα: <0>Όνομα Παρόχου Πρόσβασης\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Απαιτούμενη δράση επιδότησης\",\"5rsnKT\":\"Διαθέσιμες ανταμοιβές\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Επισκόπηση\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Εγγύηση\",\"65A04M\":\"Ισπανικά\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Αποπληρωμή \",[\"symbol\"]],\"6Xr0UU\":\"Ψύξη...\",\"6bxci/\":\"Δύναμη ψήφου\",\"6f8S68\":\"Αγορές\",\"6g1gi0\":\"Προτάσεις\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Αλλαγή Δικτύου\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Συντελεστής υγείας\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Επιτεύχθηκε\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Διεκδικήστε τα όλα\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Ταμπλό\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Προσοχή - Είστε πολύ κοντά στην ρευστοποίηση. Εξετάστε το ενδεχόμενο να καταθέσετε περισσότερες εγγυήσεις ή να εξοφλήσετε κάποιες από τις δανειακές σας θέσεις\",\"87pUEW\":[\"Το πορτοφόλι σας \",[\"name\"],\" είναι άδειο. Αγοράστε ή μεταφέρετε περιουσιακά στοιχεία.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"Όλες οι προτάσεις\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Μη έγκυρο ποσό για νομισματοκοπία\",\"8Z5FPv\":\"Αποσυνδέστε το πορτοφόλι\",\"8Zz7s5\":\"περιουσιακά στοιχεία\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Ποσοστό χρησιμοποίησης\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Εμφάνιση\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Εισέρχεστε σε λειτουργία απομόνωσης\",\"9CDK3/\":[\"Ο δανεισμός δεν είναι επί του παρόντος διαθέσιμος για \",[\"0\"],\".\"],\"9GIj3z\":\"Μέγεθος Αποθεματικού\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Απαρτία\",\"9QHoGr\":\"Τρέχουσες ψήφοι\",\"9Rw96f\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο δανεισμού του. Υπάρχει μόνο \",[\"messageValue\"],\" διαθέσιμο για δανεισμό από αυτή την αγορά.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Αυτό το περιουσιακό στοιχείο έχει φτάσει στο όριο της προσφοράς του. Τίποτα δεν είναι διαθέσιμο για προμήθεια από αυτή την αγορά.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Δεδομένου ότι πρόκειται για ένα δοκιμαστικό δίκτυο, μπορείτε να αποκτήσετε οποιοδήποτε από τα περιουσιακά στοιχεία αν έχετε ETH στο πορτοφόλι σας\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Τα δάνεια σας\",\"AV7cGz\":\"Αναθεώρηση λεπτομερειών έγκρισης συναλλαγής\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Η δύναμη δανεισμού και τα περιουσιακά στοιχεία είναι περιορισμένα λόγω της λειτουργίας απομόνωσης.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Η χρήση εγγύησης είναι περιορισμένη λόγω της λειτουργίας απομόνωσης. <0>Μάθετε περισσότερα\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Κατηγορία περιουσιακών στοιχείων\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Βρύση\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Μεγιστο\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Διεκδίκηση \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Βρύση\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Η εγγύηση είναι (ως επί το πλείστον) το ίδιο νόμισμα που δανείζεται\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"Το υποκείμενο περιουσιακό στοιχείο δεν μπορεί να διασωθεί\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave ανά μήνα\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Εξασφάλιση\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Απενεργοποιημένο\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Ανάληψη \",[\"symbol\"]],\"EdQY6l\":\"Κανένα\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Μάθετε περισσότερα.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Δανεισμός χρησιμοποιημένης ισχύος\",\"FPKEug\":\"Η λειτουργία δεν υποστηρίζεται\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"ενεργοποίηση\",\"Fjw9N+\":\"Περιουσιακά στοιχεία προς προμήθεια\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Περιουσιακά Στοιχεία\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"τελειώνει\",\"GtP2hp\":[\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη λειτουργία Αποδοτικότητας (E-Mode) για την κατηγορία \",[\"0\"],\". Για να διαχειριστείτε τις κατηγορίες E-Mode επισκεφθείτε τον <0>Πίνακα ελέγχου.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"η\"],\"HmkYqM\":\"Παράθυρο ξεκλειδώματος\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"Το συνολικό ποσό των περιουσιακών σας στοιχείων σε δολάρια ΗΠΑ που μπορούν να χρησιμοποιηθούν ως εγγύηση για δανεισμό περιουσιακών στοιχείων.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Περίοδος ψύξης\",\"IaA40H\":\"Ρευστοποίηση στο\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Κλειδώστε\",\"JZMxX0\":\"Δεν υπάρχει αρκετό υπόλοιπο στο πορτοφόλι σας\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Υπόλοιπο πορτοφολιού\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Αυτό αντιπροσωπεύει το κατώτατο όριο στο οποίο μια θέση δανεισμού θα θεωρηθεί υποεγγυημένη και θα υπόκειται σε ρευστοποίηση για κάθε εγγύηση. Για παράδειγμα, εάν μια εγγύηση έχει κατώτατο όριο ρευστοποίησης 80%, αυτό σημαίνει ότι η θέση θα ρευστοποιηθεί όταν η αξία του χρέους ανέρχεται στο 80% της αξίας της εγγύησης.\",\"KYAjf3\":\"Απομονωμένο\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Λήγει\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Λάθος δίκτυο\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Κλείδωμα\",\"KuBTQq\":\"Εισάγετε διεύθυνση ETH\",\"KvG1xW\":\"Διεκδίκηση\",\"L+8Lzs\":\"Τρέχον LTV\",\"L+qiq+\":\"Αγορά\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Δεν υπάρχει δικαίωμα ψήφου\",\"LL0zks\":\"Μπορεί να αποτελέσει εγγύηση\",\"LLdJWu\":\"Διεκδικήσιμο AAVE\",\"LSIpNK\":\"Δεν επιτρέπεται ο δανεισμός και η αποπληρωμή στο ίδιο block\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Διεύθυνση παραλήπτη\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"προβολή κλειδώματος\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, μεταβλητό\",\"MghdTe\":\"Εάν ο συντελεστής υγείας πέσει κάτω από το 1, ενδέχεται να ενεργοποιηθεί η ρευστοποίηση των εγγυήσεών σας.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Ακυρώσατε τη συναλλαγή.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Μη έγκυρη τιμή επιστροφής της συνάρτησης εκτελεστή flashloan\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Εκκρεμεί...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Τίποτα κλειδωμένο\",\"Nh9DAo\":[[\"m\"],\"λ\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Υπέρβαση του ανώτατου ορίου νομισματοκοπείου χωρίς αντίκρισμα\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Επισκόπηση πρότασης\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"απενεργοποιημένο\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Ανάληψη\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"Όταν πραγματοποιείται ρευστοποίηση, οι ρευστοποιητές επιστρέφουν έως και το 50% του ανεξόφλητου δανεισμένου ποσού για λογαριασμό του δανειολήπτη. Σε αντάλλαγμα, μπορούν να αγοράσουν τις εξασφαλίσεις με έκπτωση και να κρατήσουν τη διαφορά (ποινή ρευστοποίησης) ως μπόνους.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα δανειακά περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Κατώτατο όριο ρευστοποίησης\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Δεν έχει επιτευχθεί\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Διαφορικό\",\"RNK49r\":\"Μη έγκυρη υπογραφή\",\"RS0o7b\":\"Κατάσταση\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Λεπτομέρειες πρότασης\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Το περιουσιακό στοιχείο δεν περιλαμβάνεται στον κατάλογο\",\"Rj01Fz\":\"Σύνδεσμοι\",\"RmWFEe\":\"Κλείδωμα APR\",\"RtBLm7\":\"Ο συντελεστής υγείας είναι μικρότερος από το όριο ρευστοποίησης\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Ενεργοποιημένο\",\"SDav7h\":\"Κεφάλαια στην Μονάδα Ασφάλειας\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Σύνολο διαθέσιμων\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Απενεργοποίηση E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Ο πάροχος διευθύνσεων κοινόχρηστων ταμείων δεν είναι εγγεγραμμένος\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Δανεισμός\",\"TFxQlw\":\"Ποινή ρευστοποίησης\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"To περιουσιακό στοιχείο μπορεί να χρησιμοποιηθεί ως εγγύηση μόνο σε λειτουργία απομόνωσης.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος σταθερού επιτοκίου σε αυτό το αποθεματικό\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Το περιουσιακό στοιχείο δεν είναι δανείσιμο σε λειτουργία απομόνωσης\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Λεπτομέρειες\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"Τα κεφάλαια αυτά έχουν δανειστεί και δεν είναι διαθέσιμα για ανάληψη αυτή τη στιγμή.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Ο δείκτης μέγιστου LTV αντιπροσωπεύει τη μέγιστη δανειοληπτική ικανότητα μιας συγκεκριμένης εγγύησης. Για παράδειγμα, εάν μια εγγύηση έχει LTV 75%, ο χρήστης μπορεί να δανειστεί έως και 0,75 ETH στο κύριο νόμισμα για κάθε 1 ETH αξίας εγγύησης.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Δεν υπάρχουν ανταμοιβές για διεκδίκηση\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Συνδέστε το πορτοφόλι\",\"VMfYUK\":\"Ασφάλεια των κατατεθειμένων εξασφαλίσεών σας έναντι των δανειζόμενων περιουσιακών στοιχείων και της υποκείμενης αξίας τους.\",\"VOAZJh\":\"Σύνολο δανείων\",\"ViKYxK\":\"ΥΠΕΡ\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Αναθεώρηση λεπτομερειών συναλλαγής\",\"W5hVah\":\"Τίποτα δεν έχει παρασχεθεί ακόμη\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Μη υποστηριζόμενο\",\"WNGZwH\":\"Το E-Mode αυξάνει το LTV σας για μια επιλεγμένη κατηγορία περιουσιακών στοιχείων έως και <0/>. <1>Μάθετε περισσότερα\",\"WPWG/y\":\"Κατάσταση & διαμόρφωση αποθεματικού\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"Ο χρήστης δεν μπορεί να κάνει ανάληψη μεγαλύτερη από το διαθέσιμο υπόλοιπο\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Για να δανειστείτε πρέπει να προσκομίσετε οποιοδήποτε περιουσιακό στοιχείο που θα χρησιμοποιηθεί ως εγγύηση.\",\"X/ITG9\":\"Κείμενο σφάλματος αντιγραφής\",\"X3Pp6x\":\"Χρησιμοποιείται ως εγγύηση\",\"X4Zt7j\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή η εφεδρεία βρίσκεται σε παύση\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"ΨΗΦΙΣΤΕ ΚΑΤΑ\",\"YDIOks\":\"Ενεργοποίηση E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"Εάν το δάνειο προς αξία υπερβεί το όριο ρευστοποίησης, η παρεχόμενη εγγύηση σας μπορεί να ρευστοποιηθεί.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Δεν τηρήθηκαν οι όροι επανεξισορρόπησης των επιτοκίων\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Διακυβέρνηση Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Λειτουργία αποδοτικότητας (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Μέγιστη περικοπή\",\"ZfUGFb\":\"Πριν από την προμήθεια\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Αξία ρευστοποίησης\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"ενεργοποιημένο\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Χρόνος που απομένει για το ξεκλείδωμα\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Ψηφίστε ΚΑΤΑ\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Οι παράμετροι της συστοιχίας που θα έπρεπε να είναι ίσου μήκους δεν είναι\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Δανεισμός APY, μεταβλητό\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Προειδοποίηση περιόδου ψύξης\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Περιουσιακό στοιχείο\",\"bXQ/Og\":\"Μοιραστείτε το στο twitter\",\"bXr0ee\":\"Τα απομονωμένα περιουσιακά στοιχεία έχουν περιορισμένη δανειοληπτική ικανότητα και άλλα περιουσιακά στοιχεία δεν μπορούν να χρησιμοποιηθούν ως εγγύηση.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Το αιτούμενο ποσό είναι μεγαλύτερο από το μέγιστο μέγεθος δανείου στη λειτουργία σταθερού επιτοκίου\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Προσφορά\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Η διεύθυνση δεν είναι συμβόλαιο\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Δεν μπορείτε να αποσύρετε αυτό το ποσό, διότι θα προκληθεί κλήση εγγύησης\",\"cBc+4A\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να δανειστείτε. Μπορείτε να δανειστείτε με βάση την εξασφάλισή σας και μέχρι να επιτευχθεί το ανώτατο όριο δανεισμού.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Λεπτομέρειες κινδύνου\",\"cNT+ij\":\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη Λειτουργία Αποδοτικότητας (E-Mode) και τη λειτουργία Απομόνωσης. Για να διαχειριστείτε τη λειτουργία E-Mode και τη λειτουργία Απομόνωσης, επισκεφθείτε τον <0>Πίνακα ελέγχου.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Ψηφίστε ΥΠΕΡ\",\"ckf7gX\":[\"Αποπληρώνοντας \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Συζήτηση φόρουμ\",\"csDS2L\":\"Διαθέσιμο\",\"cu7Stb\":\"Δεν συμμετείχατε στην παρούσα πρόταση\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Διακυβέρνηση\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Η επικύρωση του Ltv απέτυχε\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Δεν έχετε αρκετά χρήματα στο πορτοφόλι σας για να αποπληρώσετε ολόκληρο το ποσό. Εάν προχωρήσετε στην αποπληρωμή με το τρέχον ποσό των χρημάτων σας, θα εξακολουθείτε να έχετε μια μικρή θέση δανεισμού στο ταμπλό σας.\",\"dXUQFX\":\"Περιουσιακά στοιχεία προς δανεισμό\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Χρησιμοποίηση εγγυήσεων\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Η δράση απαιτεί ενεργό απόθεμα\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Σύνολο δανεικών\",\"ecqEvn\":\"Το υπόλοιπο των εγγυήσεων είναι 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Ξεκλειδώστε τώρα\",\"evw5ha\":\"Καθαρή αξία\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Αλλάξατε σε ποσοστό \",[\"0\"]],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Το τρέχον δάνειο προς αξία με βάση τις παρεχόμενες εξασφαλίσεις σας.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Υπόλοιπο\",\"fu1Dbh\":[\"Ανάληψη \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Λειτουργία Testnet\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"Ο χρήστης προσπαθεί να δανειστεί πολλαπλά περιουσιακά στοιχεία, συμπεριλαμβανομένου ενός απομονωμένου περιουσιακού στοιχείου\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Η μηδενική διεύθυνση δεν είναι έγκυρη\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Το καθαρό ΑΡΥ είναι η συνδυασμένη επίδραση όλων των θέσεων προσφοράς και δανεισμού στην καθαρή αξία, συμπεριλαμβανομένων των κινήτρων. Είναι δυνατόν να υπάρχει αρνητικό καθαρό APY εάν το χρεωστικό APY είναι υψηλότερο από το προσφερόμενο APY.\",\"gzcch9\":\"Μη έγκυρη αμοιβή πρωτοκόλλου γέφυρας\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Καθαρό APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Το % της συνολικής δανειοληπτικής σας δύναμης που χρησιμοποιείται. Αυτό βασίζεται στο ποσό της παρεχόμενης εξασφάλισής σας και στο συνολικό ποσό που μπορείτε να δανειστείτε.\",\"hehnjM\":\"Ποσό\",\"hjDCQr\":\"Υπήρξε κάποιο σφάλμα. Προσπαθήστε να αλλάξετε τις παραμέτρους ή <0><1>αντιγράψτε το σφάλμα\",\"hom7qf\":\"Διεκδίκηση\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Δανεισμός \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Ασυνεπείς παράμετροι flashloan\",\"iEPVHF\":\"Δεν έχει αρκετή δύναμη ψήφου για να συμμετάσχει στην παρούσα πρόταση\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"Ψηφίσατε \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Εισάγετε ένα ποσό\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens δεν είναι το ίδιο με το να τα κλειδώνετε. Εάν επιθυμείτε να κλειδώσετε τα\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"H χρήση εγγυήσεων είναι περιορισμένη λόγω της λειτουργίας Απομόνωσης.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Προμηθεύοντας το\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Απενεργοποίηση E-Mode\",\"jKYzR1\":\"Ενεργοποίηση E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"δ\"],\"jbFMap\":\"Χρόνος ψύξης που έχει απομείνει\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"Στο E-Mode ορισμένα περιουσιακά στοιχεία δεν είναι δανείσιμα. Βγείτε από το E-Mode για να αποκτήσετε πρόσβαση σε όλα τα περιουσιακά στοιχεία\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Μη διαθέσιμο\",\"k/sb6z\":\"Επιλέξτε γλώσσα\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Διεκδίκηση \",[\"0\"]],\"kH6wUX\":\"Επίδραση στην τιμή\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Για την εξόφληση εκ μέρους ενός χρήστη απαιτείται ένα ρητό ποσό προς εξόφληση\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Υπέρβαση του ανώτατου ορίου προσφοράς\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Το ανώτατο όριο χρέους δεν είναι μηδενικό\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Αγγλικά\",\"lfEjIE\":\"Μάθετε περισσότερα στον οδηγό <0>Συχνών Ερωτήσεων\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Συνολικές εκπομπές ανά ημέρα\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Εντάξει, Κλείσιμο\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Το περιουσιακό στοιχείο δεν μπορεί να χρησιμοποιηθεί ως εγγύηση.\",\"n+SX4g\":\"Προγραμματιστές\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Προσφορά apy\",\"nJgsQu\":\"Με δύναμη ψήφου <0/>\",\"nLC6tu\":\"Γαλλικά\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Μπορεί να εκτελεστεί\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"ω\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Ο συντελεστής υγείας και το δάνειο προς αξία καθορίζουν τη διασφάλιση των εξασφαλίσεών σας. Για να αποφύγετε τις ρευστοποιήσεις μπορείτε να παράσχετε περισσότερες εξασφαλίσεις ή να εξοφλήσετε δανειακές θέσεις.\",\"o1xc2V\":\"Η προσφορά AToken δεν είναι μηδενική\",\"o5ooMr\":\"Χρέος\",\"o7J4JM\":\"Φίλτρο\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Ψύξτε για ξεκλείδωμα\",\"oJ5ZiG\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος μεταβλητού επιτοκίου σε αυτό το αποθεματικό\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Το σταθερό επιτόκιο θα <0>μείνει το ίδιο για όλη τη διάρκεια του δανείου σας. Συνιστάται για μακροχρόνιες περιόδους δανεισμού και για χρήστες που προτιμούν την προβλεψιμότητα.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Διαθέσιμο για προμήθεια\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"Αυτό το περιουσιακό στοιχείο έχει φθάσει στο ανώτατο όριο δανεισμού του. Τίποτα δεν είναι διαθέσιμο για δανεισμό από αυτή την αγορά.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Το υποκείμενο υπόλοιπο πρέπει να είναι μεγαλύτερο από 0\",\"pgWG9H\":\"Δεν υπάρχει αρκετό κλειδωμένο υπόλοιπο\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"παρακαλούμε ελέγξτε ότι το ποσό που θέλετε να παρέχετε δεν χρησιμοποιείται επί του παρόντος για κλείδωμα. Εάν χρησιμοποιείται για κλείδωμα, η συναλλαγή σας ενδέχεται να αποτύχει.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Καταλαβαίνω πώς λειτουργεί η ψύξη (\",[\"0\"],\") και το ξεκλείδωμα (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"Ο καλών αυτής της συνάρτησης πρέπει να είναι ένα κοινόχρηστο ταμείο\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Κλειδωμένο\",\"qB4kPi\":\"Προσφορά APY\",\"qENI8q\":\"Γενικές ρυθμίσεις\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"αντιγράψτε το σφάλμα\",\"qXCkEM\":\"Συνδέστε το πορτοφόλι σας για να δείτε τις προμήθειες, τα δάνεια και τις ανοιχτές θέσεις σας.\",\"qY2jnw\":\"Μη έγκυρη λήξη\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Μη έγκυρη ποσότητα προς καύση\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Το ποσό πρέπει να είναι μεγαλύτερο από 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Εμφάνιση περιουσιακών στοιχείων με υπόλοιπο 0\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Διεκδικήστε όλες τις ανταμοιβές\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"ΚΑΤΑ\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Μπορείτε να ξεκλειδώσετε εδώ\",\"smJNwH\":\"Διαθέσιμο για δανεισμό\",\"solypO\":\"Ο παράγοντας υγείας δεν είναι κάτω από το όριο\",\"sr0UJD\":\"Πηγαίνετε Πίσω\",\"ss5GCK\":\"Η διεύθυνση του παρόχου διευθύνσεων κοινόχρηστου ταμείου είναι άκυρη\",\"swEgK4\":\"Οι πληροφορίες ψήφου σας\",\"t+wtgf\":\"Τίποτα δανεισμένο ακόμα\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Τιμή Oracle\",\"tFZLf8\":\"Αυτός ο υπολογισμός gas είναι μόνο μια εκτίμηση. Το πορτοφόλι σας θα καθορίσει την τιμή της συναλλαγής. Μπορείτε να τροποποιήσετε τις ρυθμίσεις gas απευθείας από τον πάροχο του πορτοφολιού σας.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Παρακαλώ, συνδέστε το πορτοφόλι σας\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Οι προμήθειές σας\",\"u3ZeYl\":\"Η συναλλαγή απέτυχε\",\"u706uF\":\"Άκυρη πριμοδότηση flashloan\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Για την αποπληρωμή ενός συγκεκριμένου τύπου χρέους, ο χρήστης πρέπει να έχει χρέος αυτού του τύπου\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Απόκρυψη\",\"vMba49\":\"Ο δανεισμός δεν είναι ενεργοποιημένος\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Γλώσσα\",\"vesuBJ\":\"Σας επιτρέπει να αποφασίσετε αν θα χρησιμοποιήσετε ένα παρεχόμενο περιουσιακό στοιχείο ως εγγύηση. Ένα περιουσιακό στοιχείο που χρησιμοποιείται ως εγγύηση θα επηρεάσει τη δανειοληπτική σας ικανότητα και τον συντελεστή υγείας.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Σταθερό νόμισμα\",\"w/JtJ3\":\"Η σταθερή προσφορά χρέους δεν είναι μηδενική\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Ανταμοιβές APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Εσείς \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"Ο καλών της συνάρτησης δεν είναι AToken\",\"wZFvVU\":\"ΨΗΦΙΣΤΕ ΥΠΕΡ\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Βρύση \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Τρέχον διαφορικό\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, παρακαλούμε μεταβείτε στο\",\"xNy/UG\":\"Αποπληρωμή με\",\"xPm8wv\":\"Μάθετε περισσότερα για τους κινδύνους\",\"xXYpZl\":[[\"0\"],\" Βρύση\"],\"xaVBSS\":\"Οι πληροφορίες σας\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Σκοτεινή λειτουργία\",\"yCrG6m\":\"Συνολικό μέγεθος της αγοράς\",\"yJUUbn\":\"Επισκόπηση συναλλαγής\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Μη έγκυρη διεύθυνση\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Δεν υπάρχουν αρκετά κεφάλαια στο\",[\"0\"],\"αποθεματικό για δανεισμό\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Κλείσιμο\",\"z4uGQg\":\"Υπέρβαση του ανώτατου ορίου χρέους\",\"z5UQOM\":\"Η εγγύηση που έχει επιλεγεί δεν μπορεί να ρευστοποιηθεί\",\"z5Y+p6\":[\"Παροχή \",[\"symbol\"]],\"zCjNKs\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή το αποθεματικό έχει παγώσει\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Υπολειπόμενο χρέος\",\"zmTPiV\":\"Υπόλοιπο προσφοράς\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Μενού\",\"zwWKhA\":\"Μάθετε περισσότερα\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"+EGVI0\":\"Receive (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Φαίνεται ότι δεν μπορούμε να αλλάξουμε το δίκτυο αυτόματα. Ελέγξτε αν μπορείτε να το αλλάξετε από το πορτοφόλι.\",\"+kLZGu\":\"Supplied asset amount\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Minimum staked Aave amount\",\"00OflG\":\"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.\",\"08/rZ9\":\"The cooldown period is the time required prior to unstaking your tokens (20 days). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window.<0>Learn more\",\"1Onqx8\":[\"Έγκριση του \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Blocked Address\",\"2bAhR7\":\"Meet GHO\",\"2o/xRt\":\"Επίτευξη του ανώτατου ορίου εφοδιασμού στο αποθεματικό-στόχο. Δοκιμάστε να \\nμειώσετε την ποσότητα.\",\"3O8YTV\":\"Total interest accrued\",\"4iPAI3\":\"Minimum GHO borrow amount\",\"6NGLTR\":\"Discountable amount\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Discount parameters are decided by the Aave community and may be changed over time. Check Governance for updates and vote to participate. <0>Learn more\",\"ARu1L4\":\"Repaid\",\"B6aXGH\":\"Σταθερό\",\"B9Gqbz\":\"Variable rate\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"At a discount\",\"CMHmbm\":\"Slippage\",\"EBL9Gz\":\"COPIED!\",\"ES8dkb\":\"Fixed rate\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Discount\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Save and share\",\"JK9zf1\":[\"Estimated compounding interest, including discount for Staking \",[\"0\"],\"AAVE in Safety Module.\"],\"JPrLjO\":\"Δεν μπορείτε να χρησιμοποιήσετε αυτό το νόμισμα ως εγγύηση\",\"JU6q+W\":\"Ανταμοιβή(ες) προς διεκδίκηση\",\"K05qZY\":\"Withdraw & Switch\",\"KRpokz\":\"VIEW TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Η ενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση αυξάνει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας. Ωστόσο, μπορεί να ρευστοποιηθεί εάν ο συντελεστής υγείας σας πέσει κάτω από το 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Απενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Send feedback\",\"TeCFg/\":\"Borrow rate change\",\"TskbEN\":\"Holders of stkAAVE receive a discount on the GHO borrowing rate\",\"TtZL6q\":\"Discount model parameters\",\"Tz0GSZ\":\"blocked activities\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"W8ekPc\":\"Back to Dashboard\",\"XZzneG\":\"Θα βγείτε από τη λειτουργία απομόνωσης και άλλα tokens μπορούν πλέον να χρησιμοποιηθούν ως εγγύηση\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Η απενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση επηρεάζει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας.\",\"al6Pyz\":\"Exceeds the discount\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Δεν υπάρχουν επαρκείς εγγυήσεις για την αποπληρωμή αυτού του ποσού χρέους με\",\"cqnmnD\":\"Effective interest rate\",\"dMtLDE\":\"to\",\"dpc0qG\":\"Μεταβλητό\",\"euScGB\":\"APY with discount applied\",\"fHcELk\":\"Καθαρό APR\",\"flRCF/\":\"Staking discount\",\"gncRUO\":\"This address is blocked on app.aave.com because it is associated with one or more\",\"gr8mYw\":\"You may borrow up to <0/> GHO at <1/> (max discount)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Borrow balance\",\"i2JTiw\":\"You may enter a custom amount in the field.\",\"jMam5g\":[[\"0\"],\" Υπόλοιπο\"],\"jpctdh\":\"View\",\"kwwn6i\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate. The discount applies to 100 GHO for every 1 stkAAVE held. Use the calculator below to see GHO borrow rate with the discount applied.\",\"lNVG7i\":\"Select an asset\",\"lt6bpt\":\"Collateral to repay with\",\"mIM0qu\":\"Expected amount to repay\",\"mzI/c+\":\"Download\",\"n8Psk4\":\"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.\",\"nOy4ob\":\"We suggest you go back to the Dashboard.\",\"nakd8r\":\"stkAAVE holders get a discount on GHO borrow rate\",\"nh2EJK\":[\"Παρακαλώ μεταβείτε στο \",[\"networkName\"],\".\"],\"ntkAoE\":\"Discount applied for <0/> staking AAVE\",\"o4tCu3\":\"Borrow APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"Η περίοδος ψύξης είναι \",[\"0\"],\". Μετά την \",[\"1\"],\" περίοδο ψύξης, θα εισέλθετε στο παράθυρο ξεκλειδώματος \",[\"2\"],\". Θα συνεχίσετε να λαμβάνετε ανταμοιβές κατά τη διάρκεια της ψύξης και του παραθύρου ξεκλειδώματος.\"],\"p3j+mb\":\"Το υπόλοιπο της ανταμοιβής σας είναι 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interest accrued\",\"rf8POi\":\"Borrowed asset amount\",\"ruc7X+\":\"Add stkAAVE to see borrow APY with the discount\",\"sK+Nag\":\"Αναθεώρηση συναλλαγής\",\"t81DpC\":[\"Approve \",[\"symbol\"],\" to continue\"],\"umICAY\":\"<0><1><2/>Add stkAAVE to see borrow rate with discount\",\"uwAUvj\":\"COPY IMAGE\",\"v8x7Mg\":\"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.\",\"wRRqvW\":\"Δεν έχετε προμήθειες σε αυτό το νόμισμα\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Ενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"yW1oWB\":\"Τύπος APY\",\"yhvj6d\":\"Δεν μπορείτε να αλλάξετε τη χρήση ως λειτουργία εγγύησης για αυτό το νόμισμα, διότι θα προκαλέσει κλήση εγγύησης\",\"zevmS2\":\"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Εάν ΔΕΝ ξεκλειδώσετε εντός \",[\"0\"],\" του παραθύρου ξεκλειδώματος, θα πρέπει να ενεργοποιήσετε ξανά τη διαδικασία ψύξης.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Η συμμετοχή σε αυτό το αποθεματικό \",[\"symbol\"],\" δίνει ετήσιες ανταμοιβές.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Ανώτατο όριο δανεισμού\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Ο σταθερός δανεισμός δεν είναι ενεργοποιημένος\",\"/yQcJM\":\"Συνολική αξία\",\"00AB2i\":\"Ο χρήστης δεν δανείστηκε το καθορισμένο νόμισμα\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να προμηθεύσετε σε αυτό το αποθεματικό. Μπορείτε να προμηθεύσετε το υπόλοιπο του πορτοφολιού σας μέχρι να επιτευχθεί το ανώτατο όριο προμηθειών.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Παρακαλούμε συνδέστε ένα πορτοφόλι για να δείτε τις προσωπικές σας πληροφορίες εδώ.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Ρευστοποίηση <0/> κατώτατο όριο\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Προβολή λεπτομερειών\",\"2FYpfJ\":\"Περισσότερα\",\"2O3qp5\":\"Διαθέσιμη ρευστότητα\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Ο σταθερός δανεισμός είναι ενεργοποιημένος\",\"34Qfwy\":\"Υπέρβαση του ανώτατου ορίου δανεισμού\",\"39eQRj\":[\"Δανεισμός \",[\"symbol\"]],\"3BL1xB\":\"Σύνολο παρεχόμενων\",\"3K0oMo\":\"Υπολειπόμενη προσφορά\",\"3MoZhl\":\"Δεν υπάρχουν επαρκείς εξασφαλίσεις για την κάλυψη ενός νέου δανείου\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Προσφορά \",[\"symbol\"]],\"3mXg0z\":\"Μέγιστο LTV\",\"3q3mFy\":\"Αποπληρωμή\",\"3qsjtp\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα παρεχόμενα περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"3rL+os\":\"Μπορείτε να αποσύρετε τα περιουσιακά σας στοιχεία από τη Μονάδα Ασφαλείας μόνο αφού λήξει η περίοδος αναμονής και το παράθυρο ξεκλειδώματος είναι ενεργό.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Αποτελέσματα ψηφοφορίας\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"ΜΕΓΙΣΤΟ\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"τεκμηρίωση\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο της προσφοράς του. Μόνο \",[\"messageValue\"],\" μπορεί να παρασχεθεί σε αυτή την αγορά.\"],\"5cZ/KX\":\"Η προσφορά μεταβλητού χρέους δεν είναι μηδενική\",\"5che++\":\"Για να ζητήσετε πρόσβαση σε αυτή την αδειοδοτημένη αγορά, επισκεφθείτε την ιστοσελίδα: <0>Όνομα Παρόχου Πρόσβασης\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Απαιτούμενη δράση επιδότησης\",\"5rsnKT\":\"Διαθέσιμες ανταμοιβές\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Επισκόπηση\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Εγγύηση\",\"65A04M\":\"Ισπανικά\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Αποπληρωμή \",[\"symbol\"]],\"6Xr0UU\":\"Ψύξη...\",\"6bxci/\":\"Δύναμη ψήφου\",\"6f8S68\":\"Αγορές\",\"6g1gi0\":\"Προτάσεις\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Αλλαγή Δικτύου\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Συντελεστής υγείας\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Επιτεύχθηκε\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Διεκδικήστε τα όλα\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Ταμπλό\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Προσοχή - Είστε πολύ κοντά στην ρευστοποίηση. Εξετάστε το ενδεχόμενο να καταθέσετε περισσότερες εγγυήσεις ή να εξοφλήσετε κάποιες από τις δανειακές σας θέσεις\",\"87pUEW\":[\"Το πορτοφόλι σας \",[\"name\"],\" είναι άδειο. Αγοράστε ή μεταφέρετε περιουσιακά στοιχεία.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"Όλες οι προτάσεις\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Μη έγκυρο ποσό για νομισματοκοπία\",\"8Z5FPv\":\"Αποσυνδέστε το πορτοφόλι\",\"8Zz7s5\":\"περιουσιακά στοιχεία\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Ποσοστό χρησιμοποίησης\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Εμφάνιση\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Εισέρχεστε σε λειτουργία απομόνωσης\",\"9CDK3/\":[\"Ο δανεισμός δεν είναι επί του παρόντος διαθέσιμος για \",[\"0\"],\".\"],\"9GIj3z\":\"Μέγεθος Αποθεματικού\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Απαρτία\",\"9QHoGr\":\"Τρέχουσες ψήφοι\",\"9Rw96f\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο δανεισμού του. Υπάρχει μόνο \",[\"messageValue\"],\" διαθέσιμο για δανεισμό από αυτή την αγορά.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Αυτό το περιουσιακό στοιχείο έχει φτάσει στο όριο της προσφοράς του. Τίποτα δεν είναι διαθέσιμο για προμήθεια από αυτή την αγορά.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Δεδομένου ότι πρόκειται για ένα δοκιμαστικό δίκτυο, μπορείτε να αποκτήσετε οποιοδήποτε από τα περιουσιακά στοιχεία αν έχετε ETH στο πορτοφόλι σας\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Τα δάνεια σας\",\"AV7cGz\":\"Αναθεώρηση λεπτομερειών έγκρισης συναλλαγής\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Η δύναμη δανεισμού και τα περιουσιακά στοιχεία είναι περιορισμένα λόγω της λειτουργίας απομόνωσης.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Η χρήση εγγύησης είναι περιορισμένη λόγω της λειτουργίας απομόνωσης. <0>Μάθετε περισσότερα\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Κατηγορία περιουσιακών στοιχείων\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Βρύση\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Μεγιστο\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Διεκδίκηση \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Βρύση\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Η εγγύηση είναι (ως επί το πλείστον) το ίδιο νόμισμα που δανείζεται\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"Το υποκείμενο περιουσιακό στοιχείο δεν μπορεί να διασωθεί\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave ανά μήνα\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Εξασφάλιση\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Απενεργοποιημένο\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Ανάληψη \",[\"symbol\"]],\"EdQY6l\":\"Κανένα\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Μάθετε περισσότερα.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Δανεισμός χρησιμοποιημένης ισχύος\",\"FPKEug\":\"Η λειτουργία δεν υποστηρίζεται\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"ενεργοποίηση\",\"Fjw9N+\":\"Περιουσιακά στοιχεία προς προμήθεια\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Περιουσιακά Στοιχεία\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"τελειώνει\",\"GtP2hp\":[\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη λειτουργία Αποδοτικότητας (E-Mode) για την κατηγορία \",[\"0\"],\". Για να διαχειριστείτε τις κατηγορίες E-Mode επισκεφθείτε τον <0>Πίνακα ελέγχου.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"η\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Παράθυρο ξεκλειδώματος\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"Το συνολικό ποσό των περιουσιακών σας στοιχείων σε δολάρια ΗΠΑ που μπορούν να χρησιμοποιηθούν ως εγγύηση για δανεισμό περιουσιακών στοιχείων.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Περίοδος ψύξης\",\"IaA40H\":\"Ρευστοποίηση στο\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Κλειδώστε\",\"JZMxX0\":\"Δεν υπάρχει αρκετό υπόλοιπο στο πορτοφόλι σας\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Υπόλοιπο πορτοφολιού\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Αυτό αντιπροσωπεύει το κατώτατο όριο στο οποίο μια θέση δανεισμού θα θεωρηθεί υποεγγυημένη και θα υπόκειται σε ρευστοποίηση για κάθε εγγύηση. Για παράδειγμα, εάν μια εγγύηση έχει κατώτατο όριο ρευστοποίησης 80%, αυτό σημαίνει ότι η θέση θα ρευστοποιηθεί όταν η αξία του χρέους ανέρχεται στο 80% της αξίας της εγγύησης.\",\"KYAjf3\":\"Απομονωμένο\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Λήγει\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Λάθος δίκτυο\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Κλείδωμα\",\"KuBTQq\":\"Εισάγετε διεύθυνση ETH\",\"KvG1xW\":\"Διεκδίκηση\",\"L+8Lzs\":\"Τρέχον LTV\",\"L+qiq+\":\"Αγορά\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Δεν υπάρχει δικαίωμα ψήφου\",\"LL0zks\":\"Μπορεί να αποτελέσει εγγύηση\",\"LLdJWu\":\"Διεκδικήσιμο AAVE\",\"LSIpNK\":\"Δεν επιτρέπεται ο δανεισμός και η αποπληρωμή στο ίδιο block\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Διεύθυνση παραλήπτη\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"προβολή κλειδώματος\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, μεταβλητό\",\"MghdTe\":\"Εάν ο συντελεστής υγείας πέσει κάτω από το 1, ενδέχεται να ενεργοποιηθεί η ρευστοποίηση των εγγυήσεών σας.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Ακυρώσατε τη συναλλαγή.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Μη έγκυρη τιμή επιστροφής της συνάρτησης εκτελεστή flashloan\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Εκκρεμεί...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Τίποτα κλειδωμένο\",\"Nh9DAo\":[[\"m\"],\"λ\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Υπέρβαση του ανώτατου ορίου νομισματοκοπείου χωρίς αντίκρισμα\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Επισκόπηση πρότασης\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"απενεργοποιημένο\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Ανάληψη\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"Όταν πραγματοποιείται ρευστοποίηση, οι ρευστοποιητές επιστρέφουν έως και το 50% του ανεξόφλητου δανεισμένου ποσού για λογαριασμό του δανειολήπτη. Σε αντάλλαγμα, μπορούν να αγοράσουν τις εξασφαλίσεις με έκπτωση και να κρατήσουν τη διαφορά (ποινή ρευστοποίησης) ως μπόνους.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα δανειακά περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Κατώτατο όριο ρευστοποίησης\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Δεν έχει επιτευχθεί\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Διαφορικό\",\"RNK49r\":\"Μη έγκυρη υπογραφή\",\"RS0o7b\":\"Κατάσταση\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Λεπτομέρειες πρότασης\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Το περιουσιακό στοιχείο δεν περιλαμβάνεται στον κατάλογο\",\"Rj01Fz\":\"Σύνδεσμοι\",\"RmWFEe\":\"Κλείδωμα APR\",\"RtBLm7\":\"Ο συντελεστής υγείας είναι μικρότερος από το όριο ρευστοποίησης\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Ενεργοποιημένο\",\"SDav7h\":\"Κεφάλαια στην Μονάδα Ασφάλειας\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Σύνολο διαθέσιμων\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Απενεργοποίηση E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Ο πάροχος διευθύνσεων κοινόχρηστων ταμείων δεν είναι εγγεγραμμένος\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Δανεισμός\",\"TFxQlw\":\"Ποινή ρευστοποίησης\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"To περιουσιακό στοιχείο μπορεί να χρησιμοποιηθεί ως εγγύηση μόνο σε λειτουργία απομόνωσης.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος σταθερού επιτοκίου σε αυτό το αποθεματικό\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Το περιουσιακό στοιχείο δεν είναι δανείσιμο σε λειτουργία απομόνωσης\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Λεπτομέρειες\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"Τα κεφάλαια αυτά έχουν δανειστεί και δεν είναι διαθέσιμα για ανάληψη αυτή τη στιγμή.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Ο δείκτης μέγιστου LTV αντιπροσωπεύει τη μέγιστη δανειοληπτική ικανότητα μιας συγκεκριμένης εγγύησης. Για παράδειγμα, εάν μια εγγύηση έχει LTV 75%, ο χρήστης μπορεί να δανειστεί έως και 0,75 ETH στο κύριο νόμισμα για κάθε 1 ETH αξίας εγγύησης.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Δεν υπάρχουν ανταμοιβές για διεκδίκηση\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Συνδέστε το πορτοφόλι\",\"VMfYUK\":\"Ασφάλεια των κατατεθειμένων εξασφαλίσεών σας έναντι των δανειζόμενων περιουσιακών στοιχείων και της υποκείμενης αξίας τους.\",\"VOAZJh\":\"Σύνολο δανείων\",\"ViKYxK\":\"ΥΠΕΡ\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Αναθεώρηση λεπτομερειών συναλλαγής\",\"W5hVah\":\"Τίποτα δεν έχει παρασχεθεί ακόμη\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Μη υποστηριζόμενο\",\"WNGZwH\":\"Το E-Mode αυξάνει το LTV σας για μια επιλεγμένη κατηγορία περιουσιακών στοιχείων έως και <0/>. <1>Μάθετε περισσότερα\",\"WPWG/y\":\"Κατάσταση & διαμόρφωση αποθεματικού\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"Ο χρήστης δεν μπορεί να κάνει ανάληψη μεγαλύτερη από το διαθέσιμο υπόλοιπο\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Για να δανειστείτε πρέπει να προσκομίσετε οποιοδήποτε περιουσιακό στοιχείο που θα χρησιμοποιηθεί ως εγγύηση.\",\"X/ITG9\":\"Κείμενο σφάλματος αντιγραφής\",\"X3Pp6x\":\"Χρησιμοποιείται ως εγγύηση\",\"X4Zt7j\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή η εφεδρεία βρίσκεται σε παύση\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"ΨΗΦΙΣΤΕ ΚΑΤΑ\",\"YDIOks\":\"Ενεργοποίηση E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"Εάν το δάνειο προς αξία υπερβεί το όριο ρευστοποίησης, η παρεχόμενη εγγύηση σας μπορεί να ρευστοποιηθεί.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Δεν τηρήθηκαν οι όροι επανεξισορρόπησης των επιτοκίων\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Διακυβέρνηση Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Λειτουργία αποδοτικότητας (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Μέγιστη περικοπή\",\"ZfUGFb\":\"Πριν από την προμήθεια\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Αξία ρευστοποίησης\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"ενεργοποιημένο\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Χρόνος που απομένει για το ξεκλείδωμα\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Ψηφίστε ΚΑΤΑ\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Οι παράμετροι της συστοιχίας που θα έπρεπε να είναι ίσου μήκους δεν είναι\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Δανεισμός APY, μεταβλητό\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Προειδοποίηση περιόδου ψύξης\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Περιουσιακό στοιχείο\",\"bXQ/Og\":\"Μοιραστείτε το στο twitter\",\"bXr0ee\":\"Τα απομονωμένα περιουσιακά στοιχεία έχουν περιορισμένη δανειοληπτική ικανότητα και άλλα περιουσιακά στοιχεία δεν μπορούν να χρησιμοποιηθούν ως εγγύηση.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Το αιτούμενο ποσό είναι μεγαλύτερο από το μέγιστο μέγεθος δανείου στη λειτουργία σταθερού επιτοκίου\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Προσφορά\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Η διεύθυνση δεν είναι συμβόλαιο\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Δεν μπορείτε να αποσύρετε αυτό το ποσό, διότι θα προκληθεί κλήση εγγύησης\",\"cBc+4A\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να δανειστείτε. Μπορείτε να δανειστείτε με βάση την εξασφάλισή σας και μέχρι να επιτευχθεί το ανώτατο όριο δανεισμού.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Λεπτομέρειες κινδύνου\",\"cNT+ij\":\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη Λειτουργία Αποδοτικότητας (E-Mode) και τη λειτουργία Απομόνωσης. Για να διαχειριστείτε τη λειτουργία E-Mode και τη λειτουργία Απομόνωσης, επισκεφθείτε τον <0>Πίνακα ελέγχου.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Ψηφίστε ΥΠΕΡ\",\"ckf7gX\":[\"Αποπληρώνοντας \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Συζήτηση φόρουμ\",\"csDS2L\":\"Διαθέσιμο\",\"cu7Stb\":\"Δεν συμμετείχατε στην παρούσα πρόταση\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Διακυβέρνηση\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Η επικύρωση του Ltv απέτυχε\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Δεν έχετε αρκετά χρήματα στο πορτοφόλι σας για να αποπληρώσετε ολόκληρο το ποσό. Εάν προχωρήσετε στην αποπληρωμή με το τρέχον ποσό των χρημάτων σας, θα εξακολουθείτε να έχετε μια μικρή θέση δανεισμού στο ταμπλό σας.\",\"dXUQFX\":\"Περιουσιακά στοιχεία προς δανεισμό\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Χρησιμοποίηση εγγυήσεων\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Η δράση απαιτεί ενεργό απόθεμα\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Σύνολο δανεικών\",\"ecqEvn\":\"Το υπόλοιπο των εγγυήσεων είναι 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Ξεκλειδώστε τώρα\",\"evw5ha\":\"Καθαρή αξία\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Αλλάξατε σε ποσοστό \",[\"0\"]],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Το τρέχον δάνειο προς αξία με βάση τις παρεχόμενες εξασφαλίσεις σας.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Υπόλοιπο\",\"fu1Dbh\":[\"Ανάληψη \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Λειτουργία Testnet\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"Ο χρήστης προσπαθεί να δανειστεί πολλαπλά περιουσιακά στοιχεία, συμπεριλαμβανομένου ενός απομονωμένου περιουσιακού στοιχείου\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Η μηδενική διεύθυνση δεν είναι έγκυρη\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Το καθαρό ΑΡΥ είναι η συνδυασμένη επίδραση όλων των θέσεων προσφοράς και δανεισμού στην καθαρή αξία, συμπεριλαμβανομένων των κινήτρων. Είναι δυνατόν να υπάρχει αρνητικό καθαρό APY εάν το χρεωστικό APY είναι υψηλότερο από το προσφερόμενο APY.\",\"gzcch9\":\"Μη έγκυρη αμοιβή πρωτοκόλλου γέφυρας\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Καθαρό APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Το % της συνολικής δανειοληπτικής σας δύναμης που χρησιμοποιείται. Αυτό βασίζεται στο ποσό της παρεχόμενης εξασφάλισής σας και στο συνολικό ποσό που μπορείτε να δανειστείτε.\",\"hehnjM\":\"Ποσό\",\"hjDCQr\":\"Υπήρξε κάποιο σφάλμα. Προσπαθήστε να αλλάξετε τις παραμέτρους ή <0><1>αντιγράψτε το σφάλμα\",\"hom7qf\":\"Διεκδίκηση\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Δανεισμός \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Ασυνεπείς παράμετροι flashloan\",\"iEPVHF\":\"Δεν έχει αρκετή δύναμη ψήφου για να συμμετάσχει στην παρούσα πρόταση\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"Ψηφίσατε \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Εισάγετε ένα ποσό\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens δεν είναι το ίδιο με το να τα κλειδώνετε. Εάν επιθυμείτε να κλειδώσετε τα\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"H χρήση εγγυήσεων είναι περιορισμένη λόγω της λειτουργίας Απομόνωσης.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Προμηθεύοντας το\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Απενεργοποίηση E-Mode\",\"jKYzR1\":\"Ενεργοποίηση E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"δ\"],\"jbFMap\":\"Χρόνος ψύξης που έχει απομείνει\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"Στο E-Mode ορισμένα περιουσιακά στοιχεία δεν είναι δανείσιμα. Βγείτε από το E-Mode για να αποκτήσετε πρόσβαση σε όλα τα περιουσιακά στοιχεία\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Μη διαθέσιμο\",\"k/sb6z\":\"Επιλέξτε γλώσσα\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Διεκδίκηση \",[\"0\"]],\"kH6wUX\":\"Επίδραση στην τιμή\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Για την εξόφληση εκ μέρους ενός χρήστη απαιτείται ένα ρητό ποσό προς εξόφληση\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Υπέρβαση του ανώτατου ορίου προσφοράς\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Το ανώτατο όριο χρέους δεν είναι μηδενικό\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Αγγλικά\",\"lfEjIE\":\"Μάθετε περισσότερα στον οδηγό <0>Συχνών Ερωτήσεων\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Συνολικές εκπομπές ανά ημέρα\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Εντάξει, Κλείσιμο\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Το περιουσιακό στοιχείο δεν μπορεί να χρησιμοποιηθεί ως εγγύηση.\",\"n+SX4g\":\"Προγραμματιστές\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Προσφορά apy\",\"nJgsQu\":\"Με δύναμη ψήφου <0/>\",\"nLC6tu\":\"Γαλλικά\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Μπορεί να εκτελεστεί\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"ω\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Ο συντελεστής υγείας και το δάνειο προς αξία καθορίζουν τη διασφάλιση των εξασφαλίσεών σας. Για να αποφύγετε τις ρευστοποιήσεις μπορείτε να παράσχετε περισσότερες εξασφαλίσεις ή να εξοφλήσετε δανειακές θέσεις.\",\"o1xc2V\":\"Η προσφορά AToken δεν είναι μηδενική\",\"o5ooMr\":\"Χρέος\",\"o7J4JM\":\"Φίλτρο\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Ψύξτε για ξεκλείδωμα\",\"oJ5ZiG\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος μεταβλητού επιτοκίου σε αυτό το αποθεματικό\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Το σταθερό επιτόκιο θα <0>μείνει το ίδιο για όλη τη διάρκεια του δανείου σας. Συνιστάται για μακροχρόνιες περιόδους δανεισμού και για χρήστες που προτιμούν την προβλεψιμότητα.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Διαθέσιμο για προμήθεια\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"Αυτό το περιουσιακό στοιχείο έχει φθάσει στο ανώτατο όριο δανεισμού του. Τίποτα δεν είναι διαθέσιμο για δανεισμό από αυτή την αγορά.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Το υποκείμενο υπόλοιπο πρέπει να είναι μεγαλύτερο από 0\",\"pgWG9H\":\"Δεν υπάρχει αρκετό κλειδωμένο υπόλοιπο\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"παρακαλούμε ελέγξτε ότι το ποσό που θέλετε να παρέχετε δεν χρησιμοποιείται επί του παρόντος για κλείδωμα. Εάν χρησιμοποιείται για κλείδωμα, η συναλλαγή σας ενδέχεται να αποτύχει.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Καταλαβαίνω πώς λειτουργεί η ψύξη (\",[\"0\"],\") και το ξεκλείδωμα (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"Ο καλών αυτής της συνάρτησης πρέπει να είναι ένα κοινόχρηστο ταμείο\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Κλειδωμένο\",\"qB4kPi\":\"Προσφορά APY\",\"qENI8q\":\"Γενικές ρυθμίσεις\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"αντιγράψτε το σφάλμα\",\"qXCkEM\":\"Συνδέστε το πορτοφόλι σας για να δείτε τις προμήθειες, τα δάνεια και τις ανοιχτές θέσεις σας.\",\"qY2jnw\":\"Μη έγκυρη λήξη\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Μη έγκυρη ποσότητα προς καύση\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Το ποσό πρέπει να είναι μεγαλύτερο από 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Εμφάνιση περιουσιακών στοιχείων με υπόλοιπο 0\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Διεκδικήστε όλες τις ανταμοιβές\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"ΚΑΤΑ\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Μπορείτε να ξεκλειδώσετε εδώ\",\"smJNwH\":\"Διαθέσιμο για δανεισμό\",\"solypO\":\"Ο παράγοντας υγείας δεν είναι κάτω από το όριο\",\"sr0UJD\":\"Πηγαίνετε Πίσω\",\"ss5GCK\":\"Η διεύθυνση του παρόχου διευθύνσεων κοινόχρηστου ταμείου είναι άκυρη\",\"swEgK4\":\"Οι πληροφορίες ψήφου σας\",\"t+wtgf\":\"Τίποτα δανεισμένο ακόμα\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Τιμή Oracle\",\"tFZLf8\":\"Αυτός ο υπολογισμός gas είναι μόνο μια εκτίμηση. Το πορτοφόλι σας θα καθορίσει την τιμή της συναλλαγής. Μπορείτε να τροποποιήσετε τις ρυθμίσεις gas απευθείας από τον πάροχο του πορτοφολιού σας.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"Παρακαλώ, συνδέστε το πορτοφόλι σας\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Οι προμήθειές σας\",\"u3ZeYl\":\"Η συναλλαγή απέτυχε\",\"u706uF\":\"Άκυρη πριμοδότηση flashloan\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Για την αποπληρωμή ενός συγκεκριμένου τύπου χρέους, ο χρήστης πρέπει να έχει χρέος αυτού του τύπου\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Απόκρυψη\",\"vMba49\":\"Ο δανεισμός δεν είναι ενεργοποιημένος\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Γλώσσα\",\"vesuBJ\":\"Σας επιτρέπει να αποφασίσετε αν θα χρησιμοποιήσετε ένα παρεχόμενο περιουσιακό στοιχείο ως εγγύηση. Ένα περιουσιακό στοιχείο που χρησιμοποιείται ως εγγύηση θα επηρεάσει τη δανειοληπτική σας ικανότητα και τον συντελεστή υγείας.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Σταθερό νόμισμα\",\"w/JtJ3\":\"Η σταθερή προσφορά χρέους δεν είναι μηδενική\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Ανταμοιβές APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Εσείς \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"Ο καλών της συνάρτησης δεν είναι AToken\",\"wZFvVU\":\"ΨΗΦΙΣΤΕ ΥΠΕΡ\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Βρύση \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Τρέχον διαφορικό\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, παρακαλούμε μεταβείτε στο\",\"xNy/UG\":\"Αποπληρωμή με\",\"xPm8wv\":\"Μάθετε περισσότερα για τους κινδύνους\",\"xXYpZl\":[[\"0\"],\" Βρύση\"],\"xaVBSS\":\"Οι πληροφορίες σας\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Σκοτεινή λειτουργία\",\"yCrG6m\":\"Συνολικό μέγεθος της αγοράς\",\"yJUUbn\":\"Επισκόπηση συναλλαγής\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Μη έγκυρη διεύθυνση\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Δεν υπάρχουν αρκετά κεφάλαια στο\",[\"0\"],\"αποθεματικό για δανεισμό\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Κλείσιμο\",\"z4uGQg\":\"Υπέρβαση του ανώτατου ορίου χρέους\",\"z5UQOM\":\"Η εγγύηση που έχει επιλεγεί δεν μπορεί να ρευστοποιηθεί\",\"z5Y+p6\":[\"Παροχή \",[\"symbol\"]],\"zCjNKs\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή το αποθεματικό έχει παγώσει\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Υπολειπόμενο χρέος\",\"zmTPiV\":\"Υπόλοιπο προσφοράς\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Μενού\",\"zwWKhA\":\"Μάθετε περισσότερα\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"+EGVI0\":\"Receive (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Φαίνεται ότι δεν μπορούμε να αλλάξουμε το δίκτυο αυτόματα. Ελέγξτε αν μπορείτε να το αλλάξετε από το πορτοφόλι.\",\"+kLZGu\":\"Supplied asset amount\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Minimum staked Aave amount\",\"00OflG\":\"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.\",\"08/rZ9\":\"The cooldown period is the time required prior to unstaking your tokens (20 days). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window.<0>Learn more\",\"1Onqx8\":[\"Έγκριση του \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Blocked Address\",\"2bAhR7\":\"Meet GHO\",\"2o/xRt\":\"Επίτευξη του ανώτατου ορίου εφοδιασμού στο αποθεματικό-στόχο. Δοκιμάστε να \\nμειώσετε την ποσότητα.\",\"3O8YTV\":\"Total interest accrued\",\"4iPAI3\":\"Minimum GHO borrow amount\",\"6NGLTR\":\"Discountable amount\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Discount parameters are decided by the Aave community and may be changed over time. Check Governance for updates and vote to participate. <0>Learn more\",\"ARu1L4\":\"Repaid\",\"B6aXGH\":\"Σταθερό\",\"B9Gqbz\":\"Variable rate\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"At a discount\",\"CMHmbm\":\"Slippage\",\"EBL9Gz\":\"COPIED!\",\"ES8dkb\":\"Fixed rate\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Discount\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Save and share\",\"JK9zf1\":[\"Estimated compounding interest, including discount for Staking \",[\"0\"],\"AAVE in Safety Module.\"],\"JPrLjO\":\"Δεν μπορείτε να χρησιμοποιήσετε αυτό το νόμισμα ως εγγύηση\",\"JU6q+W\":\"Ανταμοιβή(ες) προς διεκδίκηση\",\"K05qZY\":\"Withdraw & Switch\",\"KRpokz\":\"VIEW TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Η ενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση αυξάνει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας. Ωστόσο, μπορεί να ρευστοποιηθεί εάν ο συντελεστής υγείας σας πέσει κάτω από το 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Απενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Send feedback\",\"TeCFg/\":\"Borrow rate change\",\"TskbEN\":\"Holders of stkAAVE receive a discount on the GHO borrowing rate\",\"TtZL6q\":\"Discount model parameters\",\"Tz0GSZ\":\"blocked activities\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"W8ekPc\":\"Back to Dashboard\",\"XZzneG\":\"Θα βγείτε από τη λειτουργία απομόνωσης και άλλα tokens μπορούν πλέον να χρησιμοποιηθούν ως εγγύηση\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Η απενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση επηρεάζει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας.\",\"aX31hk\":\"Your balance is lower than the selected amount.\",\"al6Pyz\":\"Exceeds the discount\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Δεν υπάρχουν επαρκείς εγγυήσεις για την αποπληρωμή αυτού του ποσού χρέους με\",\"cqnmnD\":\"Effective interest rate\",\"dMtLDE\":\"to\",\"dpc0qG\":\"Μεταβλητό\",\"euScGB\":\"APY with discount applied\",\"fHcELk\":\"Καθαρό APR\",\"flRCF/\":\"Staking discount\",\"gncRUO\":\"This address is blocked on app.aave.com because it is associated with one or more\",\"gr8mYw\":\"You may borrow up to <0/> GHO at <1/> (max discount)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Borrow balance\",\"i2JTiw\":\"You may enter a custom amount in the field.\",\"jMam5g\":[[\"0\"],\" Υπόλοιπο\"],\"jpctdh\":\"View\",\"kwwn6i\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate. The discount applies to 100 GHO for every 1 stkAAVE held. Use the calculator below to see GHO borrow rate with the discount applied.\",\"lNVG7i\":\"Select an asset\",\"lt6bpt\":\"Collateral to repay with\",\"mIM0qu\":\"Expected amount to repay\",\"mzI/c+\":\"Download\",\"n8Psk4\":\"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.\",\"nOy4ob\":\"We suggest you go back to the Dashboard.\",\"nakd8r\":\"stkAAVE holders get a discount on GHO borrow rate\",\"nh2EJK\":[\"Παρακαλώ μεταβείτε στο \",[\"networkName\"],\".\"],\"ntkAoE\":\"Discount applied for <0/> staking AAVE\",\"o4tCu3\":\"Borrow APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"Η περίοδος ψύξης είναι \",[\"0\"],\". Μετά την \",[\"1\"],\" περίοδο ψύξης, θα εισέλθετε στο παράθυρο ξεκλειδώματος \",[\"2\"],\". Θα συνεχίσετε να λαμβάνετε ανταμοιβές κατά τη διάρκεια της ψύξης και του παραθύρου ξεκλειδώματος.\"],\"p3j+mb\":\"Το υπόλοιπο της ανταμοιβής σας είναι 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interest accrued\",\"rf8POi\":\"Borrowed asset amount\",\"ruc7X+\":\"Add stkAAVE to see borrow APY with the discount\",\"sK+Nag\":\"Αναθεώρηση συναλλαγής\",\"t81DpC\":[\"Approve \",[\"symbol\"],\" to continue\"],\"umICAY\":\"<0><1><2/>Add stkAAVE to see borrow rate with discount\",\"uwAUvj\":\"COPY IMAGE\",\"v8x7Mg\":\"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.\",\"wRRqvW\":\"Δεν έχετε προμήθειες σε αυτό το νόμισμα\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Ενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"yW1oWB\":\"Τύπος APY\",\"yhvj6d\":\"Δεν μπορείτε να αλλάξετε τη χρήση ως λειτουργία εγγύησης για αυτό το νόμισμα, διότι θα προκαλέσει κλήση εγγύησης\",\"zevmS2\":\"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index d7e06ab82a..84a11c0ef5 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"If you DO NOT unstake within \",[\"0\"],\" of unstake window, you will need to activate cooldown process again.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participating in this \",[\"symbol\"],\" reserve gives annualized rewards.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Borrow cap\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Stable borrowing is not enabled\",\"/yQcJM\":\"Total worth\",\"00AB2i\":\"User did not borrow the specified currency\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"This is the total amount that you are able to supply to in this reserve. You are able to supply your wallet balance up until the supply cap is reached.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Please connect a wallet to view your personal information here.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Liquidation <0/> threshold\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"View details\",\"2FYpfJ\":\"More\",\"2O3qp5\":\"Available liquidity\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Stable borrowing is enabled\",\"34Qfwy\":\"Borrow cap is exceeded\",\"39eQRj\":[\"Borrow \",[\"symbol\"]],\"3BL1xB\":\"Total supplied\",\"3K0oMo\":\"Remaining supply\",\"3MoZhl\":\"There is not enough collateral to cover a new borrow\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Supply \",[\"symbol\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Repay\",\"3qsjtp\":\"The weighted average of APY for all supplied assets, including incentives.\",\"3rL+os\":\"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Voting results\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"This asset has almost reached its supply cap. There can only be \",[\"messageValue\"],\" supplied to this market.\"],\"5cZ/KX\":\"Variable debt supply is not zero\",\"5che++\":\"To request access for this permissioned market, please visit: <0>Acces Provider Name\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Allowance required action\",\"5rsnKT\":\"Available rewards\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Overview\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Collateral\",\"65A04M\":\"Spanish\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Repay \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Voting power\",\"6f8S68\":\"Markets\",\"6g1gi0\":\"Proposals\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Switch Network\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Health factor\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Reached\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Claim all\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Dashboard\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions\",\"87pUEW\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"All proposals\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Invalid amount to mint\",\"8Z5FPv\":\"Disconnect Wallet\",\"8Zz7s5\":\"assets\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Utilization Rate\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Show\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"You are entering Isolation mode\",\"9CDK3/\":[\"Borrowing is currently unavailable for \",[\"0\"],\".\"],\"9GIj3z\":\"Reserve Size\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Current votes\",\"9Rw96f\":[\"This asset has almost reached its borrow cap. There is only \",[\"messageValue\"],\" available to be borrowed from this market.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"This asset has reached its supply cap. Nothing is available to be supplied from this market.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Since this is a test network, you can get any of the assets if you have ETH on your wallet\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Your borrows\",\"AV7cGz\":\"Review approval tx details\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Borrowing power and assets are limited due to Isolation mode.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Collateral usage is limited because of isolation mode. <0>Learn More\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Asset category\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Claim \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Faucet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Collateral is (mostly) the same currency that is being borrowed\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"The underlying asset cannot be rescued\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave per month\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collateralization\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Disabled\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Withdrawing \",[\"symbol\"]],\"EdQY6l\":\"None\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Learn more.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Borrow power used\",\"FPKEug\":\"Operation not supported\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"on\",\"Fjw9N+\":\"Assets to supply\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Assets\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"ends\",\"GtP2hp\":[\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for \",[\"0\"],\" category. To manage E-Mode categories visit your <0>Dashboard.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Unstake window\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Cooldown period\",\"IaA40H\":\"Liquidation at\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Not enough balance on your wallet\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Wallet balance\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"This represents the threshold at which a borrow position will be considered undercollateralized and subject to liquidation for each collateral. For example, if a collateral has a liquidation threshold of 80%, it means that the position will be liquidated when the debt value is worth 80% of the collateral value.\",\"KYAjf3\":\"Isolated\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Expires\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Wrong Network\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Enter ETH address\",\"KvG1xW\":\"Claiming\",\"L+8Lzs\":\"Current LTV\",\"L+qiq+\":\"Market\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"No voting power\",\"LL0zks\":\"Can be collateral\",\"LLdJWu\":\"Claimable AAVE\",\"LSIpNK\":\"Borrow and repay in same block is not allowed\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Recipient address\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"staking view\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"If the health factor goes below 1, the liquidation of your collateral might be triggered.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"You cancelled the transaction.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Invalid return value of the flashloan executor function\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pending...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nothing staked\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Unbacked mint cap is exceeded\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Proposal overview\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"disabled\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Withdraw\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"When a liquidation occurs, liquidators repay up to 50% of the outstanding borrowed amount on behalf of the borrower. In return, they can buy the collateral at a discount and keep the difference (liquidation penalty) as a bonus.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"The weighted average of APY for all borrowed assets, including incentives.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Liquidation threshold\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Not reached\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Differential\",\"RNK49r\":\"Invalid signature\",\"RS0o7b\":\"State\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Proposal details\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Asset is not listed\",\"Rj01Fz\":\"Links\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"Health factor is lesser than the liquidation threshold\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Enabled\",\"SDav7h\":\"Funds in the Safety Module\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Total available\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Disabling E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Pool addresses provider is not registered\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Borrow\",\"TFxQlw\":\"Liquidation penalty\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"Asset can only be used as collateral in isolation mode only.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"User does not have outstanding stable rate debt on this reserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Asset is not borrowable in isolation mode\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Details\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"These funds have been borrowed and are not available for withdrawal at this time.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"The Maximum LTV ratio represents the maximum borrowing power of a specific collateral. For example, if a collateral has an LTV of 75%, the user can borrow up to 0.75 worth of ETH in the principal currency for every 1 ETH worth of collateral.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No rewards to claim\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Connect wallet\",\"VMfYUK\":\"Safety of your deposited collateral against the borrowed assets and its underlying value.\",\"VOAZJh\":\"Total borrows\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Review tx details\",\"W5hVah\":\"Nothing supplied yet\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Unbacked\",\"WNGZwH\":\"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more\",\"WPWG/y\":\"Reserve status & configuration\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"User cannot withdraw more than the available balance\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"To borrow you need to supply any asset to be used as collateral.\",\"X/ITG9\":\"Copy error text\",\"X3Pp6x\":\"Used as collateral\",\"X4Zt7j\":\"Action cannot be performed because the reserve is paused\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTE NAY\",\"YDIOks\":\"Enabling E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Interest rate rebalance conditions were not met\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Aave Governance\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Efficiency mode (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Before supplying\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Liquidation value\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"enabled\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Time left to unstake\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Array parameters that should be equal length are not\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Your balance is lower than the selected amount.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Borrow APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Cooldown period warning\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Asset\",\"bXQ/Og\":\"Share on twitter\",\"bXr0ee\":\"Isolated assets have limited borrowing power and other assets cannot be used as collateral.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"The requested amount is greater than the max loan size in stable rate mode\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Supply\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Address is not a contract\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"You can not withdraw this amount because it will cause collateral call\",\"cBc+4A\":\"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Risk details\",\"cNT+ij\":\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) and Isolation mode. To manage E-Mode and Isolation mode visit your <0>Dashboard.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Repaying \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Forum discussion\",\"csDS2L\":\"Available\",\"cu7Stb\":\"You did not participate in this proposal\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Governance\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Ltv validation failed\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"You don’t have enough funds in your wallet to repay the full amount. If you proceed to repay with your current amount of funds, you will still have a small borrowing position in your dashboard.\",\"dXUQFX\":\"Assets to borrow\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Collateral usage\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Action requires an active reserve\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Total borrowed\",\"ecqEvn\":\"The collateral balance is 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Unstake now\",\"evw5ha\":\"Net worth\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"You switched to \",[\"0\"],\" rate\"],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Your current loan to value based on your collateral supplied.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Withdraw \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"User is trying to borrow multiple assets including a siloed one\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Zero address not valid\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Net APY is the combined effect of all supply and borrow positions on net worth, including incentives. It is possible to have a negative net APY if debt APY is higher than supply APY.\",\"gzcch9\":\"Invalid bridge protocol fee\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Net APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"The % of your total borrowing power used. This is based on the amount of your collateral supplied and the total amount that you can borrow.\",\"hehnjM\":\"Amount\",\"hjDCQr\":\"There was some error. Please try changing the parameters or <0><1>copy the error\",\"hom7qf\":\"Claim\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Borrowing \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Inconsistent flashloan parameters\",\"iEPVHF\":\"Not enough voting power to participate in this proposal\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"You voted \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Enter an amount\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens is not the same as staking them. If you wish to stake your\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"Collateral usage is limited because of Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Supplying your\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Disable E-Mode\",\"jKYzR1\":\"Enable E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Cooldown time left\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Unavailable\",\"k/sb6z\":\"Select language\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Claim \",[\"0\"]],\"kH6wUX\":\"Price impact\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"To repay on behalf of a user an explicit amount to repay is needed\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Supply cap is exceeded\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Debt ceiling is not zero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"English\",\"lfEjIE\":\"Learn more in our <0>FAQ guide\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Total emission per day\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Ok, Close\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Asset cannot be used as collateral.\",\"n+SX4g\":\"Developers\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Supply apy\",\"nJgsQu\":\"With a voting power of <0/>\",\"nLC6tu\":\"French\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Can be executed\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Your health factor and loan to value determine the assurance of your collateral. To avoid liquidations you can supply more collateral or repay borrow positions.\",\"o1xc2V\":\"AToken supply is not zero\",\"o5ooMr\":\"Debt\",\"o7J4JM\":\"Filter\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown to unstake\",\"oJ5ZiG\":\"User does not have outstanding variable rate debt on this reserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Stable interest rate will <0>stay the same for the duration of your loan. Recommended for long-term loan periods and for users who prefer predictability.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Available to supply\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"The underlying balance needs to be greater than 0\",\"pgWG9H\":\"Not enough staked balance\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"please check that the amount you want to supply is not currently being used for staking. If it is being used for staking, your transaction might fail.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"I understand how cooldown (\",[\"0\"],\") and unstaking (\",[\"1\"],\") work\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"The caller of this function must be a pool\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Staked\",\"qB4kPi\":\"Supply APY\",\"qENI8q\":\"Global settings\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copy the error\",\"qXCkEM\":\"Please connect your wallet to see your supplies, borrowings, and open positions.\",\"qY2jnw\":\"Invalid expiration\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Invalid amount to burn\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Amount must be greater than 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Show assets with 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Claim all rewards\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NAY\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"You unstake here\",\"smJNwH\":\"Available to borrow\",\"solypO\":\"Health factor is not below the threshold\",\"sr0UJD\":\"Go Back\",\"ss5GCK\":\"The address of the pool addresses provider is invalid\",\"swEgK4\":\"Your voting info\",\"t+wtgf\":\"Nothing borrowed yet\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Oracle price\",\"tFZLf8\":\"This gas calculation is only an estimation. Your wallet will set the price of the transaction. You can modify the gas settings directly from your wallet provider.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"te9Bfl\":\"Please, connect your wallet\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Your supplies\",\"u3ZeYl\":\"Transaction failed\",\"u706uF\":\"Invalid flashloan premium\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Hide\",\"vMba49\":\"Borrowing is not enabled\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Allows you to decide whether to use a supplied asset as collateral. An asset used as collateral will affect your borrowing power and health factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"Stable debt supply is not zero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Rewards APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"You \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"The caller of the function is not an AToken\",\"wZFvVU\":\"VOTE YAE\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Current differential\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, please go to the\",\"xNy/UG\":\"Repay with\",\"xPm8wv\":\"Learn more about risks involved\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Your info\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Dark mode\",\"yCrG6m\":\"Total market size\",\"yJUUbn\":\"Transaction overview\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Not a valid address\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"There are not enough funds in the\",[\"0\"],\"reserve to borrow\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Close\",\"z4uGQg\":\"Debt ceiling is exceeded\",\"z5UQOM\":\"The collateral chosen cannot be liquidated\",\"z5Y+p6\":[\"Supplying \",[\"symbol\"]],\"zCjNKs\":\"Action cannot be performed because the reserve is frozen\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Remaining debt\",\"zmTPiV\":\"Supply balance\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Learn more\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"If you DO NOT unstake within \",[\"0\"],\" of unstake window, you will need to activate cooldown process again.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participating in this \",[\"symbol\"],\" reserve gives annualized rewards.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Borrow cap\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Stable borrowing is not enabled\",\"/yQcJM\":\"Total worth\",\"00AB2i\":\"User did not borrow the specified currency\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"This is the total amount that you are able to supply to in this reserve. You are able to supply your wallet balance up until the supply cap is reached.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Please connect a wallet to view your personal information here.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Liquidation <0/> threshold\",\"1m9Qqc\":\"Withdrawing and Switching\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"View details\",\"2FYpfJ\":\"More\",\"2O3qp5\":\"Available liquidity\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Stable borrowing is enabled\",\"34Qfwy\":\"Borrow cap is exceeded\",\"39eQRj\":[\"Borrow \",[\"symbol\"]],\"3BL1xB\":\"Total supplied\",\"3K0oMo\":\"Remaining supply\",\"3MoZhl\":\"There is not enough collateral to cover a new borrow\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Supply \",[\"symbol\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Repay\",\"3qsjtp\":\"The weighted average of APY for all supplied assets, including incentives.\",\"3rL+os\":\"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Voting results\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"This asset has almost reached its supply cap. There can only be \",[\"messageValue\"],\" supplied to this market.\"],\"5cZ/KX\":\"Variable debt supply is not zero\",\"5che++\":\"To request access for this permissioned market, please visit: <0>Acces Provider Name\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Allowance required action\",\"5rsnKT\":\"Available rewards\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Overview\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Collateral\",\"65A04M\":\"Spanish\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Repay \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Voting power\",\"6f8S68\":\"Markets\",\"6g1gi0\":\"Proposals\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Switch Network\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Health factor\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Reached\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Claim all\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Dashboard\",\"7sofdl\":\"Withdraw and Switch\",\"8+6BI0\":\"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions\",\"87pUEW\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"All proposals\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Invalid amount to mint\",\"8Z5FPv\":\"Disconnect Wallet\",\"8Zz7s5\":\"assets\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Utilization Rate\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Show\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"You are entering Isolation mode\",\"9CDK3/\":[\"Borrowing is currently unavailable for \",[\"0\"],\".\"],\"9GIj3z\":\"Reserve Size\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Current votes\",\"9Rw96f\":[\"This asset has almost reached its borrow cap. There is only \",[\"messageValue\"],\" available to be borrowed from this market.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"This asset has reached its supply cap. Nothing is available to be supplied from this market.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Since this is a test network, you can get any of the assets if you have ETH on your wallet\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Your borrows\",\"AV7cGz\":\"Review approval tx details\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Borrowing power and assets are limited due to Isolation mode.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Collateral usage is limited because of isolation mode. <0>Learn More\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Asset category\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Claim \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Faucet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Collateral is (mostly) the same currency that is being borrowed\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"The underlying asset cannot be rescued\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave per month\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collateralization\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Disabled\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Withdrawing \",[\"symbol\"]],\"EdQY6l\":\"None\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Learn more.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Borrow power used\",\"FPKEug\":\"Operation not supported\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"on\",\"Fjw9N+\":\"Assets to supply\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Assets\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"ends\",\"GtP2hp\":[\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for \",[\"0\"],\" category. To manage E-Mode categories visit your <0>Dashboard.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Unstake window\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Cooldown period\",\"IaA40H\":\"Liquidation at\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Not enough balance on your wallet\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Wallet balance\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"This represents the threshold at which a borrow position will be considered undercollateralized and subject to liquidation for each collateral. For example, if a collateral has a liquidation threshold of 80%, it means that the position will be liquidated when the debt value is worth 80% of the collateral value.\",\"KYAjf3\":\"Isolated\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Expires\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Wrong Network\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Enter ETH address\",\"KvG1xW\":\"Claiming\",\"L+8Lzs\":\"Current LTV\",\"L+qiq+\":\"Market\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"No voting power\",\"LL0zks\":\"Can be collateral\",\"LLdJWu\":\"Claimable AAVE\",\"LSIpNK\":\"Borrow and repay in same block is not allowed\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Recipient address\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"staking view\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"If the health factor goes below 1, the liquidation of your collateral might be triggered.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"You cancelled the transaction.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Invalid return value of the flashloan executor function\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pending...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nothing staked\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Unbacked mint cap is exceeded\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Proposal overview\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"disabled\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Withdraw\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"When a liquidation occurs, liquidators repay up to 50% of the outstanding borrowed amount on behalf of the borrower. In return, they can buy the collateral at a discount and keep the difference (liquidation penalty) as a bonus.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"The weighted average of APY for all borrowed assets, including incentives.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Liquidation threshold\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Not reached\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Differential\",\"RNK49r\":\"Invalid signature\",\"RS0o7b\":\"State\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Proposal details\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Asset is not listed\",\"Rj01Fz\":\"Links\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"Health factor is lesser than the liquidation threshold\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Enabled\",\"SDav7h\":\"Funds in the Safety Module\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Total available\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Disabling E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Pool addresses provider is not registered\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Borrow\",\"TFxQlw\":\"Liquidation penalty\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"Asset can only be used as collateral in isolation mode only.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"User does not have outstanding stable rate debt on this reserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Asset is not borrowable in isolation mode\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Details\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"These funds have been borrowed and are not available for withdrawal at this time.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"The Maximum LTV ratio represents the maximum borrowing power of a specific collateral. For example, if a collateral has an LTV of 75%, the user can borrow up to 0.75 worth of ETH in the principal currency for every 1 ETH worth of collateral.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No rewards to claim\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Connect wallet\",\"VMfYUK\":\"Safety of your deposited collateral against the borrowed assets and its underlying value.\",\"VOAZJh\":\"Total borrows\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Review tx details\",\"W5hVah\":\"Nothing supplied yet\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Unbacked\",\"WNGZwH\":\"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more\",\"WPWG/y\":\"Reserve status & configuration\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"User cannot withdraw more than the available balance\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"To borrow you need to supply any asset to be used as collateral.\",\"X/ITG9\":\"Copy error text\",\"X3Pp6x\":\"Used as collateral\",\"X4Zt7j\":\"Action cannot be performed because the reserve is paused\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTE NAY\",\"YDIOks\":\"Enabling E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Interest rate rebalance conditions were not met\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Aave Governance\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Efficiency mode (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Before supplying\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Liquidation value\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"enabled\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Time left to unstake\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Array parameters that should be equal length are not\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Borrow APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Cooldown period warning\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Asset\",\"bXQ/Og\":\"Share on twitter\",\"bXr0ee\":\"Isolated assets have limited borrowing power and other assets cannot be used as collateral.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"The requested amount is greater than the max loan size in stable rate mode\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Supply\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Address is not a contract\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"You can not withdraw this amount because it will cause collateral call\",\"cBc+4A\":\"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Risk details\",\"cNT+ij\":\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) and Isolation mode. To manage E-Mode and Isolation mode visit your <0>Dashboard.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Repaying \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Forum discussion\",\"csDS2L\":\"Available\",\"cu7Stb\":\"You did not participate in this proposal\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Governance\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Ltv validation failed\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"You don’t have enough funds in your wallet to repay the full amount. If you proceed to repay with your current amount of funds, you will still have a small borrowing position in your dashboard.\",\"dXUQFX\":\"Assets to borrow\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Collateral usage\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Action requires an active reserve\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Total borrowed\",\"ecqEvn\":\"The collateral balance is 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Unstake now\",\"evw5ha\":\"Net worth\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"You switched to \",[\"0\"],\" rate\"],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Your current loan to value based on your collateral supplied.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Withdraw \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"User is trying to borrow multiple assets including a siloed one\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Zero address not valid\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Net APY is the combined effect of all supply and borrow positions on net worth, including incentives. It is possible to have a negative net APY if debt APY is higher than supply APY.\",\"gzcch9\":\"Invalid bridge protocol fee\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Net APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"The % of your total borrowing power used. This is based on the amount of your collateral supplied and the total amount that you can borrow.\",\"hehnjM\":\"Amount\",\"hjDCQr\":\"There was some error. Please try changing the parameters or <0><1>copy the error\",\"hom7qf\":\"Claim\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Borrowing \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Inconsistent flashloan parameters\",\"iEPVHF\":\"Not enough voting power to participate in this proposal\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"You voted \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Enter an amount\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens is not the same as staking them. If you wish to stake your\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"Collateral usage is limited because of Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Supplying your\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Disable E-Mode\",\"jKYzR1\":\"Enable E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Cooldown time left\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Unavailable\",\"k/sb6z\":\"Select language\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Claim \",[\"0\"]],\"kH6wUX\":\"Price impact\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"To repay on behalf of a user an explicit amount to repay is needed\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Supply cap is exceeded\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Debt ceiling is not zero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"English\",\"lfEjIE\":\"Learn more in our <0>FAQ guide\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Total emission per day\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Ok, Close\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Asset cannot be used as collateral.\",\"n+SX4g\":\"Developers\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Supply apy\",\"nJgsQu\":\"With a voting power of <0/>\",\"nLC6tu\":\"French\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Can be executed\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Your health factor and loan to value determine the assurance of your collateral. To avoid liquidations you can supply more collateral or repay borrow positions.\",\"o1xc2V\":\"AToken supply is not zero\",\"o5ooMr\":\"Debt\",\"o7J4JM\":\"Filter\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown to unstake\",\"oJ5ZiG\":\"User does not have outstanding variable rate debt on this reserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Stable interest rate will <0>stay the same for the duration of your loan. Recommended for long-term loan periods and for users who prefer predictability.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Available to supply\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"The underlying balance needs to be greater than 0\",\"pgWG9H\":\"Not enough staked balance\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"please check that the amount you want to supply is not currently being used for staking. If it is being used for staking, your transaction might fail.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"I understand how cooldown (\",[\"0\"],\") and unstaking (\",[\"1\"],\") work\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"The caller of this function must be a pool\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Staked\",\"qB4kPi\":\"Supply APY\",\"qENI8q\":\"Global settings\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copy the error\",\"qXCkEM\":\"Please connect your wallet to see your supplies, borrowings, and open positions.\",\"qY2jnw\":\"Invalid expiration\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Invalid amount to burn\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Amount must be greater than 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Show assets with 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Claim all rewards\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NAY\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"You unstake here\",\"smJNwH\":\"Available to borrow\",\"solypO\":\"Health factor is not below the threshold\",\"sr0UJD\":\"Go Back\",\"ss5GCK\":\"The address of the pool addresses provider is invalid\",\"swEgK4\":\"Your voting info\",\"t+wtgf\":\"Nothing borrowed yet\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Oracle price\",\"tFZLf8\":\"This gas calculation is only an estimation. Your wallet will set the price of the transaction. You can modify the gas settings directly from your wallet provider.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"Please, connect your wallet\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Your supplies\",\"u3ZeYl\":\"Transaction failed\",\"u706uF\":\"Invalid flashloan premium\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Hide\",\"vMba49\":\"Borrowing is not enabled\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Allows you to decide whether to use a supplied asset as collateral. An asset used as collateral will affect your borrowing power and health factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"Stable debt supply is not zero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Rewards APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"You \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"The caller of the function is not an AToken\",\"wZFvVU\":\"VOTE YAE\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Current differential\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, please go to the\",\"xNy/UG\":\"Repay with\",\"xPm8wv\":\"Learn more about risks involved\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Your info\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Dark mode\",\"yCrG6m\":\"Total market size\",\"yJUUbn\":\"Transaction overview\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Not a valid address\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"There are not enough funds in the\",[\"0\"],\"reserve to borrow\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Close\",\"z4uGQg\":\"Debt ceiling is exceeded\",\"z5UQOM\":\"The collateral chosen cannot be liquidated\",\"z5Y+p6\":[\"Supplying \",[\"symbol\"]],\"zCjNKs\":\"Action cannot be performed because the reserve is frozen\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Remaining debt\",\"zmTPiV\":\"Supply balance\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Learn more\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\"}")}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index e2b593d3ff..a9f6f994d0 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -1178,6 +1178,10 @@ msgstr "Sorry, an unexpected error happened. In the meantime you may try reloadi msgid "{d}d" msgstr "{d}d" +#: src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx +msgid "Your {0} balance is lower than the selected amount." +msgstr "Your {0} balance is lower than the selected amount." + #: src/components/transactions/StakeCooldown/StakeCooldownModalContent.tsx #: src/components/transactions/StakeCooldown/StakeCooldownModalContent.tsx #: src/modules/umbrella/StakeCooldownModalContent.tsx @@ -2226,6 +2230,10 @@ msgstr "Add {0} to wallet to track your balance." msgid "Loading..." msgstr "Loading..." +#: src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx +msgid "This is an off-chain operation. Keep in mind that a solver may already have filled your order." +msgstr "This is an off-chain operation. Keep in mind that a solver may already have filled your order." + #: src/modules/governance/GovernanceTopPanel.tsx msgid "Aave Governance" msgstr "Aave Governance" @@ -2314,10 +2322,6 @@ msgstr "Array parameters that should be equal length are not" msgid "Repaying {0}" msgstr "Repaying {0}" -#: src/components/transactions/Swap/errors/shared/BalanceLowerThanInput.tsx -msgid "Your balance is lower than the selected amount." -msgstr "Your balance is lower than the selected amount." - #: src/components/incentives/MeritIncentivesTooltipContent.tsx #: src/components/incentives/MeritIncentivesTooltipContent.tsx msgid "from the" @@ -3627,6 +3631,10 @@ msgstr "Since this asset is frozen, the only available actions are withdraw and msgid "Borrow amount to reach {0}% utilization" msgstr "Borrow amount to reach {0}% utilization" +#: src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx +msgid "Cancel order" +msgstr "Cancel order" + #: src/components/ConnectWalletPaper.tsx #: src/components/ConnectWalletPaperStaking.tsx msgid "Please, connect your wallet" diff --git a/src/locales/es/messages.js b/src/locales/es/messages.js index 30890f1012..e85391d44d 100644 --- a/src/locales/es/messages.js +++ b/src/locales/es/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si NO unstakeas entre \",[\"0\"],\" de la ventana de unstakeo, necesitarás activar el proceso de cooldown de nuevo.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participar en esta reserva de \",[\"symbol\"],\" da recompensas anuales.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Utiliza tu balance de AAVE, stkAAVE o aAava para delegar tu voto y poder de proposición. No enviarás ningún token, solo los derechos de votar y proponer cambios en el protocolo. Puedes volver a delegar o revocar el poder de vuelta en cualquier momento.\",\"+i3Pd2\":\"Límite del préstamo\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Cantidad para migrar\",\"/7ykiW\":\"Tomar prestado esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"Preguntas frecuentes\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"El préstamo estable no está habilitado\",\"/yQcJM\":\"Valor total\",\"00AB2i\":\"El usuario no tomó prestado el activo especificado\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Cambio de tasa\",\"0BF3yK\":\"Lo sentimos, no hemos podido encontrar la página que estabas buscando.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Riesgo de liquidación\",\"0ojY+Y\":\"Balance actual v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Cambio de garantía\",\"0wGCWc\":\"Esta es la cantidad total que puedes suministrar en esta reserva. Puedes suministrar el balance de tu cartera hasta que se alcance el límite de suministro.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Los datos de los precios no están disponibles actualmente para esta reserva en el subgraph del protocolo\",\"1LjK22\":\"Historial de transacciones\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Por favor conecta una cartera para ver tu información personal aquí.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Umbral <0/> de liquidación\",\"1m9Qqc\":\"Retirando y Cambiando\",\"1t7rez\":\"El suministro de activos está limitado a una cierta cantidad para reducir la exposición del protocolo a este activo y ayudar a manejar los riesgos implicados.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Ver detalles\",\"2FYpfJ\":\"Más\",\"2O3qp5\":\"Liquidez disponible\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Este activo no se puede migrar debido a una restricción del límite de suministro en el mercado v3 de \",[\"marketName\"],\".\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave es un protocolo totalmente descentralizado, gobernado por la comunidad de poseedores de tokens AAVE. Los poseedores de tokens AAVE discuten, proponen y votan colectivamente sobre las actualizaciones del protocolo. Los poseedores de tokens AAVE (solo en la red Ethereum) pueden votar ellos mismos sobre nuevas propuestas o delegarse a una dirección de su elección. Para aprender más, consulta la\",\"2a6G7d\":\"Por favor introduce una dirección de cartera válida.\",\"2eBWE6\":\"Acepto los riesgos involucadros.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"El préstamo estable no está habilitado\",\"34Qfwy\":\"El límite del préstamo se ha sobrepasado\",\"39eQRj\":[\"Tomar prestado \",[\"symbol\"]],\"3BL1xB\":\"Total suministrado\",\"3K0oMo\":\"Suministro restante\",\"3MoZhl\":\"No hay suficiente garantía para cubrir un nuevo préstamo\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Suministrar \",[\"symbol\"]],\"3mXg0z\":\"LTV máximo\",\"3q3mFy\":\"Pagar\",\"3qsjtp\":\"El promedio ponderado de APY para todos los activos suministrados, incluidos los incentivos.\",\"3rL+os\":\"Solo puedes retirar tus activos del Módulo de Seguridad después de que finalice el período de cooldown y la ventana de unstakeo esté activa.\",\"42UgDM\":[\"Migrar al mercado V3 de \",[\"0\"]],\"49UFQA\":\"Resultados de la votación\",\"4DMZUI\":\"Ver Transacciones\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Términos\",\"4YYh4d\":\"Máximo disponible para tomar prestado\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Firma para continuar\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transacciones\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue activos de prueba gratis en\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentación\",\"5NOSGa\":\"El límite de deuda limita la cantidad posible que los usuarios del protocolo pueden tomar prestado contra este activo. El límite de deuda es específico para los activos en isolation mode y se indica en USD.\",\"5Ncc6j\":[\"Este activo casi ha alcanzado su límite de suministro. Solo se puede suministrar \",[\"messageValue\"],\" a este mercado.\"],\"5cZ/KX\":\"El suministro de deuda variable no es cero\",\"5che++\":\"Para solicitar acceso a este mercado, porfavor visita: <0>Nombre del proveedor de acceso\",\"5ctNdV\":[\"Mínimo \",[\"0\"],\" recibido\"],\"5hDe9v\":\"Acción de permiso requerida\",\"5rsnKT\":\"Recompensas disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Ver todos los votos\",\"6/dCYd\":\"Resumen\",\"60crCe\":\"Todas las transacciones\",\"62Xcjh\":\"Garantía\",\"65A04M\":\"Español\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Firmando\",\"6Jrv+z\":[\"Pagar \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Poder de votación\",\"6f8S68\":\"Mercados\",\"6g1gi0\":\"Propuestas\",\"6gvoHP\":\"Copiar mensaje de error\",\"6h3Q5G\":\"reembolsado\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Cambiar de red\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Factor de salud\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Alcanzado\",\"7YlcXu\":\"El fork mode está activado\",\"7Z76Iw\":\"Tomar prestado no está disponible porque estás usando el Isolation mode. Para administrar el Isolation mode, visita tu <0>Panel de control.\",\"7aKlMS\":\"Compartir en Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Reclamar todo\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"No se pudieron recuperar los datos, por favor recarga el gráfico.\",\"7p5kLi\":\"Panel de control\",\"7sofdl\":\"Retirar y Cambiar\",\"8+6BI0\":\"Ten cuidado - Estás muy cerca de la liquidación. Considera depositar más garantía o pagar alguno de tus préstamos\",\"87pUEW\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos.\"],\"8F1i42\":\"Página no encontrada\",\"8G8M0u\":\"Cargando datos...\",\"8Iu1QS\":\"retirado\",\"8JL93T\":\"Todas las propuestas\",\"8Q51DU\":\"Añadir a la cartera\",\"8X/oyn\":\"Cantidad invalidad para generar\",\"8Z5FPv\":\"Desconectar cartera\",\"8Zz7s5\":\"activos\",\"8aLW8H\":\"Balance a revocar\",\"8bOT3H\":\"Tasa de uso\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Ver contrato\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Mostrar\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Estás entrando en el Isolation mode\",\"9CDK3/\":[\"Tomar prestado no está disponible actualmente para \",[\"0\"],\".\"],\"9GIj3z\":\"Tamaño de la reserva\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Balance stakeado\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votos actuales\",\"9Rw96f\":[\"Este activo casi ha alcanzado su límite de préstamo. Solo hay \",[\"messageValue\"],\" disponibles para ser prestado de este mercado.\"],\"9Xj/qR\":[\"Algunos activos migrados no se utilizarán como garantía debido al isolation mode habilitado en el mercado V3 de \",[\"marketName\"],\". Visita el <0>Panel de control de \",[\"marketName\"],\" V3 para administrar el isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Este activo ha alcanzado su límite de suministro. No queda nada disponible para ser suministrado desde este mercado.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI ha sido pausado debido a una decisión de la comunidad. Los suministros, préstamos y pagos se han visto afectados. <0>Más información\",\"9lXchd\":\"Token subyacente\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Puesto que esta es una red de pruebas, puedes obtener cualquiera de los activos si tienes ETH en tu cartera\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Elige uno de los servicios on-ramp\",\"A6dCI6\":[\"La máxima cantidad disponible para tomar prestado es <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Tus préstamos\",\"AV7cGz\":\"Revisa los detalles del approve\",\"AZOjB8\":\"Recuperando datos...\",\"Ai0jas\":\"Únete a la discusión de la comunidad\",\"Ajl2rq\":\"El poder de préstamo y los activos están limitados debido al Isolation mode.\",\"AqgYNC\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH suministrado como garantía continuará acumulando recompensas de staking proporcionadas por rebases diarios.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"El uso como garantía está limitado debido al isolation mode. <0>Aprende más\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Categoría de activos\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Este activo está congelado debido a una decisión de la comunidad de Aave. <0>Más información\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Documento técnico\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Griego\",\"CkTRmy\":[\"Reclamar \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Por favor conecta tu cartera para ver la herramienta de migración.\",\"CtGlFb\":[\"Faucet \",[\"networkName\"]],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Esta acción reducirá el factor de salud de V3 por debajo del umbral de liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"Este activo ha sido pausado debido a una decisión de la comunidad. El suministro, los retiros, los préstamos y los pagos se han visto afectados.\",\"DAma/S\":\"La garantía es (en su mayoría) el mismo activo que se está tomando prestado\",\"DCnFg0\":[\"Direcciones (\",[\"0\"],\")\"],\"DG3Lv1\":\"Entiendo completamente los riesgos de migrar.\",\"DONJcV\":\"El activo base no puede ser rescatado\",\"DR+4uL\":\"Balance del suministro después del cambio\",\"DWjrck\":[\"Este activo no se puede migrar al mercado V3 de \",[\"marketName\"],\" debido a las restricciones del E-mode. Puedes deshabilitar o administrar las categorías del E-mode en tu <0>Panel de control V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave por mes\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Colateralización\",\"DxfsGs\":\"Puedes reportar cualquier incidente a nuestro <0>Discord o <1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Deshabilitado\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restakeando \",[\"symbol\"]],\"Ebgc76\":[\"Retirando \",[\"symbol\"]],\"EdQY6l\":\"Ninguno\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivar el periodo de cooldown para unstakear \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrar a V3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Aprende más.\",\"FHlMf/\":\"Balance actual v2\",\"FHpxjF\":[\"El factor de reserva es un porcentaje de interés que va a un \",[\"0\"],\" que es controlado por el gobierno de Aave para promover el crecimiento del ecosistema.\"],\"FOBZa6\":\"Capacidad de préstamo utilizada\",\"FPKEug\":\"Operación no soportada\",\"FbmMe7\":\"Direcciones vinculadas\",\"Fdp03t\":\"en\",\"Fjw9N+\":\"Activos a suministrar\",\"FmN0fk\":\"Restakear\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO es un activo nativo descentralizado, digital y respaldado por garantía, vinculado al USD. Es creado por los usuarios que lo toman prestado contra múltiples garantías. Cuando el usuario paga su posición de préstamo de GHO, el protocolo quema el GHO de ese usuario. Todos los pagos de interés acumulados por los acuñadores de GHO serán transferidos directamente a la tesorería de\xA0la\xA0DAO\xA0de\xA0Aave.\",\"GQrBTq\":\"Cambiar E-Mode\",\"GWswcZ\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. El 20 de diciembre de 2022, renFIL ya no será compatible y no se podrá conectar de nuevo a su red nativa. Se recomienda retirar las posiciones de suministro y pagar las posiciones de préstamo para que renFIL se pueda convertir de nuevo a FIL antes de la fecha límite. Después de esta fecha, ya no será posible convertir renFIL a FIL. <0>Más detalles\",\"GX8GKD\":\"Activos\",\"GgEj+0\":\"Modo de solo lectura. Conéctate a una cartera para realizar transacciones.\",\"GjkIKV\":\"finaliza\",\"GtP2hp\":[\"Tomar prestado no está disponible porque has habilitado el Efficieny Mode (E-Mode) para la categoría \",[\"0\"],\". Para manejar las categorías del E-Mode visita tu <0>Panel de control.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Lo sentimos, se produjo un error imprevisto. Mientras tanto, puedes intentar recargar la página, o volver después.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Ventana de unstakeo\",\"HpK/8d\":\"Recargar\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Este activo no se puede migrar al mercado v3 de \",[\"marketName\"],\", ya que el activo de garantía habilitará el isolation mode.\"],\"Hvwnm9\":[\"La cantidad máxima disponible para suministrar está limitada porque el límite de suministro del protocolo está al \",[\"0\"],\"%.\"],\"I8CX2c\":\"La cantidad total de tus activos denominados en USD que pueden ser usados como garantía para activos de préstamo.\",\"IAD2SB\":[\"Reclamando \",[\"symbol\"]],\"IG9X9/\":\"Tomar prestado este activo está limitado a una cierta cantidad para minimizar la insolvencia del fondo de liquidez.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Está previsto que este activo se desvincule debido a una decisión del Gobierno del Protocolo Aave. <0>Más detalles\",\"IP+I/j\":\"Periodo de cooldown\",\"IaA40H\":\"Liquidación en\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Administrar analíticas\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstakeando \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stakear\",\"JZMxX0\":\"No hay suficiente balance en tu cartera\",\"Jgflkm\":\"Obtener GHO\",\"JoMQnI\":\"Balance de la cartera\",\"JtwD8u\":\"Balance tomado prestado tras pagar\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"KLXVqE\":[\"Los tokens stETH se migrarán a Wrapped stETH usando el wrapper del protocolo de Lido, lo que provoca un cambio en el balance de suministro después de la migración: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Esto representa el umbral en el que un préstamo será considerado sin garantía suficiente y sujeto a la liquidación de la misma. Por ejemplo, si una garantía tiene un umbral de liquidación del 80 %, significa que el préstamo será liquidado cuando el valor de la deuda alcanze el 80% del valor de la garantía.\",\"KYAjf3\":\"Aislado\",\"KkPgim\":\"Cambiando E-Mode\",\"KnN1Tu\":\"Caduca\",\"KoOBI2\":\"Debido a mecánicas internas de stETH requeridas para el soporte del rebase, no es posible realizar un cambio de garantía donde stETH es el token de origen.\",\"KojyJ4\":\"Red incorrecta\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Introduce la dirección ETH\",\"KvG1xW\":\"Reclamando\",\"L+8Lzs\":\"LTV actual\",\"L+qiq+\":\"Mercado\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Sin poder de voto\",\"LL0zks\":\"Puede ser garantía\",\"LLdJWu\":\"AAVE Reclamable\",\"LSIpNK\":\"Tomar prestado y pagar en el mismo bloque no está permitido\",\"LVt3TI\":[\"<0>Tolerancia de deslizamiento <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Modo E\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Intenta aumentar el deslizamiento o reduce la cantidad de entrada\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Dirección del destinatario\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vista de stakeo\",\"McHlGl\":\"Cambio de APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si el factor de salud se encuentra por debajo de 1, la liquidación de tu colateral puede ser activada.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Has cancelado la transacción.\",\"MnE2QX\":\"Información de préstamo\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valor de retorno inválido en la función executor del préstamo flash\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Este activo solo se puede utilizar como garantía en isolation mode con poder de préstamo limitado. Para entrar en el isolation mode, deshabilita todas las demás garantías.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pendiente...\",\"NK9ikO\":\"Balance de la cartera\",\"NMt2CB\":\"Cantidad reclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nada invertido\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"El límite de minteo sin respaldo ha sido excedido\",\"O+tyU+\":[\"La cantidad máxima disponible para tomar prestado contra este activo está limitada porque el límite de deuda está al \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstakear\",\"OR8cYX\":\"Resumen de la propuesta\",\"OYuJ9K\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"OfhWJH\":\"Restablecer\",\"Og2SKn\":\"deshabilitado\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Página web\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirar\",\"P1dURE\":\"Revocar poder\",\"P2WCD/\":[\"El activo subyacente no existe en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"P2sL6B\":\"Cuando ocurre una liquidación, los liquidadores pagan hasta el 50% de la cantidad pendiente del préstamo en nombre del prestatario. A cambio, pueden comprar la garantía con descuento y quedarse con la diferencia (sanción de liquidación) como bonificación.\",\"P6sRoL\":\"Stakea ABPT\",\"P72/OW\":\"El promedio ponderado de APY para todos los activos prestados, incluidos los incentivos.\",\"P7e6Ug\":\"Por favor conecta tu cartera para ver el historial de transacciones.\",\"PByO0X\":\"Votos\",\"PI+kVe\":\"Deshabilitar fork\",\"PJK9u/\":\"Apy préstamo\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Umbral de liquidación\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Esta acción reducirá el factor de salud V2 por debajo del umbral de liquidación. Mantén la garantía o migra la posición de préstamo para continuar.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"El Aave Balancer Pool Token (ABPT) es un token de pool de liquidez. Puedes recibir ABPT depositando una combinación de AAVE + wstETH en el pool de liquidez de Balancer. Luego puedes stakear tu BPT en el módulo de seguridad para asegurar el protocolo y ganar incentivos de seguridad.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Retirando\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"No alcanzado\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Diferencial\",\"RNK49r\":\"Firma inválida\",\"RS0o7b\":\"Estado\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Detalles de la propuesta\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"El activo no está listado\",\"Rj01Fz\":\"Enlaces\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"El factor de salud es menor que el umbral de liquidación\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Habilitado\",\"SDav7h\":\"Fondos en el Módulo de Seguridad\",\"SENccp\":\"Si el error persiste, <0/> podrías reportarlo a esto\",\"SIWumd\":\"Mostrar activos congelados o pausados\",\"SM58dD\":\"Cantidad en cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Error al cargar los votantes de la propuesta. Por favor actualiza la página.\",\"SSQVIz\":\"Umbral de liquidación\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"El modo de solo lectura permite ver las posiciones de las direcciones en Aave, pero no podrás realizar transacciones.\",\"SZRUQ4\":\"Deslizamiento máximo\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"Sk2zW9\":\"Desactivando E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"La dirección del proveedor del pool no esta registrada\",\"T/AIqG\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"T0xCO9\":\"No se puede validar la dirección de la cartera. Vuelve a intentarlo.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Tomar prestado\",\"TFxQlw\":\"Penalización de liquidación\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"El activo solo puede usarse como garantía en el Isolation mode únicamente.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"El usuario no tiene deuda pendiente de tasa estable en esta reserva\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Balance de préstamo después del cambio\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recarga la página\",\"U2r8nY\":\"Elige cuánto poder de voto/proposición otorgar a otra persona delegando parte de tu balance de AAVe o stkAAVE. Tus tokens permanecerán en tu cuenta, pero tu delegado podrá votar o proponer en tu lugar. Si tu balance de AAVE, stkAAVE o aAave cambia, el poder de voto/proposición de tu delegado se ajustará automáticamente.\",\"U8IubP\":\"La aplicación se está ejecutando en testnet mode. Aprende como funciona en\",\"U9btTk\":\"El activo no se puede pedir prestado en isolation mode\",\"UAOZRe\":\"El impacto del precio es la diferencia entre el valor total de los tokens de entrada cambiados y los tokens de destino obtenidos (en USD), que resulta de la liquidez limitada del par de cambio.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Detalles\",\"UTTKmT\":\"Cooldown de stakeo activado\",\"UXeR72\":\"Estos fondos se han tomado prestados y no están disponibles para su retirada en este momento.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"El ratio LTV máximo representa el poder de endeudamiento máximo de una garantía específica. Por ejemplo, si una garantía tiene un LTV del 75 %, el usuario puede pedir prestado hasta 0,75 ETH en la moneda principal por cada 1 ETH de garantía.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No hay recompensas para reclamar\",\"V0f2Xv\":\"Factor de reserva\",\"V1HK43\":\"Riesgos de migración\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Deuda cubierta\",\"VHOVEJ\":\"Conectar cartera\",\"VMfYUK\":\"Seguridad de tu garantía depositada contra los activos prestados y su valor subyacente.\",\"VOAZJh\":\"Total de préstamos\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Revisar detalles de la tx\",\"W5hVah\":\"Nada suministrado aún\",\"W5kTFy\":\"Votando\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"No respaldado\",\"WNGZwH\":\"El E-Mode incrementa tu LTV para una categoría seleccionada de activos hasta el <0/>. <1>Aprende más\",\"WPWG/y\":\"Configuración y estado de la reserva\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"El usuario no puede retirar más que el balance disponible\",\"WaZyaV\":\"<0>Ampleforth es un activo con rebase. Visita la <1>documentación para aprender más.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Debido a que este activo está en pausa, no se pueden realizar acciones hasta nuevo aviso\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Para tomar prestado, necesitas suministrar cualquier activo para ser utilizado como garantía.\",\"X/ITG9\":\"Copiar el texto del error\",\"X3Pp6x\":\"Utilizado como garantía\",\"X4Zt7j\":\"No se puede realizar la acción porque la reserva está pausada\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Direcciones de cartera de contrato inteligente representativas (Safe) en otras cadenas.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Por favor ten siempre en cuenta tu <0>factor de salud (HF) cuando migres parcialmente una posición y que tus tasas serán actualizadas a tasas de la V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTAR NO\",\"YDIOks\":\"Habilitar E-Mode\",\"YSodyW\":\"Esta acción reducirá tu factor de salud. Por favor ten en cuenta el riesgo incrementado de liquidación de la garantía.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode está ON\",\"YrDxdO\":\"Si tu relación préstamo-valor supera el umbral de liquidación, tu garantía puede ser liquidada.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"No se cumplieron las condiciones de ajuste de tasas de interés\",\"YyydIq\":[\"Añade \",[\"0\"],\" a tu cartera para hacer un seguimiento del balance.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gobierno de Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Modo de eficiencia (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Deshabilitar testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Antes de suministrar\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valor de liquidación\",\"ZrEc8j\":\"No pudimos encontrar ningún activo relacionado con tu búsqueda. Vuelve a intentarlo con un nombre diferente de activo, símbolo o dirección.\",\"ZsLF7e\":\"habilitado\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Tempo restante para unstakear\",\"a7u1N9\":\"Precio\",\"a9D+6D\":\"Unstakeado\",\"aEtiwq\":\"Votar NO\",\"aMmFE1\":\"Comprar Crypto con Fiat\",\"aOKIms\":\"Los parámetros del array que deberían ser iguales en longitud no lo son\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Tu balance es más bajo que la cantidad seleccionada.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"Se ha producido un error al recuperar la propuesta.\",\"aoXTT7\":\"APY préstamo, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Advertencia periodo de cooldown\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Activo\",\"bXQ/Og\":\"Compartir en twitter\",\"bXr0ee\":\"Los activos aislados han limitado tu capacidad de préstamo y otros activos no pueden ser usados como garantía.\",\"bYmAV1\":\"Direcciones\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"La cantidad solicitada es mayor que el tamaño máximo del préstamo en el modo de tasa estable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Suministrar\",\"bxN6EM\":\"No se puede deshabilitar E-Mode\",\"c91vuQ\":\"La dirección no es un contrato\",\"c97os2\":\"aToken de Aave\",\"c9b44w\":\"No puedes retirar esta cantidad porque causará una liquidación\",\"cBc+4A\":\"Esta es la cantidad total disponible que puedes tomar prestada. Puedes tomar prestado basado en tu garantía y hasta que el límite de préstamo se alcance.\",\"cIl5kp\":\"Tu poder de voto se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"cLo09S\":\"Detalles de riesgo\",\"cNT+ij\":\"Tomar prestado no está disponible porque has habilitado el Efficiency Mode (E-Mode) y el Isolation mode. Para administrar el E-Mode y el Isolation Mode, visita tu <0>Panel de control.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Para enviar una propuesta de cambios menores al protocolo, necesitarás al menos 80K de poder. Si deseas cambiar la base central del código, necesitarás un poder de 320K.<0>Aprende más\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Votar SI\",\"ckf7gX\":[\"Pagando \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Hilo de discusión del foro\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"No has participado en esta propuesta\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gobierno\",\"dEgA5A\":\"Cancelar\",\"dIsyWh\":\"La validación del LTV ha fallado\",\"dOB5nW\":[\"La cantidad máxima disponible para suministrar es <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"No tienes suficientes fondos en tu cartera para pagar la cantidad total. Si procedes a pagar con tu cantidad actual de fondos, aún tendrás un pequeño préstamo en tu panel de control.\",\"dXUQFX\":\"Activos a tomar prestado\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Tomar prestado está deshabilitado debido a una decisión de la comunidad de Aave. <0>Más información\",\"djsg0o\":\"Uso de la garantía\",\"drdV8R\":\"Liquidación\",\"dxW8cS\":\"Token de deuda de Aave\",\"e4V3oW\":\"Top 10 direcciones\",\"eD8WX/\":\"La acción requiere una reserva activa\",\"eJRJ04\":\"Cantidad para unstakear\",\"eLh0cL\":\"El deslizamiento es la diferencia entre las cantidades calculadas y las recibidas debido a las condiciones cambiantes del mercado entre el momento en que se envía la transacción y su verificación.\",\"ePK91l\":\"Editar\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Recompensas de Staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aún no hay transacciones.\",\"ebLGGN\":\"Total tomado prestado\",\"ecqEvn\":\"El balance de garantía es 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible en\",\"enruNF\":\"empieza\",\"eqLYiD\":\"Unstakea ahora\",\"evw5ha\":\"Valor neto\",\"ezcU16\":\"Obtener Token ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Has cambiado a tasa \",[\"0\"]],\"fMJQZK\":\"Prestado\",\"fZ5Vnu\":\"Recibido\",\"firl9Q\":\"Tu actual relación préstamo-valor basado en tu garantía suministrada.\",\"fldjW9\":\"Previsualizar la tx y migrar\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Retirar \",[\"symbol\"]],\"fwjWSI\":\"Suministrado\",\"fwyTMb\":\"Migrar a stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Votó NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. <0>More información\",\"gTHi2T\":\"El usuario está intentando tomar prestado múltiples activos incluido uno aislado\",\"gVW59Y\":\"Por favor conecta tu cartera para obtener activos testnet gratis.\",\"gcFNxP\":\"Aprobación confirmada\",\"goff7V\":\"Dirección cero no válida\",\"gp+f1B\":\"Versión 3\",\"gvTM4B\":\"El APY neto es el efecto combinado de todos los suministros y préstamos sobre total, incluidos los incentivos. Es posible tener un APY neto negativo si el APY de la deuda es mayor que el APY de suministro.\",\"gzcch9\":\"Comisión de puente de protocolo inválida\",\"h33MxW\":\"Direcciones de cartera de contrato inteligente representantes (Safe) en otras cadenas.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activar Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY neto\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Reclamado\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"El % de tu poder de préstamo total utilizado. Esto se basa en la cantidad de tu garantía suministrada y la cantidad total que puedes pedir prestado.\",\"hehnjM\":\"Cantidad\",\"hjDCQr\":\"Hubo un error. Por favor intenta cambiar los parámetros o <0><1>copiar el error\",\"hom7qf\":\"Reclamar\",\"hpHJ4I\":\"Garantía liquidada\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Tomando prestado \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"Sobre GHO\",\"iChbOF\":\"Parámetros inconsistentes del préstamo flash\",\"iEPVHF\":\"No hay suficiente poder de voto para participar en esta propuesta\",\"iEW87X\":\"Poder delegado\",\"iEju36\":[\"Has votado \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Seleccionar tolerancia de deslizamiento\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Ingresa una cantidad\",\"iSLIjg\":\"Conectar\",\"iUo5rv\":\"tokens no es lo mismo que stakearlos. Si deseas stakearlos\",\"iZxa38\":\"Úsalo para votar a favor o en contra de propuestas activas.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"En el Isolation mode, no puedes suministrar otros activos como garantía. Un límite de deuda global limita la capacidad de préstamo del activo aislado. Para salir del Isolation mode, deshabilita \",[\"0\"],\" como garantía antes de tomar prestado otro activo. Lee más en nuestras <0>preguntas frecuentes \"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"El uso de garantías está limitado debido al Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Suministrando tu\",\"jFi7dz\":\"Tasa de interés determinada por el gobierno de Aave. Esta tasa puede cambiar con el tiempo dependiendo de la necesidad de que el suministro de GHO se contraiga/expanda. <0>Aprende más\",\"jG3UJ7\":\"Desactivar el E-Mode\",\"jKYzR1\":\"Habilitar E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Periodo restante de cooldown\",\"jeMZNr\":[[\"0\"],\" el servicio on-ramp es proporcionado por proveedores externos y al seleccionarlo, estás aceptando los términos de dichos proveedores. Tu acceso al servicio podría depender de que el proveedor externo esté operativo.\"],\"jfl9OP\":\"Migrado\",\"jmXdoY\":\"En E-Mode algunos activos no se pueden pedir prestados. Sal del E-Mode para obtener acceso a todos los activos\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"No disponible\",\"k/sb6z\":\"Seleccionar idioma\",\"k3wP3f\":\"<0>Atención: Los cambios de parámetros a través de la gobernanza pueden alterar el factor de salud de tu cuenta y el riesgo de liquidación. Sigue el <1>foro de gobierno de Aave para mantenerte actualizado.\",\"kACpF3\":[\"Reclamar \",[\"0\"]],\"kH6wUX\":\"Impacto del precio\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" activos seleccionados\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Para pagar en nombre de un usuario, se necesita una cantidad explícita para pagar\",\"kRTD40\":[\"Cantidad a pagar para alcanzar el \",[\"0\"],\"% de utilización\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"El límite de suministro se ha sobrepasado\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"El límite de deuda no es cero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"El balance de DAI se convertirá a través de los contratos de DSR y luego se suministrará como sDAI. El cambio no genera costos adicionales ni deslizamientos.\",\"lU2d1/\":[\"Este activo no se puede migrar debido a una liquidez insuficiente o a una limitación del límite de préstamo en el mercado v3 de \",[\"marketName\"],\".\"],\"lVhKKI\":\"Votó YAE\",\"lWLqxB\":\"No pudimos encontrar ninguna transacción relacionada con tu búsqueda. Vuelve a intentarlo con un nombre de activo diferente o restablece los filtros.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Inglés\",\"lfEjIE\":\"Aprende más en nuestra guía <0>Preguntas frecuentes\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Emisiones totales por día\",\"m7r7Hh\":\"Activos de préstamo seleccionados\",\"mDDK4p\":\"Pool de Balancer\",\"mUAFd6\":\"Versión 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos o usa <0>\",[\"0\"],\" para transferir tus activos de \",[\"network\"],\".\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Comprar \",[\"cryptoSymbol\"],\" con Fiat\"],\"mvCXBY\":\"Stakea AAVE\",\"mwdzil\":\"Vale, cerrar\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Este activo no puede usarse como garantía.\",\"n+SX4g\":\"Desarrolladores\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Apy de suministro\",\"nJgsQu\":\"Con un poder de votación de <0/>\",\"nLC6tu\":\"Francés\",\"nNHV0z\":\"Migrar múltiples garantías y activos prestados al mismo tiempo puede ser una operación costosa y podría fallar en ciertas situaciones.<0>Por lo tanto, no se recomienda migrar posiciones con más de 5 activos (depositados + tomados prestados) al mismo tiempo.\",\"nNbnzu\":\"Proposición\",\"nPGNMh\":\"Puede ser ejecutado\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Ambos\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Se produjo un error\",\"nxyWvj\":\"Retirar esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"o17QVP\":\"Tu factor de salud y la relación préstamo-valor determinan la seguridad de tu garantía. Para evitar liquidaciones, puedes suministrar más garantía o pagar las posiciones de préstamo.\",\"o1xc2V\":\"El balance de AToken no es cero\",\"o5ooMr\":\"Deuda\",\"o7J4JM\":\"Filtro\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown para undstakear\",\"oJ5ZiG\":\"El usuario no tiene deuda pendiente de tasa variable en esta reserva\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Activos de prueba\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"La tasa de interés estable <0>permanecerá igual durante la duración de su préstamo. Está recomendado para los períodos de préstamo a largo plazo y para los usuarios que prefieren la previsibilidad.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible para suministrar\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Sin resultados\",\"owSsI3\":\"Firmas listas\",\"p+R52m\":\"Ir al pool de Balancer\",\"p2S64u\":\"La relación préstamo-valor de las posiciones migradas provocaría la liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"p2Z2Qi\":\"Este activo ha alcanzado su límite de préstamo. No queda nada disponible para ser prestado de este mercado.\",\"p45alK\":\"Configurar la delegación\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"El balance subyacente debe ser mayor que 0\",\"pgWG9H\":\"No hay suficiente balance stakeado\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"por favor comprueba que la cantidad que deseas depositar no está siendo utilizada actualmente para stakear. Si está utilizando para stakear, tu transacción podría fallar.\",\"pjO/iH\":\"Cantidad mínima recibida\",\"pooutM\":\"La votación está activa\",\"pqaM5s\":\"Confirmando transacción\",\"ptaxX3\":[\"Entiendo como el cooldown (\",[\"0\"],\") y el proceso de unstaking (\",[\"1\"],\") funcionan\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"La función debe ser llamada por un pool\",\"q/51mF\":\"Migrar a V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Estrategia de tasa de interés\",\"q6lAbz\":\"Stakeado\",\"qB4kPi\":\"Suministrar APY\",\"qENI8q\":\"Configuración global\",\"qGz5zl\":\"Balance de la garantía tras pagar\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copiar el error\",\"qXCkEM\":\"Por favor, conecta tu cartera para ver tus suministros, préstamos y posiciones abiertas.\",\"qY2jnw\":\"Expiración inválida\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Cantidad inválida para quemar\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"La cantidad debe ser mayor que 0\",\"rQ+R+0\":\"Activos de suministro seleccionados\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Este activo no se puede migrar porque tienes una garantía en Isolation Mode en el mercado v3 de \",[\"marketName\"],\" que limita los activos prestados. Puedes administrar tu garantía en el <0>Panel de control V3 de \",[\"marketName\"],\"\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Mostrar activos con 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacidad\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Reclamar todas las recompensas\",\"rwyUva\":\"Estos activos están temporalmente congelados o pausados por decisiones de la comunidad de Aave, lo que significa que no se puede suministrar / tomar prestado o intercambiar tasas de estos activos. Se permiten retiros y pagos de deuda. Sigue el <0>foro de gobierno de Aave para más actualizaciones.\",\"rxJW5W\":\"Tu poder de proposición se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstakear \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NO\",\"sQv06Y\":\"para\",\"sTtO6J\":\"Confirmar transacción\",\"sXKb3l\":\"Tasa de cambio\",\"sb0q4+\":\"Unstakea aquí\",\"smJNwH\":\"Disponible para tomar prestado\",\"solypO\":\"El factor de salud no está por debajo del umbral\",\"sr0UJD\":\"Volver atrás\",\"ss5GCK\":\"La dirección del proveedor del grupo de direcciones no es válida\",\"swEgK4\":\"Tu información de voto\",\"t+wtgf\":\"Nada tomado prestado aún\",\"t/YqKh\":\"Eliminar\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Precio del oráculo\",\"tFZLf8\":\"Este cálculo de gas es solo una estimación. Tu cartera establecerá el precio de la transacción. Puedes modificar la configuración de gas directamente desde tu proveedor de cartera.\",\"tHuvQI\":\"Ir al panel de control V3\",\"tOcg3N\":\"Dado que este activo está congelado, las únicas acciones disponibles son retirar y pagar, a las que se puede acceder desde el <0>Panel de control\",\"tOuXfv\":[\"Cantidad a tomar prestado para alcanzar el \",[\"0\"],\"% de utilización\"],\"te9Bfl\":\"Por favor, conecta tu cartera\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Tus suministros\",\"u3ZeYl\":\"Error en la transacción\",\"u706uF\":\"Préstamo flash inválido\",\"u8Gfu7\":[\"Sin resultados de búsqueda\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No hay activos seleccionados para migrar.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrando\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Para el pago de un tipo específico de deuda, el usuario necesita tener una deuda de ese tipo\",\"ulNuNq\":\"Exportar datos a\",\"ulup2p\":\"Comprar Crypto con Fiat\",\"usB84Z\":\"La cantidad máxima disponible para tomar prestado está limitada porque casi se ha alcanzado el límite de préstamo del protocolo.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restakeado\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Ocultar\",\"vMba49\":\"Tomar prestado no está habilitado\",\"vMpNwt\":\"Aprobar con\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Idioma\",\"vesuBJ\":\"Te permite decidir si utilizar un activo suministrado como garantía. Un activo utilizado como garantía afectará a tu poder de préstamo y factor de salud.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"El balance de deuda estable no es cero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"APR de recompensas\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Tu \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Canal de Discord\",\"wQZbc/\":\"El llamador de la función no es un AToken\",\"wZFvVU\":\"VOTAR SI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"El Protocolo Aave está programado para usar siempre el precio de 1 GHO = $1. Esto es diferente del uso del precio de mercado a través de oráculos para otros criptoactivos. Esto crea oportunidades de arbitraje estabilizadoras cuando el precio de GHO fluctúa.\",\"wh7Ezv\":\"No tienes balance de AAVE/stkAAVE/aAave para delegar.\",\"wlsIx7\":\"Con la testnet Faucet puedes obtener activos gratuitos para probar el Protocolo Aave. Asegúrate de cambiar tu proveedor de cartera a la red de testnet adecuada, selecciona el activo deseado y haz clic en \\\"Faucet\\\" para obtener tokens transferidos a tu cartera. Los activos de una testnet no son \\\"reales\\\", lo que significada que no tienen valor monetario. <0>Aprende más\",\"wmE285\":\"Obtener Token ABP v2\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"Como resultado de las decisiones del gobierno, este pool de stakeo de ABPT está obsoleto. Tienes la flexibilidad de migrar todos tus tokens a v2 o unstakearlos sin ningún periodo de cooldown.\",\"x5KiLL\":\"Los activos seleccionados se han migrado correctamente. Visita el panel de control del mercado para verlos.\",\"x7F2p6\":\"Diferencial actual\",\"x7K5ib\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue \",[\"0\"],\" de prueba gratis en\"],\"x9iLRD\":\"tokens, por favor ve al\",\"xNy/UG\":\"Pagar con\",\"xPm8wv\":\"Aprende más sobre los riesgos involucrados\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Tu información\",\"xaWZ6f\":\"Cambio tipo de APY\",\"xh6k71\":\"El uso de garantías está limitado debido al isolation mode.\",\"xvIklc\":\"El préstamo flash está deshabilitado para este activo, por lo tanto, esta posición no se puede migrar.\",\"y5rS9U\":\"Migrar\",\"yB1YpA\":\"Modo oscuro\",\"yCrG6m\":\"Tamaño total del mercado\",\"yJUUbn\":\"Resumen de la transacción\",\"yLGmLX\":[\"Restakear \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Dirección no válida\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Haz seguimiento de tu cartera\",\"yh2sjd\":[\"Impacto en el precio \",[\"0\"],\"%\"],\"ylmtBZ\":\"La aplicación se ejecuta en fork mode.\",\"ymNY32\":[\"No hay fondos suficientes en la reserva\",[\"0\"],\"para tomar prestado\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Cerrar\",\"z4uGQg\":\"El límite de deuda está sobrepasado\",\"z5UQOM\":\"La garantía elegida no puede ser liquidada\",\"z5Y+p6\":[\"Suministrando \",[\"symbol\"]],\"zCjNKs\":\"No se puede realizar la acción porque la reserva está congelada\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Límite de deuda aislado\",\"zTOjMP\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Deuda restante\",\"zmTPiV\":\"Balance de suministro\",\"zpPbZl\":\"Parámetros de riesgo de liquidación\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menú\",\"zwWKhA\":\"Aprende más\",\"zy9fXn\":[\"Este activo está congelado en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"zys+R6\":\"Ten en cuenta la congestión de la red y los precios del gas.\",\"+EGVI0\":\"Recibir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Parece que no podemos cambiar la red automáticamente. Por favor, comprueba si puedes cambiarla desde la cartera.\",\"+kLZGu\":\"Cantidad de activos suministrados\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Cantidad mínima de Aave stakeado\",\"00OflG\":\"No hay suficiente liquidez para que el activo seleccionado realice el cambio. Prueba reduciendo la cantidad.\",\"08/rZ9\":\"El periodo de cooldown es el tiempo requerido antes de unstakear tus tokens (20 días). Solo puedes retirar tus activos del Módulo de Seguridad después del periodo de cooldown y dentro de la ventana de unstakeo.<0>Aprende más\",\"1Onqx8\":[\"Aprobando \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Dirección bloqueada\",\"2bAhR7\":\"Conoce GHO\",\"2o/xRt\":\"Se ha alcanzado el límite de suministro en la reserva especificada. Prueba reduciendo la cantidad.\",\"3O8YTV\":\"Interés total acumulado\",\"4iPAI3\":\"Cantidad de préstamo mínima de GHO\",\"6NGLTR\":\"Cantidad descontable\",\"6yAAbq\":\"APY, tasa de préstamo\",\"73Auuq\":\"Los parámetros de descuento son decididos por la comunidad de Aave y pueden cambiar con el tiempo. Consulta el Gobierno para ver actualizaciones y vota para participar. <0>-Aprende más\",\"ARu1L4\":\"Pagado\",\"B6aXGH\":\"Estable\",\"B9Gqbz\":\"Tasa variable\",\"BJyN77\":\"Debido al impacto del factor de salud, se requiere un préstamo flash para realizar esta transacción, pero el Gobierno de Aave ha inhabilitado la disponibilidad de préstamos flash para este activo. Intenta reducir la cantidad o suministrar garantía adicional.\",\"BjLdl1\":\"Con un descuento\",\"CMHmbm\":\"Deslizamiento\",\"EBL9Gz\":\"¡COPIADO!\",\"ES8dkb\":\"Interés fijo\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Descuento\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Guardar y compartir\",\"JK9zf1\":[\"Interés compuesto estimado, incluyendo el descuento por Staking \",[\"0\"],\"AAVE en el Módulo de Seguridad.\"],\"JPrLjO\":\"No puedes usar este activo como garantía\",\"JU6q+W\":\"Recompensa(s) por reclamar\",\"K05qZY\":\"Retirar y Cambiar\",\"KRpokz\":\"VER TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Habilitar este activo como garantía aumenta tu poder préstamo y el factor de salud. Sin embargo, puede ser liquidado si tu factor de salud cae por debajo de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stakear GHO\",\"RIfckG\":[\"Desactivar \",[\"symbol\"],\" como garantía\"],\"RbXH+k\":\"Los poseedores de AAVE, GHO y ABPT (solo en la red de Ethereum) pueden stakear sus activos en el Módulo de Seguridad para añadir más seguridad al protocolo y obtener incentivos de seguridad. En el caso de un evento de shortfall, tu stakeo puede ser reducido para cubrir el déficit. proporcionando una capa adicional de protección para el protocolo.\",\"RoafuO\":\"Enviar feedback\",\"TeCFg/\":\"Cambio de tasa de préstamo\",\"TskbEN\":\"Los poseedores de stkAAVE reciben un descuento en la tasa de préstamo de GHO\",\"TtZL6q\":\"Parámetros del modelo de descuento\",\"Tz0GSZ\":\"actividades bloqueadas\",\"UE3KJZ\":\"El historial de transacciones no está disponible actualmente para este mercado\",\"W8ekPc\":\"Volver al panel de control\",\"XZzneG\":\"Saldrás del modo aislamiento y otros tokens pueden ser usados ahora como garantía\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Deshabilitar este activo como garantía afecta tu poder de préstamo y Factor de Salud.\",\"al6Pyz\":\"Supera el descuento\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"No hay suficiente garantía para pagar esta cantidad de deuda con\",\"cqnmnD\":\"Tasa de interés efectiva\",\"dMtLDE\":\"para\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY con descuento aplicado\",\"fHcELk\":\"APR Neto\",\"flRCF/\":\"Descuento por staking\",\"gncRUO\":\"Esta dirección está bloqueada en app.aave.com porque está asociada con una o más\",\"gr8mYw\":\"Puedes tomar prestado hasta <0/> GHO al <1/> (descuento máximo)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Balance tomado prestado\",\"i2JTiw\":\"Puedes ingresar una cantidad específica en el campo.\",\"jMam5g\":[\"Balance \",[\"0\"]],\"jpctdh\":\"Ver\",\"kwwn6i\":\"Los usuarios que stakean AAVE en el Modulo de Seguridad (es decir, poseedores de stkAAVE) reciben un descuento en la tasa de interés de préstamo de GHO. Este descuento se aplica a 100 GHO por cada 1 stkAAVE en posesión. Usa el calculador de abajo para ver la tasa de préstamo de GHO con el descuento aplicado.\",\"lNVG7i\":\"Selecciona un activo\",\"lt6bpt\":\"Garantía a pagar con\",\"mIM0qu\":\"Cantidad esperada a pagar\",\"mzI/c+\":\"Descargar\",\"n8Psk4\":\"No podemos detectar una cartera. Conecta una cartera para stakear y ver tu balance.\",\"nOy4ob\":\"Te sugerimos volver al Panel de control.\",\"nakd8r\":\"poseedores de stkAAVE obtienen un descuento en la tasa de préstamo de GHO\",\"nh2EJK\":[\"Por favor, cambia a \",[\"networkName\"],\".\"],\"ntkAoE\":\"Descuento aplicado para <0/> AAVE stakeados\",\"o4tCu3\":\"APY préstamo\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"El periodo de cooldown es \",[\"0\"],\". Después \",[\"1\"],\" del cooldown, entrarás a la ventana de unstakeo de \",[\"2\"],\". Continuarás recibiendo premios durante el cooldown y la ventana de unstakeo.\"],\"p3j+mb\":\"Tu balance de recompensa es 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interés acumulado\",\"rf8POi\":\"Cantidad de activos tomados prestados\",\"ruc7X+\":\"Añade stkAAVE para ver el APY de préstamo con el descuento\",\"sK+Nag\":\"Revisión tx\",\"t81DpC\":[\"Aprueba \",[\"symbol\"],\" para continuar\"],\"umICAY\":\"<0><1><2/>Añade stkAAVE para ver la tasa de préstamo con descuento\",\"uwAUvj\":\"COPIAR IMAGEN\",\"v8x7Mg\":\"Garantía insuficiente para cubrir la nueva posición de préstamo. La cartera debe tener poder de préstamo suficiente para realizar el cambio de deuda.\",\"wRRqvW\":\"No tienes suministros en este activo\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Habilitar \",[\"symbol\"],\" como garantía\"],\"yW1oWB\":\"Tipo APY\",\"yhvj6d\":\"No puedes cambiar el uso como modo de garantía para este activo, porque causará una liquidación\",\"zevmS2\":\"<0><1><2/>añade <3/> stkAAVE para tomar prestado al <4/> (descuento máximo)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si NO unstakeas entre \",[\"0\"],\" de la ventana de unstakeo, necesitarás activar el proceso de cooldown de nuevo.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participar en esta reserva de \",[\"symbol\"],\" da recompensas anuales.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Utiliza tu balance de AAVE, stkAAVE o aAava para delegar tu voto y poder de proposición. No enviarás ningún token, solo los derechos de votar y proponer cambios en el protocolo. Puedes volver a delegar o revocar el poder de vuelta en cualquier momento.\",\"+i3Pd2\":\"Límite del préstamo\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Cantidad para migrar\",\"/7ykiW\":\"Tomar prestado esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"Preguntas frecuentes\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"El préstamo estable no está habilitado\",\"/yQcJM\":\"Valor total\",\"00AB2i\":\"El usuario no tomó prestado el activo especificado\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Cambio de tasa\",\"0BF3yK\":\"Lo sentimos, no hemos podido encontrar la página que estabas buscando.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Riesgo de liquidación\",\"0ojY+Y\":\"Balance actual v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Cambio de garantía\",\"0wGCWc\":\"Esta es la cantidad total que puedes suministrar en esta reserva. Puedes suministrar el balance de tu cartera hasta que se alcance el límite de suministro.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Los datos de los precios no están disponibles actualmente para esta reserva en el subgraph del protocolo\",\"1LjK22\":\"Historial de transacciones\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Por favor conecta una cartera para ver tu información personal aquí.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Umbral <0/> de liquidación\",\"1m9Qqc\":\"Retirando y Cambiando\",\"1t7rez\":\"El suministro de activos está limitado a una cierta cantidad para reducir la exposición del protocolo a este activo y ayudar a manejar los riesgos implicados.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Ver detalles\",\"2FYpfJ\":\"Más\",\"2O3qp5\":\"Liquidez disponible\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Este activo no se puede migrar debido a una restricción del límite de suministro en el mercado v3 de \",[\"marketName\"],\".\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave es un protocolo totalmente descentralizado, gobernado por la comunidad de poseedores de tokens AAVE. Los poseedores de tokens AAVE discuten, proponen y votan colectivamente sobre las actualizaciones del protocolo. Los poseedores de tokens AAVE (solo en la red Ethereum) pueden votar ellos mismos sobre nuevas propuestas o delegarse a una dirección de su elección. Para aprender más, consulta la\",\"2a6G7d\":\"Por favor introduce una dirección de cartera válida.\",\"2eBWE6\":\"Acepto los riesgos involucadros.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"El préstamo estable no está habilitado\",\"34Qfwy\":\"El límite del préstamo se ha sobrepasado\",\"39eQRj\":[\"Tomar prestado \",[\"symbol\"]],\"3BL1xB\":\"Total suministrado\",\"3K0oMo\":\"Suministro restante\",\"3MoZhl\":\"No hay suficiente garantía para cubrir un nuevo préstamo\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Suministrar \",[\"symbol\"]],\"3mXg0z\":\"LTV máximo\",\"3q3mFy\":\"Pagar\",\"3qsjtp\":\"El promedio ponderado de APY para todos los activos suministrados, incluidos los incentivos.\",\"3rL+os\":\"Solo puedes retirar tus activos del Módulo de Seguridad después de que finalice el período de cooldown y la ventana de unstakeo esté activa.\",\"42UgDM\":[\"Migrar al mercado V3 de \",[\"0\"]],\"49UFQA\":\"Resultados de la votación\",\"4DMZUI\":\"Ver Transacciones\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Términos\",\"4YYh4d\":\"Máximo disponible para tomar prestado\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Firma para continuar\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transacciones\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue activos de prueba gratis en\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentación\",\"5NOSGa\":\"El límite de deuda limita la cantidad posible que los usuarios del protocolo pueden tomar prestado contra este activo. El límite de deuda es específico para los activos en isolation mode y se indica en USD.\",\"5Ncc6j\":[\"Este activo casi ha alcanzado su límite de suministro. Solo se puede suministrar \",[\"messageValue\"],\" a este mercado.\"],\"5cZ/KX\":\"El suministro de deuda variable no es cero\",\"5che++\":\"Para solicitar acceso a este mercado, porfavor visita: <0>Nombre del proveedor de acceso\",\"5ctNdV\":[\"Mínimo \",[\"0\"],\" recibido\"],\"5hDe9v\":\"Acción de permiso requerida\",\"5rsnKT\":\"Recompensas disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Ver todos los votos\",\"6/dCYd\":\"Resumen\",\"60crCe\":\"Todas las transacciones\",\"62Xcjh\":\"Garantía\",\"65A04M\":\"Español\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Firmando\",\"6Jrv+z\":[\"Pagar \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Poder de votación\",\"6f8S68\":\"Mercados\",\"6g1gi0\":\"Propuestas\",\"6gvoHP\":\"Copiar mensaje de error\",\"6h3Q5G\":\"reembolsado\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Cambiar de red\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Factor de salud\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Alcanzado\",\"7YlcXu\":\"El fork mode está activado\",\"7Z76Iw\":\"Tomar prestado no está disponible porque estás usando el Isolation mode. Para administrar el Isolation mode, visita tu <0>Panel de control.\",\"7aKlMS\":\"Compartir en Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Reclamar todo\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"No se pudieron recuperar los datos, por favor recarga el gráfico.\",\"7p5kLi\":\"Panel de control\",\"7sofdl\":\"Retirar y Cambiar\",\"8+6BI0\":\"Ten cuidado - Estás muy cerca de la liquidación. Considera depositar más garantía o pagar alguno de tus préstamos\",\"87pUEW\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos.\"],\"8F1i42\":\"Página no encontrada\",\"8G8M0u\":\"Cargando datos...\",\"8Iu1QS\":\"retirado\",\"8JL93T\":\"Todas las propuestas\",\"8Q51DU\":\"Añadir a la cartera\",\"8X/oyn\":\"Cantidad invalidad para generar\",\"8Z5FPv\":\"Desconectar cartera\",\"8Zz7s5\":\"activos\",\"8aLW8H\":\"Balance a revocar\",\"8bOT3H\":\"Tasa de uso\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Ver contrato\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Mostrar\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Estás entrando en el Isolation mode\",\"9CDK3/\":[\"Tomar prestado no está disponible actualmente para \",[\"0\"],\".\"],\"9GIj3z\":\"Tamaño de la reserva\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Balance stakeado\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votos actuales\",\"9Rw96f\":[\"Este activo casi ha alcanzado su límite de préstamo. Solo hay \",[\"messageValue\"],\" disponibles para ser prestado de este mercado.\"],\"9Xj/qR\":[\"Algunos activos migrados no se utilizarán como garantía debido al isolation mode habilitado en el mercado V3 de \",[\"marketName\"],\". Visita el <0>Panel de control de \",[\"marketName\"],\" V3 para administrar el isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Este activo ha alcanzado su límite de suministro. No queda nada disponible para ser suministrado desde este mercado.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI ha sido pausado debido a una decisión de la comunidad. Los suministros, préstamos y pagos se han visto afectados. <0>Más información\",\"9lXchd\":\"Token subyacente\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Puesto que esta es una red de pruebas, puedes obtener cualquiera de los activos si tienes ETH en tu cartera\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Elige uno de los servicios on-ramp\",\"A6dCI6\":[\"La máxima cantidad disponible para tomar prestado es <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Tus préstamos\",\"AV7cGz\":\"Revisa los detalles del approve\",\"AZOjB8\":\"Recuperando datos...\",\"Ai0jas\":\"Únete a la discusión de la comunidad\",\"Ajl2rq\":\"El poder de préstamo y los activos están limitados debido al Isolation mode.\",\"AqgYNC\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH suministrado como garantía continuará acumulando recompensas de staking proporcionadas por rebases diarios.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"El uso como garantía está limitado debido al isolation mode. <0>Aprende más\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Categoría de activos\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Este activo está congelado debido a una decisión de la comunidad de Aave. <0>Más información\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Documento técnico\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Griego\",\"CkTRmy\":[\"Reclamar \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Por favor conecta tu cartera para ver la herramienta de migración.\",\"CtGlFb\":[\"Faucet \",[\"networkName\"]],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Esta acción reducirá el factor de salud de V3 por debajo del umbral de liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"Este activo ha sido pausado debido a una decisión de la comunidad. El suministro, los retiros, los préstamos y los pagos se han visto afectados.\",\"DAma/S\":\"La garantía es (en su mayoría) el mismo activo que se está tomando prestado\",\"DCnFg0\":[\"Direcciones (\",[\"0\"],\")\"],\"DG3Lv1\":\"Entiendo completamente los riesgos de migrar.\",\"DONJcV\":\"El activo base no puede ser rescatado\",\"DR+4uL\":\"Balance del suministro después del cambio\",\"DWjrck\":[\"Este activo no se puede migrar al mercado V3 de \",[\"marketName\"],\" debido a las restricciones del E-mode. Puedes deshabilitar o administrar las categorías del E-mode en tu <0>Panel de control V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave por mes\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Colateralización\",\"DxfsGs\":\"Puedes reportar cualquier incidente a nuestro <0>Discord o <1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Deshabilitado\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restakeando \",[\"symbol\"]],\"Ebgc76\":[\"Retirando \",[\"symbol\"]],\"EdQY6l\":\"Ninguno\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivar el periodo de cooldown para unstakear \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrar a V3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Aprende más.\",\"FHlMf/\":\"Balance actual v2\",\"FHpxjF\":[\"El factor de reserva es un porcentaje de interés que va a un \",[\"0\"],\" que es controlado por el gobierno de Aave para promover el crecimiento del ecosistema.\"],\"FOBZa6\":\"Capacidad de préstamo utilizada\",\"FPKEug\":\"Operación no soportada\",\"FbmMe7\":\"Direcciones vinculadas\",\"Fdp03t\":\"en\",\"Fjw9N+\":\"Activos a suministrar\",\"FmN0fk\":\"Restakear\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO es un activo nativo descentralizado, digital y respaldado por garantía, vinculado al USD. Es creado por los usuarios que lo toman prestado contra múltiples garantías. Cuando el usuario paga su posición de préstamo de GHO, el protocolo quema el GHO de ese usuario. Todos los pagos de interés acumulados por los acuñadores de GHO serán transferidos directamente a la tesorería de\xA0la\xA0DAO\xA0de\xA0Aave.\",\"GQrBTq\":\"Cambiar E-Mode\",\"GWswcZ\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. El 20 de diciembre de 2022, renFIL ya no será compatible y no se podrá conectar de nuevo a su red nativa. Se recomienda retirar las posiciones de suministro y pagar las posiciones de préstamo para que renFIL se pueda convertir de nuevo a FIL antes de la fecha límite. Después de esta fecha, ya no será posible convertir renFIL a FIL. <0>Más detalles\",\"GX8GKD\":\"Activos\",\"GgEj+0\":\"Modo de solo lectura. Conéctate a una cartera para realizar transacciones.\",\"GjkIKV\":\"finaliza\",\"GtP2hp\":[\"Tomar prestado no está disponible porque has habilitado el Efficieny Mode (E-Mode) para la categoría \",[\"0\"],\". Para manejar las categorías del E-Mode visita tu <0>Panel de control.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Lo sentimos, se produjo un error imprevisto. Mientras tanto, puedes intentar recargar la página, o volver después.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Ventana de unstakeo\",\"HpK/8d\":\"Recargar\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Este activo no se puede migrar al mercado v3 de \",[\"marketName\"],\", ya que el activo de garantía habilitará el isolation mode.\"],\"Hvwnm9\":[\"La cantidad máxima disponible para suministrar está limitada porque el límite de suministro del protocolo está al \",[\"0\"],\"%.\"],\"I8CX2c\":\"La cantidad total de tus activos denominados en USD que pueden ser usados como garantía para activos de préstamo.\",\"IAD2SB\":[\"Reclamando \",[\"symbol\"]],\"IG9X9/\":\"Tomar prestado este activo está limitado a una cierta cantidad para minimizar la insolvencia del fondo de liquidez.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Está previsto que este activo se desvincule debido a una decisión del Gobierno del Protocolo Aave. <0>Más detalles\",\"IP+I/j\":\"Periodo de cooldown\",\"IaA40H\":\"Liquidación en\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Administrar analíticas\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstakeando \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stakear\",\"JZMxX0\":\"No hay suficiente balance en tu cartera\",\"Jgflkm\":\"Obtener GHO\",\"JoMQnI\":\"Balance de la cartera\",\"JtwD8u\":\"Balance tomado prestado tras pagar\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"KLXVqE\":[\"Los tokens stETH se migrarán a Wrapped stETH usando el wrapper del protocolo de Lido, lo que provoca un cambio en el balance de suministro después de la migración: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Esto representa el umbral en el que un préstamo será considerado sin garantía suficiente y sujeto a la liquidación de la misma. Por ejemplo, si una garantía tiene un umbral de liquidación del 80 %, significa que el préstamo será liquidado cuando el valor de la deuda alcanze el 80% del valor de la garantía.\",\"KYAjf3\":\"Aislado\",\"KkPgim\":\"Cambiando E-Mode\",\"KnN1Tu\":\"Caduca\",\"KoOBI2\":\"Debido a mecánicas internas de stETH requeridas para el soporte del rebase, no es posible realizar un cambio de garantía donde stETH es el token de origen.\",\"KojyJ4\":\"Red incorrecta\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Introduce la dirección ETH\",\"KvG1xW\":\"Reclamando\",\"L+8Lzs\":\"LTV actual\",\"L+qiq+\":\"Mercado\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Sin poder de voto\",\"LL0zks\":\"Puede ser garantía\",\"LLdJWu\":\"AAVE Reclamable\",\"LSIpNK\":\"Tomar prestado y pagar en el mismo bloque no está permitido\",\"LVt3TI\":[\"<0>Tolerancia de deslizamiento <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Modo E\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Intenta aumentar el deslizamiento o reduce la cantidad de entrada\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Dirección del destinatario\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vista de stakeo\",\"McHlGl\":\"Cambio de APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si el factor de salud se encuentra por debajo de 1, la liquidación de tu colateral puede ser activada.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Has cancelado la transacción.\",\"MnE2QX\":\"Información de préstamo\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valor de retorno inválido en la función executor del préstamo flash\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Este activo solo se puede utilizar como garantía en isolation mode con poder de préstamo limitado. Para entrar en el isolation mode, deshabilita todas las demás garantías.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pendiente...\",\"NK9ikO\":\"Balance de la cartera\",\"NMt2CB\":\"Cantidad reclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nada invertido\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"El límite de minteo sin respaldo ha sido excedido\",\"O+tyU+\":[\"La cantidad máxima disponible para tomar prestado contra este activo está limitada porque el límite de deuda está al \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstakear\",\"OR8cYX\":\"Resumen de la propuesta\",\"OYuJ9K\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"OfhWJH\":\"Restablecer\",\"Og2SKn\":\"deshabilitado\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Página web\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirar\",\"P1dURE\":\"Revocar poder\",\"P2WCD/\":[\"El activo subyacente no existe en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"P2sL6B\":\"Cuando ocurre una liquidación, los liquidadores pagan hasta el 50% de la cantidad pendiente del préstamo en nombre del prestatario. A cambio, pueden comprar la garantía con descuento y quedarse con la diferencia (sanción de liquidación) como bonificación.\",\"P6sRoL\":\"Stakea ABPT\",\"P72/OW\":\"El promedio ponderado de APY para todos los activos prestados, incluidos los incentivos.\",\"P7e6Ug\":\"Por favor conecta tu cartera para ver el historial de transacciones.\",\"PByO0X\":\"Votos\",\"PI+kVe\":\"Deshabilitar fork\",\"PJK9u/\":\"Apy préstamo\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Umbral de liquidación\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Esta acción reducirá el factor de salud V2 por debajo del umbral de liquidación. Mantén la garantía o migra la posición de préstamo para continuar.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"El Aave Balancer Pool Token (ABPT) es un token de pool de liquidez. Puedes recibir ABPT depositando una combinación de AAVE + wstETH en el pool de liquidez de Balancer. Luego puedes stakear tu BPT en el módulo de seguridad para asegurar el protocolo y ganar incentivos de seguridad.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Retirando\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"No alcanzado\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Diferencial\",\"RNK49r\":\"Firma inválida\",\"RS0o7b\":\"Estado\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Detalles de la propuesta\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"El activo no está listado\",\"Rj01Fz\":\"Enlaces\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"El factor de salud es menor que el umbral de liquidación\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Habilitado\",\"SDav7h\":\"Fondos en el Módulo de Seguridad\",\"SENccp\":\"Si el error persiste, <0/> podrías reportarlo a esto\",\"SIWumd\":\"Mostrar activos congelados o pausados\",\"SM58dD\":\"Cantidad en cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Error al cargar los votantes de la propuesta. Por favor actualiza la página.\",\"SSQVIz\":\"Umbral de liquidación\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"El modo de solo lectura permite ver las posiciones de las direcciones en Aave, pero no podrás realizar transacciones.\",\"SZRUQ4\":\"Deslizamiento máximo\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"Sk2zW9\":\"Desactivando E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"La dirección del proveedor del pool no esta registrada\",\"T/AIqG\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"T0xCO9\":\"No se puede validar la dirección de la cartera. Vuelve a intentarlo.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Tomar prestado\",\"TFxQlw\":\"Penalización de liquidación\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"El activo solo puede usarse como garantía en el Isolation mode únicamente.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"El usuario no tiene deuda pendiente de tasa estable en esta reserva\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Balance de préstamo después del cambio\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recarga la página\",\"U2r8nY\":\"Elige cuánto poder de voto/proposición otorgar a otra persona delegando parte de tu balance de AAVe o stkAAVE. Tus tokens permanecerán en tu cuenta, pero tu delegado podrá votar o proponer en tu lugar. Si tu balance de AAVE, stkAAVE o aAave cambia, el poder de voto/proposición de tu delegado se ajustará automáticamente.\",\"U8IubP\":\"La aplicación se está ejecutando en testnet mode. Aprende como funciona en\",\"U9btTk\":\"El activo no se puede pedir prestado en isolation mode\",\"UAOZRe\":\"El impacto del precio es la diferencia entre el valor total de los tokens de entrada cambiados y los tokens de destino obtenidos (en USD), que resulta de la liquidez limitada del par de cambio.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Detalles\",\"UTTKmT\":\"Cooldown de stakeo activado\",\"UXeR72\":\"Estos fondos se han tomado prestados y no están disponibles para su retirada en este momento.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"El ratio LTV máximo representa el poder de endeudamiento máximo de una garantía específica. Por ejemplo, si una garantía tiene un LTV del 75 %, el usuario puede pedir prestado hasta 0,75 ETH en la moneda principal por cada 1 ETH de garantía.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No hay recompensas para reclamar\",\"V0f2Xv\":\"Factor de reserva\",\"V1HK43\":\"Riesgos de migración\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Deuda cubierta\",\"VHOVEJ\":\"Conectar cartera\",\"VMfYUK\":\"Seguridad de tu garantía depositada contra los activos prestados y su valor subyacente.\",\"VOAZJh\":\"Total de préstamos\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Revisar detalles de la tx\",\"W5hVah\":\"Nada suministrado aún\",\"W5kTFy\":\"Votando\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"No respaldado\",\"WNGZwH\":\"El E-Mode incrementa tu LTV para una categoría seleccionada de activos hasta el <0/>. <1>Aprende más\",\"WPWG/y\":\"Configuración y estado de la reserva\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"El usuario no puede retirar más que el balance disponible\",\"WaZyaV\":\"<0>Ampleforth es un activo con rebase. Visita la <1>documentación para aprender más.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Debido a que este activo está en pausa, no se pueden realizar acciones hasta nuevo aviso\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Para tomar prestado, necesitas suministrar cualquier activo para ser utilizado como garantía.\",\"X/ITG9\":\"Copiar el texto del error\",\"X3Pp6x\":\"Utilizado como garantía\",\"X4Zt7j\":\"No se puede realizar la acción porque la reserva está pausada\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Direcciones de cartera de contrato inteligente representativas (Safe) en otras cadenas.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Por favor ten siempre en cuenta tu <0>factor de salud (HF) cuando migres parcialmente una posición y que tus tasas serán actualizadas a tasas de la V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTAR NO\",\"YDIOks\":\"Habilitar E-Mode\",\"YSodyW\":\"Esta acción reducirá tu factor de salud. Por favor ten en cuenta el riesgo incrementado de liquidación de la garantía.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode está ON\",\"YrDxdO\":\"Si tu relación préstamo-valor supera el umbral de liquidación, tu garantía puede ser liquidada.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"No se cumplieron las condiciones de ajuste de tasas de interés\",\"YyydIq\":[\"Añade \",[\"0\"],\" a tu cartera para hacer un seguimiento del balance.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Gobierno de Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Modo de eficiencia (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Deshabilitar testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Antes de suministrar\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valor de liquidación\",\"ZrEc8j\":\"No pudimos encontrar ningún activo relacionado con tu búsqueda. Vuelve a intentarlo con un nombre diferente de activo, símbolo o dirección.\",\"ZsLF7e\":\"habilitado\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Tempo restante para unstakear\",\"a7u1N9\":\"Precio\",\"a9D+6D\":\"Unstakeado\",\"aEtiwq\":\"Votar NO\",\"aMmFE1\":\"Comprar Crypto con Fiat\",\"aOKIms\":\"Los parámetros del array que deberían ser iguales en longitud no lo son\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"Se ha producido un error al recuperar la propuesta.\",\"aoXTT7\":\"APY préstamo, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Advertencia periodo de cooldown\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Activo\",\"bXQ/Og\":\"Compartir en twitter\",\"bXr0ee\":\"Los activos aislados han limitado tu capacidad de préstamo y otros activos no pueden ser usados como garantía.\",\"bYmAV1\":\"Direcciones\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"La cantidad solicitada es mayor que el tamaño máximo del préstamo en el modo de tasa estable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Suministrar\",\"bxN6EM\":\"No se puede deshabilitar E-Mode\",\"c91vuQ\":\"La dirección no es un contrato\",\"c97os2\":\"aToken de Aave\",\"c9b44w\":\"No puedes retirar esta cantidad porque causará una liquidación\",\"cBc+4A\":\"Esta es la cantidad total disponible que puedes tomar prestada. Puedes tomar prestado basado en tu garantía y hasta que el límite de préstamo se alcance.\",\"cIl5kp\":\"Tu poder de voto se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"cLo09S\":\"Detalles de riesgo\",\"cNT+ij\":\"Tomar prestado no está disponible porque has habilitado el Efficiency Mode (E-Mode) y el Isolation mode. Para administrar el E-Mode y el Isolation Mode, visita tu <0>Panel de control.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Para enviar una propuesta de cambios menores al protocolo, necesitarás al menos 80K de poder. Si deseas cambiar la base central del código, necesitarás un poder de 320K.<0>Aprende más\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Votar SI\",\"ckf7gX\":[\"Pagando \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Hilo de discusión del foro\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"No has participado en esta propuesta\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gobierno\",\"dEgA5A\":\"Cancelar\",\"dIsyWh\":\"La validación del LTV ha fallado\",\"dOB5nW\":[\"La cantidad máxima disponible para suministrar es <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"No tienes suficientes fondos en tu cartera para pagar la cantidad total. Si procedes a pagar con tu cantidad actual de fondos, aún tendrás un pequeño préstamo en tu panel de control.\",\"dXUQFX\":\"Activos a tomar prestado\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Tomar prestado está deshabilitado debido a una decisión de la comunidad de Aave. <0>Más información\",\"djsg0o\":\"Uso de la garantía\",\"drdV8R\":\"Liquidación\",\"dxW8cS\":\"Token de deuda de Aave\",\"e4V3oW\":\"Top 10 direcciones\",\"eD8WX/\":\"La acción requiere una reserva activa\",\"eJRJ04\":\"Cantidad para unstakear\",\"eLh0cL\":\"El deslizamiento es la diferencia entre las cantidades calculadas y las recibidas debido a las condiciones cambiantes del mercado entre el momento en que se envía la transacción y su verificación.\",\"ePK91l\":\"Editar\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Recompensas de Staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aún no hay transacciones.\",\"ebLGGN\":\"Total tomado prestado\",\"ecqEvn\":\"El balance de garantía es 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible en\",\"enruNF\":\"empieza\",\"eqLYiD\":\"Unstakea ahora\",\"evw5ha\":\"Valor neto\",\"ezcU16\":\"Obtener Token ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Has cambiado a tasa \",[\"0\"]],\"fMJQZK\":\"Prestado\",\"fZ5Vnu\":\"Recibido\",\"firl9Q\":\"Tu actual relación préstamo-valor basado en tu garantía suministrada.\",\"fldjW9\":\"Previsualizar la tx y migrar\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Retirar \",[\"symbol\"]],\"fwjWSI\":\"Suministrado\",\"fwyTMb\":\"Migrar a stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Votó NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. <0>More información\",\"gTHi2T\":\"El usuario está intentando tomar prestado múltiples activos incluido uno aislado\",\"gVW59Y\":\"Por favor conecta tu cartera para obtener activos testnet gratis.\",\"gcFNxP\":\"Aprobación confirmada\",\"goff7V\":\"Dirección cero no válida\",\"gp+f1B\":\"Versión 3\",\"gvTM4B\":\"El APY neto es el efecto combinado de todos los suministros y préstamos sobre total, incluidos los incentivos. Es posible tener un APY neto negativo si el APY de la deuda es mayor que el APY de suministro.\",\"gzcch9\":\"Comisión de puente de protocolo inválida\",\"h33MxW\":\"Direcciones de cartera de contrato inteligente representantes (Safe) en otras cadenas.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activar Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY neto\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Reclamado\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"El % de tu poder de préstamo total utilizado. Esto se basa en la cantidad de tu garantía suministrada y la cantidad total que puedes pedir prestado.\",\"hehnjM\":\"Cantidad\",\"hjDCQr\":\"Hubo un error. Por favor intenta cambiar los parámetros o <0><1>copiar el error\",\"hom7qf\":\"Reclamar\",\"hpHJ4I\":\"Garantía liquidada\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Tomando prestado \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"Sobre GHO\",\"iChbOF\":\"Parámetros inconsistentes del préstamo flash\",\"iEPVHF\":\"No hay suficiente poder de voto para participar en esta propuesta\",\"iEW87X\":\"Poder delegado\",\"iEju36\":[\"Has votado \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Seleccionar tolerancia de deslizamiento\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Ingresa una cantidad\",\"iSLIjg\":\"Conectar\",\"iUo5rv\":\"tokens no es lo mismo que stakearlos. Si deseas stakearlos\",\"iZxa38\":\"Úsalo para votar a favor o en contra de propuestas activas.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"En el Isolation mode, no puedes suministrar otros activos como garantía. Un límite de deuda global limita la capacidad de préstamo del activo aislado. Para salir del Isolation mode, deshabilita \",[\"0\"],\" como garantía antes de tomar prestado otro activo. Lee más en nuestras <0>preguntas frecuentes \"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"El uso de garantías está limitado debido al Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Suministrando tu\",\"jFi7dz\":\"Tasa de interés determinada por el gobierno de Aave. Esta tasa puede cambiar con el tiempo dependiendo de la necesidad de que el suministro de GHO se contraiga/expanda. <0>Aprende más\",\"jG3UJ7\":\"Desactivar el E-Mode\",\"jKYzR1\":\"Habilitar E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Periodo restante de cooldown\",\"jeMZNr\":[[\"0\"],\" el servicio on-ramp es proporcionado por proveedores externos y al seleccionarlo, estás aceptando los términos de dichos proveedores. Tu acceso al servicio podría depender de que el proveedor externo esté operativo.\"],\"jfl9OP\":\"Migrado\",\"jmXdoY\":\"En E-Mode algunos activos no se pueden pedir prestados. Sal del E-Mode para obtener acceso a todos los activos\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"No disponible\",\"k/sb6z\":\"Seleccionar idioma\",\"k3wP3f\":\"<0>Atención: Los cambios de parámetros a través de la gobernanza pueden alterar el factor de salud de tu cuenta y el riesgo de liquidación. Sigue el <1>foro de gobierno de Aave para mantenerte actualizado.\",\"kACpF3\":[\"Reclamar \",[\"0\"]],\"kH6wUX\":\"Impacto del precio\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" activos seleccionados\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Para pagar en nombre de un usuario, se necesita una cantidad explícita para pagar\",\"kRTD40\":[\"Cantidad a pagar para alcanzar el \",[\"0\"],\"% de utilización\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"El límite de suministro se ha sobrepasado\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"El límite de deuda no es cero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"El balance de DAI se convertirá a través de los contratos de DSR y luego se suministrará como sDAI. El cambio no genera costos adicionales ni deslizamientos.\",\"lU2d1/\":[\"Este activo no se puede migrar debido a una liquidez insuficiente o a una limitación del límite de préstamo en el mercado v3 de \",[\"marketName\"],\".\"],\"lVhKKI\":\"Votó YAE\",\"lWLqxB\":\"No pudimos encontrar ninguna transacción relacionada con tu búsqueda. Vuelve a intentarlo con un nombre de activo diferente o restablece los filtros.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Inglés\",\"lfEjIE\":\"Aprende más en nuestra guía <0>Preguntas frecuentes\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Emisiones totales por día\",\"m7r7Hh\":\"Activos de préstamo seleccionados\",\"mDDK4p\":\"Pool de Balancer\",\"mUAFd6\":\"Versión 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos o usa <0>\",[\"0\"],\" para transferir tus activos de \",[\"network\"],\".\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Comprar \",[\"cryptoSymbol\"],\" con Fiat\"],\"mvCXBY\":\"Stakea AAVE\",\"mwdzil\":\"Vale, cerrar\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Este activo no puede usarse como garantía.\",\"n+SX4g\":\"Desarrolladores\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Apy de suministro\",\"nJgsQu\":\"Con un poder de votación de <0/>\",\"nLC6tu\":\"Francés\",\"nNHV0z\":\"Migrar múltiples garantías y activos prestados al mismo tiempo puede ser una operación costosa y podría fallar en ciertas situaciones.<0>Por lo tanto, no se recomienda migrar posiciones con más de 5 activos (depositados + tomados prestados) al mismo tiempo.\",\"nNbnzu\":\"Proposición\",\"nPGNMh\":\"Puede ser ejecutado\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Ambos\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Se produjo un error\",\"nxyWvj\":\"Retirar esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"o17QVP\":\"Tu factor de salud y la relación préstamo-valor determinan la seguridad de tu garantía. Para evitar liquidaciones, puedes suministrar más garantía o pagar las posiciones de préstamo.\",\"o1xc2V\":\"El balance de AToken no es cero\",\"o5ooMr\":\"Deuda\",\"o7J4JM\":\"Filtro\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown para undstakear\",\"oJ5ZiG\":\"El usuario no tiene deuda pendiente de tasa variable en esta reserva\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Activos de prueba\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"La tasa de interés estable <0>permanecerá igual durante la duración de su préstamo. Está recomendado para los períodos de préstamo a largo plazo y para los usuarios que prefieren la previsibilidad.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible para suministrar\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Sin resultados\",\"owSsI3\":\"Firmas listas\",\"p+R52m\":\"Ir al pool de Balancer\",\"p2S64u\":\"La relación préstamo-valor de las posiciones migradas provocaría la liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"p2Z2Qi\":\"Este activo ha alcanzado su límite de préstamo. No queda nada disponible para ser prestado de este mercado.\",\"p45alK\":\"Configurar la delegación\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"El balance subyacente debe ser mayor que 0\",\"pgWG9H\":\"No hay suficiente balance stakeado\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"por favor comprueba que la cantidad que deseas depositar no está siendo utilizada actualmente para stakear. Si está utilizando para stakear, tu transacción podría fallar.\",\"pjO/iH\":\"Cantidad mínima recibida\",\"pooutM\":\"La votación está activa\",\"pqaM5s\":\"Confirmando transacción\",\"ptaxX3\":[\"Entiendo como el cooldown (\",[\"0\"],\") y el proceso de unstaking (\",[\"1\"],\") funcionan\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"La función debe ser llamada por un pool\",\"q/51mF\":\"Migrar a V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Estrategia de tasa de interés\",\"q6lAbz\":\"Stakeado\",\"qB4kPi\":\"Suministrar APY\",\"qENI8q\":\"Configuración global\",\"qGz5zl\":\"Balance de la garantía tras pagar\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copiar el error\",\"qXCkEM\":\"Por favor, conecta tu cartera para ver tus suministros, préstamos y posiciones abiertas.\",\"qY2jnw\":\"Expiración inválida\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Cantidad inválida para quemar\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"La cantidad debe ser mayor que 0\",\"rQ+R+0\":\"Activos de suministro seleccionados\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Este activo no se puede migrar porque tienes una garantía en Isolation Mode en el mercado v3 de \",[\"marketName\"],\" que limita los activos prestados. Puedes administrar tu garantía en el <0>Panel de control V3 de \",[\"marketName\"],\"\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Mostrar activos con 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacidad\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Reclamar todas las recompensas\",\"rwyUva\":\"Estos activos están temporalmente congelados o pausados por decisiones de la comunidad de Aave, lo que significa que no se puede suministrar / tomar prestado o intercambiar tasas de estos activos. Se permiten retiros y pagos de deuda. Sigue el <0>foro de gobierno de Aave para más actualizaciones.\",\"rxJW5W\":\"Tu poder de proposición se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstakear \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NO\",\"sQv06Y\":\"para\",\"sTtO6J\":\"Confirmar transacción\",\"sXKb3l\":\"Tasa de cambio\",\"sb0q4+\":\"Unstakea aquí\",\"smJNwH\":\"Disponible para tomar prestado\",\"solypO\":\"El factor de salud no está por debajo del umbral\",\"sr0UJD\":\"Volver atrás\",\"ss5GCK\":\"La dirección del proveedor del grupo de direcciones no es válida\",\"swEgK4\":\"Tu información de voto\",\"t+wtgf\":\"Nada tomado prestado aún\",\"t/YqKh\":\"Eliminar\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Precio del oráculo\",\"tFZLf8\":\"Este cálculo de gas es solo una estimación. Tu cartera establecerá el precio de la transacción. Puedes modificar la configuración de gas directamente desde tu proveedor de cartera.\",\"tHuvQI\":\"Ir al panel de control V3\",\"tOcg3N\":\"Dado que este activo está congelado, las únicas acciones disponibles son retirar y pagar, a las que se puede acceder desde el <0>Panel de control\",\"tOuXfv\":[\"Cantidad a tomar prestado para alcanzar el \",[\"0\"],\"% de utilización\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"Por favor, conecta tu cartera\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Tus suministros\",\"u3ZeYl\":\"Error en la transacción\",\"u706uF\":\"Préstamo flash inválido\",\"u8Gfu7\":[\"Sin resultados de búsqueda\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No hay activos seleccionados para migrar.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrando\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Para el pago de un tipo específico de deuda, el usuario necesita tener una deuda de ese tipo\",\"ulNuNq\":\"Exportar datos a\",\"ulup2p\":\"Comprar Crypto con Fiat\",\"usB84Z\":\"La cantidad máxima disponible para tomar prestado está limitada porque casi se ha alcanzado el límite de préstamo del protocolo.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restakeado\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Ocultar\",\"vMba49\":\"Tomar prestado no está habilitado\",\"vMpNwt\":\"Aprobar con\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Idioma\",\"vesuBJ\":\"Te permite decidir si utilizar un activo suministrado como garantía. Un activo utilizado como garantía afectará a tu poder de préstamo y factor de salud.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"El balance de deuda estable no es cero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"APR de recompensas\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Tu \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Canal de Discord\",\"wQZbc/\":\"El llamador de la función no es un AToken\",\"wZFvVU\":\"VOTAR SI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"El Protocolo Aave está programado para usar siempre el precio de 1 GHO = $1. Esto es diferente del uso del precio de mercado a través de oráculos para otros criptoactivos. Esto crea oportunidades de arbitraje estabilizadoras cuando el precio de GHO fluctúa.\",\"wh7Ezv\":\"No tienes balance de AAVE/stkAAVE/aAave para delegar.\",\"wlsIx7\":\"Con la testnet Faucet puedes obtener activos gratuitos para probar el Protocolo Aave. Asegúrate de cambiar tu proveedor de cartera a la red de testnet adecuada, selecciona el activo deseado y haz clic en \\\"Faucet\\\" para obtener tokens transferidos a tu cartera. Los activos de una testnet no son \\\"reales\\\", lo que significada que no tienen valor monetario. <0>Aprende más\",\"wmE285\":\"Obtener Token ABP v2\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"Como resultado de las decisiones del gobierno, este pool de stakeo de ABPT está obsoleto. Tienes la flexibilidad de migrar todos tus tokens a v2 o unstakearlos sin ningún periodo de cooldown.\",\"x5KiLL\":\"Los activos seleccionados se han migrado correctamente. Visita el panel de control del mercado para verlos.\",\"x7F2p6\":\"Diferencial actual\",\"x7K5ib\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue \",[\"0\"],\" de prueba gratis en\"],\"x9iLRD\":\"tokens, por favor ve al\",\"xNy/UG\":\"Pagar con\",\"xPm8wv\":\"Aprende más sobre los riesgos involucrados\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Tu información\",\"xaWZ6f\":\"Cambio tipo de APY\",\"xh6k71\":\"El uso de garantías está limitado debido al isolation mode.\",\"xvIklc\":\"El préstamo flash está deshabilitado para este activo, por lo tanto, esta posición no se puede migrar.\",\"y5rS9U\":\"Migrar\",\"yB1YpA\":\"Modo oscuro\",\"yCrG6m\":\"Tamaño total del mercado\",\"yJUUbn\":\"Resumen de la transacción\",\"yLGmLX\":[\"Restakear \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Dirección no válida\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Haz seguimiento de tu cartera\",\"yh2sjd\":[\"Impacto en el precio \",[\"0\"],\"%\"],\"ylmtBZ\":\"La aplicación se ejecuta en fork mode.\",\"ymNY32\":[\"No hay fondos suficientes en la reserva\",[\"0\"],\"para tomar prestado\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Cerrar\",\"z4uGQg\":\"El límite de deuda está sobrepasado\",\"z5UQOM\":\"La garantía elegida no puede ser liquidada\",\"z5Y+p6\":[\"Suministrando \",[\"symbol\"]],\"zCjNKs\":\"No se puede realizar la acción porque la reserva está congelada\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Límite de deuda aislado\",\"zTOjMP\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Deuda restante\",\"zmTPiV\":\"Balance de suministro\",\"zpPbZl\":\"Parámetros de riesgo de liquidación\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menú\",\"zwWKhA\":\"Aprende más\",\"zy9fXn\":[\"Este activo está congelado en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"zys+R6\":\"Ten en cuenta la congestión de la red y los precios del gas.\",\"+EGVI0\":\"Recibir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Parece que no podemos cambiar la red automáticamente. Por favor, comprueba si puedes cambiarla desde la cartera.\",\"+kLZGu\":\"Cantidad de activos suministrados\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Cantidad mínima de Aave stakeado\",\"00OflG\":\"No hay suficiente liquidez para que el activo seleccionado realice el cambio. Prueba reduciendo la cantidad.\",\"08/rZ9\":\"El periodo de cooldown es el tiempo requerido antes de unstakear tus tokens (20 días). Solo puedes retirar tus activos del Módulo de Seguridad después del periodo de cooldown y dentro de la ventana de unstakeo.<0>Aprende más\",\"1Onqx8\":[\"Aprobando \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Dirección bloqueada\",\"2bAhR7\":\"Conoce GHO\",\"2o/xRt\":\"Se ha alcanzado el límite de suministro en la reserva especificada. Prueba reduciendo la cantidad.\",\"3O8YTV\":\"Interés total acumulado\",\"4iPAI3\":\"Cantidad de préstamo mínima de GHO\",\"6NGLTR\":\"Cantidad descontable\",\"6yAAbq\":\"APY, tasa de préstamo\",\"73Auuq\":\"Los parámetros de descuento son decididos por la comunidad de Aave y pueden cambiar con el tiempo. Consulta el Gobierno para ver actualizaciones y vota para participar. <0>-Aprende más\",\"ARu1L4\":\"Pagado\",\"B6aXGH\":\"Estable\",\"B9Gqbz\":\"Tasa variable\",\"BJyN77\":\"Debido al impacto del factor de salud, se requiere un préstamo flash para realizar esta transacción, pero el Gobierno de Aave ha inhabilitado la disponibilidad de préstamos flash para este activo. Intenta reducir la cantidad o suministrar garantía adicional.\",\"BjLdl1\":\"Con un descuento\",\"CMHmbm\":\"Deslizamiento\",\"EBL9Gz\":\"¡COPIADO!\",\"ES8dkb\":\"Interés fijo\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Descuento\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Guardar y compartir\",\"JK9zf1\":[\"Interés compuesto estimado, incluyendo el descuento por Staking \",[\"0\"],\"AAVE en el Módulo de Seguridad.\"],\"JPrLjO\":\"No puedes usar este activo como garantía\",\"JU6q+W\":\"Recompensa(s) por reclamar\",\"K05qZY\":\"Retirar y Cambiar\",\"KRpokz\":\"VER TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Habilitar este activo como garantía aumenta tu poder préstamo y el factor de salud. Sin embargo, puede ser liquidado si tu factor de salud cae por debajo de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stakear GHO\",\"RIfckG\":[\"Desactivar \",[\"symbol\"],\" como garantía\"],\"RbXH+k\":\"Los poseedores de AAVE, GHO y ABPT (solo en la red de Ethereum) pueden stakear sus activos en el Módulo de Seguridad para añadir más seguridad al protocolo y obtener incentivos de seguridad. En el caso de un evento de shortfall, tu stakeo puede ser reducido para cubrir el déficit. proporcionando una capa adicional de protección para el protocolo.\",\"RoafuO\":\"Enviar feedback\",\"TeCFg/\":\"Cambio de tasa de préstamo\",\"TskbEN\":\"Los poseedores de stkAAVE reciben un descuento en la tasa de préstamo de GHO\",\"TtZL6q\":\"Parámetros del modelo de descuento\",\"Tz0GSZ\":\"actividades bloqueadas\",\"UE3KJZ\":\"El historial de transacciones no está disponible actualmente para este mercado\",\"W8ekPc\":\"Volver al panel de control\",\"XZzneG\":\"Saldrás del modo aislamiento y otros tokens pueden ser usados ahora como garantía\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Deshabilitar este activo como garantía afecta tu poder de préstamo y Factor de Salud.\",\"aX31hk\":\"Tu balance es más bajo que la cantidad seleccionada.\",\"al6Pyz\":\"Supera el descuento\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"No hay suficiente garantía para pagar esta cantidad de deuda con\",\"cqnmnD\":\"Tasa de interés efectiva\",\"dMtLDE\":\"para\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY con descuento aplicado\",\"fHcELk\":\"APR Neto\",\"flRCF/\":\"Descuento por staking\",\"gncRUO\":\"Esta dirección está bloqueada en app.aave.com porque está asociada con una o más\",\"gr8mYw\":\"Puedes tomar prestado hasta <0/> GHO al <1/> (descuento máximo)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Balance tomado prestado\",\"i2JTiw\":\"Puedes ingresar una cantidad específica en el campo.\",\"jMam5g\":[\"Balance \",[\"0\"]],\"jpctdh\":\"Ver\",\"kwwn6i\":\"Los usuarios que stakean AAVE en el Modulo de Seguridad (es decir, poseedores de stkAAVE) reciben un descuento en la tasa de interés de préstamo de GHO. Este descuento se aplica a 100 GHO por cada 1 stkAAVE en posesión. Usa el calculador de abajo para ver la tasa de préstamo de GHO con el descuento aplicado.\",\"lNVG7i\":\"Selecciona un activo\",\"lt6bpt\":\"Garantía a pagar con\",\"mIM0qu\":\"Cantidad esperada a pagar\",\"mzI/c+\":\"Descargar\",\"n8Psk4\":\"No podemos detectar una cartera. Conecta una cartera para stakear y ver tu balance.\",\"nOy4ob\":\"Te sugerimos volver al Panel de control.\",\"nakd8r\":\"poseedores de stkAAVE obtienen un descuento en la tasa de préstamo de GHO\",\"nh2EJK\":[\"Por favor, cambia a \",[\"networkName\"],\".\"],\"ntkAoE\":\"Descuento aplicado para <0/> AAVE stakeados\",\"o4tCu3\":\"APY préstamo\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"El periodo de cooldown es \",[\"0\"],\". Después \",[\"1\"],\" del cooldown, entrarás a la ventana de unstakeo de \",[\"2\"],\". Continuarás recibiendo premios durante el cooldown y la ventana de unstakeo.\"],\"p3j+mb\":\"Tu balance de recompensa es 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interés acumulado\",\"rf8POi\":\"Cantidad de activos tomados prestados\",\"ruc7X+\":\"Añade stkAAVE para ver el APY de préstamo con el descuento\",\"sK+Nag\":\"Revisión tx\",\"t81DpC\":[\"Aprueba \",[\"symbol\"],\" para continuar\"],\"umICAY\":\"<0><1><2/>Añade stkAAVE para ver la tasa de préstamo con descuento\",\"uwAUvj\":\"COPIAR IMAGEN\",\"v8x7Mg\":\"Garantía insuficiente para cubrir la nueva posición de préstamo. La cartera debe tener poder de préstamo suficiente para realizar el cambio de deuda.\",\"wRRqvW\":\"No tienes suministros en este activo\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Habilitar \",[\"symbol\"],\" como garantía\"],\"yW1oWB\":\"Tipo APY\",\"yhvj6d\":\"No puedes cambiar el uso como modo de garantía para este activo, porque causará una liquidación\",\"zevmS2\":\"<0><1><2/>añade <3/> stkAAVE para tomar prestado al <4/> (descuento máximo)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/locales/fr/messages.js b/src/locales/fr/messages.js index 5899fe34af..b6f5562555 100644 --- a/src/locales/fr/messages.js +++ b/src/locales/fr/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si vous NE vous désengagez PAS dans les \",[\"0\"],\" de la fenêtre de désengagement, vous devrez réactiver le processus de refroidissement.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participer à cette réserve \",[\"symbol\"],\" donne des récompenses annualisées.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Limite d'emprunt\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Emprunter ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"L'emprunt stable n'est pas activé\",\"/yQcJM\":\"Valeur totale\",\"00AB2i\":\"L'utilisateur n'a pas emprunté la devise spécifiée\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Changement de taux\",\"0BF3yK\":\"Désolé, nous n’avons pas trouvé la page que vous cherchiez.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Risque de liquidation\",\"0ojY+Y\":\"Solde actuel v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Modification des garanties\",\"0wGCWc\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"À l’heure actuelle, les données sur les prix ne sont pas disponibles pour cette réserve dans le sous-graphe du protocole\",\"1LjK22\":\"Historique des transactions\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Veuillez connecter un portefeuille pour afficher vos informations personnelles ici.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Seuil de liquidation <0/>\",\"1m9Qqc\":\"Retrait et changement\",\"1t7rez\":\"L’offre d’actifs est limitée à un certain montant afin de réduire l’exposition du protocole à l’actif et d’aider à gérer les risques encourus.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Voir détails\",\"2FYpfJ\":\"Plus\",\"2O3qp5\":\"Liquidités disponibles\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"L’actif ne peut pas être migré en raison d’une restriction de plafond d’approvisionnement dans \",[\"marketName\"],\" v3 marché.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave est un protocole entièrement décentralisé et régi par la communauté par les détenteurs de jetons AAVE. Les détenteurs de jetons AAVE discutent, proposent et votent collectivement sur les mises à niveau du protocole. Les détenteurs de jetons AAVE (réseau Ethereum uniquement) peuvent soit voter eux-mêmes sur de nouvelles propositions, soit choisir l’adresse de leur choix. Pour en savoir plus, consultez la page Gouvernance\",\"2a6G7d\":\"Veuillez saisir une adresse de portefeuille valide.\",\"2eBWE6\":\"Je reconnais les risques encourus.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"L'emprunt stable est activé\",\"34Qfwy\":\"Le plafond d'emprunt est dépassé\",\"39eQRj\":[\"Emprunter \",[\"symbole\"]],\"3BL1xB\":\"Total fourni\",\"3K0oMo\":\"Offre restante\",\"3MoZhl\":\"Il n'y a pas assez de collatéral pour couvrir un nouvel emprunt\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Fournir \",[\"symbole\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Rembourser\",\"3qsjtp\":\"La moyenne pondérée de l'APY pour tous les actifs fournis, y compris les incitations.\",\"3rL+os\":\"Vous ne pouvez retirer vos actifs du module de sécurité qu'après la fin de la période de refroidissement et que la fenêtre de retrait est active.\",\"42UgDM\":[\"Migrer vers \",[\"0\"],\" Marché v3\"],\"49UFQA\":\"Résultats du vote\",\"4DMZUI\":\"Afficher les transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Petits caractères\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Signez pour continuer\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenez des ressources de test gratuites à l’adresse suivante :\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Le plafond de la dette limite le montant que les utilisateurs du protocole peuvent emprunter sur cet actif. Le plafond de la dette est spécifique aux actifs isolés et est indiqué en USD.\",\"5Ncc6j\":[\"Cet actif a presque atteint son plafond d'offre. Il ne peut y avoir que \",[\"messageValue\"],\" fourni à ce marché.\"],\"5cZ/KX\":\"L'offre de dette variable n'est pas nulle\",\"5che++\":\"Pour demander l'accès à ce marché autorisé, veuillez consulter\xA0: <0>Nom du fournisseur d'accès\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" reçu\"],\"5hDe9v\":\"Allocation action requise\",\"5rsnKT\":\"Récompenses disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Voir tous les votes\",\"6/dCYd\":\"Aperçu\",\"60crCe\":\"Toutes les transactions\",\"62Xcjh\":\"Collatérale\",\"65A04M\":\"Espagnol\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signature\",\"6Jrv+z\":[\"Rembourser \",[\"symbole\"]],\"6Xr0UU\":\"Refroidissement...\",\"6bxci/\":\"Pouvoir de vote\",\"6f8S68\":\"Marchés\",\"6g1gi0\":\"Les propositions\",\"6gvoHP\":\"Copier le message d’erreur\",\"6h3Q5G\":\"Remboursé\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Changer de réseau\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Facteur de santé\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Atteint\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"L’emprunt n’est pas disponible car vous utilisez le mode Isolation. Pour gérer le mode d’isolation, rendez-vous sur votre <0>tableau de bord.\",\"7aKlMS\":\"Partager sur Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Réclamer tout\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Les données n’ont pas pu être récupérées, veuillez recharger le graphique.\",\"7p5kLi\":\"Tableau de bord\",\"7sofdl\":\"Retrait et échange\",\"8+6BI0\":\"Soyez prudent - Vous êtes très proche de la liquidation. Envisagez de déposer plus de collatéral ou de rembourser certaines de vos positions empruntées\",\"87pUEW\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs.\"],\"8F1i42\":\"Page introuvable\",\"8G8M0u\":\"Chargement des données...\",\"8Iu1QS\":\"Retiré\",\"8JL93T\":\"Toutes les propositions\",\"8Q51DU\":\"Ajouter au portefeuille\",\"8X/oyn\":\"Montant invalide à frapper\",\"8Z5FPv\":\"Déconnecter le portefeuille\",\"8Zz7s5\":\"actifs\",\"8aLW8H\":\"Solde à révoquer\",\"8bOT3H\":\"Taux d'utilisation\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Voir le contrat\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Montrer\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Vous entrez en mode Isolation\",\"9CDK3/\":[\"L'emprunt n'est actuellement pas disponible pour \",[\"0\"],\".\"],\"9GIj3z\":\"Taille de réserve\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Solde de mise en jeu\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votes actuels\",\"9Rw96f\":[\"Cet actif a presque atteint son plafond d'emprunt. Il n'y a que \",[\"messageValue\"],\" disponible pour être emprunté sur ce marché.\"],\"9Xj/qR\":[\"Certaines ressources migrées ne seront pas utilisées comme garantie en raison de l’activation du mode d’isolement dans \",[\"marketName\"],\" Marché V3. Visite <0>\",[\"marketName\"],\" Tableau de bord V3 pour gérer le mode d’isolation.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Cet actif a atteint son plafond d'offre. Rien n'est disponible pour être fourni à partir de ce marché.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"L’AMI a été suspendu en raison d’une décision de la communauté. L’offre, les emprunts et les remboursements sont impactés. <0>Plus d’informations\",\"9lXchd\":\"Jeton sous-jacent\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Comme il s'agit d'un réseau de test, vous pouvez obtenir n'importe lequel des actifs si vous avez ETH dans votre portefeuille\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choisissez l’un des services de rampe d’accès\",\"A6dCI6\":[\"Le montant maximal disponible pour emprunter est de <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Vos emprunts\",\"AV7cGz\":\"Examiner les détails de la taxe d'approbation\",\"AZOjB8\":\"Récupération de données...\",\"Ai0jas\":\"Rejoignez la discussion de la communauté\",\"Ajl2rq\":\"Le pouvoir d'emprunt et les actifs sont limités en raison du mode d'isolement.\",\"AqgYNC\":\"Plafond d’emprunt du protocole à 100% pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"Les stETH fournis en garantie continueront d’accumuler des récompenses de staking fournies par les rebasages quotidiens.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"L'utilisation de la garantie est limitée en raison du mode d'isolement. <0>En savoir plus\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Catégorie d'actifs\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Cet actif est gelé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Fiche technique\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Grec\",\"CkTRmy\":[\"Revendication \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Veuillez connecter votre portefeuille pour voir l’outil de migration.\",\"CtGlFb\":[[\"networkName\"],\" Robinet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Cette action réduira le facteur de santé de V3 en dessous du seuil de liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"La garantie est (principalement) la même devise que celle qui est empruntée\",\"DCnFg0\":[\"Adresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"Je comprends parfaitement les risques liés à la migration.\",\"DONJcV\":\"L'actif sous-jacent ne peut pas être sauvé\",\"DR+4uL\":\"Bilan de l’alimentation après le changement\",\"DWjrck\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" V3 Market en raison des restrictions du mode E. Vous pouvez désactiver ou gérer les catégories du mode E dans votre <0>tableau de bord V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave par mois\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collatéralisation\",\"DxfsGs\":\"Vous pouvez signaler un incident sur notre <0>Discord ou<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Désactivé\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Reprise \",[\"symbol\"]],\"Ebgc76\":[\"Retrait \",[\"symbole\"]],\"EdQY6l\":\"Aucun/Aucune\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Réactiver la période de recharge pour annuler le pieu \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrer vers la v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Pour en savoir plus.\",\"FHlMf/\":\"Solde actuel de la v2\",\"FHpxjF\":[\"Le facteur de réserve est un pourcentage de l’intérêt qui va à un \",[\"0\"],\" qui est contrôlé par la gouvernance Aave pour promouvoir la croissance de l’écosystème.\"],\"FOBZa6\":\"Puissance d'emprunt utilisée\",\"FPKEug\":\"Opération non prise en charge\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"sur\",\"Fjw9N+\":\"Actifs à déposer\",\"FmN0fk\":\"Remise en jeu\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO est un actif numérique natif décentralisé et adossé à des garanties, indexé sur le dollar américain. Il est créé par les utilisateurs en empruntant contre plusieurs garanties. Lorsque l’utilisateur rembourse sa position d’emprunt de HO, le protocole brûle le GHO de cet utilisateur. Tous les paiements d’intérêts accumulés par les minters de GHO seraient directement transférés à la trésorerie d’AaveDAO.\",\"GQrBTq\":\"Changer de mode E\",\"GWswcZ\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. Le 20 décembre 2022, renFIL ne sera plus pris en charge et ne pourra plus être reconnecté à son réseau natif. Il est recommandé de retirer les positions d’offre et de rembourser les positions d’emprunt afin que renFIL puisse être relié à FIL avant la date limite. Après cette date, il ne sera plus possible de convertir renFIL en FIL. <0>Plus d’informations\",\"GX8GKD\":\"Actifs\",\"GgEj+0\":\"Mode lecture seule. Connectez-vous à un portefeuille pour effectuer des transactions.\",\"GjkIKV\":\"Prend fin\",\"GtP2hp\":[\"L'emprunt n'est pas disponible, car vous avez activé le mode d'efficacité (E-Mode) pour la catégorie \",[\"0\"],\". Pour gérer les catégories E-Mode, visitez votre <0>tableau de bord.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Désolé, une erreur inattendue s’est produite. En attendant, vous pouvez essayer de recharger la page, ou revenir plus tard.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HmkYqM\":\"Fenêtre d'arrêt de staking\",\"HpK/8d\":\"Recharger\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" v3 Marché puisque l’actif collatéral activera le mode d’isolation.\"],\"Hvwnm9\":[\"La quantité maximale disponible pour l’approvisionnement est limitée parce que le plafond d’approvisionnement du protocole est à \",[\"0\"],\"%.\"],\"I8CX2c\":\"Le montant total de vos actifs libellés en USD qui peut être utilisé comme garantie pour emprunter des actifs.\",\"IAD2SB\":[\"Prétendant \",[\"symbol\"]],\"IG9X9/\":\"L’emprunt de cet actif est limité à un certain montant afin de minimiser l’insolvabilité du pool de liquidités.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Il est prévu que cet actif soit désactivé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"IP+I/j\":\"Période de recharge\",\"IaA40H\":\"Liquidation à\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Gérer l’analytique\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Déjalonnement \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Pas assez de solde sur votre portefeuille\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Solde du portefeuille\",\"JtwD8u\":\"Emprunter le solde après le remboursement\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter davantage sur cet actif.\",\"KLXVqE\":[\"Les tokens stETH seront migrés vers Wrapped stETH à l’aide du wrapper Lido Protocol, ce qui entraîne une modification de l’équilibre de l’offre après la migration : \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Cela représente le seuil auquel une position d'emprunt sera considérée comme sous-garantie et sujette à liquidation pour chaque garantie. Par exemple, si une garantie a un seuil de liquidation de 80\xA0%, cela signifie que la position sera liquidée lorsque la valeur de la dette vaut 80 % de la valeur de la garantie.\",\"KYAjf3\":\"Isolé\",\"KkPgim\":\"Changement de mode E\",\"KnN1Tu\":\"Expire\",\"KoOBI2\":\"En raison de la mécanique interne de stETH requise pour le rebasage de la prise en charge, il n’est pas possible d’effectuer un changement de garantie où stETH est le jeton source.\",\"KojyJ4\":\"Mauvais réseau\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Entrez l'adresse ETH\",\"KvG1xW\":\"Réclamer\",\"L+8Lzs\":\"LTV actuelle\",\"L+qiq+\":\"Marché\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Pas de pouvoir de vote\",\"LL0zks\":\"Peut être collatéral\",\"LLdJWu\":\"AAVE Réclamable\",\"LSIpNK\":\"Emprunter et rembourser dans le même bloc n'est pas autorisé\",\"LVt3TI\":[\"<0>Tolérance de glissement <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Astuce : Essayez d’augmenter le glissement ou de réduire la quantité d’entrée\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Adresse du destinataire\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vue de staking\",\"McHlGl\":\"Changement d’APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si le facteur de santé descend en dessous de 1, la liquidation de votre collatéral peut être déclenchée.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Vous avez annulé la transaction.\",\"MnE2QX\":\"Emprunter des informations\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valeur de retour invalide de la fonction flashloan executor\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"L’actif ne peut être utilisé comme garantie qu’en mode isolé avec un pouvoir d’emprunt limité. Pour passer en mode d’isolation, désactivez toutes les autres garanties.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"En attente...\",\"NK9ikO\":\"Solde du portefeuille\",\"NMt2CB\":\"Montant réclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Contrat de collectionneur\",\"NfpPeS\":\"Rien staké\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Le plafond de mintage non soutenu est dépassé\",\"O+tyU+\":[\"Le montant maximal disponible pour emprunter sur cet actif est limité car le plafond de la dette est à \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Aperçu de la proposition\",\"OYuJ9K\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter sur cet actif.\",\"OfhWJH\":\"Réinitialisation\",\"Og2SKn\":\"handicapé\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Site internet\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirer\",\"P1dURE\":\"Révoquer le pouvoir\",\"P2WCD/\":[\"L’actif sous-jacent n’existe pas dans \",[\"marketName\"],\" v3 Market, par conséquent, cette position ne peut pas être migrée.\"],\"P2sL6B\":\"Lorsqu'une liquidation survient, les liquidateurs remboursent jusqu'à 50 % de l'encours emprunté au nom de l'emprunteur. En contrepartie, ils peuvent acheter le collatéral à prix réduit et conserver la différence (pénalité de liquidation) en bonus.\",\"P6sRoL\":\"Mise en jeu ABPT\",\"P72/OW\":\"La moyenne pondérée de l'APY pour tous les actifs empruntés, y compris les incitatifs.\",\"P7e6Ug\":\"Veuillez connecter votre portefeuille pour consulter l’historique des transactions.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Emprunter apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Seuil de liquidation\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Cette action réduira le facteur de santé V2 en dessous du seuil de liquidation. Conservez la garantie ou migrez la position d’emprunt pour continuer.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Non atteint\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Différentiel\",\"RNK49r\":\"Signature non valide\",\"RS0o7b\":\"État\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Détails de la proposition\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"L'actif n'est pas répertorié\",\"Rj01Fz\":\"Liens\",\"RmWFEe\":\"APR staké\",\"RtBLm7\":\"Le facteur santé est inférieur au seuil de liquidation\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Activé\",\"SDav7h\":\"Fonds dans le Safety Module\",\"SENccp\":\"Si l’erreur persiste,<0/> vous pouvez la signaler à ce\",\"SIWumd\":\"Afficher les ressources gelées ou mises en pause\",\"SM58dD\":\"Quantité en temps de recharge\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Impossible de charger les votants de proposition. Veuillez rafraîchir la page.\",\"SSQVIz\":\"Seuil de liquidation\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Le mode lecture seule permet de voir les positions d’adresses dans Aave, mais vous ne pourrez pas effectuer de transactions.\",\"SZRUQ4\":\"Glissement maximal\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Le plafond d’emprunt du protocole est de 100 % pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"Sk2zW9\":\"Désactiver le E-mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Le fournisseur d'adresses de pool n'est pas enregistré\",\"T/AIqG\":\"Limite d’approvisionnement du protocole à 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Emprunter\",\"TFxQlw\":\"Pénalité de liquidation\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"L'actif ne peut être utilisé comme garantie qu'en mode isolé.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"L'utilisateur n'a pas de dette à taux stable impayée sur cette réserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Emprunter le solde après le changement\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recharger la page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"L’application s’exécute en mode réseau de test. Découvrez comment cela fonctionne dans\",\"U9btTk\":\"L'actif n'est pas empruntable en mode d'isolement\",\"UAOZRe\":\"L’impact sur les prix est l’écart entre la valeur totale des tokens d’entrée échangés et les tokens de destination obtenus (en USD), qui résulte de la liquidité limitée de la paire de trading.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Détails\",\"UTTKmT\":\"Temps de recharge de la mise activé\",\"UXeR72\":\"Ces fonds ont été empruntés et ne peuvent pas être retirés pour le moment.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Le ratio LTV maximum représente le pouvoir d'emprunt maximum d'une garantie spécifique. Par exemple, si une garantie a un LTV de 75 %, l'utilisateur peut emprunter jusqu'à 0,75 ETH dans la devise principale pour chaque 1 ETH de garantie.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Aucune récompense à réclamer\",\"V0f2Xv\":\"Facteur de réserve\",\"V1HK43\":\"Risques liés à la migration\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Dette couverte\",\"VHOVEJ\":\"Connecter le portefeuille\",\"VMfYUK\":\"Sécurité de votre garantie déposée contre les actifs empruntés et sa valeur sous-jacente.\",\"VOAZJh\":\"Total des emprunts\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Examiner les détails de la transaction\",\"W5hVah\":\"Rien fourni pour le moment\",\"W5kTFy\":\"Vote\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Sans support\",\"WNGZwH\":\"E-Mode augmente votre LTV pour une catégorie d'actifs sélectionnée jusqu'à <0/>. <1>En savoir plus\",\"WPWG/y\":\"Statut et configuration de la réserve\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"L'utilisateur ne peut pas retirer plus que le solde disponible\",\"WaZyaV\":\"<0>Ampleforth est un actif de rebasage. Consultez la <1>documentation pour en savoir plus.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Étant donné que cette ressource est suspendue, aucune action ne peut être entreprise jusqu’à nouvel ordre\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Pour emprunter, vous devez fournir tout actif à utiliser comme garantie.\",\"X/ITG9\":\"Copier le texte d'erreur\",\"X3Pp6x\":\"Utilisé comme collatéral\",\"X4Zt7j\":\"L'action ne peut pas être effectuée car la réserve est mise en pause\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Veuillez toujours tenir compte de votre <0>facteur de santé (HF) lors de la migration partielle d’une position et que vos tarifs seront mis à jour vers les taux V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTER NON\",\"YDIOks\":\"Activation du E-Mode\",\"YSodyW\":\"Cette action réduira votre facteur de santé. Veuillez garder à l’esprit le risque accru de liquidation des garanties.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Le mode réseau de test est activé\",\"YrDxdO\":\"Si votre prêt à la valeur dépasse le seuil de liquidation, votre garantie fournie peut être liquidée.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Les conditions de rééquilibrage des taux d'intérêt n'ont pas été remplies\",\"YyydIq\":[\"Ajouter \",[\"0\"],\" à Wallet pour suivre votre solde.\"],\"Z3FXyt\":\"Loading...\",\"ZBvhI+\":\"Gouvernance Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Mode efficacité (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Désactiver le réseau de test\",\"Zbyywy\":\"Coupure maximale\",\"ZfUGFb\":\"Avant de déposer\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valeur de liquidation\",\"ZrEc8j\":\"Nous n’avons trouvé aucun élément lié à votre recherche. Réessayez avec un autre nom, symbole ou adresse de ressource.\",\"ZsLF7e\":\"Activé\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Temps restant pour dépiquer\",\"a7u1N9\":\"Prix\",\"a9D+6D\":\"Non jalonné\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"aOKIms\":\"Les paramètres de tableau devraient être de même longueur ne sont pas\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aX31hk\":\"Votre solde est inférieur au montant sélectionné.\",\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Prêt APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Avertissement de période de refroidissement\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Actif\",\"bXQ/Og\":\"Partager sur Twitter\",\"bXr0ee\":\"Les actifs isolés ont un pouvoir d'emprunt limité et les autres actifs ne peuvent pas être utilisés comme garantie.\",\"bYmAV1\":\"Adresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Le montant demandé est supérieur au montant maximum du prêt en mode taux stable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Fournir\",\"bxN6EM\":\"Impossible de désactiver le mode E\",\"c91vuQ\":\"L'adresse n'est pas un contrat\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Vous ne pouvez pas retirer ce montant car cela entraînera un appel de garantie\",\"cBc+4A\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"cIl5kp\":\"Votre pouvoir de vote est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"cLo09S\":\"Détails des risques\",\"cNT+ij\":\"L'emprunt n'est pas disponible car vous avez activé le mode Efficacité (E-Mode) et le mode Isolation. Pour gérer le mode E et le mode Isolation, rendez-vous sur votre <0>tableau de bord.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Pour soumettre une proposition de modifications mineures du protocole, vous aurez besoin d’une puissance d’au moins 80,00 K. Si vous souhaitez modifier la base de code de base, vous aurez besoin d’une puissance de 320k. <0>Pour en savoir plus.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Remboursement \",[\"symbole\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Discussion de forum\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"Vous n'avez pas participé à cette proposition\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gouvernance\",\"dEgA5A\":\"Annuler\",\"dIsyWh\":\"Échec de la validation LTV\",\"dOB5nW\":[\"La quantité maximale disponible pour la fourniture est de <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Vous n'avez pas assez de fonds dans votre portefeuille pour rembourser le montant total. Si vous continuez à rembourser avec votre montant actuel de fonds, vous aurez toujours une petite position d'emprunt dans votre tableau de bord.\",\"dXUQFX\":\"Actifs à emprunter\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"L’emprunt est désactivé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"djsg0o\":\"Usage de collatéral\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Jeton de dette Aave\",\"e4V3oW\":\"Top 10 des adresses\",\"eD8WX/\":\"L'action nécessite une réserve active\",\"eJRJ04\":\"Montant à la mise en jeu\",\"eLh0cL\":\"Le slippage est la différence entre les montants cotés et reçus en raison de l’évolution des conditions du marché entre le moment où la transaction est soumise et sa vérification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Récompenses de staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aucune transaction n’a encore été effectuée.\",\"ebLGGN\":\"Total emprunté\",\"ecqEvn\":\"Le solde de la garantie est de 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible sur\",\"enruNF\":\"Commence\",\"eqLYiD\":\"Arrêter de staker maintenant\",\"evw5ha\":\"Valeur nette\",\"ezcU16\":\"Obtenir le jeton ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Vous êtes passé au tarif \",[\"0\"]],\"fMJQZK\":\"Emprunté\",\"fZ5Vnu\":\"Reçu\",\"firl9Q\":\"Votre prêt actuel à la valeur en fonction de votre collatéral fournie.\",\"fldjW9\":\"Prévisualiser tx et migrer\",\"fsBGk0\":\"Solde\",\"fu1Dbh\":[\"Retirer \",[\"symbole\"]],\"fwjWSI\":\"Fourni\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Alimenté par\",\"g8KGoA\":\"Foire aux questions\",\"g9zzqS\":\"A voté NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Mode réseau test\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"gTHi2T\":\"L'utilisateur essaie d'emprunter plusieurs actifs, y compris un en silo\",\"gVW59Y\":\"Veuillez connecter votre portefeuille pour obtenir des ressources de réseau de test gratuites.\",\"gcFNxP\":\"Approuver Confirmé\",\"goff7V\":\"Adresse zéro non-valide\",\"gp+f1B\":\"Variante 3\",\"gvTM4B\":\"L'APY net est l'effet combiné de toutes les positions d'offre et d'emprunt sur la valeur nette, y compris les incitations. Il est possible d'avoir un APY net négatif si l'APY de la dette est supérieur à l'APY de l'offre.\",\"gzcch9\":\"Frais de protocole de pont invalide\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\". .CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activer le temps de recharge\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY Net\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Revendiqué\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Le % de votre pouvoir d'emprunt total utilisé. Ceci est basé sur le montant de votre garantie fournie et le montant total que vous pouvez emprunter.\",\"hehnjM\":\"Montant\",\"hjDCQr\":\"Il y a eu une erreur. Veuillez essayer de modifier les paramètres ou <0><1>copier l'erreur\",\"hom7qf\":\"Réclamer\",\"hpHJ4I\":\"Garantie liquidée\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Emprunter \",[\"symbole\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"À propos de GHO\",\"iChbOF\":\"Paramètres de prêt flash incohérents\",\"iEPVHF\":\"Pas assez de pouvoir de vote pour participer à cette proposition\",\"iEW87X\":\"Délégation de pouvoirs\",\"iEju36\":[\"Vous avez voté \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Sélectionner la tolérance de glissement\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Entrez un montant\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens n'est pas la même chose que de les staker . Si vous souhaitez staker votre\",\"iZxa38\":\"Utilisez-le pour voter pour ou contre les propositions actives.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Informations sur le collectionneur\",\"igkfR1\":[\"En mode Isolation, vous ne pouvez pas fournir d’autres actifs en garantie. Un plafond d’endettement global limite le pouvoir d’emprunt de l’actif isolé. Pour quitter le mode d’isolement, désactivez \",[\"0\"],\" en garantie avant d’emprunter un autre actif. Pour en savoir plus, consultez notre <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"L'utilisation du collatéral est limitée en raison du mode d'isolation.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Fournir votre\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Désactiver le E-mode\",\"jKYzR1\":\"Activer le E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Temps de recharge restant\",\"jeMZNr\":[[\"0\"],\" Le service de rampe d’accès est fourni par le fournisseur externe et, en le sélectionnant, vous acceptez les conditions du fournisseur. Votre accès au service peut dépendre de l’opérationnalité du fournisseur externe.\"],\"jfl9OP\":\"Migré\",\"jmXdoY\":\"En E-Mode, certains actifs ne sont pas empruntables. Quittez le E-mode pour accéder à tous les actifs\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Non disponible\",\"k/sb6z\":\"Choisir la langue\",\"k3wP3f\":\"<0>Attention: Les changements de paramètres via la gouvernance peuvent modifier le facteur de santé de votre compte et le risque de liquidation. Suivez le <1>forum de gouvernance d’Aave pour les mises à jour.\",\"kACpF3\":[\"Réclamer \",[\"0\"]],\"kH6wUX\":\"Impact sur les prix\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" Actifs sélectionnés\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Pour rembourser au nom d'un utilisateur, un montant explicite à rembourser est nécessaire\",\"kRTD40\":[\"Montant de remboursement à atteindre \",[\"0\"],\"% d’utilisation\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Le plafond d'approvisionnement est dépassé\",\"knxE+G\":\". JSON (en anglais seulement)\",\"ks2LWT\":\"Le plafond de la dette n'est pas nul\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"L’actif ne peut pas être migré en raison d’une liquidité insuffisante ou d’une limitation du plafond d’emprunt \",[\"marketName\"],\" v3 marché.\"],\"lVhKKI\":\"A voté YAE\",\"lWLqxB\":\"Nous n’avons trouvé aucune transaction liée à votre recherche. Réessayez avec un autre nom de ressource ou réinitialisez les filtres.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Anglais\",\"lfEjIE\":\"En savoir plus dans notre <0>guide FAQ\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Émission totale par jour\",\"m7r7Hh\":\"Sélection d’actifs d’emprunt\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Variante 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs ou utiliser <0>\",[\"0\"],\" pour transférer votre \",[\"network\"],\" actif.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Acheter \",[\"cryptoSymbol\"],\" avec Fiat\"],\"mvCXBY\":\"Mise en jeu AAVE\",\"mwdzil\":\"D'accord, fermer\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"L'actif ne peut pas être utilisé comme collatéral.\",\"n+SX4g\":\"Développeurs\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Fournir apy\",\"nJgsQu\":\"Avec un pouvoir de vote de <0/>\",\"nLC6tu\":\"Français\",\"nNHV0z\":\"La migration simultanée de plusieurs garanties et d’actifs empruntés peut s’avérer coûteuse et peut échouer dans certaines situations. <0>Par conséquent, il n’est pas recommandé de migrer des positions avec plus de 5 actifs (déposés + empruntés) en même temps.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Peut être exécuté\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Les deux\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Quelque chose s’est mal passé\",\"nxyWvj\":\"Le retrait de ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"o17QVP\":\"Votre facteur de santé et votre prêt à la valeur déterminent l'assurance de votre collatéral. Pour éviter les liquidations, vous pouvez fournir plus de garanties ou rembourser les positions d'emprunt.\",\"o1xc2V\":\"L'approvisionnement en aTokens n'est pas nul\",\"o5ooMr\":\"Dette\",\"o7J4JM\":\"Filtrer\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Temps de recharge pour déstaker\",\"oJ5ZiG\":\"L'utilisateur n'a pas de dette à taux variable impayée sur cette réserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Ressources de test\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Le taux d'intérêt stable <0>restera le même pendant toute la durée de votre prêt. Recommandé pour les périodes de prêt à long terme et pour les utilisateurs qui préfèrent la prévisibilité.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible au dépôt\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Rien n’a été trouvé\",\"owSsI3\":\"Signatures prêtes\",\"p+R52m\":\"Accéder à Balancer Pool\",\"p2S64u\":\"Le ratio prêt/valeur des positions migrées entraînerait la liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"p2Z2Qi\":\"Cet actif a atteint son plafond d'emprunt. Rien n'est disponible pour être emprunté à ce marché.\",\"p45alK\":\"Configurer la délégation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Le solde sous-jacent doit être supérieur à 0\",\"pgWG9H\":\"Pas assez de solde staké\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"veuillez vérifier que le montant que vous souhaitez fournir n'est pas actuellement utilisé pour le staking. S'il est utilisé pour le staking, votre transaction peut échouer.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Je comprends comment fonctionnent le temps de recharge (\",[\"0\"],\") et le retrait (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"L'appelant de cette fonction doit être un pool\",\"q/51mF\":\"Migrer vers la V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Stratégie de taux d’intérêt\",\"q6lAbz\":\"Staké\",\"qB4kPi\":\"Fournir APY\",\"qENI8q\":\"Paramètres globaux\",\"qGz5zl\":\"Solde de garantie après remboursement\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copier l'erreur\",\"qXCkEM\":\"Veuillez connecter votre portefeuille pour voir vos fournitures, vos emprunts et vos positions ouvertes.\",\"qY2jnw\":\"Expiration invalide\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Montant non valide à brûler\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Le montant doit être supérieur à 0\",\"rQ+R+0\":\"Sélection d’actifs d’approvisionnement\",\"rSayea\":\"APY\",\"rTBDeu\":[\"L’actif ne peut pas être migré car vous disposez d’une garantie isolée dans \",[\"marketName\"],\" v3 Marché qui limite les actifs empruntables. Vous pouvez gérer vos garanties dans <0>\",[\"marketName\"],\" Tableau de bord V3\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Afficher les actifs avec 0 solde\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Vie privée\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Réclamez toutes les récompenses\",\"rwyUva\":\"Ces actifs sont temporairement gelés ou suspendus par des décisions de la communauté Aave, ce qui signifie qu’il n’est pas possible d’obtenir / emprunter ou d’échanger des taux de ces actifs. Les retraits et les remboursements de dettes sont autorisés. Suivez le <0>forum de gouvernance d’Aave pour d’autres mises à jour.\",\"rxJW5W\":\"Votre pouvoir de proposition est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NON\",\"sQv06Y\":\"pour\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Vous unstaké ici\",\"smJNwH\":\"Disponible à emprunter\",\"solypO\":\"Le facteur de santé n'est pas inférieur au seuil\",\"sr0UJD\":\"Retourner\",\"ss5GCK\":\"L'adresse du fournisseur d'adresses du pool n'est pas valide\",\"swEgK4\":\"Vos informations de vote\",\"t+wtgf\":\"Aucun emprunt pour l'instant\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Prix Oracle\",\"tFZLf8\":\"Ce calcul de gaz n'est qu'une estimation. Votre portefeuille fixera le prix de la transaction. Vous pouvez modifier les paramètres de gaz directement depuis votre fournisseur de portefeuille.\",\"tHuvQI\":\"Accéder au tableau de bord V3\",\"tOcg3N\":\"Étant donné que cet actif est gelé, les seules actions disponibles sont le retrait et le remboursement, accessibles depuis le <0>tableau de bord\",\"tOuXfv\":[\"Emprunter le montant à atteindre \",[\"0\"],\"% d’utilisation\"],\"te9Bfl\":\"S'il vous plaît, connectez votre portefeuille\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Vos ressources\",\"u3ZeYl\":\"La transaction a échoué\",\"u706uF\":\"Prime flash non valide\",\"u8Gfu7\":[\"Aucun résultat de recherche\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"Aucune ressource n’a été sélectionnée pour la migration.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migration\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Exporter des données vers\",\"ulup2p\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"usB84Z\":\"Le montant maximum disponible pour emprunter est limité car le plafond d’emprunt du protocole est presque atteint.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restauré\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Cacher\",\"vMba49\":\"L'emprunt n'est pas activé\",\"vMpNwt\":\"Approuvez avec\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Vous permet de décider si vous souhaitez utiliser un actif fourni en tant que collatéral. Un actif utilisé comme collatéral affectera votre pouvoir d'emprunt et votre Health Factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"L'offre de dette stable n'est pas nulle\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Récompenses APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Vous \",[\"action\"],\" <0/> \",[\"symbole\"]],\"wBIsjb\":\"Canal Discord\",\"wQZbc/\":\"L'appelant de la fonction n'est pas un AToken\",\"wZFvVU\":\"VOTER OUI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"Le protocole Aave est programmé pour toujours utiliser le prix de 1 GHO = 1 $. C’est différent de l’utilisation des prix du marché via des oracles pour d’autres actifs cryptographiques. Cela crée des opportunités d’arbitrage stabilisatrices lorsque le prix du GHO fluctue.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"Avec testnet Faucet, vous pouvez obtenir des ressources gratuites pour tester le protocole Aave. Assurez-vous de changer votre fournisseur de portefeuille pour le réseau de test approprié, sélectionnez l’actif souhaité et cliquez sur «\xA0Faucet\xA0» pour obtenir des jetons transférés vers votre portefeuille. Les actifs d’un réseau de test ne sont pas « réels », ce qui signifie qu’ils n’ont aucune valeur monétaire. <0>Pour en savoir plus\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Les ressources sélectionnées ont été migrées avec succès. Rendez-vous sur le tableau de bord du marché pour les voir.\",\"x7F2p6\":\"Différentiel de courant\",\"x7K5ib\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenir un test gratuit \",[\"0\"],\" à\"],\"x9iLRD\":\"tokens, veuillez vous rendre sur\",\"xNy/UG\":\"Rembourser avec\",\"xPm8wv\":\"En savoir plus sur les risques encourus\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Vos informations\",\"xaWZ6f\":\"Changement de type APY\",\"xh6k71\":\"L’utilisation des garanties est limitée en raison du mode d’isolation.\",\"xvIklc\":\"Flashloan est désactivé pour cet actif, cette position ne peut donc pas être migrée.\",\"y5rS9U\":\"Émigrer\",\"yB1YpA\":\"Mode Sombre\",\"yCrG6m\":\"Taille totale du marché\",\"yJUUbn\":\"Aperçu des transactions\",\"yLGmLX\":[\"Remise en jeu \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Pas une adresse valide\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Suivre le portefeuille\",\"yh2sjd\":[\"Impact sur les prix \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Il n'y a pas assez de fonds dans la \",[\"0\"],\" réserve pour emprunter\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Fermer\",\"z4uGQg\":\"Le plafond de la dette est dépassé\",\"z5UQOM\":\"La garantie choisie ne peut être liquidée\",\"z5Y+p6\":[\"Fournir \",[\"symbole\"]],\"zCjNKs\":\"L'action ne peut pas être effectuée car la réserve est gelée\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Plafond de la dette isolée\",\"zTOjMP\":\"La limite d’approvisionnement du protocole est de 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Dette restante\",\"zmTPiV\":\"Bilan d'approvisionnement\",\"zpPbZl\":\"Paramètres du risque de liquidation\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Apprendre encore plus\",\"zy9fXn\":[\"L’actif est gelé \",[\"marketName\"],\" v3, donc cette position ne peut pas être migrée.\"],\"zys+R6\":\"Faites attention à la congestion du réseau et aux prix de l’essence.\",\"+EGVI0\":\"Recevoir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"On dirait que nous ne pouvons pas changer de réseau automatiquement. Veuillez vérifier si vous pouvez le changer depuis le portefeuille.\",\"+kLZGu\":\"Montant de l’actif fourni\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Montant minimum d’Aave mis en jeu\",\"00OflG\":\"Il n’y a pas assez de liquidités pour que l’actif cible puisse effectuer le changement. Essayez de réduire le montant.\",\"08/rZ9\":\"La période de recharge est le temps nécessaire avant de retirer vos jetons (20 jours). Vous ne pouvez retirer vos actifs du module de sécurité qu’après la période de recharge et pendant la période de désenjeu. <0>Pour en savoir plus\",\"1Onqx8\":[\"Approuver \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Adresse bloquée\",\"2bAhR7\":\"Rencontrez GHO\",\"2o/xRt\":\"Plafond d'approvisionnement sur la réserve cible atteint. Essayez de réduire le montant.\",\"3O8YTV\":\"Total des intérêts courus\",\"4iPAI3\":\"Montant minimum d’emprunt GHO\",\"6NGLTR\":\"Montant actualisable\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Les paramètres de remise sont décidés par la communauté Aave et peuvent être modifiés au fil du temps. Consultez la section Gouvernance pour les mises à jour et votez pour participer. <0>Pour en savoir plus\",\"ARu1L4\":\"Remboursé\",\"B6aXGH\":\"Stable\",\"B9Gqbz\":\"Taux variable\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"À prix réduit\",\"CMHmbm\":\"Glissement\",\"EBL9Gz\":\"COPIÉ!\",\"ES8dkb\":\"Taux fixe\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Rabais\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Enregistrer et partager\",\"JK9zf1\":[\"Intérêts composés estimés, y compris l’escompte pour le jalonnement \",[\"0\"],\"AAVE dans le module de sécurité.\"],\"JPrLjO\":\"Vous ne pouvez pas utiliser cette devise comme garantie\",\"JU6q+W\":\"Récompense(s) à réclamer\",\"K05qZY\":\"Retrait et échange\",\"KRpokz\":\"VOIR TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"L'activation de cet actif comme garantie augmente votre pouvoir d'emprunt et votre facteur de santé. Cependant, il peut être liquidé si votre facteur de santé tombe en dessous de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Désactiver \",[\"symbol\"],\" comme garantie\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Envoyer des commentaires\",\"TeCFg/\":\"Modification du taux d’emprunt\",\"TskbEN\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"TtZL6q\":\"Paramètres du modèle de remise\",\"Tz0GSZ\":\"Activités bloquées\",\"UE3KJZ\":\"L’historique des transactions n’est actuellement pas disponible pour ce marché\",\"W8ekPc\":\"Retour au tableau de bord\",\"XZzneG\":\"Vous quitterez le mode d'isolement et d'autres jetons peuvent désormais être utilisés comme collatéral\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"La désactivation de cet actif en tant que garantie affecte votre pouvoir d'emprunt et votre facteur de santé.\",\"al6Pyz\":\"Dépasse la remise\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Pas assez de collatéral pour rembourser ce montant de dette avec\",\"cqnmnD\":\"Taux d’intérêt effectif\",\"dMtLDE\":\"À\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY avec remise appliquée\",\"fHcELk\":\"APR Net\",\"flRCF/\":\"Remise sur le staking\",\"gncRUO\":\"Cette adresse est bloquée sur app.aave.com car elle est associée à un ou plusieurs\",\"gr8mYw\":\"Vous pouvez emprunter jusqu’à GHO à <0/> <1/> (rabais maximum)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Emprunter le solde\",\"i2JTiw\":\"Vous pouvez saisir un montant personnalisé dans le champ.\",\"jMam5g\":[[\"0\"],\" Balance\"],\"jpctdh\":\"Vue\",\"kwwn6i\":\"Les utilisateurs qui misent des AAVE dans le module de sécurité (c’est-à-dire les détenteurs de stkAAVE) bénéficient d’une réduction sur le taux d’intérêt d’emprunt de HO. La réduction s’applique à 100 GHO pour chaque 1 stkAAVE détenu. Utilisez le calculateur ci-dessous pour voir le taux d’emprunt GHO avec le rabais appliqué.\",\"lNVG7i\":\"Sélectionner une ressource\",\"lt6bpt\":\"Garantie à rembourser\",\"mIM0qu\":\"Montant prévu à rembourser\",\"mzI/c+\":\"Télécharger\",\"n8Psk4\":\"Nous n’avons pas pu détecter de portefeuille. Connectez un portefeuille pour staker et consulter votre solde.\",\"nOy4ob\":\"Nous vous suggérons de revenir au tableau de bord.\",\"nakd8r\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"nh2EJK\":[\"Veuillez passer à \",[\"networkName\"],\".\"],\"ntkAoE\":\"Remise appliquée pour <0/> le staking d’AAVE\",\"o4tCu3\":\"Emprunter de l’APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"La période de recharge est de \",[\"0\"],\". Après \",[\"1\"],\" de temps de recharge, vous entrerez dans la fenêtre de désengagement de \",[\"2\"],\". Vous continuerez à recevoir des récompenses pendant le temps de recharge et la fenêtre de retrait.\"],\"p3j+mb\":\"Votre solde de récompenses est de 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Intérêts courus\",\"rf8POi\":\"Montant de l’actif emprunté\",\"ruc7X+\":\"Ajoutez stkAAVE pour voir l’APY d’emprunt avec la remise\",\"sK+Nag\":\"Réviser tx\",\"t81DpC\":[\"Approuver \",[\"symbol\"],\" pour continuer\"],\"umICAY\":\"<0><1><2/>Ajoutez stkAAVE pour voir le taux d’emprunt avec escompte\",\"uwAUvj\":\"COPIER L’IMAGE\",\"v8x7Mg\":\"Garantie insuffisante pour couvrir une nouvelle position d’emprunt. Le portefeuille doit avoir une capacité d’emprunt restante pour effectuer le transfert de dette.\",\"wRRqvW\":\"Vous n'avez pas de fournitures dans cette devise\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Activer \",[\"symbol\"],\" comme collatéral\"],\"yW1oWB\":\"APY type\",\"yhvj6d\":\"Vous ne pouvez pas changer d'utilisation en tant que mode de garantie pour cette devise, car cela entraînera un appel de garantie\",\"zevmS2\":\"<0><1><2/>Ajoutez <3/> stkAAVE pour emprunter à <4/> (remise maximale)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si vous NE vous désengagez PAS dans les \",[\"0\"],\" de la fenêtre de désengagement, vous devrez réactiver le processus de refroidissement.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participer à cette réserve \",[\"symbol\"],\" donne des récompenses annualisées.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Limite d'emprunt\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Emprunter ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"L'emprunt stable n'est pas activé\",\"/yQcJM\":\"Valeur totale\",\"00AB2i\":\"L'utilisateur n'a pas emprunté la devise spécifiée\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Changement de taux\",\"0BF3yK\":\"Désolé, nous n’avons pas trouvé la page que vous cherchiez.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Risque de liquidation\",\"0ojY+Y\":\"Solde actuel v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Modification des garanties\",\"0wGCWc\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"À l’heure actuelle, les données sur les prix ne sont pas disponibles pour cette réserve dans le sous-graphe du protocole\",\"1LjK22\":\"Historique des transactions\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Veuillez connecter un portefeuille pour afficher vos informations personnelles ici.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Seuil de liquidation <0/>\",\"1m9Qqc\":\"Retrait et changement\",\"1t7rez\":\"L’offre d’actifs est limitée à un certain montant afin de réduire l’exposition du protocole à l’actif et d’aider à gérer les risques encourus.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Voir détails\",\"2FYpfJ\":\"Plus\",\"2O3qp5\":\"Liquidités disponibles\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"L’actif ne peut pas être migré en raison d’une restriction de plafond d’approvisionnement dans \",[\"marketName\"],\" v3 marché.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave est un protocole entièrement décentralisé et régi par la communauté par les détenteurs de jetons AAVE. Les détenteurs de jetons AAVE discutent, proposent et votent collectivement sur les mises à niveau du protocole. Les détenteurs de jetons AAVE (réseau Ethereum uniquement) peuvent soit voter eux-mêmes sur de nouvelles propositions, soit choisir l’adresse de leur choix. Pour en savoir plus, consultez la page Gouvernance\",\"2a6G7d\":\"Veuillez saisir une adresse de portefeuille valide.\",\"2eBWE6\":\"Je reconnais les risques encourus.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"L'emprunt stable est activé\",\"34Qfwy\":\"Le plafond d'emprunt est dépassé\",\"39eQRj\":[\"Emprunter \",[\"symbole\"]],\"3BL1xB\":\"Total fourni\",\"3K0oMo\":\"Offre restante\",\"3MoZhl\":\"Il n'y a pas assez de collatéral pour couvrir un nouvel emprunt\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Fournir \",[\"symbole\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Rembourser\",\"3qsjtp\":\"La moyenne pondérée de l'APY pour tous les actifs fournis, y compris les incitations.\",\"3rL+os\":\"Vous ne pouvez retirer vos actifs du module de sécurité qu'après la fin de la période de refroidissement et que la fenêtre de retrait est active.\",\"42UgDM\":[\"Migrer vers \",[\"0\"],\" Marché v3\"],\"49UFQA\":\"Résultats du vote\",\"4DMZUI\":\"Afficher les transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Petits caractères\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Signez pour continuer\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenez des ressources de test gratuites à l’adresse suivante :\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Le plafond de la dette limite le montant que les utilisateurs du protocole peuvent emprunter sur cet actif. Le plafond de la dette est spécifique aux actifs isolés et est indiqué en USD.\",\"5Ncc6j\":[\"Cet actif a presque atteint son plafond d'offre. Il ne peut y avoir que \",[\"messageValue\"],\" fourni à ce marché.\"],\"5cZ/KX\":\"L'offre de dette variable n'est pas nulle\",\"5che++\":\"Pour demander l'accès à ce marché autorisé, veuillez consulter\xA0: <0>Nom du fournisseur d'accès\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" reçu\"],\"5hDe9v\":\"Allocation action requise\",\"5rsnKT\":\"Récompenses disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Voir tous les votes\",\"6/dCYd\":\"Aperçu\",\"60crCe\":\"Toutes les transactions\",\"62Xcjh\":\"Collatérale\",\"65A04M\":\"Espagnol\",\"68ANm7\":\"Withdrawing GHO\",\"68E00R\":\"This is the fee of executing position changes, set by governance.\",\"6G8s+q\":\"Signature\",\"6Jrv+z\":[\"Rembourser \",[\"symbole\"]],\"6Xr0UU\":\"Refroidissement...\",\"6bxci/\":\"Pouvoir de vote\",\"6f8S68\":\"Marchés\",\"6g1gi0\":\"Les propositions\",\"6gvoHP\":\"Copier le message d’erreur\",\"6h3Q5G\":\"Remboursé\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Changer de réseau\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Facteur de santé\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Atteint\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"L’emprunt n’est pas disponible car vous utilisez le mode Isolation. Pour gérer le mode d’isolation, rendez-vous sur votre <0>tableau de bord.\",\"7aKlMS\":\"Partager sur Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Réclamer tout\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7l88b8\":\"Les données n’ont pas pu être récupérées, veuillez recharger le graphique.\",\"7p5kLi\":\"Tableau de bord\",\"7sofdl\":\"Retrait et échange\",\"8+6BI0\":\"Soyez prudent - Vous êtes très proche de la liquidation. Envisagez de déposer plus de collatéral ou de rembourser certaines de vos positions empruntées\",\"87pUEW\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs.\"],\"8F1i42\":\"Page introuvable\",\"8G8M0u\":\"Chargement des données...\",\"8Iu1QS\":\"Retiré\",\"8JL93T\":\"Toutes les propositions\",\"8Q51DU\":\"Ajouter au portefeuille\",\"8X/oyn\":\"Montant invalide à frapper\",\"8Z5FPv\":\"Déconnecter le portefeuille\",\"8Zz7s5\":\"actifs\",\"8aLW8H\":\"Solde à révoquer\",\"8bOT3H\":\"Taux d'utilisation\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Voir le contrat\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Montrer\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Vous entrez en mode Isolation\",\"9CDK3/\":[\"L'emprunt n'est actuellement pas disponible pour \",[\"0\"],\".\"],\"9GIj3z\":\"Taille de réserve\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Solde de mise en jeu\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votes actuels\",\"9Rw96f\":[\"Cet actif a presque atteint son plafond d'emprunt. Il n'y a que \",[\"messageValue\"],\" disponible pour être emprunté sur ce marché.\"],\"9Xj/qR\":[\"Certaines ressources migrées ne seront pas utilisées comme garantie en raison de l’activation du mode d’isolement dans \",[\"marketName\"],\" Marché V3. Visite <0>\",[\"marketName\"],\" Tableau de bord V3 pour gérer le mode d’isolation.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Cet actif a atteint son plafond d'offre. Rien n'est disponible pour être fourni à partir de ce marché.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"L’AMI a été suspendu en raison d’une décision de la communauté. L’offre, les emprunts et les remboursements sont impactés. <0>Plus d’informations\",\"9lXchd\":\"Jeton sous-jacent\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Comme il s'agit d'un réseau de test, vous pouvez obtenir n'importe lequel des actifs si vous avez ETH dans votre portefeuille\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choisissez l’un des services de rampe d’accès\",\"A6dCI6\":[\"Le montant maximal disponible pour emprunter est de <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Vos emprunts\",\"AV7cGz\":\"Examiner les détails de la taxe d'approbation\",\"AZOjB8\":\"Récupération de données...\",\"Ai0jas\":\"Rejoignez la discussion de la communauté\",\"Ajl2rq\":\"Le pouvoir d'emprunt et les actifs sont limités en raison du mode d'isolement.\",\"AqgYNC\":\"Plafond d’emprunt du protocole à 100% pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"Les stETH fournis en garantie continueront d’accumuler des récompenses de staking fournies par les rebasages quotidiens.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"L'utilisation de la garantie est limitée en raison du mode d'isolement. <0>En savoir plus\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Catégorie d'actifs\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Cet actif est gelé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Fiche technique\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Grec\",\"CkTRmy\":[\"Revendication \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Veuillez connecter votre portefeuille pour voir l’outil de migration.\",\"CtGlFb\":[[\"networkName\"],\" Robinet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Cette action réduira le facteur de santé de V3 en dessous du seuil de liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"La garantie est (principalement) la même devise que celle qui est empruntée\",\"DCnFg0\":[\"Adresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"Je comprends parfaitement les risques liés à la migration.\",\"DONJcV\":\"L'actif sous-jacent ne peut pas être sauvé\",\"DR+4uL\":\"Bilan de l’alimentation après le changement\",\"DWjrck\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" V3 Market en raison des restrictions du mode E. Vous pouvez désactiver ou gérer les catégories du mode E dans votre <0>tableau de bord V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave par mois\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collatéralisation\",\"DxfsGs\":\"Vous pouvez signaler un incident sur notre <0>Discord ou<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Désactivé\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Reprise \",[\"symbol\"]],\"Ebgc76\":[\"Retrait \",[\"symbole\"]],\"EdQY6l\":\"Aucun/Aucune\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Réactiver la période de recharge pour annuler le pieu \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrer vers la v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Pour en savoir plus.\",\"FHlMf/\":\"Solde actuel de la v2\",\"FHpxjF\":[\"Le facteur de réserve est un pourcentage de l’intérêt qui va à un \",[\"0\"],\" qui est contrôlé par la gouvernance Aave pour promouvoir la croissance de l’écosystème.\"],\"FOBZa6\":\"Puissance d'emprunt utilisée\",\"FPKEug\":\"Opération non prise en charge\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"sur\",\"Fjw9N+\":\"Actifs à déposer\",\"FmN0fk\":\"Remise en jeu\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO est un actif numérique natif décentralisé et adossé à des garanties, indexé sur le dollar américain. Il est créé par les utilisateurs en empruntant contre plusieurs garanties. Lorsque l’utilisateur rembourse sa position d’emprunt de HO, le protocole brûle le GHO de cet utilisateur. Tous les paiements d’intérêts accumulés par les minters de GHO seraient directement transférés à la trésorerie d’AaveDAO.\",\"GQrBTq\":\"Changer de mode E\",\"GWswcZ\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. Le 20 décembre 2022, renFIL ne sera plus pris en charge et ne pourra plus être reconnecté à son réseau natif. Il est recommandé de retirer les positions d’offre et de rembourser les positions d’emprunt afin que renFIL puisse être relié à FIL avant la date limite. Après cette date, il ne sera plus possible de convertir renFIL en FIL. <0>Plus d’informations\",\"GX8GKD\":\"Actifs\",\"GgEj+0\":\"Mode lecture seule. Connectez-vous à un portefeuille pour effectuer des transactions.\",\"GjkIKV\":\"Prend fin\",\"GtP2hp\":[\"L'emprunt n'est pas disponible, car vous avez activé le mode d'efficacité (E-Mode) pour la catégorie \",[\"0\"],\". Pour gérer les catégories E-Mode, visitez votre <0>tableau de bord.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Désolé, une erreur inattendue s’est produite. En attendant, vous pouvez essayer de recharger la page, ou revenir plus tard.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Fenêtre d'arrêt de staking\",\"HpK/8d\":\"Recharger\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" v3 Marché puisque l’actif collatéral activera le mode d’isolation.\"],\"Hvwnm9\":[\"La quantité maximale disponible pour l’approvisionnement est limitée parce que le plafond d’approvisionnement du protocole est à \",[\"0\"],\"%.\"],\"I8CX2c\":\"Le montant total de vos actifs libellés en USD qui peut être utilisé comme garantie pour emprunter des actifs.\",\"IAD2SB\":[\"Prétendant \",[\"symbol\"]],\"IG9X9/\":\"L’emprunt de cet actif est limité à un certain montant afin de minimiser l’insolvabilité du pool de liquidités.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Il est prévu que cet actif soit désactivé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"IP+I/j\":\"Période de recharge\",\"IaA40H\":\"Liquidation à\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Gérer l’analytique\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Déjalonnement \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Pas assez de solde sur votre portefeuille\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Solde du portefeuille\",\"JtwD8u\":\"Emprunter le solde après le remboursement\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter davantage sur cet actif.\",\"KLXVqE\":[\"Les tokens stETH seront migrés vers Wrapped stETH à l’aide du wrapper Lido Protocol, ce qui entraîne une modification de l’équilibre de l’offre après la migration : \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Cela représente le seuil auquel une position d'emprunt sera considérée comme sous-garantie et sujette à liquidation pour chaque garantie. Par exemple, si une garantie a un seuil de liquidation de 80\xA0%, cela signifie que la position sera liquidée lorsque la valeur de la dette vaut 80 % de la valeur de la garantie.\",\"KYAjf3\":\"Isolé\",\"KkPgim\":\"Changement de mode E\",\"KnN1Tu\":\"Expire\",\"KoOBI2\":\"En raison de la mécanique interne de stETH requise pour le rebasage de la prise en charge, il n’est pas possible d’effectuer un changement de garantie où stETH est le jeton source.\",\"KojyJ4\":\"Mauvais réseau\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Entrez l'adresse ETH\",\"KvG1xW\":\"Réclamer\",\"L+8Lzs\":\"LTV actuelle\",\"L+qiq+\":\"Marché\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Pas de pouvoir de vote\",\"LL0zks\":\"Peut être collatéral\",\"LLdJWu\":\"AAVE Réclamable\",\"LSIpNK\":\"Emprunter et rembourser dans le même bloc n'est pas autorisé\",\"LVt3TI\":[\"<0>Tolérance de glissement <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Astuce : Essayez d’augmenter le glissement ou de réduire la quantité d’entrée\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Adresse du destinataire\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vue de staking\",\"McHlGl\":\"Changement d’APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si le facteur de santé descend en dessous de 1, la liquidation de votre collatéral peut être déclenchée.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Vous avez annulé la transaction.\",\"MnE2QX\":\"Emprunter des informations\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valeur de retour invalide de la fonction flashloan executor\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"L’actif ne peut être utilisé comme garantie qu’en mode isolé avec un pouvoir d’emprunt limité. Pour passer en mode d’isolation, désactivez toutes les autres garanties.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"En attente...\",\"NK9ikO\":\"Solde du portefeuille\",\"NMt2CB\":\"Montant réclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Contrat de collectionneur\",\"NfpPeS\":\"Rien staké\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Le plafond de mintage non soutenu est dépassé\",\"O+tyU+\":[\"Le montant maximal disponible pour emprunter sur cet actif est limité car le plafond de la dette est à \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Aperçu de la proposition\",\"OYuJ9K\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter sur cet actif.\",\"OfhWJH\":\"Réinitialisation\",\"Og2SKn\":\"handicapé\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Site internet\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirer\",\"P1dURE\":\"Révoquer le pouvoir\",\"P2WCD/\":[\"L’actif sous-jacent n’existe pas dans \",[\"marketName\"],\" v3 Market, par conséquent, cette position ne peut pas être migrée.\"],\"P2sL6B\":\"Lorsqu'une liquidation survient, les liquidateurs remboursent jusqu'à 50 % de l'encours emprunté au nom de l'emprunteur. En contrepartie, ils peuvent acheter le collatéral à prix réduit et conserver la différence (pénalité de liquidation) en bonus.\",\"P6sRoL\":\"Mise en jeu ABPT\",\"P72/OW\":\"La moyenne pondérée de l'APY pour tous les actifs empruntés, y compris les incitatifs.\",\"P7e6Ug\":\"Veuillez connecter votre portefeuille pour consulter l’historique des transactions.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Emprunter apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Seuil de liquidation\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Cette action réduira le facteur de santé V2 en dessous du seuil de liquidation. Conservez la garantie ou migrez la position d’emprunt pour continuer.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Non atteint\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Différentiel\",\"RNK49r\":\"Signature non valide\",\"RS0o7b\":\"État\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Détails de la proposition\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"L'actif n'est pas répertorié\",\"Rj01Fz\":\"Liens\",\"RmWFEe\":\"APR staké\",\"RtBLm7\":\"Le facteur santé est inférieur au seuil de liquidation\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Activé\",\"SDav7h\":\"Fonds dans le Safety Module\",\"SENccp\":\"Si l’erreur persiste,<0/> vous pouvez la signaler à ce\",\"SIWumd\":\"Afficher les ressources gelées ou mises en pause\",\"SM58dD\":\"Quantité en temps de recharge\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Impossible de charger les votants de proposition. Veuillez rafraîchir la page.\",\"SSQVIz\":\"Seuil de liquidation\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Le mode lecture seule permet de voir les positions d’adresses dans Aave, mais vous ne pourrez pas effectuer de transactions.\",\"SZRUQ4\":\"Glissement maximal\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Le plafond d’emprunt du protocole est de 100 % pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"Sk2zW9\":\"Désactiver le E-mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Le fournisseur d'adresses de pool n'est pas enregistré\",\"T/AIqG\":\"Limite d’approvisionnement du protocole à 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Emprunter\",\"TFxQlw\":\"Pénalité de liquidation\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"L'actif ne peut être utilisé comme garantie qu'en mode isolé.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"L'utilisateur n'a pas de dette à taux stable impayée sur cette réserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Emprunter le solde après le changement\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recharger la page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"L’application s’exécute en mode réseau de test. Découvrez comment cela fonctionne dans\",\"U9btTk\":\"L'actif n'est pas empruntable en mode d'isolement\",\"UAOZRe\":\"L’impact sur les prix est l’écart entre la valeur totale des tokens d’entrée échangés et les tokens de destination obtenus (en USD), qui résulte de la liquidité limitée de la paire de trading.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Détails\",\"UTTKmT\":\"Temps de recharge de la mise activé\",\"UXeR72\":\"Ces fonds ont été empruntés et ne peuvent pas être retirés pour le moment.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Le ratio LTV maximum représente le pouvoir d'emprunt maximum d'une garantie spécifique. Par exemple, si une garantie a un LTV de 75 %, l'utilisateur peut emprunter jusqu'à 0,75 ETH dans la devise principale pour chaque 1 ETH de garantie.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Aucune récompense à réclamer\",\"V0f2Xv\":\"Facteur de réserve\",\"V1HK43\":\"Risques liés à la migration\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Dette couverte\",\"VHOVEJ\":\"Connecter le portefeuille\",\"VMfYUK\":\"Sécurité de votre garantie déposée contre les actifs empruntés et sa valeur sous-jacente.\",\"VOAZJh\":\"Total des emprunts\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Examiner les détails de la transaction\",\"W5hVah\":\"Rien fourni pour le moment\",\"W5kTFy\":\"Vote\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Sans support\",\"WNGZwH\":\"E-Mode augmente votre LTV pour une catégorie d'actifs sélectionnée jusqu'à <0/>. <1>En savoir plus\",\"WPWG/y\":\"Statut et configuration de la réserve\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"L'utilisateur ne peut pas retirer plus que le solde disponible\",\"WaZyaV\":\"<0>Ampleforth est un actif de rebasage. Consultez la <1>documentation pour en savoir plus.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Étant donné que cette ressource est suspendue, aucune action ne peut être entreprise jusqu’à nouvel ordre\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Pour emprunter, vous devez fournir tout actif à utiliser comme garantie.\",\"X/ITG9\":\"Copier le texte d'erreur\",\"X3Pp6x\":\"Utilisé comme collatéral\",\"X4Zt7j\":\"L'action ne peut pas être effectuée car la réserve est mise en pause\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Veuillez toujours tenir compte de votre <0>facteur de santé (HF) lors de la migration partielle d’une position et que vos tarifs seront mis à jour vers les taux V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTER NON\",\"YDIOks\":\"Activation du E-Mode\",\"YSodyW\":\"Cette action réduira votre facteur de santé. Veuillez garder à l’esprit le risque accru de liquidation des garanties.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Le mode réseau de test est activé\",\"YrDxdO\":\"Si votre prêt à la valeur dépasse le seuil de liquidation, votre garantie fournie peut être liquidée.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Les conditions de rééquilibrage des taux d'intérêt n'ont pas été remplies\",\"YyydIq\":[\"Ajouter \",[\"0\"],\" à Wallet pour suivre votre solde.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Gouvernance Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Mode efficacité (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Désactiver le réseau de test\",\"Zbyywy\":\"Coupure maximale\",\"ZfUGFb\":\"Avant de déposer\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valeur de liquidation\",\"ZrEc8j\":\"Nous n’avons trouvé aucun élément lié à votre recherche. Réessayez avec un autre nom, symbole ou adresse de ressource.\",\"ZsLF7e\":\"Activé\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Temps restant pour dépiquer\",\"a7u1N9\":\"Prix\",\"a9D+6D\":\"Non jalonné\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"aOKIms\":\"Les paramètres de tableau devraient être de même longueur ne sont pas\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Prêt APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Avertissement de période de refroidissement\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Actif\",\"bXQ/Og\":\"Partager sur Twitter\",\"bXr0ee\":\"Les actifs isolés ont un pouvoir d'emprunt limité et les autres actifs ne peuvent pas être utilisés comme garantie.\",\"bYmAV1\":\"Adresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Le montant demandé est supérieur au montant maximum du prêt en mode taux stable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Fournir\",\"bxN6EM\":\"Impossible de désactiver le mode E\",\"c91vuQ\":\"L'adresse n'est pas un contrat\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Vous ne pouvez pas retirer ce montant car cela entraînera un appel de garantie\",\"cBc+4A\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"cIl5kp\":\"Votre pouvoir de vote est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"cLo09S\":\"Détails des risques\",\"cNT+ij\":\"L'emprunt n'est pas disponible car vous avez activé le mode Efficacité (E-Mode) et le mode Isolation. Pour gérer le mode E et le mode Isolation, rendez-vous sur votre <0>tableau de bord.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Pour soumettre une proposition de modifications mineures du protocole, vous aurez besoin d’une puissance d’au moins 80,00 K. Si vous souhaitez modifier la base de code de base, vous aurez besoin d’une puissance de 320k. <0>Pour en savoir plus.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Remboursement \",[\"symbole\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Discussion de forum\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"Vous n'avez pas participé à cette proposition\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gouvernance\",\"dEgA5A\":\"Annuler\",\"dIsyWh\":\"Échec de la validation LTV\",\"dOB5nW\":[\"La quantité maximale disponible pour la fourniture est de <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Vous n'avez pas assez de fonds dans votre portefeuille pour rembourser le montant total. Si vous continuez à rembourser avec votre montant actuel de fonds, vous aurez toujours une petite position d'emprunt dans votre tableau de bord.\",\"dXUQFX\":\"Actifs à emprunter\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"L’emprunt est désactivé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"djsg0o\":\"Usage de collatéral\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Jeton de dette Aave\",\"e4V3oW\":\"Top 10 des adresses\",\"eD8WX/\":\"L'action nécessite une réserve active\",\"eJRJ04\":\"Montant à la mise en jeu\",\"eLh0cL\":\"Le slippage est la différence entre les montants cotés et reçus en raison de l’évolution des conditions du marché entre le moment où la transaction est soumise et sa vérification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Récompenses de staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aucune transaction n’a encore été effectuée.\",\"ebLGGN\":\"Total emprunté\",\"ecqEvn\":\"Le solde de la garantie est de 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible sur\",\"enruNF\":\"Commence\",\"eqLYiD\":\"Arrêter de staker maintenant\",\"evw5ha\":\"Valeur nette\",\"ezcU16\":\"Obtenir le jeton ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Vous êtes passé au tarif \",[\"0\"]],\"fMJQZK\":\"Emprunté\",\"fZ5Vnu\":\"Reçu\",\"firl9Q\":\"Votre prêt actuel à la valeur en fonction de votre collatéral fournie.\",\"fldjW9\":\"Prévisualiser tx et migrer\",\"fsBGk0\":\"Solde\",\"fu1Dbh\":[\"Retirer \",[\"symbole\"]],\"fwjWSI\":\"Fourni\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Alimenté par\",\"g8KGoA\":\"Foire aux questions\",\"g9zzqS\":\"A voté NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Mode réseau test\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"gTHi2T\":\"L'utilisateur essaie d'emprunter plusieurs actifs, y compris un en silo\",\"gVW59Y\":\"Veuillez connecter votre portefeuille pour obtenir des ressources de réseau de test gratuites.\",\"gcFNxP\":\"Approuver Confirmé\",\"goff7V\":\"Adresse zéro non-valide\",\"gp+f1B\":\"Variante 3\",\"gvTM4B\":\"L'APY net est l'effet combiné de toutes les positions d'offre et d'emprunt sur la valeur nette, y compris les incitations. Il est possible d'avoir un APY net négatif si l'APY de la dette est supérieur à l'APY de l'offre.\",\"gzcch9\":\"Frais de protocole de pont invalide\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\". .CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activer le temps de recharge\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY Net\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Revendiqué\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Le % de votre pouvoir d'emprunt total utilisé. Ceci est basé sur le montant de votre garantie fournie et le montant total que vous pouvez emprunter.\",\"hehnjM\":\"Montant\",\"hjDCQr\":\"Il y a eu une erreur. Veuillez essayer de modifier les paramètres ou <0><1>copier l'erreur\",\"hom7qf\":\"Réclamer\",\"hpHJ4I\":\"Garantie liquidée\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Emprunter \",[\"symbole\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"À propos de GHO\",\"iChbOF\":\"Paramètres de prêt flash incohérents\",\"iEPVHF\":\"Pas assez de pouvoir de vote pour participer à cette proposition\",\"iEW87X\":\"Délégation de pouvoirs\",\"iEju36\":[\"Vous avez voté \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Sélectionner la tolérance de glissement\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Entrez un montant\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens n'est pas la même chose que de les staker . Si vous souhaitez staker votre\",\"iZxa38\":\"Utilisez-le pour voter pour ou contre les propositions actives.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Informations sur le collectionneur\",\"igkfR1\":[\"En mode Isolation, vous ne pouvez pas fournir d’autres actifs en garantie. Un plafond d’endettement global limite le pouvoir d’emprunt de l’actif isolé. Pour quitter le mode d’isolement, désactivez \",[\"0\"],\" en garantie avant d’emprunter un autre actif. Pour en savoir plus, consultez notre <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"L'utilisation du collatéral est limitée en raison du mode d'isolation.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Fournir votre\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Désactiver le E-mode\",\"jKYzR1\":\"Activer le E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Temps de recharge restant\",\"jeMZNr\":[[\"0\"],\" Le service de rampe d’accès est fourni par le fournisseur externe et, en le sélectionnant, vous acceptez les conditions du fournisseur. Votre accès au service peut dépendre de l’opérationnalité du fournisseur externe.\"],\"jfl9OP\":\"Migré\",\"jmXdoY\":\"En E-Mode, certains actifs ne sont pas empruntables. Quittez le E-mode pour accéder à tous les actifs\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Non disponible\",\"k/sb6z\":\"Choisir la langue\",\"k3wP3f\":\"<0>Attention: Les changements de paramètres via la gouvernance peuvent modifier le facteur de santé de votre compte et le risque de liquidation. Suivez le <1>forum de gouvernance d’Aave pour les mises à jour.\",\"kACpF3\":[\"Réclamer \",[\"0\"]],\"kH6wUX\":\"Impact sur les prix\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" Actifs sélectionnés\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Pour rembourser au nom d'un utilisateur, un montant explicite à rembourser est nécessaire\",\"kRTD40\":[\"Montant de remboursement à atteindre \",[\"0\"],\"% d’utilisation\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Le plafond d'approvisionnement est dépassé\",\"knxE+G\":\". JSON (en anglais seulement)\",\"ks2LWT\":\"Le plafond de la dette n'est pas nul\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"L’actif ne peut pas être migré en raison d’une liquidité insuffisante ou d’une limitation du plafond d’emprunt \",[\"marketName\"],\" v3 marché.\"],\"lVhKKI\":\"A voté YAE\",\"lWLqxB\":\"Nous n’avons trouvé aucune transaction liée à votre recherche. Réessayez avec un autre nom de ressource ou réinitialisez les filtres.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Anglais\",\"lfEjIE\":\"En savoir plus dans notre <0>guide FAQ\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Émission totale par jour\",\"m7r7Hh\":\"Sélection d’actifs d’emprunt\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Variante 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs ou utiliser <0>\",[\"0\"],\" pour transférer votre \",[\"network\"],\" actif.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Acheter \",[\"cryptoSymbol\"],\" avec Fiat\"],\"mvCXBY\":\"Mise en jeu AAVE\",\"mwdzil\":\"D'accord, fermer\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"L'actif ne peut pas être utilisé comme collatéral.\",\"n+SX4g\":\"Développeurs\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Fournir apy\",\"nJgsQu\":\"Avec un pouvoir de vote de <0/>\",\"nLC6tu\":\"Français\",\"nNHV0z\":\"La migration simultanée de plusieurs garanties et d’actifs empruntés peut s’avérer coûteuse et peut échouer dans certaines situations. <0>Par conséquent, il n’est pas recommandé de migrer des positions avec plus de 5 actifs (déposés + empruntés) en même temps.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Peut être exécuté\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Les deux\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Quelque chose s’est mal passé\",\"nxyWvj\":\"Le retrait de ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"o17QVP\":\"Votre facteur de santé et votre prêt à la valeur déterminent l'assurance de votre collatéral. Pour éviter les liquidations, vous pouvez fournir plus de garanties ou rembourser les positions d'emprunt.\",\"o1xc2V\":\"L'approvisionnement en aTokens n'est pas nul\",\"o5ooMr\":\"Dette\",\"o7J4JM\":\"Filtrer\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Temps de recharge pour déstaker\",\"oJ5ZiG\":\"L'utilisateur n'a pas de dette à taux variable impayée sur cette réserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Ressources de test\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Le taux d'intérêt stable <0>restera le même pendant toute la durée de votre prêt. Recommandé pour les périodes de prêt à long terme et pour les utilisateurs qui préfèrent la prévisibilité.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible au dépôt\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Rien n’a été trouvé\",\"owSsI3\":\"Signatures prêtes\",\"p+R52m\":\"Accéder à Balancer Pool\",\"p2S64u\":\"Le ratio prêt/valeur des positions migrées entraînerait la liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"p2Z2Qi\":\"Cet actif a atteint son plafond d'emprunt. Rien n'est disponible pour être emprunté à ce marché.\",\"p45alK\":\"Configurer la délégation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Le solde sous-jacent doit être supérieur à 0\",\"pgWG9H\":\"Pas assez de solde staké\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"veuillez vérifier que le montant que vous souhaitez fournir n'est pas actuellement utilisé pour le staking. S'il est utilisé pour le staking, votre transaction peut échouer.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Je comprends comment fonctionnent le temps de recharge (\",[\"0\"],\") et le retrait (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"L'appelant de cette fonction doit être un pool\",\"q/51mF\":\"Migrer vers la V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Stratégie de taux d’intérêt\",\"q6lAbz\":\"Staké\",\"qB4kPi\":\"Fournir APY\",\"qENI8q\":\"Paramètres globaux\",\"qGz5zl\":\"Solde de garantie après remboursement\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copier l'erreur\",\"qXCkEM\":\"Veuillez connecter votre portefeuille pour voir vos fournitures, vos emprunts et vos positions ouvertes.\",\"qY2jnw\":\"Expiration invalide\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Montant non valide à brûler\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Le montant doit être supérieur à 0\",\"rQ+R+0\":\"Sélection d’actifs d’approvisionnement\",\"rSayea\":\"APY\",\"rTBDeu\":[\"L’actif ne peut pas être migré car vous disposez d’une garantie isolée dans \",[\"marketName\"],\" v3 Marché qui limite les actifs empruntables. Vous pouvez gérer vos garanties dans <0>\",[\"marketName\"],\" Tableau de bord V3\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Afficher les actifs avec 0 solde\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Vie privée\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Réclamez toutes les récompenses\",\"rwyUva\":\"Ces actifs sont temporairement gelés ou suspendus par des décisions de la communauté Aave, ce qui signifie qu’il n’est pas possible d’obtenir / emprunter ou d’échanger des taux de ces actifs. Les retraits et les remboursements de dettes sont autorisés. Suivez le <0>forum de gouvernance d’Aave pour d’autres mises à jour.\",\"rxJW5W\":\"Votre pouvoir de proposition est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NON\",\"sQv06Y\":\"pour\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Vous unstaké ici\",\"smJNwH\":\"Disponible à emprunter\",\"solypO\":\"Le facteur de santé n'est pas inférieur au seuil\",\"sr0UJD\":\"Retourner\",\"ss5GCK\":\"L'adresse du fournisseur d'adresses du pool n'est pas valide\",\"swEgK4\":\"Vos informations de vote\",\"t+wtgf\":\"Aucun emprunt pour l'instant\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Prix Oracle\",\"tFZLf8\":\"Ce calcul de gaz n'est qu'une estimation. Votre portefeuille fixera le prix de la transaction. Vous pouvez modifier les paramètres de gaz directement depuis votre fournisseur de portefeuille.\",\"tHuvQI\":\"Accéder au tableau de bord V3\",\"tOcg3N\":\"Étant donné que cet actif est gelé, les seules actions disponibles sont le retrait et le remboursement, accessibles depuis le <0>tableau de bord\",\"tOuXfv\":[\"Emprunter le montant à atteindre \",[\"0\"],\"% d’utilisation\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"S'il vous plaît, connectez votre portefeuille\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Vos ressources\",\"u3ZeYl\":\"La transaction a échoué\",\"u706uF\":\"Prime flash non valide\",\"u8Gfu7\":[\"Aucun résultat de recherche\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"Aucune ressource n’a été sélectionnée pour la migration.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migration\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Exporter des données vers\",\"ulup2p\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"usB84Z\":\"Le montant maximum disponible pour emprunter est limité car le plafond d’emprunt du protocole est presque atteint.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restauré\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Cacher\",\"vMba49\":\"L'emprunt n'est pas activé\",\"vMpNwt\":\"Approuvez avec\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Vous permet de décider si vous souhaitez utiliser un actif fourni en tant que collatéral. Un actif utilisé comme collatéral affectera votre pouvoir d'emprunt et votre Health Factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"L'offre de dette stable n'est pas nulle\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Récompenses APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Vous \",[\"action\"],\" <0/> \",[\"symbole\"]],\"wBIsjb\":\"Canal Discord\",\"wQZbc/\":\"L'appelant de la fonction n'est pas un AToken\",\"wZFvVU\":\"VOTER OUI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"Le protocole Aave est programmé pour toujours utiliser le prix de 1 GHO = 1 $. C’est différent de l’utilisation des prix du marché via des oracles pour d’autres actifs cryptographiques. Cela crée des opportunités d’arbitrage stabilisatrices lorsque le prix du GHO fluctue.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"Avec testnet Faucet, vous pouvez obtenir des ressources gratuites pour tester le protocole Aave. Assurez-vous de changer votre fournisseur de portefeuille pour le réseau de test approprié, sélectionnez l’actif souhaité et cliquez sur «\xA0Faucet\xA0» pour obtenir des jetons transférés vers votre portefeuille. Les actifs d’un réseau de test ne sont pas « réels », ce qui signifie qu’ils n’ont aucune valeur monétaire. <0>Pour en savoir plus\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Les ressources sélectionnées ont été migrées avec succès. Rendez-vous sur le tableau de bord du marché pour les voir.\",\"x7F2p6\":\"Différentiel de courant\",\"x7K5ib\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenir un test gratuit \",[\"0\"],\" à\"],\"x9iLRD\":\"tokens, veuillez vous rendre sur\",\"xNy/UG\":\"Rembourser avec\",\"xPm8wv\":\"En savoir plus sur les risques encourus\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Vos informations\",\"xaWZ6f\":\"Changement de type APY\",\"xh6k71\":\"L’utilisation des garanties est limitée en raison du mode d’isolation.\",\"xvIklc\":\"Flashloan est désactivé pour cet actif, cette position ne peut donc pas être migrée.\",\"y5rS9U\":\"Émigrer\",\"yB1YpA\":\"Mode Sombre\",\"yCrG6m\":\"Taille totale du marché\",\"yJUUbn\":\"Aperçu des transactions\",\"yLGmLX\":[\"Remise en jeu \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Pas une adresse valide\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Suivre le portefeuille\",\"yh2sjd\":[\"Impact sur les prix \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Il n'y a pas assez de fonds dans la \",[\"0\"],\" réserve pour emprunter\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Fermer\",\"z4uGQg\":\"Le plafond de la dette est dépassé\",\"z5UQOM\":\"La garantie choisie ne peut être liquidée\",\"z5Y+p6\":[\"Fournir \",[\"symbole\"]],\"zCjNKs\":\"L'action ne peut pas être effectuée car la réserve est gelée\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Plafond de la dette isolée\",\"zTOjMP\":\"La limite d’approvisionnement du protocole est de 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Dette restante\",\"zmTPiV\":\"Bilan d'approvisionnement\",\"zpPbZl\":\"Paramètres du risque de liquidation\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Apprendre encore plus\",\"zy9fXn\":[\"L’actif est gelé \",[\"marketName\"],\" v3, donc cette position ne peut pas être migrée.\"],\"zys+R6\":\"Faites attention à la congestion du réseau et aux prix de l’essence.\",\"+EGVI0\":\"Recevoir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"On dirait que nous ne pouvons pas changer de réseau automatiquement. Veuillez vérifier si vous pouvez le changer depuis le portefeuille.\",\"+kLZGu\":\"Montant de l’actif fourni\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Montant minimum d’Aave mis en jeu\",\"00OflG\":\"Il n’y a pas assez de liquidités pour que l’actif cible puisse effectuer le changement. Essayez de réduire le montant.\",\"08/rZ9\":\"La période de recharge est le temps nécessaire avant de retirer vos jetons (20 jours). Vous ne pouvez retirer vos actifs du module de sécurité qu’après la période de recharge et pendant la période de désenjeu. <0>Pour en savoir plus\",\"1Onqx8\":[\"Approuver \",[\"symbol\"],\"...\"],\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Adresse bloquée\",\"2bAhR7\":\"Rencontrez GHO\",\"2o/xRt\":\"Plafond d'approvisionnement sur la réserve cible atteint. Essayez de réduire le montant.\",\"3O8YTV\":\"Total des intérêts courus\",\"4iPAI3\":\"Montant minimum d’emprunt GHO\",\"6NGLTR\":\"Montant actualisable\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Les paramètres de remise sont décidés par la communauté Aave et peuvent être modifiés au fil du temps. Consultez la section Gouvernance pour les mises à jour et votez pour participer. <0>Pour en savoir plus\",\"ARu1L4\":\"Remboursé\",\"B6aXGH\":\"Stable\",\"B9Gqbz\":\"Taux variable\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"À prix réduit\",\"CMHmbm\":\"Glissement\",\"EBL9Gz\":\"COPIÉ!\",\"ES8dkb\":\"Taux fixe\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Rabais\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Enregistrer et partager\",\"JK9zf1\":[\"Intérêts composés estimés, y compris l’escompte pour le jalonnement \",[\"0\"],\"AAVE dans le module de sécurité.\"],\"JPrLjO\":\"Vous ne pouvez pas utiliser cette devise comme garantie\",\"JU6q+W\":\"Récompense(s) à réclamer\",\"K05qZY\":\"Retrait et échange\",\"KRpokz\":\"VOIR TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"L'activation de cet actif comme garantie augmente votre pouvoir d'emprunt et votre facteur de santé. Cependant, il peut être liquidé si votre facteur de santé tombe en dessous de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Désactiver \",[\"symbol\"],\" comme garantie\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Envoyer des commentaires\",\"TeCFg/\":\"Modification du taux d’emprunt\",\"TskbEN\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"TtZL6q\":\"Paramètres du modèle de remise\",\"Tz0GSZ\":\"Activités bloquées\",\"UE3KJZ\":\"L’historique des transactions n’est actuellement pas disponible pour ce marché\",\"W8ekPc\":\"Retour au tableau de bord\",\"XZzneG\":\"Vous quitterez le mode d'isolement et d'autres jetons peuvent désormais être utilisés comme collatéral\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"La désactivation de cet actif en tant que garantie affecte votre pouvoir d'emprunt et votre facteur de santé.\",\"aX31hk\":\"Votre solde est inférieur au montant sélectionné.\",\"al6Pyz\":\"Dépasse la remise\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Pas assez de collatéral pour rembourser ce montant de dette avec\",\"cqnmnD\":\"Taux d’intérêt effectif\",\"dMtLDE\":\"À\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY avec remise appliquée\",\"fHcELk\":\"APR Net\",\"flRCF/\":\"Remise sur le staking\",\"gncRUO\":\"Cette adresse est bloquée sur app.aave.com car elle est associée à un ou plusieurs\",\"gr8mYw\":\"Vous pouvez emprunter jusqu’à GHO à <0/> <1/> (rabais maximum)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Emprunter le solde\",\"i2JTiw\":\"Vous pouvez saisir un montant personnalisé dans le champ.\",\"jMam5g\":[[\"0\"],\" Balance\"],\"jpctdh\":\"Vue\",\"kwwn6i\":\"Les utilisateurs qui misent des AAVE dans le module de sécurité (c’est-à-dire les détenteurs de stkAAVE) bénéficient d’une réduction sur le taux d’intérêt d’emprunt de HO. La réduction s’applique à 100 GHO pour chaque 1 stkAAVE détenu. Utilisez le calculateur ci-dessous pour voir le taux d’emprunt GHO avec le rabais appliqué.\",\"lNVG7i\":\"Sélectionner une ressource\",\"lt6bpt\":\"Garantie à rembourser\",\"mIM0qu\":\"Montant prévu à rembourser\",\"mzI/c+\":\"Télécharger\",\"n8Psk4\":\"Nous n’avons pas pu détecter de portefeuille. Connectez un portefeuille pour staker et consulter votre solde.\",\"nOy4ob\":\"Nous vous suggérons de revenir au tableau de bord.\",\"nakd8r\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"nh2EJK\":[\"Veuillez passer à \",[\"networkName\"],\".\"],\"ntkAoE\":\"Remise appliquée pour <0/> le staking d’AAVE\",\"o4tCu3\":\"Emprunter de l’APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"La période de recharge est de \",[\"0\"],\". Après \",[\"1\"],\" de temps de recharge, vous entrerez dans la fenêtre de désengagement de \",[\"2\"],\". Vous continuerez à recevoir des récompenses pendant le temps de recharge et la fenêtre de retrait.\"],\"p3j+mb\":\"Votre solde de récompenses est de 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Intérêts courus\",\"rf8POi\":\"Montant de l’actif emprunté\",\"ruc7X+\":\"Ajoutez stkAAVE pour voir l’APY d’emprunt avec la remise\",\"sK+Nag\":\"Réviser tx\",\"t81DpC\":[\"Approuver \",[\"symbol\"],\" pour continuer\"],\"umICAY\":\"<0><1><2/>Ajoutez stkAAVE pour voir le taux d’emprunt avec escompte\",\"uwAUvj\":\"COPIER L’IMAGE\",\"v8x7Mg\":\"Garantie insuffisante pour couvrir une nouvelle position d’emprunt. Le portefeuille doit avoir une capacité d’emprunt restante pour effectuer le transfert de dette.\",\"wRRqvW\":\"Vous n'avez pas de fournitures dans cette devise\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Activer \",[\"symbol\"],\" comme collatéral\"],\"yW1oWB\":\"APY type\",\"yhvj6d\":\"Vous ne pouvez pas changer d'utilisation en tant que mode de garantie pour cette devise, car cela entraînera un appel de garantie\",\"zevmS2\":\"<0><1><2/>Ajoutez <3/> stkAAVE pour emprunter à <4/> (remise maximale)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/utils/hfUtils.ts b/src/utils/hfUtils.ts index 5afbf089aa..8751a553e7 100644 --- a/src/utils/hfUtils.ts +++ b/src/utils/hfUtils.ts @@ -16,11 +16,11 @@ export interface CalculateHFAfterSwapProps { fromAmount: BigNumberValue; fromAssetData: ComputedReserveData; fromAssetUserData: ComputedUserReserve; - fromAssetType: 'collateral' | 'debt'; + fromAssetType: 'collateral' | 'debt' | 'none'; toAmountAfterSlippage: BigNumberValue; toAssetData: ComputedReserveData; user: ExtendedFormattedUser; - toAssetType: 'collateral' | 'debt'; + toAssetType: 'collateral' | 'debt' | 'none'; } interface CalculateHFAfterSwapRepayProps { From ea5a902c5d616a842ab14de72bb703675c4d65c4 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Mon, 10 Nov 2025 16:45:14 -0300 Subject: [PATCH 36/66] fix WandS paraswap --- .../WithdrawAndSwapActionsViaParaswap.tsx | 308 ++++++------------ .../actions/approval/useSwapTokenApproval.ts | 2 + .../transactions/Swap/hooks/useSwapQuote.ts | 8 +- 3 files changed, 103 insertions(+), 215 deletions(-) diff --git a/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx index 8b4879c301..11ce2b8cb4 100644 --- a/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx +++ b/src/components/transactions/Swap/actions/WithdrawAndSwap/WithdrawAndSwapActionsViaParaswap.tsx @@ -1,36 +1,26 @@ -import { ERC20Service, ProtocolAction } from '@aave/contract-helpers'; -import { valueToBigNumber } from '@aave/math-utils'; +import { normalize } from '@aave/math-utils'; import { OrderStatus } from '@cowprotocol/cow-sdk'; -import { SignatureLike } from '@ethersproject/bytes'; import { Trans } from '@lingui/macro'; -import { useQueryClient } from '@tanstack/react-query'; -import { parseUnits } from 'ethers/lib/utils'; -import { Dispatch, useCallback, useEffect, useMemo, useState } from 'react'; +import { Dispatch, useEffect, useMemo } from 'react'; import { TxActionsWrapper } from 'src/components/transactions/TxActionsWrapper'; -import { MOCK_SIGNED_HASH } from 'src/helpers/useTransactionHandler'; import { calculateSignedAmount } from 'src/hooks/paraswap/common'; import { useModalContext } from 'src/hooks/useModal'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { useRootStore } from 'src/store/root'; -import { ApprovalMethod } from 'src/store/walletSlice'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; -import { queryKeysFactory } from 'src/ui-config/queries'; +import { saveParaswapTxToUserHistory } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; import { getTransactionParams } from '../../helpers/paraswap'; import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; import { isParaswapRates, ProtocolSwapParams, ProtocolSwapState, SwapState } from '../../types'; - -interface SignedParams { - signature: SignatureLike; - deadline: string; - amount: string; -} +import { useSwapTokenApproval } from '../approval/useSwapTokenApproval'; export const WithdrawAndSwapActionsViaParaswap = ({ state, setState, + params, trackingHandlers, }: { params: ProtocolSwapParams; @@ -38,56 +28,36 @@ export const WithdrawAndSwapActionsViaParaswap = ({ setState: Dispatch>; trackingHandlers: TrackAnalyticsHandlers; }) => { - const [ - withdrawAndSwitch, - currentMarketData, - jsonRpcProvider, - account, - generateApproval, - estimateGasLimit, - walletApprovalMethodPreference, - generateSignatureRequest, - addTransaction, - ] = useRootStore( + const [withdrawAndSwitch, currentMarketData, estimateGasLimit, addTransaction] = useRootStore( useShallow((state) => [ state.withdrawAndSwitch, state.currentMarketData, - state.jsonRpcProvider, - state.account, - state.generateApproval, state.estimateGasLimit, - state.walletApprovalMethodPreference, - state.generateSignatureRequest, state.addTransaction, ]) ); - const { - approvalTxState, - mainTxState, - loadingTxns, - setMainTxState, - setTxError, - setLoadingTxns, - setApprovalTxState, - } = useModalContext(); + const { approvalTxState, mainTxState, setMainTxState, setTxError } = useModalContext(); - const { sendTx, signTxData } = useWeb3Context(); - const queryClient = useQueryClient(); + const { sendTx } = useWeb3Context(); - const [approvedAmount, setApprovedAmount] = useState(undefined); - const [signatureParams, setSignatureParams] = useState(); + // Approval is aToken ERC20 Approval + const amountToApprove = useMemo(() => { + if (!state.sellAmountFormatted || !state.sellAmountToken) return '0'; + return calculateSignedAmount(state.sellAmountFormatted, state.sellAmountToken.decimals); + }, [state.sellAmountFormatted, state.sellAmountToken]); - const requiresApproval = useMemo(() => { - if ( - approvedAmount === undefined || - approvedAmount === -1 || - state.inputAmount === '0' || - state.isWrongNetwork - ) - return false; - else return approvedAmount <= Number(state.inputAmount); - }, [approvedAmount, state.inputAmount, state.isWrongNetwork]); + const { requiresApproval, signatureParams, approval, tryPermit, loadingPermitData } = + useSwapTokenApproval({ + chainId: state.chainId, + token: state.sourceToken.addressToSwap, // aToken + symbol: state.sourceToken.symbol, + amount: normalize(amountToApprove.toString(), state.sourceToken?.decimals ?? 18), + decimals: state.sourceToken.decimals, + spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER, + setState, + trackingHandlers, + }); // Use centralized gas estimation useSwapGasEstimation({ @@ -98,8 +68,6 @@ export const WithdrawAndSwapActionsViaParaswap = ({ approvalTxState, }); - const useSignature = walletApprovalMethodPreference === ApprovalMethod.PERMIT; - const action = async () => { if (!state.swapRate || !isParaswapRates(state.swapRate)) { console.error('No swap rate found'); @@ -111,97 +79,74 @@ export const WithdrawAndSwapActionsViaParaswap = ({ const { swapCallData, augustus } = await getTransactionParams( state.side, state.chainId, - state.sourceToken.addressToSwap, + state.sourceToken.underlyingAddress, state.sourceToken.decimals, - state.destinationToken.addressToSwap, + state.destinationToken.underlyingAddress, state.destinationToken.decimals, state.user, state.swapRate.optimalRateData, Number(state.slippage) ); - // TODO: Fix this not working the tx builder via paraswap - const tx = withdrawAndSwitch({ poolReserve: state.sourceReserve.reserve, targetReserve: state.destinationReserve.reserve, isMaxSelected: state.isMaxSelected, - amountToSwap: parseUnits( - state.inputAmount, - state.sourceReserve.reserve.decimals - ).toString(), - amountToReceive: parseUnits( - state.buyAmountFormatted ?? '0', - state.destinationReserve.reserve.decimals - ).toString(), + amountToSwap: state.sellAmountBigInt?.toString() ?? '0', + amountToReceive: state.buyAmountBigInt?.toString() ?? '0', augustus: augustus, txCalldata: swapCallData, - signatureParams, + signatureParams: { + signature: signatureParams?.plain ?? '', + deadline: signatureParams?.deadline ?? '', + amount: signatureParams?.amount ?? '', + }, }); + const txDataWithGasEstimation = await estimateGasLimit(tx); const response = await sendTx(txDataWithGasEstimation); await response.wait(1); - try { - const { saveParaswapTxToUserHistory: addParaswapTx } = await import( - 'src/utils/swapAdapterHistory' - ); - addParaswapTx({ - protocol: 'paraswap', - txHash: response.hash, - swapType: state.swapType, + + trackingHandlers.trackSwap(); + params.invalidateAppState(); + saveParaswapTxToUserHistory({ + protocol: 'paraswap', + txHash: response.hash, + swapType: state.swapType, + chainId: state.chainId, + account: state.user, + timestamp: new Date().toISOString(), + status: OrderStatus.FULFILLED, + srcToken: { + address: state.sourceToken.underlyingAddress, + symbol: state.sourceToken.symbol, + name: state.sourceToken.symbol, + decimals: state.sourceToken.decimals, + }, + destToken: { + address: state.destinationToken.underlyingAddress, + symbol: state.destinationToken.symbol, + name: state.destinationToken.symbol, + decimals: state.destinationToken.decimals, + }, + srcAmount: state.sellAmountBigInt?.toString() ?? '0', + destAmount: state.buyAmountBigInt?.toString() ?? '0', + }); + addTransaction( + response.hash, + { + txState: 'success', + }, + { chainId: state.chainId, - account: state.user, - timestamp: new Date().toISOString(), - status: OrderStatus.FULFILLED, - srcToken: { - address: state.sourceToken.addressToSwap, - symbol: state.sourceToken.symbol, - name: state.sourceToken.symbol, - decimals: state.sourceToken.decimals, - }, - destToken: { - address: state.destinationToken.addressToSwap, - symbol: state.destinationToken.symbol, - name: state.destinationToken.symbol, - decimals: state.destinationToken.decimals, - }, - srcAmount: state.sellAmountBigInt?.toString() ?? '0', - destAmount: state.buyAmountBigInt?.toString() ?? '0', - }); - } catch {} - queryClient.invalidateQueries({ queryKey: queryKeysFactory.pool }); - queryClient.invalidateQueries({ queryKey: queryKeysFactory.gho }); + } + ); + setMainTxState({ txHash: response.hash, loading: false, success: true, }); - addTransaction(response.hash, { - action: ProtocolAction.withdrawAndSwitch, - txState: 'success', - asset: state.sourceReserve.reserve.underlyingAsset, - amount: parseUnits(state.inputAmount, state.sourceReserve.reserve.decimals).toString(), - assetName: state.sourceReserve.reserve.name, - outAsset: state.destinationReserve.reserve.underlyingAsset, - outAssetName: state.destinationReserve.reserve.name, - outAmount: parseUnits( - state.buyAmountFormatted ?? '0', - state.destinationReserve.reserve.decimals - ).toString(), - amountUsd: valueToBigNumber( - parseUnits(state.inputAmount, state.sourceReserve.reserve.decimals).toString() - ) - .multipliedBy(state.sourceReserve.reserve.priceInUSD) - .toString(), - outAmountUsd: valueToBigNumber( - parseUnits( - state.buyAmountFormatted ?? '0', - state.destinationReserve.reserve.decimals - ).toString() - ) - .multipliedBy(state.destinationReserve.reserve.priceInUSD) - .toString(), - }); } catch (error) { const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); @@ -234,114 +179,51 @@ export const WithdrawAndSwapActionsViaParaswap = ({ } }; - const approval = async () => { - const amountToApprove = calculateSignedAmount( - state.inputAmount, - state.sourceReserve.reserve.decimals - ); - const approvalData = { - user: account, - token: state.sourceReserve.reserve.aTokenAddress, - spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER || '', - amount: amountToApprove, - }; - try { - if (useSignature) { - const deadline = Math.floor(Date.now() / 1000 + 3600).toString(); - const signatureRequest = await generateSignatureRequest({ - ...approvalData, - deadline, - }); - setApprovalTxState({ ...approvalTxState, loading: true }); - const response = await signTxData(signatureRequest); - setSignatureParams({ signature: response, deadline, amount: amountToApprove }); - setApprovalTxState({ - txHash: MOCK_SIGNED_HASH, - loading: false, - success: true, - }); - } else { - const tx = generateApproval(approvalData); - const txWithGasEstimation = await estimateGasLimit(tx); - setApprovalTxState({ ...approvalTxState, loading: true }); - const response = await sendTx(txWithGasEstimation); - await response.wait(1); - setApprovalTxState({ - txHash: response.hash, - loading: false, - success: true, - }); - addTransaction(response.hash, { - action: ProtocolAction.withdrawAndSwitch, + useEffect(() => { + if (state.mainTxState.success) { + trackingHandlers.trackSwap(); + params.invalidateAppState(); + + addTransaction( + state.mainTxState.txHash || '', + { txState: 'success', - asset: state.sourceReserve.reserve.aTokenAddress, - amount: parseUnits(amountToApprove, state.sourceReserve.reserve.decimals).toString(), - assetName: `a${state.sourceReserve.reserve.symbol}`, - spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER, - }); - setTxError(undefined); - fetchApprovedAmount(state.sourceReserve.reserve.aTokenAddress); - } - } catch (error) { - const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); - setTxError(parsedError); - if (!approvalTxState.success) { - setApprovalTxState({ - txHash: undefined, - loading: false, - }); - setState({ - actionsLoading: false, - }); - } - } - }; + }, + { + chainId: state.chainId, + } + ); - const fetchApprovedAmount = useCallback( - async (aTokenAddress: string) => { - setLoadingTxns(true); - const rpc = jsonRpcProvider(); - const erc20Service = new ERC20Service(rpc); - const approvedTargetAmount = await erc20Service.approvedAmount({ - user: account, - token: aTokenAddress, - spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER || '', - }); - setApprovedAmount(approvedTargetAmount); - setLoadingTxns(false); - setState({ - actionsLoading: false, + setMainTxState({ + txHash: state.mainTxState.txHash || '', + loading: false, + success: true, }); - }, - [jsonRpcProvider, account, currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER, setLoadingTxns] - ); - - useEffect(() => { - fetchApprovedAmount(state.sourceReserve.reserve.aTokenAddress); - }, [fetchApprovedAmount, state.sourceReserve.reserve.aTokenAddress]); + } + }, [state.mainTxState.success]); return ( approval()} + handleApproval={approval} requiresApproval={requiresApproval} - actionText={Withdraw and Switch} - actionInProgressText={Withdrawing and Switching} + actionText={Withdraw and Swap} + actionInProgressText={Withdrawing and Swapping} errorParams={{ loading: false, disabled: state.actionsBlocked || !approvalTxState?.success, - content: Withdraw and Switch, + content: Withdraw and Swap, handleClick: action, }} - fetchingData={state.ratesLoading} + fetchingData={state.actionsLoading || loadingPermitData} blocked={state.actionsBlocked} - tryPermit={true} + tryPermit={tryPermit} /> ); }; diff --git a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts index 42bfa502b6..f51cd7c206 100644 --- a/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts +++ b/src/components/transactions/Swap/actions/approval/useSwapTokenApproval.ts @@ -41,6 +41,7 @@ export type SignatureLike = { v: number; }; export interface SignedParams { + plain: string; signature: string; splitedSignature: SignatureLike; deadline: string; @@ -349,6 +350,7 @@ export const useSwapTokenApproval = ({ ] ); const newSignatureParams = { + plain: response.toString(), signature: encodedSignature, splitedSignature, deadline, diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index 172cfaf335..e9c4d1267b 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -45,12 +45,16 @@ const getTokenSelectionForQuote = ( // Note: Consider the quote an approximation, we prefer underlying address for better support while aTokens value should always match const srcTokenObj = invertedQuoteRoute ? state.destinationToken : state.sourceToken; const srcToken = - state.useFlashloan == false && state.provider === SwapProvider.PARASWAP + state.useFlashloan == false && + state.provider === SwapProvider.PARASWAP && + state.swapType !== SwapType.WithdrawAndSwap ? srcTokenObj.addressToSwap : srcTokenObj.underlyingAddress; const destTokenObj = invertedQuoteRoute ? state.sourceToken : state.destinationToken; const destToken = - state.useFlashloan == false && state.provider === SwapProvider.PARASWAP + state.useFlashloan == false && + state.provider === SwapProvider.PARASWAP && + state.swapType !== SwapType.WithdrawAndSwap ? destTokenObj.addressToSwap : destTokenObj.underlyingAddress; From 9a21671d0ff2b4d51e5972512bd38103a9b71d76 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Mon, 10 Nov 2025 16:50:17 -0300 Subject: [PATCH 37/66] misc --- .../Swap/constants/cow.constants.ts | 2 - .../Swap/errors/shared/console.helpers.ts | 1 + .../transactions/Swap/hooks/useSwapQuote.ts | 22 +- .../Swap/inputs/LimitOrderInputs.tsx | 36 +++- .../transactions/Swap/inputs/SwapInputs.tsx | 65 +++--- .../Swap/inputs/shared/PriceInput.tsx | 203 ++++++++++++------ .../modals/request/BaseSwapModalContent.tsx | 4 +- .../transactions/Swap/types/shared.types.ts | 14 +- 8 files changed, 226 insertions(+), 121 deletions(-) diff --git a/src/components/transactions/Swap/constants/cow.constants.ts b/src/components/transactions/Swap/constants/cow.constants.ts index 87e29a02c5..1203609df9 100644 --- a/src/components/transactions/Swap/constants/cow.constants.ts +++ b/src/components/transactions/Swap/constants/cow.constants.ts @@ -70,8 +70,6 @@ export const COW_PROTOCOL_ETH_FLOW_ADDRESS_BY_ENV = (env: CowEnv) => { export const COW_CREATE_ORDER_ABI = 'function createOrder((address,address,uint256,uint256,bytes32,uint256,uint32,bool,int64)) returns (bytes32)'; -export const HEADER_WIDGET_APP_CODE = 'aave-v3-interface-widget'; -export const ADAPTER_APP_CODE = 'aave-v3-interface-aps'; // Use this one for contract adapters so we have different dashboards export const COW_PARTNER_FEE = (tokenFromSymbol: string, tokenToSymbol: string) => ({ volumeBps: getAssetGroup(tokenFromSymbol) == getAssetGroup(tokenToSymbol) ? 15 : 25, recipient: COW_EVM_RECIPIENT, diff --git a/src/components/transactions/Swap/errors/shared/console.helpers.ts b/src/components/transactions/Swap/errors/shared/console.helpers.ts index 42730d3ecd..3962a2bf90 100644 --- a/src/components/transactions/Swap/errors/shared/console.helpers.ts +++ b/src/components/transactions/Swap/errors/shared/console.helpers.ts @@ -31,6 +31,7 @@ function buildErrorPayload(state: SwapState, error: SwapError) { useFlashloan: state.useFlashloan ?? false, side: state.side, orderType: state.orderType, + swapType: state.swapType, slippage: state.slippage, input: { token: state.sourceToken.symbol, diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index e9c4d1267b..12acbc2f0b 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -12,7 +12,6 @@ import { getCowProtocolSellRates } from '../helpers/cow'; import { getParaswapSellRates, getParaswapSlippage } from '../helpers/paraswap'; import { getSwitchProvider } from '../helpers/shared/provider.helpers'; import { - OrderType, SwapParams, SwapProvider, SwapQuoteType as SwapQuoteType, @@ -161,13 +160,13 @@ export const useSwapQuote = ({ // Skip update if nothing changed to avoid re-render loops if ( - state.provider === quote.provider && - state.swapRate?.srcSpotAmount === quote.srcSpotAmount && - state.swapRate?.destSpotAmount === quote.destSpotAmount && - state.inputAmount === nextInputAmount && - state.outputAmount === nextOutputAmount && - state.inputAmountUSD === nextInputAmountUSD && - state.outputAmountUSD === nextOutputAmountUSD + state.provider == quote.provider && + state.swapRate?.srcSpotAmount == quote.srcSpotAmount && + state.swapRate?.destSpotAmount == quote.destSpotAmount && + state.inputAmount == nextInputAmount && + state.outputAmount == nextOutputAmount && + state.inputAmountUSD == nextInputAmountUSD && + state.outputAmountUSD == nextOutputAmountUSD ) { return; } @@ -422,9 +421,6 @@ const useMultiProviderSwapQuoteQuery = ({ const isFlashloanDisabled = hasFlashLoanDisabled(state); return ( - // LIMIT: fetch only once (when no quote yet). MARKET: fetch normally - ((state.orderType === OrderType.LIMIT && !state.swapRate) || - state.orderType === OrderType.MARKET) && hasPositiveUserAmount && !isSameTokenPair && !isFlashloanDisabled && @@ -440,11 +436,9 @@ const useMultiProviderSwapQuoteQuery = ({ throwOnError: false, refetchOnWindowFocus: (query) => (query.state.error ? false : true), refetchInterval: (() => { - // LIMIT: never refetch periodically after we got the first quote const isInsufficientBalance = hasInsufficientBalance(state); const isFlashloanDisabled = hasFlashLoanDisabled(state); - return state.orderType !== OrderType.LIMIT && - !state.actionsLoading && + return !state.actionsLoading && !state.quoteRefreshPaused && !state.mainTxState.success && !state.mainTxState.txHash && diff --git a/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx b/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx index 00798bd78f..dc5ddf9beb 100644 --- a/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx +++ b/src/components/transactions/Swap/inputs/LimitOrderInputs.tsx @@ -113,15 +113,23 @@ export const LimitOrderInputs = ({ !state.error } onChange={swapState.handleInputChange} - onClear={() => + onClear={() => { setState({ inputAmount: '', debouncedInputAmount: '', inputAmountUSD: '', quoteRefreshPaused: true, quoteLastUpdatedAt: undefined, - }) - } + }); + if (state.outputAmount === '') { + // Both reset to listen quotes + setState({ + swapRate: undefined, + quoteRefreshPaused: false, + quoteLastUpdatedAt: undefined, + }); + } + }} usdValue={state.inputAmountUSD || '0'} onSelect={swapState.handleSelectedInputToken} selectedAsset={state.sourceToken} @@ -230,15 +238,23 @@ export const LimitOrderInputs = ({ onChange={(value) => { swapState.handleOutputChange(value); }} - onClear={() => + onClear={() => { setState({ outputAmount: '', debouncedOutputAmount: '', outputAmountUSD: '', quoteRefreshPaused: true, quoteLastUpdatedAt: undefined, - }) - } + }); + if (state.inputAmount === '') { + // Both reset to listen quotes + setState({ + swapRate: undefined, + quoteRefreshPaused: false, + quoteLastUpdatedAt: undefined, + }); + } + }} onSelect={swapState.handleSelectedOutputToken} disableInput={false} selectedAsset={state.destinationToken} @@ -250,12 +266,12 @@ export const LimitOrderInputs = ({ diff --git a/src/components/transactions/Swap/inputs/SwapInputs.tsx b/src/components/transactions/Swap/inputs/SwapInputs.tsx index af5aaa352e..9bdfed3391 100644 --- a/src/components/transactions/Swap/inputs/SwapInputs.tsx +++ b/src/components/transactions/Swap/inputs/SwapInputs.tsx @@ -80,10 +80,14 @@ export const SwapInputs = ({ if (value === '-1') { const maxAmount = state.sourceToken.balance; setState({ - quoteRefreshPaused: false, - quoteLastUpdatedAt: undefined, - quoteTimerPausedAt: undefined, - quoteTimerPausedAccumMs: undefined, + ...(state.orderType === OrderType.LIMIT && state.swapRate + ? { + quoteRefreshPaused: true, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, + } + : {}), inputAmount: maxAmount, inputAmountUSD: computeUSD(maxAmount), isMaxSelected: true, @@ -91,10 +95,14 @@ export const SwapInputs = ({ }); } else { setState({ - quoteRefreshPaused: false, - quoteLastUpdatedAt: undefined, - quoteTimerPausedAt: undefined, - quoteTimerPausedAccumMs: undefined, + ...(state.orderType === OrderType.LIMIT && state.swapRate + ? { + quoteRefreshPaused: true, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, + } + : {}), inputAmount: value, inputAmountUSD: computeUSD(value), isMaxSelected: value === state.forcedMaxValue, @@ -121,10 +129,14 @@ export const SwapInputs = ({ if (value === '-1') { const maxAmount = state.destinationToken.balance; setState({ - quoteRefreshPaused: false, - quoteLastUpdatedAt: undefined, - quoteTimerPausedAt: undefined, - quoteTimerPausedAccumMs: undefined, + ...(state.orderType === OrderType.LIMIT && state.swapRate + ? { + quoteRefreshPaused: true, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, + } + : {}), outputAmount: maxAmount, outputAmountUSD: computeUSD(maxAmount), isMaxSelected: true, @@ -132,10 +144,14 @@ export const SwapInputs = ({ }); } else { setState({ - quoteRefreshPaused: false, - quoteLastUpdatedAt: undefined, - quoteTimerPausedAt: undefined, - quoteTimerPausedAccumMs: undefined, + ...(state.orderType === OrderType.LIMIT && state.swapRate + ? { + quoteRefreshPaused: true, + quoteLastUpdatedAt: undefined, + quoteTimerPausedAt: undefined, + quoteTimerPausedAccumMs: undefined, + } + : {}), outputAmount: value, outputAmountUSD: computeUSD(value), isMaxSelected: false, @@ -153,16 +169,17 @@ export const SwapInputs = ({ // User changed custom price, pause quote refresh in limit orders setState({ quoteRefreshPaused: true }); - // When rate is changed, new output amount is calculated based on the input amount - let newOutputAmount: string; - if (rateFromAsset.addressToSwap === state.sourceToken.addressToSwap) { - newOutputAmount = valueToBigNumber(state.inputAmount).multipliedBy(newRate).toString(); - } else { - newOutputAmount = valueToBigNumber(state.outputAmount).dividedBy(newRate).toString(); - } + // Normalize the rate to always be dest per 1 source, then recompute output deterministically + const isBaseSource = rateFromAsset.addressToSwap === state.sourceToken.addressToSwap; + const rateDestPerSrc = isBaseSource + ? valueToBigNumber(newRate) + : valueToBigNumber(1).dividedBy(newRate); + const newOutputAmount = valueToBigNumber(state.inputAmount || '0') + .multipliedBy(rateDestPerSrc) + .toString(); setState({ - quoteRefreshPaused: false, + quoteRefreshPaused: true, quoteLastUpdatedAt: undefined, quoteTimerPausedAt: undefined, quoteTimerPausedAccumMs: undefined, diff --git a/src/components/transactions/Swap/inputs/shared/PriceInput.tsx b/src/components/transactions/Swap/inputs/shared/PriceInput.tsx index 0bebdd24b8..58643859be 100644 --- a/src/components/transactions/Swap/inputs/shared/PriceInput.tsx +++ b/src/components/transactions/Swap/inputs/shared/PriceInput.tsx @@ -42,10 +42,10 @@ export const NumberFormatCustom = React.forwardRef { + const DEBOUNCE_MS = 300; const inputRef = useRef(null); const [fromAsset, setFromAsset] = useState(originAsset); const [toAsset, setToAsset] = useState(targetAsset); @@ -77,63 +78,108 @@ export const PriceInput = ({ const [lastMarketRate, setLastMarketRate] = useState<{ nominal?: BigNumber; usd?: BigNumber; + baseSymbol?: string; + quoteSymbol?: string; }>({ nominal: undefined, usd: undefined, + baseSymbol: undefined, + quoteSymbol: undefined, }); + const rateDebounceRef = useRef(undefined); const [amount, setAmount] = useState<{ - fromAmount?: BigNumber; - toAmount?: BigNumber; - fromAmountUsd?: BigNumber; - toAmountUsd?: BigNumber; + originAmount?: BigNumber; + targetAmount?: BigNumber; + originAmountUsd?: BigNumber; + targetAmountUsd?: BigNumber; }>({ - fromAmount: undefined, - toAmount: undefined, - fromAmountUsd: undefined, - toAmountUsd: undefined, + originAmount: undefined, + targetAmount: undefined, + originAmountUsd: undefined, + targetAmountUsd: undefined, }); useEffect(() => { - if (!inputAmount || !outputAmount) return; + if (!originAssetAmount || !targetAssetAmount) return; setAmount({ - fromAmount: valueToBigNumber(inputAmount), - toAmount: valueToBigNumber(outputAmount), - fromAmountUsd: valueToBigNumber(inputAmountUSD), - toAmountUsd: valueToBigNumber(outputAmountUSD), + originAmount: valueToBigNumber(originAssetAmount), + targetAmount: valueToBigNumber(targetAssetAmount), + originAmountUsd: valueToBigNumber(originAssetAmountUSD), + targetAmountUsd: valueToBigNumber(targetAssetAmountUSD), }); - }, [inputAmount, outputAmount, inputAmountUSD, outputAmountUSD]); + }, [originAssetAmount, targetAssetAmount, originAssetAmountUSD, targetAssetAmountUSD]); useEffect(() => { if ( - !amount.fromAmount?.gt(0) || - !amount.toAmount?.gt(0) || - !amount.fromAmountUsd?.gt(0) || - !amount.toAmountUsd?.gt(0) + !amount.originAmount?.gt(0) || + !amount.targetAmount?.gt(0) || + !amount.originAmountUsd?.gt(0) || + !amount.targetAmountUsd?.gt(0) ) return; - const rate = - amount.toAmount && amount.fromAmount ? amount.toAmount.div(amount.fromAmount) : undefined; - const rateUsd = - amount.toAmountUsd && amount.fromAmountUsd - ? amount.toAmountUsd.div(amount.fromAmountUsd) - : undefined; + // Define rate in the direction currently displayed: + // "When 1 {fromAsset} is worth ..." so nominal shows quote units per 1 base (fromAsset). + const showingOriginAsBase = fromAsset.addressToSwap === originAsset.addressToSwap; + const nextNominal = showingOriginAsBase + ? amount.targetAmount && amount.originAmount + ? amount.targetAmount.div(amount.originAmount) + : undefined + : amount.originAmount && amount.targetAmount + ? amount.originAmount.div(amount.targetAmount) + : undefined; + + const nextUsd = showingOriginAsBase + ? amount.targetAmountUsd && amount.originAmountUsd + ? amount.targetAmountUsd.div(amount.originAmountUsd) + : undefined + : amount.originAmountUsd && amount.targetAmountUsd + ? amount.originAmountUsd.div(amount.targetAmountUsd) + : undefined; setRate({ - nominal: rate, - usd: rateUsd, + nominal: nextNominal, + usd: nextUsd, }); // Capture latest market rate from the most recent quote only once if (lastMarketRate.nominal === undefined) { setLastMarketRate({ - nominal: rate, - usd: rateUsd, + nominal: nextNominal, + usd: nextUsd, + baseSymbol: fromAsset.symbol, + quoteSymbol: toAsset.symbol, }); } - }, [amount]); + }, [ + amount.originAmount, + amount.targetAmount, + amount.originAmountUsd, + amount.targetAmountUsd, + fromAsset.addressToSwap, + originAsset.addressToSwap, + ]); + + useEffect(() => { + setFromAsset(originAsset); + setToAsset(targetAsset); + setRate({ + nominal: undefined, + usd: undefined, + }); + setLastMarketRate({ + nominal: undefined, + usd: undefined, + }); + setAmount({ + originAmount: undefined, + targetAmount: undefined, + originAmountUsd: undefined, + targetAmountUsd: undefined, + }); + }, [originAsset, targetAsset]); const setNewRate = (newRate: BigNumberValue) => { const nextNominal = valueToBigNumber(newRate); @@ -142,17 +188,17 @@ export const PriceInput = ({ if (rate.nominal && !rate.nominal.isZero() && rate.usd) { kRatio = rate.usd.div(rate.nominal); } else if ( - amount.toAmountUsd && - amount.fromAmountUsd && - amount.toAmount && - amount.fromAmount && - !amount.toAmount.isZero() && - !amount.fromAmount.isZero() + amount.targetAmountUsd && + amount.originAmountUsd && + amount.targetAmount && + amount.originAmount && + !amount.targetAmount.isZero() && + !amount.originAmount.isZero() ) { // Fallback: K = (toUSD/to) / (fromUSD/from) = (toUSD * from) / (fromUSD * to) - kRatio = amount.toAmountUsd - .times(amount.fromAmount) - .div(amount.fromAmountUsd.times(amount.toAmount)); + kRatio = amount.targetAmountUsd + .times(amount.originAmount) + .div(amount.originAmountUsd.times(amount.targetAmount)); } const nextUsd = kRatio ? nextNominal.times(kRatio) : valueToBigNumber(0); @@ -163,22 +209,51 @@ export const PriceInput = ({ }); }; + // Debounced emitter to upstream handler + const emitRateChangeDebounced = (baseToken: SwappableToken, newRate: BigNumber) => { + if (rateDebounceRef.current !== undefined) { + window.clearTimeout(rateDebounceRef.current); + } + rateDebounceRef.current = window.setTimeout(() => { + handleInputsAmountsChange(baseToken, newRate); + setNewRate(newRate); + }, DEBOUNCE_MS) as unknown as number; + }; + + // Cleanup on unmount + useEffect(() => { + return () => { + if (rateDebounceRef.current !== undefined) { + window.clearTimeout(rateDebounceRef.current); + } + }; + }, []); + const handleSwitchRateDirection = () => { + // Also invert the stored market reference rate so the Market button uses the correct direction + setLastMarketRate((prev) => { + const invNominal = + prev.nominal && !prev.nominal.isZero() + ? valueToBigNumber(1).div(prev.nominal) + : prev.nominal; + const invUsd = prev.usd && !prev.usd.isZero() ? valueToBigNumber(1).div(prev.usd) : prev.usd; + return { + nominal: invNominal, + usd: invUsd, + baseSymbol: prev.quoteSymbol ?? toAssetAux.symbol, + quoteSymbol: prev.baseSymbol ?? fromAssetAux.symbol, + }; + }); + + setRate({ + nominal: rate.nominal ? valueToBigNumber(1).div(rate.nominal) : undefined, + usd: rate.usd ? valueToBigNumber(1).div(rate.usd) : undefined, + }); + const fromAssetAux = fromAsset; const toAssetAux = toAsset; setFromAsset(toAssetAux); setToAsset(fromAssetAux); - - const fromAmount = amount.fromAmount; - const fromAmountUsd = amount.fromAmountUsd; - const toAmount = amount.toAmount; - const toAmountUsd = amount.toAmountUsd; - setAmount({ - fromAmount: toAmount, - fromAmountUsd: toAmountUsd, - toAmount: fromAmount, - toAmountUsd: fromAmountUsd, - }); }; return ( @@ -229,8 +304,9 @@ export const PriceInput = ({ inputComponent={NumberFormatCustom as any} onChange={(e) => { const typed = e.target.value; - setNewRate(typed); - handleInputsAmountsChange(fromAsset, valueToBigNumber(typed)); + const bn = valueToBigNumber(typed); + setNewRate(bn); + emitRateChangeDebounced(fromAsset, bn); }} /> )} @@ -326,12 +402,13 @@ export const PriceInput = ({ + )} {explorerLink && ( From e55c49c653a84f9762ed6095f95b3570a17760d1 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Fri, 14 Nov 2025 11:07:50 -0300 Subject: [PATCH 60/66] cancel adapter orders on chain via tx --- .../CancelAdapterOrderActions.tsx | 119 ++++++++++++++++++ .../CancelCowOrder/CancelCowOrderActions.tsx | 11 +- .../CancelCowOrder/CancelCowOrderModal.tsx | 8 +- .../CancelCowOrderModalContent.tsx | 55 ++++++-- .../CollateralSwapActionsViaCoWAdapters.tsx | 2 + .../DebtSwap/DebtSwapActionsViaCoW.tsx | 2 + .../RepayWithCollateralActionsViaCoW.tsx | 2 + .../Swap/constants/cow.constants.ts | 14 +++ src/hooks/useTransactionHistory.tsx | 2 + src/locales/el/messages.js | 2 +- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 9 ++ src/locales/es/messages.js | 2 +- src/locales/fr/messages.js | 2 +- .../history/TransactionMobileRowItem.tsx | 3 +- src/modules/history/TransactionRowItem.tsx | 3 +- src/modules/history/types.ts | 2 + src/utils/swapAdapterHistory.ts | 3 + 18 files changed, 225 insertions(+), 18 deletions(-) create mode 100644 src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx diff --git a/src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx b/src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx new file mode 100644 index 0000000000..66e610ac7b --- /dev/null +++ b/src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx @@ -0,0 +1,119 @@ +import { OrderStatus, SupportedChainId } from '@cowprotocol/cow-sdk'; +import { Trans } from '@lingui/macro'; +import { useQueryClient } from '@tanstack/react-query'; +import { Interface } from 'ethers/lib/utils'; +import { useIsWrongNetwork } from 'src/hooks/useIsWrongNetwork'; +import { useModalContext } from 'src/hooks/useModal'; +import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; +import { + ActionName, + CowSwapSubset, + isCowSwapSubset, + SwapActionFields, + TransactionHistoryItem, +} from 'src/modules/history/types'; +import { useRootStore } from 'src/store/root'; +import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; +import { updateCowOrderStatus } from 'src/utils/swapAdapterHistory'; + +import { ADAPTER_FACTORY } from '../Swap/constants/cow.constants'; +import { TxActionsWrapper } from '../TxActionsWrapper'; + +interface CancelAdapterOrderActionsProps { + cowOrder: TransactionHistoryItem< + | SwapActionFields[ActionName.DebtSwap] + | SwapActionFields[ActionName.RepayWithCollateral] + | SwapActionFields[ActionName.CollateralSwap] + >; + blocked: boolean; +} + +// ABI for cancelInstance function +const ADAPTER_ABI = ['function cancelInstance(address instance) external']; + +export const CancelAdapterOrderActions = ({ + cowOrder, + blocked, +}: CancelAdapterOrderActionsProps) => { + const { isWrongNetwork } = useIsWrongNetwork(cowOrder.chainId); + const { mainTxState, loadingTxns, setMainTxState, setTxError } = useModalContext(); + const { sendTx } = useWeb3Context(); + const queryClient = useQueryClient(); + const account = useRootStore((state) => state.account); + + const action = async () => { + try { + setMainTxState({ ...mainTxState, loading: true }); + + // Type guard to ensure we have a CowSwapSubset with adapter fields + if (!isCowSwapSubset(cowOrder)) { + throw new Error('Order is not a CoW swap order'); + } + + // At this point TypeScript knows cowOrder is CowSwapSubset, but we need to assert it has adapter fields + const cowSwapOrder = cowOrder as CowSwapSubset; + + if (!cowSwapOrder.adapterInstanceAddress) { + throw new Error('Adapter instance address not found'); + } + + const adapterInterface = new Interface(ADAPTER_ABI); + + const factoryAddress = ADAPTER_FACTORY[cowOrder.chainId as SupportedChainId]; + + if (!factoryAddress) { + throw new Error('Factory address not found for this chain'); + } + + const data = adapterInterface.encodeFunctionData('cancelInstance', [ + cowSwapOrder.adapterInstanceAddress, + ]); + + const txResponse = await sendTx({ + to: factoryAddress, + data, + chainId: cowOrder.chainId, + }); + + await txResponse.wait(1); + + // Update order status to cancelled in local storage + if (account && cowSwapOrder.orderId) { + updateCowOrderStatus( + cowOrder.chainId, + account, + cowSwapOrder.orderId, + OrderStatus.CANCELLED + ); + } + + queryClient.invalidateQueries({ queryKey: 'transactionHistory' }); + setMainTxState({ + ...mainTxState, + loading: false, + success: true, + txHash: txResponse.hash, + }); + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.MAIN_ACTION, false); + setTxError(parsedError); + setMainTxState({ + txHash: undefined, + loading: false, + }); + } + }; + + return ( + Cancel order} + actionInProgressText={Cancelling order...} + blocked={blocked} + mainTxState={mainTxState} + requiresApproval={false} + preparingTransactions={loadingTxns} + /> + ); +}; diff --git a/src/components/transactions/CancelCowOrder/CancelCowOrderActions.tsx b/src/components/transactions/CancelCowOrder/CancelCowOrderActions.tsx index 1edd8fb41a..abc1a19c42 100644 --- a/src/components/transactions/CancelCowOrder/CancelCowOrderActions.tsx +++ b/src/components/transactions/CancelCowOrder/CancelCowOrderActions.tsx @@ -1,11 +1,13 @@ -import { AdapterContext, OrderBookApi, OrderSigningUtils } from '@cowprotocol/cow-sdk'; +import { AdapterContext, OrderBookApi, OrderSigningUtils, OrderStatus } from '@cowprotocol/cow-sdk'; import { Trans } from '@lingui/macro'; import { useQueryClient } from '@tanstack/react-query'; import { useIsWrongNetwork } from 'src/hooks/useIsWrongNetwork'; import { useModalContext } from 'src/hooks/useModal'; import { ActionName, SwapActionFields, TransactionHistoryItem } from 'src/modules/history/types'; +import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; import { wagmiConfig } from 'src/ui-config/wagmiConfig'; +import { updateCowOrderStatus } from 'src/utils/swapAdapterHistory'; import { getWalletClient } from 'wagmi/actions'; import { COW_ENV, getCowAdapter } from '../Swap/helpers/cow'; @@ -21,6 +23,7 @@ export const CancelCowOrderActions = ({ cowOrder, blocked }: CancelCowOrderActio const { isWrongNetwork } = useIsWrongNetwork(cowOrder.chainId); const { mainTxState, loadingTxns, setMainTxState, setTxError } = useModalContext(); const queryClient = useQueryClient(); + const account = useRootStore((state) => state.account); const action = async () => { try { @@ -44,6 +47,12 @@ export const CancelCowOrderActions = ({ cowOrder, blocked }: CancelCowOrderActio signature, signingScheme, }); + + // Update order status to cancelled in local storage + if (account && cowOrder.id) { + updateCowOrderStatus(cowOrder.chainId, account, cowOrder.id, OrderStatus.CANCELLED); + } + queryClient.invalidateQueries({ queryKey: 'transactionHistory' }); setTimeout(() => { setMainTxState({ diff --git a/src/components/transactions/CancelCowOrder/CancelCowOrderModal.tsx b/src/components/transactions/CancelCowOrder/CancelCowOrderModal.tsx index 24e39aa142..55486b6c2f 100644 --- a/src/components/transactions/CancelCowOrder/CancelCowOrderModal.tsx +++ b/src/components/transactions/CancelCowOrder/CancelCowOrderModal.tsx @@ -7,7 +7,13 @@ import { CancelCowOrderModalContent } from './CancelCowOrderModalContent'; export const CancelCowOrderModal = () => { const { type, close, args } = useModalContext() as ModalContextType<{ - cowOrder: TransactionHistoryItem; + cowOrder: TransactionHistoryItem< + | SwapActionFields[ActionName.Swap] + | SwapActionFields[ActionName.CollateralSwap] + | SwapActionFields[ActionName.DebtSwap] + | SwapActionFields[ActionName.RepayWithCollateral] + | SwapActionFields[ActionName.WithdrawAndSwap] + >; }>; return ( diff --git a/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx b/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx index 99829cd43c..f4447b068e 100644 --- a/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx +++ b/src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx @@ -3,7 +3,12 @@ import { Typography } from '@mui/material'; import { useIsWrongNetwork } from 'src/hooks/useIsWrongNetwork'; import { useModalContext } from 'src/hooks/useModal'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; -import { ActionName, SwapActionFields, TransactionHistoryItem } from 'src/modules/history/types'; +import { + ActionName, + isCowSwapSubset, + SwapActionFields, + TransactionHistoryItem, +} from 'src/modules/history/types'; import { getNetworkConfig } from 'src/utils/marketsAndNetworksConfig'; import { formatUnits } from 'viem'; @@ -11,10 +16,17 @@ import { BaseSuccessView } from '../FlowCommons/BaseSuccess'; import { GasEstimationError } from '../FlowCommons/GasEstimationError'; import { DetailsNumberLine, DetailsTextLine, TxModalDetails } from '../FlowCommons/TxModalDetails'; import { ChangeNetworkWarning } from '../Warnings/ChangeNetworkWarning'; +import { CancelAdapterOrderActions } from './CancelAdapterOrderActions'; import { CancelCowOrderActions } from './CancelCowOrderActions'; interface CancelCowOrderModalContentProps { - cowOrder: TransactionHistoryItem; + cowOrder: TransactionHistoryItem< + | SwapActionFields[ActionName.Swap] + | SwapActionFields[ActionName.CollateralSwap] + | SwapActionFields[ActionName.DebtSwap] + | SwapActionFields[ActionName.RepayWithCollateral] + | SwapActionFields[ActionName.WithdrawAndSwap] + >; } export const CancelCowOrderModalContent = ({ cowOrder }: CancelCowOrderModalContentProps) => { @@ -26,8 +38,11 @@ export const CancelCowOrderModalContent = ({ cowOrder }: CancelCowOrderModalCont const showNetworkWarning = isWrongNetwork && !readOnlyMode; if (mainTxState.success) { + // Show explorer link if txHash exists (adapter cancellations have txHash) + const hasTxHash = !!mainTxState.txHash; + return ( - + Cancellation submited @@ -43,10 +58,18 @@ export const CancelCowOrderModalContent = ({ cowOrder }: CancelCowOrderModalCont Cancel order - - This is an off-chain operation. Keep in mind that a solver may already have filled your - order. - + {isCowSwapSubset(cowOrder) && cowOrder.usedAdapter ? ( + + This will cancel the order via an on-chain transaction. Note that the order will not + be marked as cancelled in the CoW Protocol system, but will remain open and expire + naturally. Keep in mind that a solver may already have filled your order. + + ) : ( + + This is an off-chain operation. Keep in mind that a solver may already have filled + your order. + + )} {txError && } - + {isCowSwapSubset(cowOrder) && cowOrder.usedAdapter && cowOrder.adapterInstanceAddress ? ( + + } + blocked={false} + /> + ) : ( + } + blocked={false} + /> + )} ); }; diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx index c9708f80c0..83d19f4adf 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx @@ -277,6 +277,8 @@ export const CollateralSwapActionsViaCowAdapters = ({ name: state.buyAmountToken.symbol, decimals: state.buyAmountToken.decimals, }, + adapterInstanceAddress: instanceAddress, + usedAdapter: true, // CollateralSwap via adapters always uses adapter (flashloan) srcAmount: state.sellAmountBigInt.toString(), destAmount: state.buyAmountBigInt.toString(), }); diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index 62b95697ec..ec9f5cc49b 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -283,6 +283,8 @@ export const DebtSwapActionsViaCoW = ({ name: state.buyAmountToken.symbol, decimals: state.buyAmountToken.decimals, }, + adapterInstanceAddress: instanceAddress, + usedAdapter: true, // DebtSwap always uses adapter srcAmount: state.sellAmountBigInt.toString(), destAmount: state.buyAmountBigInt.toString(), }); diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx index 225d6cd61e..740ae7a327 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -282,6 +282,8 @@ export const RepayWithCollateralActionsViaCoW = ({ name: state.buyAmountToken.symbol, decimals: state.buyAmountToken.decimals, }, + adapterInstanceAddress: instanceAddress, + usedAdapter: true, // RepayWithCollateral always uses adapter srcAmount: state.sellAmountBigInt.toString(), destAmount: state.buyAmountBigInt.toString(), }); diff --git a/src/components/transactions/Swap/constants/cow.constants.ts b/src/components/transactions/Swap/constants/cow.constants.ts index 012f44a8c8..ad5e959679 100644 --- a/src/components/transactions/Swap/constants/cow.constants.ts +++ b/src/components/transactions/Swap/constants/cow.constants.ts @@ -46,6 +46,20 @@ export const HOOK_ADAPTER_PER_TYPE: Record = { + [SupportedChainId.MAINNET]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.GNOSIS_CHAIN]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.ARBITRUM_ONE]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.AVALANCHE]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.BNB]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.POLYGON]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.SEPOLIA]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.BASE]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.LENS]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.LINEA]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.PLASMA]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', +}; + export const COW_UNSUPPORTED_ASSETS: Partial< Record>> > = { diff --git a/src/hooks/useTransactionHistory.tsx b/src/hooks/useTransactionHistory.tsx index 727ac63e80..9c734b4653 100644 --- a/src/hooks/useTransactionHistory.tsx +++ b/src/hooks/useTransactionHistory.tsx @@ -440,6 +440,8 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool protocol: 'cow', orderId: e.orderId, chainId: e.chainId, + adapterInstanceAddress: e.adapterInstanceAddress, + usedAdapter: e.usedAdapter, })); const localParaswapTxns: TransactionHistoryItemUnion[] = ( diff --git a/src/locales/el/messages.js b/src/locales/el/messages.js index 20e4c53ffc..eddd109525 100644 --- a/src/locales/el/messages.js +++ b/src/locales/el/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Εάν ΔΕΝ ξεκλειδώσετε εντός \",[\"0\"],\" του παραθύρου ξεκλειδώματος, θα πρέπει να ενεργοποιήσετε ξανά τη διαδικασία ψύξης.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Η συμμετοχή σε αυτό το αποθεματικό \",[\"symbol\"],\" δίνει ετήσιες ανταμοιβές.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Ανώτατο όριο δανεισμού\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Ο σταθερός δανεισμός δεν είναι ενεργοποιημένος\",\"/yQcJM\":\"Συνολική αξία\",\"00AB2i\":\"Ο χρήστης δεν δανείστηκε το καθορισμένο νόμισμα\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να προμηθεύσετε σε αυτό το αποθεματικό. Μπορείτε να προμηθεύσετε το υπόλοιπο του πορτοφολιού σας μέχρι να επιτευχθεί το ανώτατο όριο προμηθειών.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Παρακαλούμε συνδέστε ένα πορτοφόλι για να δείτε τις προσωπικές σας πληροφορίες εδώ.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Ρευστοποίηση <0/> κατώτατο όριο\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Προβολή λεπτομερειών\",\"2FYpfJ\":\"Περισσότερα\",\"2O3qp5\":\"Διαθέσιμη ρευστότητα\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Ο σταθερός δανεισμός είναι ενεργοποιημένος\",\"34Qfwy\":\"Υπέρβαση του ανώτατου ορίου δανεισμού\",\"39eQRj\":[\"Δανεισμός \",[\"symbol\"]],\"3BL1xB\":\"Σύνολο παρεχόμενων\",\"3K0oMo\":\"Υπολειπόμενη προσφορά\",\"3MoZhl\":\"Δεν υπάρχουν επαρκείς εξασφαλίσεις για την κάλυψη ενός νέου δανείου\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Προσφορά \",[\"symbol\"]],\"3mXg0z\":\"Μέγιστο LTV\",\"3q3mFy\":\"Αποπληρωμή\",\"3qsjtp\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα παρεχόμενα περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"3rL+os\":\"Μπορείτε να αποσύρετε τα περιουσιακά σας στοιχεία από τη Μονάδα Ασφαλείας μόνο αφού λήξει η περίοδος αναμονής και το παράθυρο ξεκλειδώματος είναι ενεργό.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Αποτελέσματα ψηφοφορίας\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"ΜΕΓΙΣΤΟ\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"τεκμηρίωση\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο της προσφοράς του. Μόνο \",[\"messageValue\"],\" μπορεί να παρασχεθεί σε αυτή την αγορά.\"],\"5cZ/KX\":\"Η προσφορά μεταβλητού χρέους δεν είναι μηδενική\",\"5che++\":\"Για να ζητήσετε πρόσβαση σε αυτή την αδειοδοτημένη αγορά, επισκεφθείτε την ιστοσελίδα: <0>Όνομα Παρόχου Πρόσβασης\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Απαιτούμενη δράση επιδότησης\",\"5rsnKT\":\"Διαθέσιμες ανταμοιβές\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Επισκόπηση\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Εγγύηση\",\"65A04M\":\"Ισπανικά\",\"68ANm7\":\"Withdrawing GHO\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Αποπληρωμή \",[\"symbol\"]],\"6Xr0UU\":\"Ψύξη...\",\"6bxci/\":\"Δύναμη ψήφου\",\"6f8S68\":\"Αγορές\",\"6g1gi0\":\"Προτάσεις\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Αλλαγή Δικτύου\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Συντελεστής υγείας\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Επιτεύχθηκε\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Διεκδικήστε τα όλα\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7i1oxe\":\"Withdrawing and Swapping\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Ταμπλό\",\"8+6BI0\":\"Προσοχή - Είστε πολύ κοντά στην ρευστοποίηση. Εξετάστε το ενδεχόμενο να καταθέσετε περισσότερες εγγυήσεις ή να εξοφλήσετε κάποιες από τις δανειακές σας θέσεις\",\"87pUEW\":[\"Το πορτοφόλι σας \",[\"name\"],\" είναι άδειο. Αγοράστε ή μεταφέρετε περιουσιακά στοιχεία.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"Όλες οι προτάσεις\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Μη έγκυρο ποσό για νομισματοκοπία\",\"8Z5FPv\":\"Αποσυνδέστε το πορτοφόλι\",\"8Zz7s5\":\"περιουσιακά στοιχεία\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Ποσοστό χρησιμοποίησης\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Εμφάνιση\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Εισέρχεστε σε λειτουργία απομόνωσης\",\"9CDK3/\":[\"Ο δανεισμός δεν είναι επί του παρόντος διαθέσιμος για \",[\"0\"],\".\"],\"9GIj3z\":\"Μέγεθος Αποθεματικού\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Απαρτία\",\"9QHoGr\":\"Τρέχουσες ψήφοι\",\"9Rw96f\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο δανεισμού του. Υπάρχει μόνο \",[\"messageValue\"],\" διαθέσιμο για δανεισμό από αυτή την αγορά.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Αυτό το περιουσιακό στοιχείο έχει φτάσει στο όριο της προσφοράς του. Τίποτα δεν είναι διαθέσιμο για προμήθεια από αυτή την αγορά.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Δεδομένου ότι πρόκειται για ένα δοκιμαστικό δίκτυο, μπορείτε να αποκτήσετε οποιοδήποτε από τα περιουσιακά στοιχεία αν έχετε ETH στο πορτοφόλι σας\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Τα δάνεια σας\",\"AV7cGz\":\"Αναθεώρηση λεπτομερειών έγκρισης συναλλαγής\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Η δύναμη δανεισμού και τα περιουσιακά στοιχεία είναι περιορισμένα λόγω της λειτουργίας απομόνωσης.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Η χρήση εγγύησης είναι περιορισμένη λόγω της λειτουργίας απομόνωσης. <0>Μάθετε περισσότερα\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Κατηγορία περιουσιακών στοιχείων\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Βρύση\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Μεγιστο\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Διεκδίκηση \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Βρύση\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Η εγγύηση είναι (ως επί το πλείστον) το ίδιο νόμισμα που δανείζεται\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"Το υποκείμενο περιουσιακό στοιχείο δεν μπορεί να διασωθεί\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave ανά μήνα\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Εξασφάλιση\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Απενεργοποιημένο\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Ανάληψη \",[\"symbol\"]],\"EdQY6l\":\"Κανένα\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Μάθετε περισσότερα.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Δανεισμός χρησιμοποιημένης ισχύος\",\"FPKEug\":\"Η λειτουργία δεν υποστηρίζεται\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"ενεργοποίηση\",\"Fjw9N+\":\"Περιουσιακά στοιχεία προς προμήθεια\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Περιουσιακά Στοιχεία\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"τελειώνει\",\"GtP2hp\":[\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη λειτουργία Αποδοτικότητας (E-Mode) για την κατηγορία \",[\"0\"],\". Για να διαχειριστείτε τις κατηγορίες E-Mode επισκεφθείτε τον <0>Πίνακα ελέγχου.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"η\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Παράθυρο ξεκλειδώματος\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"Το συνολικό ποσό των περιουσιακών σας στοιχείων σε δολάρια ΗΠΑ που μπορούν να χρησιμοποιηθούν ως εγγύηση για δανεισμό περιουσιακών στοιχείων.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Περίοδος ψύξης\",\"IaA40H\":\"Ρευστοποίηση στο\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Κλειδώστε\",\"JZMxX0\":\"Δεν υπάρχει αρκετό υπόλοιπο στο πορτοφόλι σας\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Υπόλοιπο πορτοφολιού\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Αυτό αντιπροσωπεύει το κατώτατο όριο στο οποίο μια θέση δανεισμού θα θεωρηθεί υποεγγυημένη και θα υπόκειται σε ρευστοποίηση για κάθε εγγύηση. Για παράδειγμα, εάν μια εγγύηση έχει κατώτατο όριο ρευστοποίησης 80%, αυτό σημαίνει ότι η θέση θα ρευστοποιηθεί όταν η αξία του χρέους ανέρχεται στο 80% της αξίας της εγγύησης.\",\"KYAjf3\":\"Απομονωμένο\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Λήγει\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Λάθος δίκτυο\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Κλείδωμα\",\"KuBTQq\":\"Εισάγετε διεύθυνση ETH\",\"KvG1xW\":\"Διεκδίκηση\",\"L+8Lzs\":\"Τρέχον LTV\",\"L+qiq+\":\"Αγορά\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Δεν υπάρχει δικαίωμα ψήφου\",\"LL0zks\":\"Μπορεί να αποτελέσει εγγύηση\",\"LLdJWu\":\"Διεκδικήσιμο AAVE\",\"LSIpNK\":\"Δεν επιτρέπεται ο δανεισμός και η αποπληρωμή στο ίδιο block\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Διεύθυνση παραλήπτη\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"προβολή κλειδώματος\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, μεταβλητό\",\"MghdTe\":\"Εάν ο συντελεστής υγείας πέσει κάτω από το 1, ενδέχεται να ενεργοποιηθεί η ρευστοποίηση των εγγυήσεών σας.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Ακυρώσατε τη συναλλαγή.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Μη έγκυρη τιμή επιστροφής της συνάρτησης εκτελεστή flashloan\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Εκκρεμεί...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Τίποτα κλειδωμένο\",\"Nh9DAo\":[[\"m\"],\"λ\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Υπέρβαση του ανώτατου ορίου νομισματοκοπείου χωρίς αντίκρισμα\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Επισκόπηση πρότασης\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"απενεργοποιημένο\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Ανάληψη\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"Όταν πραγματοποιείται ρευστοποίηση, οι ρευστοποιητές επιστρέφουν έως και το 50% του ανεξόφλητου δανεισμένου ποσού για λογαριασμό του δανειολήπτη. Σε αντάλλαγμα, μπορούν να αγοράσουν τις εξασφαλίσεις με έκπτωση και να κρατήσουν τη διαφορά (ποινή ρευστοποίησης) ως μπόνους.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα δανειακά περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Κατώτατο όριο ρευστοποίησης\",\"PctCOf\":\"A temporary contract will be used to execute the trade. Your wallet may show a warning for approving a new or empty address.\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Δεν έχει επιτευχθεί\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Διαφορικό\",\"RNK49r\":\"Μη έγκυρη υπογραφή\",\"RS0o7b\":\"Κατάσταση\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Λεπτομέρειες πρότασης\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Το περιουσιακό στοιχείο δεν περιλαμβάνεται στον κατάλογο\",\"Rj01Fz\":\"Σύνδεσμοι\",\"RmWFEe\":\"Κλείδωμα APR\",\"RtBLm7\":\"Ο συντελεστής υγείας είναι μικρότερος από το όριο ρευστοποίησης\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Ενεργοποιημένο\",\"SDav7h\":\"Κεφάλαια στην Μονάδα Ασφάλειας\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Σύνολο διαθέσιμων\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Απενεργοποίηση E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Ο πάροχος διευθύνσεων κοινόχρηστων ταμείων δεν είναι εγγεγραμμένος\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Δανεισμός\",\"TFxQlw\":\"Ποινή ρευστοποίησης\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"To περιουσιακό στοιχείο μπορεί να χρησιμοποιηθεί ως εγγύηση μόνο σε λειτουργία απομόνωσης.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος σταθερού επιτοκίου σε αυτό το αποθεματικό\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Το περιουσιακό στοιχείο δεν είναι δανείσιμο σε λειτουργία απομόνωσης\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Λεπτομέρειες\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"Τα κεφάλαια αυτά έχουν δανειστεί και δεν είναι διαθέσιμα για ανάληψη αυτή τη στιγμή.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Ο δείκτης μέγιστου LTV αντιπροσωπεύει τη μέγιστη δανειοληπτική ικανότητα μιας συγκεκριμένης εγγύησης. Για παράδειγμα, εάν μια εγγύηση έχει LTV 75%, ο χρήστης μπορεί να δανειστεί έως και 0,75 ETH στο κύριο νόμισμα για κάθε 1 ETH αξίας εγγύησης.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Δεν υπάρχουν ανταμοιβές για διεκδίκηση\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Συνδέστε το πορτοφόλι\",\"VMfYUK\":\"Ασφάλεια των κατατεθειμένων εξασφαλίσεών σας έναντι των δανειζόμενων περιουσιακών στοιχείων και της υποκείμενης αξίας τους.\",\"VOAZJh\":\"Σύνολο δανείων\",\"ViKYxK\":\"ΥΠΕΡ\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Αναθεώρηση λεπτομερειών συναλλαγής\",\"W5hVah\":\"Τίποτα δεν έχει παρασχεθεί ακόμη\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Μη υποστηριζόμενο\",\"WNGZwH\":\"Το E-Mode αυξάνει το LTV σας για μια επιλεγμένη κατηγορία περιουσιακών στοιχείων έως και <0/>. <1>Μάθετε περισσότερα\",\"WPWG/y\":\"Κατάσταση & διαμόρφωση αποθεματικού\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"Ο χρήστης δεν μπορεί να κάνει ανάληψη μεγαλύτερη από το διαθέσιμο υπόλοιπο\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Για να δανειστείτε πρέπει να προσκομίσετε οποιοδήποτε περιουσιακό στοιχείο που θα χρησιμοποιηθεί ως εγγύηση.\",\"X/ITG9\":\"Κείμενο σφάλματος αντιγραφής\",\"X3Pp6x\":\"Χρησιμοποιείται ως εγγύηση\",\"X4Zt7j\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή η εφεδρεία βρίσκεται σε παύση\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy+o6U\":\"For security reasons, limit orders are not supported for Native tokens. To place a limit order, use the wrapped version.\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"ΨΗΦΙΣΤΕ ΚΑΤΑ\",\"YDIOks\":\"Ενεργοποίηση E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"Εάν το δάνειο προς αξία υπερβεί το όριο ρευστοποίησης, η παρεχόμενη εγγύηση σας μπορεί να ρευστοποιηθεί.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Δεν τηρήθηκαν οι όροι επανεξισορρόπησης των επιτοκίων\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Διακυβέρνηση Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Λειτουργία αποδοτικότητας (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Μέγιστη περικοπή\",\"ZfUGFb\":\"Πριν από την προμήθεια\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Αξία ρευστοποίησης\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"ενεργοποιημένο\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Χρόνος που απομένει για το ξεκλείδωμα\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Ψηφίστε ΚΑΤΑ\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Οι παράμετροι της συστοιχίας που θα έπρεπε να είναι ίσου μήκους δεν είναι\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Δανεισμός APY, μεταβλητό\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Προειδοποίηση περιόδου ψύξης\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Περιουσιακό στοιχείο\",\"bXQ/Og\":\"Μοιραστείτε το στο twitter\",\"bXr0ee\":\"Τα απομονωμένα περιουσιακά στοιχεία έχουν περιορισμένη δανειοληπτική ικανότητα και άλλα περιουσιακά στοιχεία δεν μπορούν να χρησιμοποιηθούν ως εγγύηση.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Το αιτούμενο ποσό είναι μεγαλύτερο από το μέγιστο μέγεθος δανείου στη λειτουργία σταθερού επιτοκίου\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Προσφορά\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Η διεύθυνση δεν είναι συμβόλαιο\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Δεν μπορείτε να αποσύρετε αυτό το ποσό, διότι θα προκληθεί κλήση εγγύησης\",\"cBc+4A\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να δανειστείτε. Μπορείτε να δανειστείτε με βάση την εξασφάλισή σας και μέχρι να επιτευχθεί το ανώτατο όριο δανεισμού.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Λεπτομέρειες κινδύνου\",\"cNT+ij\":\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη Λειτουργία Αποδοτικότητας (E-Mode) και τη λειτουργία Απομόνωσης. Για να διαχειριστείτε τη λειτουργία E-Mode και τη λειτουργία Απομόνωσης, επισκεφθείτε τον <0>Πίνακα ελέγχου.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Ψηφίστε ΥΠΕΡ\",\"ckf7gX\":[\"Αποπληρώνοντας \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Συζήτηση φόρουμ\",\"csDS2L\":\"Διαθέσιμο\",\"cu7Stb\":\"Δεν συμμετείχατε στην παρούσα πρόταση\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Διακυβέρνηση\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Η επικύρωση του Ltv απέτυχε\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Δεν έχετε αρκετά χρήματα στο πορτοφόλι σας για να αποπληρώσετε ολόκληρο το ποσό. Εάν προχωρήσετε στην αποπληρωμή με το τρέχον ποσό των χρημάτων σας, θα εξακολουθείτε να έχετε μια μικρή θέση δανεισμού στο ταμπλό σας.\",\"dXUQFX\":\"Περιουσιακά στοιχεία προς δανεισμό\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Χρησιμοποίηση εγγυήσεων\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Η δράση απαιτεί ενεργό απόθεμα\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Σύνολο δανεικών\",\"ecqEvn\":\"Το υπόλοιπο των εγγυήσεων είναι 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Ξεκλειδώστε τώρα\",\"evw5ha\":\"Καθαρή αξία\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Αλλάξατε σε ποσοστό \",[\"0\"]],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Το τρέχον δάνειο προς αξία με βάση τις παρεχόμενες εξασφαλίσεις σας.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Υπόλοιπο\",\"fu1Dbh\":[\"Ανάληψη \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g4Ius4\":\"This is the fee for executing position changes, set by governance.\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Λειτουργία Testnet\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"Ο χρήστης προσπαθεί να δανειστεί πολλαπλά περιουσιακά στοιχεία, συμπεριλαμβανομένου ενός απομονωμένου περιουσιακού στοιχείου\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Η μηδενική διεύθυνση δεν είναι έγκυρη\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Το καθαρό ΑΡΥ είναι η συνδυασμένη επίδραση όλων των θέσεων προσφοράς και δανεισμού στην καθαρή αξία, συμπεριλαμβανομένων των κινήτρων. Είναι δυνατόν να υπάρχει αρνητικό καθαρό APY εάν το χρεωστικό APY είναι υψηλότερο από το προσφερόμενο APY.\",\"gzcch9\":\"Μη έγκυρη αμοιβή πρωτοκόλλου γέφυρας\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Καθαρό APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Το % της συνολικής δανειοληπτικής σας δύναμης που χρησιμοποιείται. Αυτό βασίζεται στο ποσό της παρεχόμενης εξασφάλισής σας και στο συνολικό ποσό που μπορείτε να δανειστείτε.\",\"hehnjM\":\"Ποσό\",\"hjDCQr\":\"Υπήρξε κάποιο σφάλμα. Προσπαθήστε να αλλάξετε τις παραμέτρους ή <0><1>αντιγράψτε το σφάλμα\",\"hom7qf\":\"Διεκδίκηση\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Δανεισμός \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Ασυνεπείς παράμετροι flashloan\",\"iEPVHF\":\"Δεν έχει αρκετή δύναμη ψήφου για να συμμετάσχει στην παρούσα πρόταση\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"Ψηφίσατε \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Εισάγετε ένα ποσό\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens δεν είναι το ίδιο με το να τα κλειδώνετε. Εάν επιθυμείτε να κλειδώσετε τα\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"H χρήση εγγυήσεων είναι περιορισμένη λόγω της λειτουργίας Απομόνωσης.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Προμηθεύοντας το\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Απενεργοποίηση E-Mode\",\"jKYzR1\":\"Ενεργοποίηση E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"δ\"],\"jbFMap\":\"Χρόνος ψύξης που έχει απομείνει\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"Στο E-Mode ορισμένα περιουσιακά στοιχεία δεν είναι δανείσιμα. Βγείτε από το E-Mode για να αποκτήσετε πρόσβαση σε όλα τα περιουσιακά στοιχεία\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Μη διαθέσιμο\",\"k/sb6z\":\"Επιλέξτε γλώσσα\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Διεκδίκηση \",[\"0\"]],\"kH6wUX\":\"Επίδραση στην τιμή\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Για την εξόφληση εκ μέρους ενός χρήστη απαιτείται ένα ρητό ποσό προς εξόφληση\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Υπέρβαση του ανώτατου ορίου προσφοράς\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Το ανώτατο όριο χρέους δεν είναι μηδενικό\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Αγγλικά\",\"lfEjIE\":\"Μάθετε περισσότερα στον οδηγό <0>Συχνών Ερωτήσεων\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Συνολικές εκπομπές ανά ημέρα\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Εντάξει, Κλείσιμο\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Το περιουσιακό στοιχείο δεν μπορεί να χρησιμοποιηθεί ως εγγύηση.\",\"n+SX4g\":\"Προγραμματιστές\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Προσφορά apy\",\"nJgsQu\":\"Με δύναμη ψήφου <0/>\",\"nLC6tu\":\"Γαλλικά\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Μπορεί να εκτελεστεί\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"ω\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Ο συντελεστής υγείας και το δάνειο προς αξία καθορίζουν τη διασφάλιση των εξασφαλίσεών σας. Για να αποφύγετε τις ρευστοποιήσεις μπορείτε να παράσχετε περισσότερες εξασφαλίσεις ή να εξοφλήσετε δανειακές θέσεις.\",\"o1xc2V\":\"Η προσφορά AToken δεν είναι μηδενική\",\"o5ooMr\":\"Χρέος\",\"o7J4JM\":\"Φίλτρο\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Ψύξτε για ξεκλείδωμα\",\"oJ5ZiG\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος μεταβλητού επιτοκίου σε αυτό το αποθεματικό\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Το σταθερό επιτόκιο θα <0>μείνει το ίδιο για όλη τη διάρκεια του δανείου σας. Συνιστάται για μακροχρόνιες περιόδους δανεισμού και για χρήστες που προτιμούν την προβλεψιμότητα.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Διαθέσιμο για προμήθεια\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"Αυτό το περιουσιακό στοιχείο έχει φθάσει στο ανώτατο όριο δανεισμού του. Τίποτα δεν είναι διαθέσιμο για δανεισμό από αυτή την αγορά.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Το υποκείμενο υπόλοιπο πρέπει να είναι μεγαλύτερο από 0\",\"pgWG9H\":\"Δεν υπάρχει αρκετό κλειδωμένο υπόλοιπο\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"παρακαλούμε ελέγξτε ότι το ποσό που θέλετε να παρέχετε δεν χρησιμοποιείται επί του παρόντος για κλείδωμα. Εάν χρησιμοποιείται για κλείδωμα, η συναλλαγή σας ενδέχεται να αποτύχει.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Καταλαβαίνω πώς λειτουργεί η ψύξη (\",[\"0\"],\") και το ξεκλείδωμα (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"Ο καλών αυτής της συνάρτησης πρέπει να είναι ένα κοινόχρηστο ταμείο\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Κλειδωμένο\",\"qB4kPi\":\"Προσφορά APY\",\"qENI8q\":\"Γενικές ρυθμίσεις\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"αντιγράψτε το σφάλμα\",\"qXCkEM\":\"Συνδέστε το πορτοφόλι σας για να δείτε τις προμήθειες, τα δάνεια και τις ανοιχτές θέσεις σας.\",\"qY2jnw\":\"Μη έγκυρη λήξη\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Μη έγκυρη ποσότητα προς καύση\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Το ποσό πρέπει να είναι μεγαλύτερο από 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Εμφάνιση περιουσιακών στοιχείων με υπόλοιπο 0\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Διεκδικήστε όλες τις ανταμοιβές\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"ΚΑΤΑ\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Μπορείτε να ξεκλειδώσετε εδώ\",\"smJNwH\":\"Διαθέσιμο για δανεισμό\",\"solypO\":\"Ο παράγοντας υγείας δεν είναι κάτω από το όριο\",\"sr0UJD\":\"Πηγαίνετε Πίσω\",\"ss5GCK\":\"Η διεύθυνση του παρόχου διευθύνσεων κοινόχρηστου ταμείου είναι άκυρη\",\"swEgK4\":\"Οι πληροφορίες ψήφου σας\",\"t+wtgf\":\"Τίποτα δανεισμένο ακόμα\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Τιμή Oracle\",\"tFZLf8\":\"Αυτός ο υπολογισμός gas είναι μόνο μια εκτίμηση. Το πορτοφόλι σας θα καθορίσει την τιμή της συναλλαγής. Μπορείτε να τροποποιήσετε τις ρυθμίσεις gas απευθείας από τον πάροχο του πορτοφολιού σας.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"Παρακαλώ, συνδέστε το πορτοφόλι σας\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Οι προμήθειές σας\",\"u3ZeYl\":\"Η συναλλαγή απέτυχε\",\"u706uF\":\"Άκυρη πριμοδότηση flashloan\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Για την αποπληρωμή ενός συγκεκριμένου τύπου χρέους, ο χρήστης πρέπει να έχει χρέος αυτού του τύπου\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Απόκρυψη\",\"vMba49\":\"Ο δανεισμός δεν είναι ενεργοποιημένος\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Γλώσσα\",\"vesuBJ\":\"Σας επιτρέπει να αποφασίσετε αν θα χρησιμοποιήσετε ένα παρεχόμενο περιουσιακό στοιχείο ως εγγύηση. Ένα περιουσιακό στοιχείο που χρησιμοποιείται ως εγγύηση θα επηρεάσει τη δανειοληπτική σας ικανότητα και τον συντελεστή υγείας.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Σταθερό νόμισμα\",\"w/JtJ3\":\"Η σταθερή προσφορά χρέους δεν είναι μηδενική\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Ανταμοιβές APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Εσείς \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"Ο καλών της συνάρτησης δεν είναι AToken\",\"wZFvVU\":\"ΨΗΦΙΣΤΕ ΥΠΕΡ\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Βρύση \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Τρέχον διαφορικό\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, παρακαλούμε μεταβείτε στο\",\"xNy/UG\":\"Αποπληρωμή με\",\"xPm8wv\":\"Μάθετε περισσότερα για τους κινδύνους\",\"xXYpZl\":[[\"0\"],\" Βρύση\"],\"xaVBSS\":\"Οι πληροφορίες σας\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Σκοτεινή λειτουργία\",\"yCrG6m\":\"Συνολικό μέγεθος της αγοράς\",\"yJUUbn\":\"Επισκόπηση συναλλαγής\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Μη έγκυρη διεύθυνση\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Δεν υπάρχουν αρκετά κεφάλαια στο\",[\"0\"],\"αποθεματικό για δανεισμό\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Κλείσιμο\",\"z4uGQg\":\"Υπέρβαση του ανώτατου ορίου χρέους\",\"z5JUmg\":[\"Estimated costs are \",[\"0\"],\"% of the sell amount. This order is unlikely to be filled.\"],\"z5UQOM\":\"Η εγγύηση που έχει επιλεγεί δεν μπορεί να ρευστοποιηθεί\",\"z5Y+p6\":[\"Παροχή \",[\"symbol\"]],\"zCjNKs\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή το αποθεματικό έχει παγώσει\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Υπολειπόμενο χρέος\",\"zmTPiV\":\"Υπόλοιπο προσφοράς\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Μενού\",\"zwWKhA\":\"Μάθετε περισσότερα\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"+EGVI0\":\"Receive (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Φαίνεται ότι δεν μπορούμε να αλλάξουμε το δίκτυο αυτόματα. Ελέγξτε αν μπορείτε να το αλλάξετε από το πορτοφόλι.\",\"+kLZGu\":\"Supplied asset amount\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Minimum staked Aave amount\",\"00OflG\":\"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.\",\"08/rZ9\":\"The cooldown period is the time required prior to unstaking your tokens (20 days). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window.<0>Learn more\",\"1Onqx8\":[\"Έγκριση του \",[\"symbol\"],\"...\"],\"1m9Qqc\":\"Withdrawing and Switching\",\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Blocked Address\",\"2bAhR7\":\"Meet GHO\",\"2o/xRt\":\"Επίτευξη του ανώτατου ορίου εφοδιασμού στο αποθεματικό-στόχο. Δοκιμάστε να \\nμειώσετε την ποσότητα.\",\"3O8YTV\":\"Total interest accrued\",\"4iPAI3\":\"Minimum GHO borrow amount\",\"6NGLTR\":\"Discountable amount\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Discount parameters are decided by the Aave community and may be changed over time. Check Governance for updates and vote to participate. <0>Learn more\",\"7sofdl\":\"Withdraw and Switch\",\"ARu1L4\":\"Repaid\",\"B6aXGH\":\"Σταθερό\",\"B9Gqbz\":\"Variable rate\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"At a discount\",\"CMHmbm\":\"Slippage\",\"EBL9Gz\":\"COPIED!\",\"ES8dkb\":\"Fixed rate\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Discount\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Save and share\",\"JK9zf1\":[\"Estimated compounding interest, including discount for Staking \",[\"0\"],\"AAVE in Safety Module.\"],\"JPrLjO\":\"Δεν μπορείτε να χρησιμοποιήσετε αυτό το νόμισμα ως εγγύηση\",\"JU6q+W\":\"Ανταμοιβή(ες) προς διεκδίκηση\",\"K05qZY\":\"Withdraw & Switch\",\"KRpokz\":\"VIEW TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Η ενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση αυξάνει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας. Ωστόσο, μπορεί να ρευστοποιηθεί εάν ο συντελεστής υγείας σας πέσει κάτω από το 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Απενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Send feedback\",\"TeCFg/\":\"Borrow rate change\",\"TskbEN\":\"Holders of stkAAVE receive a discount on the GHO borrowing rate\",\"TtZL6q\":\"Discount model parameters\",\"Tz0GSZ\":\"blocked activities\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"W8ekPc\":\"Back to Dashboard\",\"XZzneG\":\"Θα βγείτε από τη λειτουργία απομόνωσης και άλλα tokens μπορούν πλέον να χρησιμοποιηθούν ως εγγύηση\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Η απενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση επηρεάζει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας.\",\"aX31hk\":\"Your balance is lower than the selected amount.\",\"al6Pyz\":\"Exceeds the discount\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Δεν υπάρχουν επαρκείς εγγυήσεις για την αποπληρωμή αυτού του ποσού χρέους με\",\"cqnmnD\":\"Effective interest rate\",\"dMtLDE\":\"to\",\"dpc0qG\":\"Μεταβλητό\",\"euScGB\":\"APY with discount applied\",\"fHcELk\":\"Καθαρό APR\",\"flRCF/\":\"Staking discount\",\"gncRUO\":\"This address is blocked on app.aave.com because it is associated with one or more\",\"gr8mYw\":\"You may borrow up to <0/> GHO at <1/> (max discount)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Borrow balance\",\"i2JTiw\":\"You may enter a custom amount in the field.\",\"jMam5g\":[[\"0\"],\" Υπόλοιπο\"],\"jpctdh\":\"View\",\"kwwn6i\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate. The discount applies to 100 GHO for every 1 stkAAVE held. Use the calculator below to see GHO borrow rate with the discount applied.\",\"lNVG7i\":\"Select an asset\",\"lt6bpt\":\"Collateral to repay with\",\"mIM0qu\":\"Expected amount to repay\",\"mzI/c+\":\"Download\",\"n8Psk4\":\"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.\",\"nOy4ob\":\"We suggest you go back to the Dashboard.\",\"nakd8r\":\"stkAAVE holders get a discount on GHO borrow rate\",\"nh2EJK\":[\"Παρακαλώ μεταβείτε στο \",[\"networkName\"],\".\"],\"ntkAoE\":\"Discount applied for <0/> staking AAVE\",\"o4tCu3\":\"Borrow APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"Η περίοδος ψύξης είναι \",[\"0\"],\". Μετά την \",[\"1\"],\" περίοδο ψύξης, θα εισέλθετε στο παράθυρο ξεκλειδώματος \",[\"2\"],\". Θα συνεχίσετε να λαμβάνετε ανταμοιβές κατά τη διάρκεια της ψύξης και του παραθύρου ξεκλειδώματος.\"],\"p3j+mb\":\"Το υπόλοιπο της ανταμοιβής σας είναι 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interest accrued\",\"rf8POi\":\"Borrowed asset amount\",\"ruc7X+\":\"Add stkAAVE to see borrow APY with the discount\",\"sK+Nag\":\"Αναθεώρηση συναλλαγής\",\"t81DpC\":[\"Approve \",[\"symbol\"],\" to continue\"],\"umICAY\":\"<0><1><2/>Add stkAAVE to see borrow rate with discount\",\"uwAUvj\":\"COPY IMAGE\",\"v8x7Mg\":\"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.\",\"wRRqvW\":\"Δεν έχετε προμήθειες σε αυτό το νόμισμα\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Ενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"yW1oWB\":\"Τύπος APY\",\"yhvj6d\":\"Δεν μπορείτε να αλλάξετε τη χρήση ως λειτουργία εγγύησης για αυτό το νόμισμα, διότι θα προκαλέσει κλήση εγγύησης\",\"zevmS2\":\"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Εάν ΔΕΝ ξεκλειδώσετε εντός \",[\"0\"],\" του παραθύρου ξεκλειδώματος, θα πρέπει να ενεργοποιήσετε ξανά τη διαδικασία ψύξης.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Η συμμετοχή σε αυτό το αποθεματικό \",[\"symbol\"],\" δίνει ετήσιες ανταμοιβές.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Ανώτατο όριο δανεισμού\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Ο σταθερός δανεισμός δεν είναι ενεργοποιημένος\",\"/yQcJM\":\"Συνολική αξία\",\"00AB2i\":\"Ο χρήστης δεν δανείστηκε το καθορισμένο νόμισμα\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να προμηθεύσετε σε αυτό το αποθεματικό. Μπορείτε να προμηθεύσετε το υπόλοιπο του πορτοφολιού σας μέχρι να επιτευχθεί το ανώτατο όριο προμηθειών.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Παρακαλούμε συνδέστε ένα πορτοφόλι για να δείτε τις προσωπικές σας πληροφορίες εδώ.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Ρευστοποίηση <0/> κατώτατο όριο\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Προβολή λεπτομερειών\",\"2FYpfJ\":\"Περισσότερα\",\"2O3qp5\":\"Διαθέσιμη ρευστότητα\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Ο σταθερός δανεισμός είναι ενεργοποιημένος\",\"34Qfwy\":\"Υπέρβαση του ανώτατου ορίου δανεισμού\",\"39eQRj\":[\"Δανεισμός \",[\"symbol\"]],\"3BL1xB\":\"Σύνολο παρεχόμενων\",\"3K0oMo\":\"Υπολειπόμενη προσφορά\",\"3MoZhl\":\"Δεν υπάρχουν επαρκείς εξασφαλίσεις για την κάλυψη ενός νέου δανείου\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Προσφορά \",[\"symbol\"]],\"3mXg0z\":\"Μέγιστο LTV\",\"3q3mFy\":\"Αποπληρωμή\",\"3qsjtp\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα παρεχόμενα περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"3rL+os\":\"Μπορείτε να αποσύρετε τα περιουσιακά σας στοιχεία από τη Μονάδα Ασφαλείας μόνο αφού λήξει η περίοδος αναμονής και το παράθυρο ξεκλειδώματος είναι ενεργό.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Αποτελέσματα ψηφοφορίας\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"ΜΕΓΙΣΤΟ\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"τεκμηρίωση\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο της προσφοράς του. Μόνο \",[\"messageValue\"],\" μπορεί να παρασχεθεί σε αυτή την αγορά.\"],\"5cZ/KX\":\"Η προσφορά μεταβλητού χρέους δεν είναι μηδενική\",\"5che++\":\"Για να ζητήσετε πρόσβαση σε αυτή την αδειοδοτημένη αγορά, επισκεφθείτε την ιστοσελίδα: <0>Όνομα Παρόχου Πρόσβασης\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Απαιτούμενη δράση επιδότησης\",\"5rsnKT\":\"Διαθέσιμες ανταμοιβές\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Επισκόπηση\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Εγγύηση\",\"65A04M\":\"Ισπανικά\",\"68ANm7\":\"Withdrawing GHO\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Αποπληρωμή \",[\"symbol\"]],\"6Xr0UU\":\"Ψύξη...\",\"6bxci/\":\"Δύναμη ψήφου\",\"6f8S68\":\"Αγορές\",\"6g1gi0\":\"Προτάσεις\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Αλλαγή Δικτύου\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Συντελεστής υγείας\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Επιτεύχθηκε\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Διεκδικήστε τα όλα\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7i1oxe\":\"Withdrawing and Swapping\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Ταμπλό\",\"8+6BI0\":\"Προσοχή - Είστε πολύ κοντά στην ρευστοποίηση. Εξετάστε το ενδεχόμενο να καταθέσετε περισσότερες εγγυήσεις ή να εξοφλήσετε κάποιες από τις δανειακές σας θέσεις\",\"87pUEW\":[\"Το πορτοφόλι σας \",[\"name\"],\" είναι άδειο. Αγοράστε ή μεταφέρετε περιουσιακά στοιχεία.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"Όλες οι προτάσεις\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Μη έγκυρο ποσό για νομισματοκοπία\",\"8Z5FPv\":\"Αποσυνδέστε το πορτοφόλι\",\"8Zz7s5\":\"περιουσιακά στοιχεία\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Ποσοστό χρησιμοποίησης\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Εμφάνιση\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Εισέρχεστε σε λειτουργία απομόνωσης\",\"9CDK3/\":[\"Ο δανεισμός δεν είναι επί του παρόντος διαθέσιμος για \",[\"0\"],\".\"],\"9GIj3z\":\"Μέγεθος Αποθεματικού\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Απαρτία\",\"9QHoGr\":\"Τρέχουσες ψήφοι\",\"9Rw96f\":[\"Αυτό το περιουσιακό στοιχείο έχει σχεδόν φτάσει στο όριο δανεισμού του. Υπάρχει μόνο \",[\"messageValue\"],\" διαθέσιμο για δανεισμό από αυτή την αγορά.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Αυτό το περιουσιακό στοιχείο έχει φτάσει στο όριο της προσφοράς του. Τίποτα δεν είναι διαθέσιμο για προμήθεια από αυτή την αγορά.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Δεδομένου ότι πρόκειται για ένα δοκιμαστικό δίκτυο, μπορείτε να αποκτήσετε οποιοδήποτε από τα περιουσιακά στοιχεία αν έχετε ETH στο πορτοφόλι σας\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Τα δάνεια σας\",\"AV7cGz\":\"Αναθεώρηση λεπτομερειών έγκρισης συναλλαγής\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Η δύναμη δανεισμού και τα περιουσιακά στοιχεία είναι περιορισμένα λόγω της λειτουργίας απομόνωσης.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Η χρήση εγγύησης είναι περιορισμένη λόγω της λειτουργίας απομόνωσης. <0>Μάθετε περισσότερα\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Κατηγορία περιουσιακών στοιχείων\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Βρύση\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Μεγιστο\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Διεκδίκηση \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Βρύση\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Η εγγύηση είναι (ως επί το πλείστον) το ίδιο νόμισμα που δανείζεται\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"Το υποκείμενο περιουσιακό στοιχείο δεν μπορεί να διασωθεί\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave ανά μήνα\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Εξασφάλιση\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Απενεργοποιημένο\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Ανάληψη \",[\"symbol\"]],\"EdQY6l\":\"Κανένα\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Μάθετε περισσότερα.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Δανεισμός χρησιμοποιημένης ισχύος\",\"FPKEug\":\"Η λειτουργία δεν υποστηρίζεται\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"ενεργοποίηση\",\"Fjw9N+\":\"Περιουσιακά στοιχεία προς προμήθεια\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Περιουσιακά Στοιχεία\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"τελειώνει\",\"GtP2hp\":[\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη λειτουργία Αποδοτικότητας (E-Mode) για την κατηγορία \",[\"0\"],\". Για να διαχειριστείτε τις κατηγορίες E-Mode επισκεφθείτε τον <0>Πίνακα ελέγχου.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"η\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Παράθυρο ξεκλειδώματος\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"Το συνολικό ποσό των περιουσιακών σας στοιχείων σε δολάρια ΗΠΑ που μπορούν να χρησιμοποιηθούν ως εγγύηση για δανεισμό περιουσιακών στοιχείων.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Περίοδος ψύξης\",\"IaA40H\":\"Ρευστοποίηση στο\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Κλειδώστε\",\"JZMxX0\":\"Δεν υπάρχει αρκετό υπόλοιπο στο πορτοφόλι σας\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Υπόλοιπο πορτοφολιού\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Αυτό αντιπροσωπεύει το κατώτατο όριο στο οποίο μια θέση δανεισμού θα θεωρηθεί υποεγγυημένη και θα υπόκειται σε ρευστοποίηση για κάθε εγγύηση. Για παράδειγμα, εάν μια εγγύηση έχει κατώτατο όριο ρευστοποίησης 80%, αυτό σημαίνει ότι η θέση θα ρευστοποιηθεί όταν η αξία του χρέους ανέρχεται στο 80% της αξίας της εγγύησης.\",\"KYAjf3\":\"Απομονωμένο\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Λήγει\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Λάθος δίκτυο\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Κλείδωμα\",\"KuBTQq\":\"Εισάγετε διεύθυνση ETH\",\"KvG1xW\":\"Διεκδίκηση\",\"L+8Lzs\":\"Τρέχον LTV\",\"L+qiq+\":\"Αγορά\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Δεν υπάρχει δικαίωμα ψήφου\",\"LL0zks\":\"Μπορεί να αποτελέσει εγγύηση\",\"LLdJWu\":\"Διεκδικήσιμο AAVE\",\"LSIpNK\":\"Δεν επιτρέπεται ο δανεισμός και η αποπληρωμή στο ίδιο block\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"Ly2enB\":\"This will cancel the order via an on-chain transaction. Note that the order will not be marked as cancelled in the CoW Protocol system, but will remain open and expire naturally. Keep in mind that a solver may already have filled your order.\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Διεύθυνση παραλήπτη\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"προβολή κλειδώματος\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, μεταβλητό\",\"MghdTe\":\"Εάν ο συντελεστής υγείας πέσει κάτω από το 1, ενδέχεται να ενεργοποιηθεί η ρευστοποίηση των εγγυήσεών σας.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Ακυρώσατε τη συναλλαγή.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Μη έγκυρη τιμή επιστροφής της συνάρτησης εκτελεστή flashloan\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Εκκρεμεί...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Τίποτα κλειδωμένο\",\"Nh9DAo\":[[\"m\"],\"λ\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Υπέρβαση του ανώτατου ορίου νομισματοκοπείου χωρίς αντίκρισμα\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Επισκόπηση πρότασης\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"απενεργοποιημένο\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Ανάληψη\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"Όταν πραγματοποιείται ρευστοποίηση, οι ρευστοποιητές επιστρέφουν έως και το 50% του ανεξόφλητου δανεισμένου ποσού για λογαριασμό του δανειολήπτη. Σε αντάλλαγμα, μπορούν να αγοράσουν τις εξασφαλίσεις με έκπτωση και να κρατήσουν τη διαφορά (ποινή ρευστοποίησης) ως μπόνους.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"Ο σταθμισμένος μέσος όρος του APY για όλα τα δανειακά περιουσιακά στοιχεία, συμπεριλαμβανομένων των κινήτρων.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Κατώτατο όριο ρευστοποίησης\",\"PctCOf\":\"A temporary contract will be used to execute the trade. Your wallet may show a warning for approving a new or empty address.\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Δεν έχει επιτευχθεί\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Διαφορικό\",\"RNK49r\":\"Μη έγκυρη υπογραφή\",\"RS0o7b\":\"Κατάσταση\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Λεπτομέρειες πρότασης\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Το περιουσιακό στοιχείο δεν περιλαμβάνεται στον κατάλογο\",\"Rj01Fz\":\"Σύνδεσμοι\",\"RmWFEe\":\"Κλείδωμα APR\",\"RtBLm7\":\"Ο συντελεστής υγείας είναι μικρότερος από το όριο ρευστοποίησης\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Ενεργοποιημένο\",\"SDav7h\":\"Κεφάλαια στην Μονάδα Ασφάλειας\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Σύνολο διαθέσιμων\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Απενεργοποίηση E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Ο πάροχος διευθύνσεων κοινόχρηστων ταμείων δεν είναι εγγεγραμμένος\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Δανεισμός\",\"TFxQlw\":\"Ποινή ρευστοποίησης\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"To περιουσιακό στοιχείο μπορεί να χρησιμοποιηθεί ως εγγύηση μόνο σε λειτουργία απομόνωσης.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος σταθερού επιτοκίου σε αυτό το αποθεματικό\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Το περιουσιακό στοιχείο δεν είναι δανείσιμο σε λειτουργία απομόνωσης\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Λεπτομέρειες\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"Τα κεφάλαια αυτά έχουν δανειστεί και δεν είναι διαθέσιμα για ανάληψη αυτή τη στιγμή.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Ο δείκτης μέγιστου LTV αντιπροσωπεύει τη μέγιστη δανειοληπτική ικανότητα μιας συγκεκριμένης εγγύησης. Για παράδειγμα, εάν μια εγγύηση έχει LTV 75%, ο χρήστης μπορεί να δανειστεί έως και 0,75 ETH στο κύριο νόμισμα για κάθε 1 ETH αξίας εγγύησης.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Δεν υπάρχουν ανταμοιβές για διεκδίκηση\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Συνδέστε το πορτοφόλι\",\"VMfYUK\":\"Ασφάλεια των κατατεθειμένων εξασφαλίσεών σας έναντι των δανειζόμενων περιουσιακών στοιχείων και της υποκείμενης αξίας τους.\",\"VOAZJh\":\"Σύνολο δανείων\",\"ViKYxK\":\"ΥΠΕΡ\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Αναθεώρηση λεπτομερειών συναλλαγής\",\"W5hVah\":\"Τίποτα δεν έχει παρασχεθεί ακόμη\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Μη υποστηριζόμενο\",\"WNGZwH\":\"Το E-Mode αυξάνει το LTV σας για μια επιλεγμένη κατηγορία περιουσιακών στοιχείων έως και <0/>. <1>Μάθετε περισσότερα\",\"WPWG/y\":\"Κατάσταση & διαμόρφωση αποθεματικού\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"Ο χρήστης δεν μπορεί να κάνει ανάληψη μεγαλύτερη από το διαθέσιμο υπόλοιπο\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Για να δανειστείτε πρέπει να προσκομίσετε οποιοδήποτε περιουσιακό στοιχείο που θα χρησιμοποιηθεί ως εγγύηση.\",\"X/ITG9\":\"Κείμενο σφάλματος αντιγραφής\",\"X3Pp6x\":\"Χρησιμοποιείται ως εγγύηση\",\"X4Zt7j\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή η εφεδρεία βρίσκεται σε παύση\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy+o6U\":\"For security reasons, limit orders are not supported for Native tokens. To place a limit order, use the wrapped version.\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"ΨΗΦΙΣΤΕ ΚΑΤΑ\",\"YDIOks\":\"Ενεργοποίηση E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"Εάν το δάνειο προς αξία υπερβεί το όριο ρευστοποίησης, η παρεχόμενη εγγύηση σας μπορεί να ρευστοποιηθεί.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Δεν τηρήθηκαν οι όροι επανεξισορρόπησης των επιτοκίων\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Διακυβέρνηση Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Λειτουργία αποδοτικότητας (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Μέγιστη περικοπή\",\"ZfUGFb\":\"Πριν από την προμήθεια\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Αξία ρευστοποίησης\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"ενεργοποιημένο\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Χρόνος που απομένει για το ξεκλείδωμα\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Ψηφίστε ΚΑΤΑ\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Οι παράμετροι της συστοιχίας που θα έπρεπε να είναι ίσου μήκους δεν είναι\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Δανεισμός APY, μεταβλητό\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Προειδοποίηση περιόδου ψύξης\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Περιουσιακό στοιχείο\",\"bXQ/Og\":\"Μοιραστείτε το στο twitter\",\"bXr0ee\":\"Τα απομονωμένα περιουσιακά στοιχεία έχουν περιορισμένη δανειοληπτική ικανότητα και άλλα περιουσιακά στοιχεία δεν μπορούν να χρησιμοποιηθούν ως εγγύηση.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Το αιτούμενο ποσό είναι μεγαλύτερο από το μέγιστο μέγεθος δανείου στη λειτουργία σταθερού επιτοκίου\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Προσφορά\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Η διεύθυνση δεν είναι συμβόλαιο\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Δεν μπορείτε να αποσύρετε αυτό το ποσό, διότι θα προκληθεί κλήση εγγύησης\",\"cBc+4A\":\"Αυτό είναι το συνολικό ποσό που μπορείτε να δανειστείτε. Μπορείτε να δανειστείτε με βάση την εξασφάλισή σας και μέχρι να επιτευχθεί το ανώτατο όριο δανεισμού.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Λεπτομέρειες κινδύνου\",\"cNT+ij\":\"Ο δανεισμός δεν είναι διαθέσιμος επειδή έχετε ενεργοποιήσει τη Λειτουργία Αποδοτικότητας (E-Mode) και τη λειτουργία Απομόνωσης. Για να διαχειριστείτε τη λειτουργία E-Mode και τη λειτουργία Απομόνωσης, επισκεφθείτε τον <0>Πίνακα ελέγχου.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Ψηφίστε ΥΠΕΡ\",\"ckf7gX\":[\"Αποπληρώνοντας \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Συζήτηση φόρουμ\",\"csDS2L\":\"Διαθέσιμο\",\"cu7Stb\":\"Δεν συμμετείχατε στην παρούσα πρόταση\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Διακυβέρνηση\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Η επικύρωση του Ltv απέτυχε\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Δεν έχετε αρκετά χρήματα στο πορτοφόλι σας για να αποπληρώσετε ολόκληρο το ποσό. Εάν προχωρήσετε στην αποπληρωμή με το τρέχον ποσό των χρημάτων σας, θα εξακολουθείτε να έχετε μια μικρή θέση δανεισμού στο ταμπλό σας.\",\"dXUQFX\":\"Περιουσιακά στοιχεία προς δανεισμό\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Χρησιμοποίηση εγγυήσεων\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Η δράση απαιτεί ενεργό απόθεμα\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Σύνολο δανεικών\",\"ecqEvn\":\"Το υπόλοιπο των εγγυήσεων είναι 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Ξεκλειδώστε τώρα\",\"evw5ha\":\"Καθαρή αξία\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Αλλάξατε σε ποσοστό \",[\"0\"]],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Το τρέχον δάνειο προς αξία με βάση τις παρεχόμενες εξασφαλίσεις σας.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Υπόλοιπο\",\"fu1Dbh\":[\"Ανάληψη \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g4Ius4\":\"This is the fee for executing position changes, set by governance.\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Λειτουργία Testnet\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"Ο χρήστης προσπαθεί να δανειστεί πολλαπλά περιουσιακά στοιχεία, συμπεριλαμβανομένου ενός απομονωμένου περιουσιακού στοιχείου\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Η μηδενική διεύθυνση δεν είναι έγκυρη\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Το καθαρό ΑΡΥ είναι η συνδυασμένη επίδραση όλων των θέσεων προσφοράς και δανεισμού στην καθαρή αξία, συμπεριλαμβανομένων των κινήτρων. Είναι δυνατόν να υπάρχει αρνητικό καθαρό APY εάν το χρεωστικό APY είναι υψηλότερο από το προσφερόμενο APY.\",\"gzcch9\":\"Μη έγκυρη αμοιβή πρωτοκόλλου γέφυρας\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Καθαρό APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Το % της συνολικής δανειοληπτικής σας δύναμης που χρησιμοποιείται. Αυτό βασίζεται στο ποσό της παρεχόμενης εξασφάλισής σας και στο συνολικό ποσό που μπορείτε να δανειστείτε.\",\"hehnjM\":\"Ποσό\",\"hjDCQr\":\"Υπήρξε κάποιο σφάλμα. Προσπαθήστε να αλλάξετε τις παραμέτρους ή <0><1>αντιγράψτε το σφάλμα\",\"hom7qf\":\"Διεκδίκηση\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Δανεισμός \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Ασυνεπείς παράμετροι flashloan\",\"iEPVHF\":\"Δεν έχει αρκετή δύναμη ψήφου για να συμμετάσχει στην παρούσα πρόταση\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"Ψηφίσατε \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Εισάγετε ένα ποσό\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens δεν είναι το ίδιο με το να τα κλειδώνετε. Εάν επιθυμείτε να κλειδώσετε τα\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"H χρήση εγγυήσεων είναι περιορισμένη λόγω της λειτουργίας Απομόνωσης.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Προμηθεύοντας το\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Απενεργοποίηση E-Mode\",\"jKYzR1\":\"Ενεργοποίηση E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"δ\"],\"jbFMap\":\"Χρόνος ψύξης που έχει απομείνει\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"Στο E-Mode ορισμένα περιουσιακά στοιχεία δεν είναι δανείσιμα. Βγείτε από το E-Mode για να αποκτήσετε πρόσβαση σε όλα τα περιουσιακά στοιχεία\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Μη διαθέσιμο\",\"k/sb6z\":\"Επιλέξτε γλώσσα\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Διεκδίκηση \",[\"0\"]],\"kH6wUX\":\"Επίδραση στην τιμή\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Για την εξόφληση εκ μέρους ενός χρήστη απαιτείται ένα ρητό ποσό προς εξόφληση\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Υπέρβαση του ανώτατου ορίου προσφοράς\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Το ανώτατο όριο χρέους δεν είναι μηδενικό\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Αγγλικά\",\"lfEjIE\":\"Μάθετε περισσότερα στον οδηγό <0>Συχνών Ερωτήσεων\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Συνολικές εκπομπές ανά ημέρα\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Εντάξει, Κλείσιμο\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Το περιουσιακό στοιχείο δεν μπορεί να χρησιμοποιηθεί ως εγγύηση.\",\"n+SX4g\":\"Προγραμματιστές\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Προσφορά apy\",\"nJgsQu\":\"Με δύναμη ψήφου <0/>\",\"nLC6tu\":\"Γαλλικά\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Μπορεί να εκτελεστεί\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"ω\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nweCqF\":\"Cancelling order...\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Ο συντελεστής υγείας και το δάνειο προς αξία καθορίζουν τη διασφάλιση των εξασφαλίσεών σας. Για να αποφύγετε τις ρευστοποιήσεις μπορείτε να παράσχετε περισσότερες εξασφαλίσεις ή να εξοφλήσετε δανειακές θέσεις.\",\"o1xc2V\":\"Η προσφορά AToken δεν είναι μηδενική\",\"o5ooMr\":\"Χρέος\",\"o7J4JM\":\"Φίλτρο\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Ψύξτε για ξεκλείδωμα\",\"oJ5ZiG\":\"Ο χρήστης δεν έχει ανεξόφλητο χρέος μεταβλητού επιτοκίου σε αυτό το αποθεματικό\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Το σταθερό επιτόκιο θα <0>μείνει το ίδιο για όλη τη διάρκεια του δανείου σας. Συνιστάται για μακροχρόνιες περιόδους δανεισμού και για χρήστες που προτιμούν την προβλεψιμότητα.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Διαθέσιμο για προμήθεια\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"Αυτό το περιουσιακό στοιχείο έχει φθάσει στο ανώτατο όριο δανεισμού του. Τίποτα δεν είναι διαθέσιμο για δανεισμό από αυτή την αγορά.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Το υποκείμενο υπόλοιπο πρέπει να είναι μεγαλύτερο από 0\",\"pgWG9H\":\"Δεν υπάρχει αρκετό κλειδωμένο υπόλοιπο\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"παρακαλούμε ελέγξτε ότι το ποσό που θέλετε να παρέχετε δεν χρησιμοποιείται επί του παρόντος για κλείδωμα. Εάν χρησιμοποιείται για κλείδωμα, η συναλλαγή σας ενδέχεται να αποτύχει.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Καταλαβαίνω πώς λειτουργεί η ψύξη (\",[\"0\"],\") και το ξεκλείδωμα (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"Ο καλών αυτής της συνάρτησης πρέπει να είναι ένα κοινόχρηστο ταμείο\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Κλειδωμένο\",\"qB4kPi\":\"Προσφορά APY\",\"qENI8q\":\"Γενικές ρυθμίσεις\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"αντιγράψτε το σφάλμα\",\"qXCkEM\":\"Συνδέστε το πορτοφόλι σας για να δείτε τις προμήθειες, τα δάνεια και τις ανοιχτές θέσεις σας.\",\"qY2jnw\":\"Μη έγκυρη λήξη\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Μη έγκυρη ποσότητα προς καύση\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Το ποσό πρέπει να είναι μεγαλύτερο από 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Εμφάνιση περιουσιακών στοιχείων με υπόλοιπο 0\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Διεκδικήστε όλες τις ανταμοιβές\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"ΚΑΤΑ\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Μπορείτε να ξεκλειδώσετε εδώ\",\"smJNwH\":\"Διαθέσιμο για δανεισμό\",\"solypO\":\"Ο παράγοντας υγείας δεν είναι κάτω από το όριο\",\"sr0UJD\":\"Πηγαίνετε Πίσω\",\"ss5GCK\":\"Η διεύθυνση του παρόχου διευθύνσεων κοινόχρηστου ταμείου είναι άκυρη\",\"swEgK4\":\"Οι πληροφορίες ψήφου σας\",\"t+wtgf\":\"Τίποτα δανεισμένο ακόμα\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Τιμή Oracle\",\"tFZLf8\":\"Αυτός ο υπολογισμός gas είναι μόνο μια εκτίμηση. Το πορτοφόλι σας θα καθορίσει την τιμή της συναλλαγής. Μπορείτε να τροποποιήσετε τις ρυθμίσεις gas απευθείας από τον πάροχο του πορτοφολιού σας.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"Παρακαλώ, συνδέστε το πορτοφόλι σας\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Οι προμήθειές σας\",\"u3ZeYl\":\"Η συναλλαγή απέτυχε\",\"u706uF\":\"Άκυρη πριμοδότηση flashloan\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Για την αποπληρωμή ενός συγκεκριμένου τύπου χρέους, ο χρήστης πρέπει να έχει χρέος αυτού του τύπου\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Απόκρυψη\",\"vMba49\":\"Ο δανεισμός δεν είναι ενεργοποιημένος\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Γλώσσα\",\"vesuBJ\":\"Σας επιτρέπει να αποφασίσετε αν θα χρησιμοποιήσετε ένα παρεχόμενο περιουσιακό στοιχείο ως εγγύηση. Ένα περιουσιακό στοιχείο που χρησιμοποιείται ως εγγύηση θα επηρεάσει τη δανειοληπτική σας ικανότητα και τον συντελεστή υγείας.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Σταθερό νόμισμα\",\"w/JtJ3\":\"Η σταθερή προσφορά χρέους δεν είναι μηδενική\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Ανταμοιβές APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Εσείς \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"Ο καλών της συνάρτησης δεν είναι AToken\",\"wZFvVU\":\"ΨΗΦΙΣΤΕ ΥΠΕΡ\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Βρύση \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Τρέχον διαφορικό\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, παρακαλούμε μεταβείτε στο\",\"xNy/UG\":\"Αποπληρωμή με\",\"xPm8wv\":\"Μάθετε περισσότερα για τους κινδύνους\",\"xXYpZl\":[[\"0\"],\" Βρύση\"],\"xaVBSS\":\"Οι πληροφορίες σας\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Σκοτεινή λειτουργία\",\"yCrG6m\":\"Συνολικό μέγεθος της αγοράς\",\"yJUUbn\":\"Επισκόπηση συναλλαγής\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Μη έγκυρη διεύθυνση\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Δεν υπάρχουν αρκετά κεφάλαια στο\",[\"0\"],\"αποθεματικό για δανεισμό\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Κλείσιμο\",\"z4uGQg\":\"Υπέρβαση του ανώτατου ορίου χρέους\",\"z5JUmg\":[\"Estimated costs are \",[\"0\"],\"% of the sell amount. This order is unlikely to be filled.\"],\"z5UQOM\":\"Η εγγύηση που έχει επιλεγεί δεν μπορεί να ρευστοποιηθεί\",\"z5Y+p6\":[\"Παροχή \",[\"symbol\"]],\"zCjNKs\":\"Η ενέργεια δεν μπορεί να εκτελεστεί επειδή το αποθεματικό έχει παγώσει\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Υπολειπόμενο χρέος\",\"zmTPiV\":\"Υπόλοιπο προσφοράς\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Μενού\",\"zwWKhA\":\"Μάθετε περισσότερα\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\",\"+EGVI0\":\"Receive (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Φαίνεται ότι δεν μπορούμε να αλλάξουμε το δίκτυο αυτόματα. Ελέγξτε αν μπορείτε να το αλλάξετε από το πορτοφόλι.\",\"+kLZGu\":\"Supplied asset amount\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Minimum staked Aave amount\",\"00OflG\":\"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.\",\"08/rZ9\":\"The cooldown period is the time required prior to unstaking your tokens (20 days). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window.<0>Learn more\",\"1Onqx8\":[\"Έγκριση του \",[\"symbol\"],\"...\"],\"1m9Qqc\":\"Withdrawing and Switching\",\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Blocked Address\",\"2bAhR7\":\"Meet GHO\",\"2o/xRt\":\"Επίτευξη του ανώτατου ορίου εφοδιασμού στο αποθεματικό-στόχο. Δοκιμάστε να \\nμειώσετε την ποσότητα.\",\"3O8YTV\":\"Total interest accrued\",\"4iPAI3\":\"Minimum GHO borrow amount\",\"6NGLTR\":\"Discountable amount\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Discount parameters are decided by the Aave community and may be changed over time. Check Governance for updates and vote to participate. <0>Learn more\",\"7sofdl\":\"Withdraw and Switch\",\"ARu1L4\":\"Repaid\",\"B6aXGH\":\"Σταθερό\",\"B9Gqbz\":\"Variable rate\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"At a discount\",\"CMHmbm\":\"Slippage\",\"EBL9Gz\":\"COPIED!\",\"ES8dkb\":\"Fixed rate\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Discount\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Save and share\",\"JK9zf1\":[\"Estimated compounding interest, including discount for Staking \",[\"0\"],\"AAVE in Safety Module.\"],\"JPrLjO\":\"Δεν μπορείτε να χρησιμοποιήσετε αυτό το νόμισμα ως εγγύηση\",\"JU6q+W\":\"Ανταμοιβή(ες) προς διεκδίκηση\",\"K05qZY\":\"Withdraw & Switch\",\"KRpokz\":\"VIEW TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Η ενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση αυξάνει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας. Ωστόσο, μπορεί να ρευστοποιηθεί εάν ο συντελεστής υγείας σας πέσει κάτω από το 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Απενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Send feedback\",\"TeCFg/\":\"Borrow rate change\",\"TskbEN\":\"Holders of stkAAVE receive a discount on the GHO borrowing rate\",\"TtZL6q\":\"Discount model parameters\",\"Tz0GSZ\":\"blocked activities\",\"UE3KJZ\":\"Transaction history is not currently available for this market\",\"W8ekPc\":\"Back to Dashboard\",\"XZzneG\":\"Θα βγείτε από τη λειτουργία απομόνωσης και άλλα tokens μπορούν πλέον να χρησιμοποιηθούν ως εγγύηση\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Η απενεργοποίηση αυτού του περιουσιακού στοιχείου ως εγγύηση επηρεάζει τη δανειοληπτική σας ικανότητα και τον Συντελεστή Υγείας.\",\"aX31hk\":\"Your balance is lower than the selected amount.\",\"al6Pyz\":\"Exceeds the discount\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Δεν υπάρχουν επαρκείς εγγυήσεις για την αποπληρωμή αυτού του ποσού χρέους με\",\"cqnmnD\":\"Effective interest rate\",\"dMtLDE\":\"to\",\"dpc0qG\":\"Μεταβλητό\",\"euScGB\":\"APY with discount applied\",\"fHcELk\":\"Καθαρό APR\",\"flRCF/\":\"Staking discount\",\"gncRUO\":\"This address is blocked on app.aave.com because it is associated with one or more\",\"gr8mYw\":\"You may borrow up to <0/> GHO at <1/> (max discount)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Borrow balance\",\"i2JTiw\":\"You may enter a custom amount in the field.\",\"jMam5g\":[[\"0\"],\" Υπόλοιπο\"],\"jpctdh\":\"View\",\"kwwn6i\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate. The discount applies to 100 GHO for every 1 stkAAVE held. Use the calculator below to see GHO borrow rate with the discount applied.\",\"lNVG7i\":\"Select an asset\",\"lt6bpt\":\"Collateral to repay with\",\"mIM0qu\":\"Expected amount to repay\",\"mzI/c+\":\"Download\",\"n8Psk4\":\"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.\",\"nOy4ob\":\"We suggest you go back to the Dashboard.\",\"nakd8r\":\"stkAAVE holders get a discount on GHO borrow rate\",\"nh2EJK\":[\"Παρακαλώ μεταβείτε στο \",[\"networkName\"],\".\"],\"ntkAoE\":\"Discount applied for <0/> staking AAVE\",\"o4tCu3\":\"Borrow APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"Η περίοδος ψύξης είναι \",[\"0\"],\". Μετά την \",[\"1\"],\" περίοδο ψύξης, θα εισέλθετε στο παράθυρο ξεκλειδώματος \",[\"2\"],\". Θα συνεχίσετε να λαμβάνετε ανταμοιβές κατά τη διάρκεια της ψύξης και του παραθύρου ξεκλειδώματος.\"],\"p3j+mb\":\"Το υπόλοιπο της ανταμοιβής σας είναι 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interest accrued\",\"rf8POi\":\"Borrowed asset amount\",\"ruc7X+\":\"Add stkAAVE to see borrow APY with the discount\",\"sK+Nag\":\"Αναθεώρηση συναλλαγής\",\"t81DpC\":[\"Approve \",[\"symbol\"],\" to continue\"],\"umICAY\":\"<0><1><2/>Add stkAAVE to see borrow rate with discount\",\"uwAUvj\":\"COPY IMAGE\",\"v8x7Mg\":\"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.\",\"wRRqvW\":\"Δεν έχετε προμήθειες σε αυτό το νόμισμα\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Ενεργοποίηση \",[\"symbol\"],\" ως εγγύηση\"],\"yW1oWB\":\"Τύπος APY\",\"yhvj6d\":\"Δεν μπορείτε να αλλάξετε τη χρήση ως λειτουργία εγγύησης για αυτό το νόμισμα, διότι θα προκαλέσει κλήση εγγύησης\",\"zevmS2\":\"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index 0347a693a7..12ced62a6f 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"If you DO NOT unstake within \",[\"0\"],\" of unstake window, you will need to activate cooldown process again.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participating in this \",[\"symbol\"],\" reserve gives annualized rewards.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Borrow cap\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Stable borrowing is not enabled\",\"/yQcJM\":\"Total worth\",\"00AB2i\":\"User did not borrow the specified currency\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"This is the total amount that you are able to supply to in this reserve. You are able to supply your wallet balance up until the supply cap is reached.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Please connect a wallet to view your personal information here.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Liquidation <0/> threshold\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"View details\",\"2FYpfJ\":\"More\",\"2O3qp5\":\"Available liquidity\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Stable borrowing is enabled\",\"34Qfwy\":\"Borrow cap is exceeded\",\"39eQRj\":[\"Borrow \",[\"symbol\"]],\"3BL1xB\":\"Total supplied\",\"3K0oMo\":\"Remaining supply\",\"3MoZhl\":\"There is not enough collateral to cover a new borrow\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Supply \",[\"symbol\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Repay\",\"3qsjtp\":\"The weighted average of APY for all supplied assets, including incentives.\",\"3rL+os\":\"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Voting results\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"This asset has almost reached its supply cap. There can only be \",[\"messageValue\"],\" supplied to this market.\"],\"5cZ/KX\":\"Variable debt supply is not zero\",\"5che++\":\"To request access for this permissioned market, please visit: <0>Acces Provider Name\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Allowance required action\",\"5rsnKT\":\"Available rewards\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Overview\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Collateral\",\"65A04M\":\"Spanish\",\"68ANm7\":\"Withdrawing GHO\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Repay \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Voting power\",\"6f8S68\":\"Markets\",\"6g1gi0\":\"Proposals\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Switch Network\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Health factor\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Reached\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Claim all\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7i1oxe\":\"Withdrawing and Swapping\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Dashboard\",\"8+6BI0\":\"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions\",\"87pUEW\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"All proposals\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Invalid amount to mint\",\"8Z5FPv\":\"Disconnect Wallet\",\"8Zz7s5\":\"assets\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Utilization Rate\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Show\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"You are entering Isolation mode\",\"9CDK3/\":[\"Borrowing is currently unavailable for \",[\"0\"],\".\"],\"9GIj3z\":\"Reserve Size\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Current votes\",\"9Rw96f\":[\"This asset has almost reached its borrow cap. There is only \",[\"messageValue\"],\" available to be borrowed from this market.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"This asset has reached its supply cap. Nothing is available to be supplied from this market.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Since this is a test network, you can get any of the assets if you have ETH on your wallet\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Your borrows\",\"AV7cGz\":\"Review approval tx details\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Borrowing power and assets are limited due to Isolation mode.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Collateral usage is limited because of isolation mode. <0>Learn More\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Asset category\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Claim \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Faucet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Collateral is (mostly) the same currency that is being borrowed\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"The underlying asset cannot be rescued\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave per month\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collateralization\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Disabled\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Withdrawing \",[\"symbol\"]],\"EdQY6l\":\"None\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Learn more.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Borrow power used\",\"FPKEug\":\"Operation not supported\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"on\",\"Fjw9N+\":\"Assets to supply\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Assets\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"ends\",\"GtP2hp\":[\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for \",[\"0\"],\" category. To manage E-Mode categories visit your <0>Dashboard.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Unstake window\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Cooldown period\",\"IaA40H\":\"Liquidation at\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Not enough balance on your wallet\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Wallet balance\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"This represents the threshold at which a borrow position will be considered undercollateralized and subject to liquidation for each collateral. For example, if a collateral has a liquidation threshold of 80%, it means that the position will be liquidated when the debt value is worth 80% of the collateral value.\",\"KYAjf3\":\"Isolated\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Expires\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Wrong Network\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Enter ETH address\",\"KvG1xW\":\"Claiming\",\"L+8Lzs\":\"Current LTV\",\"L+qiq+\":\"Market\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"No voting power\",\"LL0zks\":\"Can be collateral\",\"LLdJWu\":\"Claimable AAVE\",\"LSIpNK\":\"Borrow and repay in same block is not allowed\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Recipient address\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"staking view\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"If the health factor goes below 1, the liquidation of your collateral might be triggered.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"You cancelled the transaction.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Invalid return value of the flashloan executor function\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pending...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nothing staked\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Unbacked mint cap is exceeded\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Proposal overview\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"disabled\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Withdraw\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"When a liquidation occurs, liquidators repay up to 50% of the outstanding borrowed amount on behalf of the borrower. In return, they can buy the collateral at a discount and keep the difference (liquidation penalty) as a bonus.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"The weighted average of APY for all borrowed assets, including incentives.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Liquidation threshold\",\"PctCOf\":\"A temporary contract will be used to execute the trade. Your wallet may show a warning for approving a new or empty address.\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Not reached\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Differential\",\"RNK49r\":\"Invalid signature\",\"RS0o7b\":\"State\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Proposal details\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Asset is not listed\",\"Rj01Fz\":\"Links\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"Health factor is lesser than the liquidation threshold\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Enabled\",\"SDav7h\":\"Funds in the Safety Module\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Total available\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Disabling E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Pool addresses provider is not registered\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Borrow\",\"TFxQlw\":\"Liquidation penalty\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"Asset can only be used as collateral in isolation mode only.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"User does not have outstanding stable rate debt on this reserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Asset is not borrowable in isolation mode\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Details\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"These funds have been borrowed and are not available for withdrawal at this time.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"The Maximum LTV ratio represents the maximum borrowing power of a specific collateral. For example, if a collateral has an LTV of 75%, the user can borrow up to 0.75 worth of ETH in the principal currency for every 1 ETH worth of collateral.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No rewards to claim\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Connect wallet\",\"VMfYUK\":\"Safety of your deposited collateral against the borrowed assets and its underlying value.\",\"VOAZJh\":\"Total borrows\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Review tx details\",\"W5hVah\":\"Nothing supplied yet\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Unbacked\",\"WNGZwH\":\"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more\",\"WPWG/y\":\"Reserve status & configuration\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"User cannot withdraw more than the available balance\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"To borrow you need to supply any asset to be used as collateral.\",\"X/ITG9\":\"Copy error text\",\"X3Pp6x\":\"Used as collateral\",\"X4Zt7j\":\"Action cannot be performed because the reserve is paused\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy+o6U\":\"For security reasons, limit orders are not supported for Native tokens. To place a limit order, use the wrapped version.\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTE NAY\",\"YDIOks\":\"Enabling E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Interest rate rebalance conditions were not met\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Aave Governance\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Efficiency mode (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Before supplying\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Liquidation value\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"enabled\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Time left to unstake\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Array parameters that should be equal length are not\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Borrow APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Cooldown period warning\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Asset\",\"bXQ/Og\":\"Share on twitter\",\"bXr0ee\":\"Isolated assets have limited borrowing power and other assets cannot be used as collateral.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"The requested amount is greater than the max loan size in stable rate mode\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Supply\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Address is not a contract\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"You can not withdraw this amount because it will cause collateral call\",\"cBc+4A\":\"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Risk details\",\"cNT+ij\":\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) and Isolation mode. To manage E-Mode and Isolation mode visit your <0>Dashboard.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Repaying \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Forum discussion\",\"csDS2L\":\"Available\",\"cu7Stb\":\"You did not participate in this proposal\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Governance\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Ltv validation failed\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"You don’t have enough funds in your wallet to repay the full amount. If you proceed to repay with your current amount of funds, you will still have a small borrowing position in your dashboard.\",\"dXUQFX\":\"Assets to borrow\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Collateral usage\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Action requires an active reserve\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Total borrowed\",\"ecqEvn\":\"The collateral balance is 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Unstake now\",\"evw5ha\":\"Net worth\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"You switched to \",[\"0\"],\" rate\"],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Your current loan to value based on your collateral supplied.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Withdraw \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g4Ius4\":\"This is the fee for executing position changes, set by governance.\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"User is trying to borrow multiple assets including a siloed one\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Zero address not valid\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Net APY is the combined effect of all supply and borrow positions on net worth, including incentives. It is possible to have a negative net APY if debt APY is higher than supply APY.\",\"gzcch9\":\"Invalid bridge protocol fee\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Net APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"The % of your total borrowing power used. This is based on the amount of your collateral supplied and the total amount that you can borrow.\",\"hehnjM\":\"Amount\",\"hjDCQr\":\"There was some error. Please try changing the parameters or <0><1>copy the error\",\"hom7qf\":\"Claim\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Borrowing \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Inconsistent flashloan parameters\",\"iEPVHF\":\"Not enough voting power to participate in this proposal\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"You voted \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Enter an amount\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens is not the same as staking them. If you wish to stake your\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"Collateral usage is limited because of Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Supplying your\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Disable E-Mode\",\"jKYzR1\":\"Enable E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Cooldown time left\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Unavailable\",\"k/sb6z\":\"Select language\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Claim \",[\"0\"]],\"kH6wUX\":\"Price impact\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"To repay on behalf of a user an explicit amount to repay is needed\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Supply cap is exceeded\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Debt ceiling is not zero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"English\",\"lfEjIE\":\"Learn more in our <0>FAQ guide\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Total emission per day\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Ok, Close\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Asset cannot be used as collateral.\",\"n+SX4g\":\"Developers\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Supply apy\",\"nJgsQu\":\"With a voting power of <0/>\",\"nLC6tu\":\"French\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Can be executed\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Your health factor and loan to value determine the assurance of your collateral. To avoid liquidations you can supply more collateral or repay borrow positions.\",\"o1xc2V\":\"AToken supply is not zero\",\"o5ooMr\":\"Debt\",\"o7J4JM\":\"Filter\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown to unstake\",\"oJ5ZiG\":\"User does not have outstanding variable rate debt on this reserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Stable interest rate will <0>stay the same for the duration of your loan. Recommended for long-term loan periods and for users who prefer predictability.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Available to supply\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"The underlying balance needs to be greater than 0\",\"pgWG9H\":\"Not enough staked balance\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"please check that the amount you want to supply is not currently being used for staking. If it is being used for staking, your transaction might fail.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"I understand how cooldown (\",[\"0\"],\") and unstaking (\",[\"1\"],\") work\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"The caller of this function must be a pool\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Staked\",\"qB4kPi\":\"Supply APY\",\"qENI8q\":\"Global settings\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copy the error\",\"qXCkEM\":\"Please connect your wallet to see your supplies, borrowings, and open positions.\",\"qY2jnw\":\"Invalid expiration\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Invalid amount to burn\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Amount must be greater than 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Show assets with 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Claim all rewards\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NAY\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"You unstake here\",\"smJNwH\":\"Available to borrow\",\"solypO\":\"Health factor is not below the threshold\",\"sr0UJD\":\"Go Back\",\"ss5GCK\":\"The address of the pool addresses provider is invalid\",\"swEgK4\":\"Your voting info\",\"t+wtgf\":\"Nothing borrowed yet\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Oracle price\",\"tFZLf8\":\"This gas calculation is only an estimation. Your wallet will set the price of the transaction. You can modify the gas settings directly from your wallet provider.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"Please, connect your wallet\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Your supplies\",\"u3ZeYl\":\"Transaction failed\",\"u706uF\":\"Invalid flashloan premium\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Hide\",\"vMba49\":\"Borrowing is not enabled\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Allows you to decide whether to use a supplied asset as collateral. An asset used as collateral will affect your borrowing power and health factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"Stable debt supply is not zero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Rewards APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"You \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"The caller of the function is not an AToken\",\"wZFvVU\":\"VOTE YAE\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Current differential\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, please go to the\",\"xNy/UG\":\"Repay with\",\"xPm8wv\":\"Learn more about risks involved\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Your info\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Dark mode\",\"yCrG6m\":\"Total market size\",\"yJUUbn\":\"Transaction overview\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Not a valid address\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"There are not enough funds in the\",[\"0\"],\"reserve to borrow\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Close\",\"z4uGQg\":\"Debt ceiling is exceeded\",\"z5JUmg\":[\"Estimated costs are \",[\"0\"],\"% of the sell amount. This order is unlikely to be filled.\"],\"z5UQOM\":\"The collateral chosen cannot be liquidated\",\"z5Y+p6\":[\"Supplying \",[\"symbol\"]],\"zCjNKs\":\"Action cannot be performed because the reserve is frozen\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Remaining debt\",\"zmTPiV\":\"Supply balance\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Learn more\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"If you DO NOT unstake within \",[\"0\"],\" of unstake window, you will need to activate cooldown process again.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participating in this \",[\"symbol\"],\" reserve gives annualized rewards.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Borrow cap\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Borrowing this amount will reduce your health factor and increase risk of liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"Stable borrowing is not enabled\",\"/yQcJM\":\"Total worth\",\"00AB2i\":\"User did not borrow the specified currency\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Rate change\",\"0BF3yK\":\"Sorry, we couldn't find the page you were looking for.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Liquidation risk\",\"0ojY+Y\":\"Current v2 Balance\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Collateral change\",\"0wGCWc\":\"This is the total amount that you are able to supply to in this reserve. You are able to supply your wallet balance up until the supply cap is reached.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Price data is not currently available for this reserve on the protocol subgraph\",\"1LjK22\":\"Transaction history\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Please connect a wallet to view your personal information here.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Liquidation <0/> threshold\",\"1t7rez\":\"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"View details\",\"2FYpfJ\":\"More\",\"2O3qp5\":\"Available liquidity\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Asset cannot be migrated due to supply cap restriction in \",[\"marketName\"],\" v3 market.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave is a fully decentralized, community governed protocol by the AAVE token-holders. AAVE token-holders collectively discuss, propose, and vote on upgrades to the protocol. AAVE token-holders (Ethereum network only) can either vote themselves on new proposals or delagate to an address of choice. To learn more check out the Governance\",\"2a6G7d\":\"Please enter a valid wallet address.\",\"2eBWE6\":\"I acknowledge the risks involved.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"Stable borrowing is enabled\",\"34Qfwy\":\"Borrow cap is exceeded\",\"39eQRj\":[\"Borrow \",[\"symbol\"]],\"3BL1xB\":\"Total supplied\",\"3K0oMo\":\"Remaining supply\",\"3MoZhl\":\"There is not enough collateral to cover a new borrow\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Supply \",[\"symbol\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Repay\",\"3qsjtp\":\"The weighted average of APY for all supplied assets, including incentives.\",\"3rL+os\":\"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.\",\"42UgDM\":[\"Migrate to \",[\"0\"],\" v3 Market\"],\"49UFQA\":\"Voting results\",\"4DMZUI\":\"View Transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Terms\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Sign to continue\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test assets at\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Debt ceiling limits the amount possible to borrow against this asset by protocol users. Debt ceiling is specific to assets in isolation mode and is denoted in USD.\",\"5Ncc6j\":[\"This asset has almost reached its supply cap. There can only be \",[\"messageValue\"],\" supplied to this market.\"],\"5cZ/KX\":\"Variable debt supply is not zero\",\"5che++\":\"To request access for this permissioned market, please visit: <0>Acces Provider Name\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" received\"],\"5hDe9v\":\"Allowance required action\",\"5rsnKT\":\"Available rewards\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"View all votes\",\"6/dCYd\":\"Overview\",\"60crCe\":\"All transactions\",\"62Xcjh\":\"Collateral\",\"65A04M\":\"Spanish\",\"68ANm7\":\"Withdrawing GHO\",\"6G8s+q\":\"Signing\",\"6Jrv+z\":[\"Repay \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Voting power\",\"6f8S68\":\"Markets\",\"6g1gi0\":\"Proposals\",\"6gvoHP\":\"Copy error message\",\"6h3Q5G\":\"repaid\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Switch Network\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Health factor\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Reached\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.\",\"7aKlMS\":\"Share on Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Claim all\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7i1oxe\":\"Withdrawing and Swapping\",\"7l88b8\":\"Data couldn't be fetched, please reload graph.\",\"7p5kLi\":\"Dashboard\",\"8+6BI0\":\"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions\",\"87pUEW\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets.\"],\"8F1i42\":\"Page not found\",\"8G8M0u\":\"Loading data...\",\"8Iu1QS\":\"withdrew\",\"8JL93T\":\"All proposals\",\"8Q51DU\":\"Add to wallet\",\"8X/oyn\":\"Invalid amount to mint\",\"8Z5FPv\":\"Disconnect Wallet\",\"8Zz7s5\":\"assets\",\"8aLW8H\":\"Balance to revoke\",\"8bOT3H\":\"Utilization Rate\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"View contract\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Show\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"You are entering Isolation mode\",\"9CDK3/\":[\"Borrowing is currently unavailable for \",[\"0\"],\".\"],\"9GIj3z\":\"Reserve Size\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Staking balance\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Current votes\",\"9Rw96f\":[\"This asset has almost reached its borrow cap. There is only \",[\"messageValue\"],\" available to be borrowed from this market.\"],\"9Xj/qR\":[\"Some migrated assets will not be used as collateral due to enabled isolation mode in \",[\"marketName\"],\" V3 Market. Visit <0>\",[\"marketName\"],\" V3 Dashboard to manage isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"This asset has reached its supply cap. Nothing is available to be supplied from this market.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details\",\"9lXchd\":\"Underlying token\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Since this is a test network, you can get any of the assets if you have ETH on your wallet\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choose one of the on-ramp services\",\"A6dCI6\":[\"Maximum amount available to borrow is <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Your borrows\",\"AV7cGz\":\"Review approval tx details\",\"AZOjB8\":\"Fetching data...\",\"Ai0jas\":\"Join the community discussion\",\"Ajl2rq\":\"Borrowing power and assets are limited due to Isolation mode.\",\"AqgYNC\":\"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"Collateral usage is limited because of isolation mode. <0>Learn More\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Asset category\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"This asset is frozen due to an Aave community decision. <0>More details\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"of\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Techpaper\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Greek\",\"CkTRmy\":[\"Claim \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Please connect your wallet to see migration tool.\",\"CtGlFb\":[[\"networkName\"],\" Faucet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"Collateral is (mostly) the same currency that is being borrowed\",\"DCnFg0\":[\"Addresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"I fully understand the risks of migrating.\",\"DONJcV\":\"The underlying asset cannot be rescued\",\"DR+4uL\":\"Supply balance after switch\",\"DWjrck\":[\"Asset cannot be migrated to \",[\"marketName\"],\" V3 Market due to E-mode restrictions. You can disable or manage E-mode categories in your <0>V3 Dashboard\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave per month\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collateralization\",\"DxfsGs\":\"You can report incident to our <0>Discord or<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Disabled\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restaking \",[\"symbol\"]],\"Ebgc76\":[\"Withdrawing \",[\"symbol\"]],\"EdQY6l\":\"None\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivate cooldown period to unstake \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrate to v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Learn more.\",\"FHlMf/\":\"Current v2 balance\",\"FHpxjF\":[\"Reserve factor is a percentage of interest which goes to a \",[\"0\"],\" that is controlled by Aave governance to promote ecosystem growth.\"],\"FOBZa6\":\"Borrow power used\",\"FPKEug\":\"Operation not supported\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"on\",\"Fjw9N+\":\"Assets to supply\",\"FmN0fk\":\"Restake\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO is a native decentralized, collateral-backed digital asset pegged to USD. It is created by users via borrowing against multiple collateral. When user repays their GHO borrow position, the protocol burns that user's GHO. All the interest payments accrued by minters of GHO would be directly transferred to the AaveDAO treasury.\",\"GQrBTq\":\"Switch E-Mode\",\"GWswcZ\":\"This asset is frozen due to an Aave Protocol Governance decision. On the 20th of December 2022, renFIL will no longer be supported and cannot be bridged back to its native network. It is recommended to withdraw supply positions and repay borrow positions so that renFIL can be bridged back to FIL before the deadline. After this date, it will no longer be possible to convert renFIL to FIL. <0>More details\",\"GX8GKD\":\"Assets\",\"GgEj+0\":\"Read-only mode. Connect to a wallet to perform transactions.\",\"GjkIKV\":\"ends\",\"GtP2hp\":[\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for \",[\"0\"],\" category. To manage E-Mode categories visit your <0>Dashboard.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Unstake window\",\"HpK/8d\":\"Reload\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Asset cannot be migrated to \",[\"marketName\"],\" v3 Market since collateral asset will enable isolation mode.\"],\"Hvwnm9\":[\"Maximum amount available to supply is limited because protocol supply cap is at \",[\"0\"],\"%.\"],\"I8CX2c\":\"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.\",\"IAD2SB\":[\"Claiming \",[\"symbol\"]],\"IG9X9/\":\"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details\",\"IP+I/j\":\"Cooldown period\",\"IaA40H\":\"Liquidation at\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Manage analytics\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstaking \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Not enough balance on your wallet\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Wallet balance\",\"JtwD8u\":\"Borrow balance after repay\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.\",\"KLXVqE\":[\"stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"This represents the threshold at which a borrow position will be considered undercollateralized and subject to liquidation for each collateral. For example, if a collateral has a liquidation threshold of 80%, it means that the position will be liquidated when the debt value is worth 80% of the collateral value.\",\"KYAjf3\":\"Isolated\",\"KkPgim\":\"Switching E-Mode\",\"KnN1Tu\":\"Expires\",\"KoOBI2\":\"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.\",\"KojyJ4\":\"Wrong Network\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Enter ETH address\",\"KvG1xW\":\"Claiming\",\"L+8Lzs\":\"Current LTV\",\"L+qiq+\":\"Market\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"No voting power\",\"LL0zks\":\"Can be collateral\",\"LLdJWu\":\"Claimable AAVE\",\"LSIpNK\":\"Borrow and repay in same block is not allowed\",\"LVt3TI\":[\"<0>Slippage tolerance <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"Ly2enB\":\"This will cancel the order via an on-chain transaction. Note that the order will not be marked as cancelled in the CoW Protocol system, but will remain open and expire naturally. Keep in mind that a solver may already have filled your order.\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Try increasing slippage or reduce input amount\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Recipient address\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"staking view\",\"McHlGl\":\"APY change\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"If the health factor goes below 1, the liquidation of your collateral might be triggered.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"You cancelled the transaction.\",\"MnE2QX\":\"Borrow info\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Invalid return value of the flashloan executor function\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pending...\",\"NK9ikO\":\"Wallet Balance\",\"NMt2CB\":\"Amount claimable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nothing staked\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Unbacked mint cap is exceeded\",\"O+tyU+\":[\"Maximum amount available to borrow against this asset is limited because debt ceiling is at \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Proposal overview\",\"OYuJ9K\":\"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.\",\"OfhWJH\":\"Reset\",\"Og2SKn\":\"disabled\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Website\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Withdraw\",\"P1dURE\":\"Revoke power\",\"P2WCD/\":[\"Underlying asset does not exist in \",[\"marketName\"],\" v3 Market, hence this position cannot be migrated.\"],\"P2sL6B\":\"When a liquidation occurs, liquidators repay up to 50% of the outstanding borrowed amount on behalf of the borrower. In return, they can buy the collateral at a discount and keep the difference (liquidation penalty) as a bonus.\",\"P6sRoL\":\"Stake ABPT\",\"P72/OW\":\"The weighted average of APY for all borrowed assets, including incentives.\",\"P7e6Ug\":\"Please connect your wallet to view transaction history.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Borrow apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Liquidation threshold\",\"PctCOf\":\"A temporary contract will be used to execute the trade. Your wallet may show a warning for approving a new or empty address.\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Not reached\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Differential\",\"RNK49r\":\"Invalid signature\",\"RS0o7b\":\"State\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Proposal details\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"Asset is not listed\",\"Rj01Fz\":\"Links\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"Health factor is lesser than the liquidation threshold\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Enabled\",\"SDav7h\":\"Funds in the Safety Module\",\"SENccp\":\"If the error continues to happen,<0/> you may report it to this\",\"SIWumd\":\"Show Frozen or paused assets\",\"SM58dD\":\"Amount in cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Failed to load proposal voters. Please refresh the page.\",\"SSQVIz\":\"Liquidation Threshold\",\"SUb8x0\":\"Total available\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.\",\"SZRUQ4\":\"Max slippage\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.\",\"Sk2zW9\":\"Disabling E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Pool addresses provider is not registered\",\"T/AIqG\":\"Protocol supply cap at 100% for this asset. Further supply unavailable.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Borrow\",\"TFxQlw\":\"Liquidation penalty\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"Asset can only be used as collateral in isolation mode only.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"User does not have outstanding stable rate debt on this reserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Borrow balance after switch\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Reload the page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"The app is running in testnet mode. Learn how it works in\",\"U9btTk\":\"Asset is not borrowable in isolation mode\",\"UAOZRe\":\"Price impact is the spread between the total value of the entry tokens switched and the destination tokens obtained (in USD), which results from the limited liquidity of the trading pair.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Details\",\"UTTKmT\":\"Stake cooldown activated\",\"UXeR72\":\"These funds have been borrowed and are not available for withdrawal at this time.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"The Maximum LTV ratio represents the maximum borrowing power of a specific collateral. For example, if a collateral has an LTV of 75%, the user can borrow up to 0.75 worth of ETH in the principal currency for every 1 ETH worth of collateral.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No rewards to claim\",\"V0f2Xv\":\"Reserve factor\",\"V1HK43\":\"Migration risks\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Covered debt\",\"VHOVEJ\":\"Connect wallet\",\"VMfYUK\":\"Safety of your deposited collateral against the borrowed assets and its underlying value.\",\"VOAZJh\":\"Total borrows\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Review tx details\",\"W5hVah\":\"Nothing supplied yet\",\"W5kTFy\":\"Voting\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Unbacked\",\"WNGZwH\":\"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more\",\"WPWG/y\":\"Reserve status & configuration\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"User cannot withdraw more than the available balance\",\"WaZyaV\":\"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Because this asset is paused, no actions can be taken until further notice\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"To borrow you need to supply any asset to be used as collateral.\",\"X/ITG9\":\"Copy error text\",\"X3Pp6x\":\"Used as collateral\",\"X4Zt7j\":\"Action cannot be performed because the reserve is paused\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Please always be aware of your <0>Health Factor (HF) when partially migrating a position and that your rates will be updated to V3 rates.\",\"XwKkg/\":\"Staked Underlying\",\"Xy+o6U\":\"For security reasons, limit orders are not supported for Native tokens. To place a limit order, use the wrapped version.\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTE NAY\",\"YDIOks\":\"Enabling E-Mode\",\"YSodyW\":\"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode is ON\",\"YrDxdO\":\"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Interest rate rebalance conditions were not met\",\"YyydIq\":[\"Add \",[\"0\"],\" to wallet to track your balance.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Aave Governance\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Efficiency mode (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Disable testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Before supplying\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Liquidation value\",\"ZrEc8j\":\"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.\",\"ZsLF7e\":\"enabled\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Time left to unstake\",\"a7u1N9\":\"Price\",\"a9D+6D\":\"Unstaked\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Buy Crypto With Fiat\",\"aOKIms\":\"Array parameters that should be equal length are not\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Borrow APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Cooldown period warning\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Asset\",\"bXQ/Og\":\"Share on twitter\",\"bXr0ee\":\"Isolated assets have limited borrowing power and other assets cannot be used as collateral.\",\"bYmAV1\":\"Addresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"The requested amount is greater than the max loan size in stable rate mode\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Supply\",\"bxN6EM\":\"Cannot disable E-Mode\",\"c91vuQ\":\"Address is not a contract\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"You can not withdraw this amount because it will cause collateral call\",\"cBc+4A\":\"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.\",\"cIl5kp\":\"Your voting power is based on your AAVE/stkAAVE balance and received delegations.\",\"cLo09S\":\"Risk details\",\"cNT+ij\":\"Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) and Isolation mode. To manage E-Mode and Isolation mode visit your <0>Dashboard.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"To submit a proposal for minor changes to the protocol, you'll need at least 80.00K power. If you want to change the core code base, you'll need 320k power.<0>Learn more.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Repaying \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Forum discussion\",\"csDS2L\":\"Available\",\"cu7Stb\":\"You did not participate in this proposal\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Governance\",\"dEgA5A\":\"Cancel\",\"dIsyWh\":\"Ltv validation failed\",\"dOB5nW\":[\"Maximum amount available to supply is <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"You don’t have enough funds in your wallet to repay the full amount. If you proceed to repay with your current amount of funds, you will still have a small borrowing position in your dashboard.\",\"dXUQFX\":\"Assets to borrow\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Borrowing is disabled due to an Aave community decision. <0>More details\",\"djsg0o\":\"Collateral usage\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Aave debt token\",\"e4V3oW\":\"Top 10 addresses\",\"eD8WX/\":\"Action requires an active reserve\",\"eJRJ04\":\"Amount to unstake\",\"eLh0cL\":\"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Staking Rewards\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"No transactions yet.\",\"ebLGGN\":\"Total borrowed\",\"ecqEvn\":\"The collateral balance is 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Available on\",\"enruNF\":\"starts\",\"eqLYiD\":\"Unstake now\",\"evw5ha\":\"Net worth\",\"ezcU16\":\"Get ABP Token\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"You switched to \",[\"0\"],\" rate\"],\"fMJQZK\":\"Borrowed\",\"fZ5Vnu\":\"Received\",\"firl9Q\":\"Your current loan to value based on your collateral supplied.\",\"fldjW9\":\"Preview tx and migrate\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Withdraw \",[\"symbol\"]],\"fwjWSI\":\"Supplied\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g4Ius4\":\"This is the fee for executing position changes, set by governance.\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Voted NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"This asset is frozen due to an Aave Protocol Governance decision. <0>More details\",\"gTHi2T\":\"User is trying to borrow multiple assets including a siloed one\",\"gVW59Y\":\"Please connect your wallet to get free testnet assets.\",\"gcFNxP\":\"Approve Confirmed\",\"goff7V\":\"Zero address not valid\",\"gp+f1B\":\"Version 3\",\"gvTM4B\":\"Net APY is the combined effect of all supply and borrow positions on net worth, including incentives. It is possible to have a negative net APY if debt APY is higher than supply APY.\",\"gzcch9\":\"Invalid bridge protocol fee\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activate Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"Net APY\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Claimed\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"The % of your total borrowing power used. This is based on the amount of your collateral supplied and the total amount that you can borrow.\",\"hehnjM\":\"Amount\",\"hjDCQr\":\"There was some error. Please try changing the parameters or <0><1>copy the error\",\"hom7qf\":\"Claim\",\"hpHJ4I\":\"Liquidated collateral\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Borrowing \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"About GHO\",\"iChbOF\":\"Inconsistent flashloan parameters\",\"iEPVHF\":\"Not enough voting power to participate in this proposal\",\"iEW87X\":\"Delegated power\",\"iEju36\":[\"You voted \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Select slippage tolerance\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Enter an amount\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens is not the same as staking them. If you wish to stake your\",\"iZxa38\":\"Use it to vote for or against active proposals.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"In Isolation mode, you cannot supply other assets as collateral. A global debt ceiling limits the borrowing power of the isolated asset. To exit isolation mode disable \",[\"0\"],\" as collateral before borrowing another asset. Read more in our <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"Collateral usage is limited because of Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Supplying your\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Disable E-Mode\",\"jKYzR1\":\"Enable E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Cooldown time left\",\"jeMZNr\":[[\"0\"],\" on-ramp service is provided by External Provider and by selecting you agree to Terms of the Provider. Your access to the service might be reliant on the External Provider being operational.\"],\"jfl9OP\":\"Migrated\",\"jmXdoY\":\"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Unavailable\",\"k/sb6z\":\"Select language\",\"k3wP3f\":\"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.\",\"kACpF3\":[\"Claim \",[\"0\"]],\"kH6wUX\":\"Price impact\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" assets selected\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"To repay on behalf of a user an explicit amount to repay is needed\",\"kRTD40\":[\"Repayment amount to reach \",[\"0\"],\"% utilization\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Supply cap is exceeded\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"Debt ceiling is not zero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in \",[\"marketName\"],\" v3 market.\"],\"lVhKKI\":\"Voted YAE\",\"lWLqxB\":\"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"English\",\"lfEjIE\":\"Learn more in our <0>FAQ guide\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Total emission per day\",\"m7r7Hh\":\"Selected borrow assets\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Version 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Your \",[\"name\"],\" wallet is empty. Purchase or transfer assets or use <0>\",[\"0\"],\" to transfer your \",[\"network\"],\" assets.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Buy \",[\"cryptoSymbol\"],\" with Fiat\"],\"mvCXBY\":\"Stake AAVE\",\"mwdzil\":\"Ok, Close\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Asset cannot be used as collateral.\",\"n+SX4g\":\"Developers\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Supply apy\",\"nJgsQu\":\"With a voting power of <0/>\",\"nLC6tu\":\"French\",\"nNHV0z\":\"Migrating multiple collaterals and borrowed assets at the same time can be an expensive operation and might fail in certain situations.<0>Therefore it’s not recommended to migrate positions with more than 5 assets (deposited + borrowed) at the same time.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Can be executed\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Both\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nweCqF\":\"Cancelling order...\",\"nwtY4N\":\"Something went wrong\",\"nxyWvj\":\"Withdrawing this amount will reduce your health factor and increase risk of liquidation.\",\"o17QVP\":\"Your health factor and loan to value determine the assurance of your collateral. To avoid liquidations you can supply more collateral or repay borrow positions.\",\"o1xc2V\":\"AToken supply is not zero\",\"o5ooMr\":\"Debt\",\"o7J4JM\":\"Filter\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown to unstake\",\"oJ5ZiG\":\"User does not have outstanding variable rate debt on this reserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Test Assets\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Stable interest rate will <0>stay the same for the duration of your loan. Recommended for long-term loan periods and for users who prefer predictability.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Available to supply\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Nothing found\",\"owSsI3\":\"Signatures ready\",\"p+R52m\":\"Go to Balancer Pool\",\"p2S64u\":\"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.\",\"p2Z2Qi\":\"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.\",\"p45alK\":\"Set up delegation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"The underlying balance needs to be greater than 0\",\"pgWG9H\":\"Not enough staked balance\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"please check that the amount you want to supply is not currently being used for staking. If it is being used for staking, your transaction might fail.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"I understand how cooldown (\",[\"0\"],\") and unstaking (\",[\"1\"],\") work\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"The caller of this function must be a pool\",\"q/51mF\":\"Migrate to V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Interest rate strategy\",\"q6lAbz\":\"Staked\",\"qB4kPi\":\"Supply APY\",\"qENI8q\":\"Global settings\",\"qGz5zl\":\"Collateral balance after repay\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copy the error\",\"qXCkEM\":\"Please connect your wallet to see your supplies, borrowings, and open positions.\",\"qY2jnw\":\"Invalid expiration\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Invalid amount to burn\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Amount must be greater than 0\",\"rQ+R+0\":\"Selected supply assets\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Asset cannot be migrated because you have isolated collateral in \",[\"marketName\"],\" v3 Market which limits borrowable assets. You can manage your collateral in <0>\",[\"marketName\"],\" V3 Dashboard\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Show assets with 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacy\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Claim all rewards\",\"rwyUva\":\"These assets are temporarily frozen or paused by Aave community decisions, meaning that further supply / borrow, or rate swap of these assets are unavailable. Withdrawals and debt repayments are allowed. Follow the <0>Aave governance forum for further updates.\",\"rxJW5W\":\"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NAY\",\"sQv06Y\":\"for\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"You unstake here\",\"smJNwH\":\"Available to borrow\",\"solypO\":\"Health factor is not below the threshold\",\"sr0UJD\":\"Go Back\",\"ss5GCK\":\"The address of the pool addresses provider is invalid\",\"swEgK4\":\"Your voting info\",\"t+wtgf\":\"Nothing borrowed yet\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Oracle price\",\"tFZLf8\":\"This gas calculation is only an estimation. Your wallet will set the price of the transaction. You can modify the gas settings directly from your wallet provider.\",\"tHuvQI\":\"Go to V3 Dashboard\",\"tOcg3N\":\"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard\",\"tOuXfv\":[\"Borrow amount to reach \",[\"0\"],\"% utilization\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"Please, connect your wallet\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Your supplies\",\"u3ZeYl\":\"Transaction failed\",\"u706uF\":\"Invalid flashloan premium\",\"u8Gfu7\":[\"No search results\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No assets selected to migrate.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrating\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Export data to\",\"ulup2p\":\"Buy Crypto with Fiat\",\"usB84Z\":\"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restaked\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Hide\",\"vMba49\":\"Borrowing is not enabled\",\"vMpNwt\":\"Approve with\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Allows you to decide whether to use a supplied asset as collateral. An asset used as collateral will affect your borrowing power and health factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"Stable debt supply is not zero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Rewards APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"You \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Discord channel\",\"wQZbc/\":\"The caller of the function is not an AToken\",\"wZFvVU\":\"VOTE YAE\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"The Aave Protocol is programmed to always use the price of 1 GHO = $1. This is different from using market pricing via oracles for other crypto assets. This creates stabilizing arbitrage opportunities when the price of GHO fluctuates.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"With testnet Faucet you can get free assets to test the Aave Protocol. Make sure to switch your wallet provider to the appropriate testnet network, select desired asset, and click ‘Faucet’ to get tokens transferred to your wallet. The assets on a testnet are not “real,” meaning they have no monetary value. <0>Learn more\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Selected assets have successfully migrated. Visit the Market Dashboard to see them.\",\"x7F2p6\":\"Current differential\",\"x7K5ib\":[\"Your \",[\"networkName\"],\" wallet is empty. Get free test \",[\"0\"],\" at\"],\"x9iLRD\":\"tokens, please go to the\",\"xNy/UG\":\"Repay with\",\"xPm8wv\":\"Learn more about risks involved\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Your info\",\"xaWZ6f\":\"APY type change\",\"xh6k71\":\"Collateral usage is limited because of isolation mode.\",\"xvIklc\":\"Flashloan is disabled for this asset, hence this position cannot be migrated.\",\"y5rS9U\":\"Migrate\",\"yB1YpA\":\"Dark mode\",\"yCrG6m\":\"Total market size\",\"yJUUbn\":\"Transaction overview\",\"yLGmLX\":[\"Restake \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Not a valid address\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Track wallet\",\"yh2sjd\":[\"Price impact \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"There are not enough funds in the\",[\"0\"],\"reserve to borrow\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Close\",\"z4uGQg\":\"Debt ceiling is exceeded\",\"z5JUmg\":[\"Estimated costs are \",[\"0\"],\"% of the sell amount. This order is unlikely to be filled.\"],\"z5UQOM\":\"The collateral chosen cannot be liquidated\",\"z5Y+p6\":[\"Supplying \",[\"symbol\"]],\"zCjNKs\":\"Action cannot be performed because the reserve is frozen\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Isolated Debt Ceiling\",\"zTOjMP\":\"Protocol supply cap is at 100% for this asset. Further supply unavailable.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Remaining debt\",\"zmTPiV\":\"Supply balance\",\"zpPbZl\":\"Liquidation risk parameters\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Learn more\",\"zy9fXn\":[\"Asset is frozen in \",[\"marketName\"],\" v3 market, hence this position cannot be migrated.\"],\"zys+R6\":\"Be mindful of the network congestion and gas prices.\"}")}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index ccc4a2d44a..8c8a96335b 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -1468,6 +1468,10 @@ msgstr "Eligible for incentives through Merkl." msgid "Emode" msgstr "Emode" +#: src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx +msgid "This will cancel the order via an on-chain transaction. Note that the order will not be marked as cancelled in the CoW Protocol system, but will remain open and expire naturally. Keep in mind that a solver may already have filled your order." +msgstr "This will cancel the order via an on-chain transaction. Note that the order will not be marked as cancelled in the CoW Protocol system, but will remain open and expire naturally. Keep in mind that a solver may already have filled your order." + #: src/modules/history/actions/ActionDetails.tsx #: src/modules/history/actions/ActionDetails.tsx #: src/modules/history/actions/ActionDetails.tsx @@ -3204,6 +3208,10 @@ msgstr "{h}h" msgid "After the cooldown is initiated, you will be able to withdraw your assets immediatley." msgstr "After the cooldown is initiated, you will be able to withdraw your assets immediatley." +#: src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx +msgid "Cancelling order..." +msgstr "Cancelling order..." + #: pages/500.page.tsx #: src/modules/reserve-overview/graphs/ApyGraphContainer.tsx #: src/modules/reserve-overview/graphs/MeritApyGraphContainer.tsx @@ -3639,6 +3647,7 @@ msgstr "Since this asset is frozen, the only available actions are withdraw and msgid "Borrow amount to reach {0}% utilization" msgstr "Borrow amount to reach {0}% utilization" +#: src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx #: src/components/transactions/CancelCowOrder/CancelCowOrderModalContent.tsx msgid "Cancel order" msgstr "Cancel order" diff --git a/src/locales/es/messages.js b/src/locales/es/messages.js index 3729a78a51..7febac6f1f 100644 --- a/src/locales/es/messages.js +++ b/src/locales/es/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si NO unstakeas entre \",[\"0\"],\" de la ventana de unstakeo, necesitarás activar el proceso de cooldown de nuevo.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participar en esta reserva de \",[\"symbol\"],\" da recompensas anuales.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Utiliza tu balance de AAVE, stkAAVE o aAava para delegar tu voto y poder de proposición. No enviarás ningún token, solo los derechos de votar y proponer cambios en el protocolo. Puedes volver a delegar o revocar el poder de vuelta en cualquier momento.\",\"+i3Pd2\":\"Límite del préstamo\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Cantidad para migrar\",\"/7ykiW\":\"Tomar prestado esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"Preguntas frecuentes\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"El préstamo estable no está habilitado\",\"/yQcJM\":\"Valor total\",\"00AB2i\":\"El usuario no tomó prestado el activo especificado\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Cambio de tasa\",\"0BF3yK\":\"Lo sentimos, no hemos podido encontrar la página que estabas buscando.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Riesgo de liquidación\",\"0ojY+Y\":\"Balance actual v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Cambio de garantía\",\"0wGCWc\":\"Esta es la cantidad total que puedes suministrar en esta reserva. Puedes suministrar el balance de tu cartera hasta que se alcance el límite de suministro.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Los datos de los precios no están disponibles actualmente para esta reserva en el subgraph del protocolo\",\"1LjK22\":\"Historial de transacciones\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Por favor conecta una cartera para ver tu información personal aquí.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Umbral <0/> de liquidación\",\"1t7rez\":\"El suministro de activos está limitado a una cierta cantidad para reducir la exposición del protocolo a este activo y ayudar a manejar los riesgos implicados.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Ver detalles\",\"2FYpfJ\":\"Más\",\"2O3qp5\":\"Liquidez disponible\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Este activo no se puede migrar debido a una restricción del límite de suministro en el mercado v3 de \",[\"marketName\"],\".\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave es un protocolo totalmente descentralizado, gobernado por la comunidad de poseedores de tokens AAVE. Los poseedores de tokens AAVE discuten, proponen y votan colectivamente sobre las actualizaciones del protocolo. Los poseedores de tokens AAVE (solo en la red Ethereum) pueden votar ellos mismos sobre nuevas propuestas o delegarse a una dirección de su elección. Para aprender más, consulta la\",\"2a6G7d\":\"Por favor introduce una dirección de cartera válida.\",\"2eBWE6\":\"Acepto los riesgos involucadros.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"El préstamo estable no está habilitado\",\"34Qfwy\":\"El límite del préstamo se ha sobrepasado\",\"39eQRj\":[\"Tomar prestado \",[\"symbol\"]],\"3BL1xB\":\"Total suministrado\",\"3K0oMo\":\"Suministro restante\",\"3MoZhl\":\"No hay suficiente garantía para cubrir un nuevo préstamo\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Suministrar \",[\"symbol\"]],\"3mXg0z\":\"LTV máximo\",\"3q3mFy\":\"Pagar\",\"3qsjtp\":\"El promedio ponderado de APY para todos los activos suministrados, incluidos los incentivos.\",\"3rL+os\":\"Solo puedes retirar tus activos del Módulo de Seguridad después de que finalice el período de cooldown y la ventana de unstakeo esté activa.\",\"42UgDM\":[\"Migrar al mercado V3 de \",[\"0\"]],\"49UFQA\":\"Resultados de la votación\",\"4DMZUI\":\"Ver Transacciones\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Términos\",\"4YYh4d\":\"Máximo disponible para tomar prestado\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Firma para continuar\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transacciones\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue activos de prueba gratis en\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentación\",\"5NOSGa\":\"El límite de deuda limita la cantidad posible que los usuarios del protocolo pueden tomar prestado contra este activo. El límite de deuda es específico para los activos en isolation mode y se indica en USD.\",\"5Ncc6j\":[\"Este activo casi ha alcanzado su límite de suministro. Solo se puede suministrar \",[\"messageValue\"],\" a este mercado.\"],\"5cZ/KX\":\"El suministro de deuda variable no es cero\",\"5che++\":\"Para solicitar acceso a este mercado, porfavor visita: <0>Nombre del proveedor de acceso\",\"5ctNdV\":[\"Mínimo \",[\"0\"],\" recibido\"],\"5hDe9v\":\"Acción de permiso requerida\",\"5rsnKT\":\"Recompensas disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Ver todos los votos\",\"6/dCYd\":\"Resumen\",\"60crCe\":\"Todas las transacciones\",\"62Xcjh\":\"Garantía\",\"65A04M\":\"Español\",\"68ANm7\":\"Withdrawing GHO\",\"6G8s+q\":\"Firmando\",\"6Jrv+z\":[\"Pagar \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Poder de votación\",\"6f8S68\":\"Mercados\",\"6g1gi0\":\"Propuestas\",\"6gvoHP\":\"Copiar mensaje de error\",\"6h3Q5G\":\"reembolsado\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Cambiar de red\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Factor de salud\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Alcanzado\",\"7YlcXu\":\"El fork mode está activado\",\"7Z76Iw\":\"Tomar prestado no está disponible porque estás usando el Isolation mode. Para administrar el Isolation mode, visita tu <0>Panel de control.\",\"7aKlMS\":\"Compartir en Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Reclamar todo\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7i1oxe\":\"Withdrawing and Swapping\",\"7l88b8\":\"No se pudieron recuperar los datos, por favor recarga el gráfico.\",\"7p5kLi\":\"Panel de control\",\"8+6BI0\":\"Ten cuidado - Estás muy cerca de la liquidación. Considera depositar más garantía o pagar alguno de tus préstamos\",\"87pUEW\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos.\"],\"8F1i42\":\"Página no encontrada\",\"8G8M0u\":\"Cargando datos...\",\"8Iu1QS\":\"retirado\",\"8JL93T\":\"Todas las propuestas\",\"8Q51DU\":\"Añadir a la cartera\",\"8X/oyn\":\"Cantidad invalidad para generar\",\"8Z5FPv\":\"Desconectar cartera\",\"8Zz7s5\":\"activos\",\"8aLW8H\":\"Balance a revocar\",\"8bOT3H\":\"Tasa de uso\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Ver contrato\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Mostrar\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Estás entrando en el Isolation mode\",\"9CDK3/\":[\"Tomar prestado no está disponible actualmente para \",[\"0\"],\".\"],\"9GIj3z\":\"Tamaño de la reserva\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Balance stakeado\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votos actuales\",\"9Rw96f\":[\"Este activo casi ha alcanzado su límite de préstamo. Solo hay \",[\"messageValue\"],\" disponibles para ser prestado de este mercado.\"],\"9Xj/qR\":[\"Algunos activos migrados no se utilizarán como garantía debido al isolation mode habilitado en el mercado V3 de \",[\"marketName\"],\". Visita el <0>Panel de control de \",[\"marketName\"],\" V3 para administrar el isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Este activo ha alcanzado su límite de suministro. No queda nada disponible para ser suministrado desde este mercado.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI ha sido pausado debido a una decisión de la comunidad. Los suministros, préstamos y pagos se han visto afectados. <0>Más información\",\"9lXchd\":\"Token subyacente\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Puesto que esta es una red de pruebas, puedes obtener cualquiera de los activos si tienes ETH en tu cartera\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Elige uno de los servicios on-ramp\",\"A6dCI6\":[\"La máxima cantidad disponible para tomar prestado es <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Tus préstamos\",\"AV7cGz\":\"Revisa los detalles del approve\",\"AZOjB8\":\"Recuperando datos...\",\"Ai0jas\":\"Únete a la discusión de la comunidad\",\"Ajl2rq\":\"El poder de préstamo y los activos están limitados debido al Isolation mode.\",\"AqgYNC\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH suministrado como garantía continuará acumulando recompensas de staking proporcionadas por rebases diarios.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"El uso como garantía está limitado debido al isolation mode. <0>Aprende más\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Categoría de activos\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Este activo está congelado debido a una decisión de la comunidad de Aave. <0>Más información\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Documento técnico\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Griego\",\"CkTRmy\":[\"Reclamar \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Por favor conecta tu cartera para ver la herramienta de migración.\",\"CtGlFb\":[\"Faucet \",[\"networkName\"]],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Esta acción reducirá el factor de salud de V3 por debajo del umbral de liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"Este activo ha sido pausado debido a una decisión de la comunidad. El suministro, los retiros, los préstamos y los pagos se han visto afectados.\",\"DAma/S\":\"La garantía es (en su mayoría) el mismo activo que se está tomando prestado\",\"DCnFg0\":[\"Direcciones (\",[\"0\"],\")\"],\"DG3Lv1\":\"Entiendo completamente los riesgos de migrar.\",\"DONJcV\":\"El activo base no puede ser rescatado\",\"DR+4uL\":\"Balance del suministro después del cambio\",\"DWjrck\":[\"Este activo no se puede migrar al mercado V3 de \",[\"marketName\"],\" debido a las restricciones del E-mode. Puedes deshabilitar o administrar las categorías del E-mode en tu <0>Panel de control V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave por mes\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Colateralización\",\"DxfsGs\":\"Puedes reportar cualquier incidente a nuestro <0>Discord o <1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Deshabilitado\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restakeando \",[\"symbol\"]],\"Ebgc76\":[\"Retirando \",[\"symbol\"]],\"EdQY6l\":\"Ninguno\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivar el periodo de cooldown para unstakear \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrar a V3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Aprende más.\",\"FHlMf/\":\"Balance actual v2\",\"FHpxjF\":[\"El factor de reserva es un porcentaje de interés que va a un \",[\"0\"],\" que es controlado por el gobierno de Aave para promover el crecimiento del ecosistema.\"],\"FOBZa6\":\"Capacidad de préstamo utilizada\",\"FPKEug\":\"Operación no soportada\",\"FbmMe7\":\"Direcciones vinculadas\",\"Fdp03t\":\"en\",\"Fjw9N+\":\"Activos a suministrar\",\"FmN0fk\":\"Restakear\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO es un activo nativo descentralizado, digital y respaldado por garantía, vinculado al USD. Es creado por los usuarios que lo toman prestado contra múltiples garantías. Cuando el usuario paga su posición de préstamo de GHO, el protocolo quema el GHO de ese usuario. Todos los pagos de interés acumulados por los acuñadores de GHO serán transferidos directamente a la tesorería de\xA0la\xA0DAO\xA0de\xA0Aave.\",\"GQrBTq\":\"Cambiar E-Mode\",\"GWswcZ\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. El 20 de diciembre de 2022, renFIL ya no será compatible y no se podrá conectar de nuevo a su red nativa. Se recomienda retirar las posiciones de suministro y pagar las posiciones de préstamo para que renFIL se pueda convertir de nuevo a FIL antes de la fecha límite. Después de esta fecha, ya no será posible convertir renFIL a FIL. <0>Más detalles\",\"GX8GKD\":\"Activos\",\"GgEj+0\":\"Modo de solo lectura. Conéctate a una cartera para realizar transacciones.\",\"GjkIKV\":\"finaliza\",\"GtP2hp\":[\"Tomar prestado no está disponible porque has habilitado el Efficieny Mode (E-Mode) para la categoría \",[\"0\"],\". Para manejar las categorías del E-Mode visita tu <0>Panel de control.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Lo sentimos, se produjo un error imprevisto. Mientras tanto, puedes intentar recargar la página, o volver después.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Ventana de unstakeo\",\"HpK/8d\":\"Recargar\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Este activo no se puede migrar al mercado v3 de \",[\"marketName\"],\", ya que el activo de garantía habilitará el isolation mode.\"],\"Hvwnm9\":[\"La cantidad máxima disponible para suministrar está limitada porque el límite de suministro del protocolo está al \",[\"0\"],\"%.\"],\"I8CX2c\":\"La cantidad total de tus activos denominados en USD que pueden ser usados como garantía para activos de préstamo.\",\"IAD2SB\":[\"Reclamando \",[\"symbol\"]],\"IG9X9/\":\"Tomar prestado este activo está limitado a una cierta cantidad para minimizar la insolvencia del fondo de liquidez.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Está previsto que este activo se desvincule debido a una decisión del Gobierno del Protocolo Aave. <0>Más detalles\",\"IP+I/j\":\"Periodo de cooldown\",\"IaA40H\":\"Liquidación en\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Administrar analíticas\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstakeando \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stakear\",\"JZMxX0\":\"No hay suficiente balance en tu cartera\",\"Jgflkm\":\"Obtener GHO\",\"JoMQnI\":\"Balance de la cartera\",\"JtwD8u\":\"Balance tomado prestado tras pagar\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"KLXVqE\":[\"Los tokens stETH se migrarán a Wrapped stETH usando el wrapper del protocolo de Lido, lo que provoca un cambio en el balance de suministro después de la migración: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Esto representa el umbral en el que un préstamo será considerado sin garantía suficiente y sujeto a la liquidación de la misma. Por ejemplo, si una garantía tiene un umbral de liquidación del 80 %, significa que el préstamo será liquidado cuando el valor de la deuda alcanze el 80% del valor de la garantía.\",\"KYAjf3\":\"Aislado\",\"KkPgim\":\"Cambiando E-Mode\",\"KnN1Tu\":\"Caduca\",\"KoOBI2\":\"Debido a mecánicas internas de stETH requeridas para el soporte del rebase, no es posible realizar un cambio de garantía donde stETH es el token de origen.\",\"KojyJ4\":\"Red incorrecta\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Introduce la dirección ETH\",\"KvG1xW\":\"Reclamando\",\"L+8Lzs\":\"LTV actual\",\"L+qiq+\":\"Mercado\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Sin poder de voto\",\"LL0zks\":\"Puede ser garantía\",\"LLdJWu\":\"AAVE Reclamable\",\"LSIpNK\":\"Tomar prestado y pagar en el mismo bloque no está permitido\",\"LVt3TI\":[\"<0>Tolerancia de deslizamiento <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Modo E\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Intenta aumentar el deslizamiento o reduce la cantidad de entrada\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Dirección del destinatario\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vista de stakeo\",\"McHlGl\":\"Cambio de APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si el factor de salud se encuentra por debajo de 1, la liquidación de tu colateral puede ser activada.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Has cancelado la transacción.\",\"MnE2QX\":\"Información de préstamo\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valor de retorno inválido en la función executor del préstamo flash\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Este activo solo se puede utilizar como garantía en isolation mode con poder de préstamo limitado. Para entrar en el isolation mode, deshabilita todas las demás garantías.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pendiente...\",\"NK9ikO\":\"Balance de la cartera\",\"NMt2CB\":\"Cantidad reclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nada invertido\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"El límite de minteo sin respaldo ha sido excedido\",\"O+tyU+\":[\"La cantidad máxima disponible para tomar prestado contra este activo está limitada porque el límite de deuda está al \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstakear\",\"OR8cYX\":\"Resumen de la propuesta\",\"OYuJ9K\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"OfhWJH\":\"Restablecer\",\"Og2SKn\":\"deshabilitado\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Página web\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirar\",\"P1dURE\":\"Revocar poder\",\"P2WCD/\":[\"El activo subyacente no existe en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"P2sL6B\":\"Cuando ocurre una liquidación, los liquidadores pagan hasta el 50% de la cantidad pendiente del préstamo en nombre del prestatario. A cambio, pueden comprar la garantía con descuento y quedarse con la diferencia (sanción de liquidación) como bonificación.\",\"P6sRoL\":\"Stakea ABPT\",\"P72/OW\":\"El promedio ponderado de APY para todos los activos prestados, incluidos los incentivos.\",\"P7e6Ug\":\"Por favor conecta tu cartera para ver el historial de transacciones.\",\"PByO0X\":\"Votos\",\"PI+kVe\":\"Deshabilitar fork\",\"PJK9u/\":\"Apy préstamo\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Umbral de liquidación\",\"PctCOf\":\"A temporary contract will be used to execute the trade. Your wallet may show a warning for approving a new or empty address.\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Esta acción reducirá el factor de salud V2 por debajo del umbral de liquidación. Mantén la garantía o migra la posición de préstamo para continuar.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"El Aave Balancer Pool Token (ABPT) es un token de pool de liquidez. Puedes recibir ABPT depositando una combinación de AAVE + wstETH en el pool de liquidez de Balancer. Luego puedes stakear tu BPT en el módulo de seguridad para asegurar el protocolo y ganar incentivos de seguridad.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Retirando\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"No alcanzado\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Diferencial\",\"RNK49r\":\"Firma inválida\",\"RS0o7b\":\"Estado\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Detalles de la propuesta\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"El activo no está listado\",\"Rj01Fz\":\"Enlaces\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"El factor de salud es menor que el umbral de liquidación\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Habilitado\",\"SDav7h\":\"Fondos en el Módulo de Seguridad\",\"SENccp\":\"Si el error persiste, <0/> podrías reportarlo a esto\",\"SIWumd\":\"Mostrar activos congelados o pausados\",\"SM58dD\":\"Cantidad en cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Error al cargar los votantes de la propuesta. Por favor actualiza la página.\",\"SSQVIz\":\"Umbral de liquidación\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"El modo de solo lectura permite ver las posiciones de las direcciones en Aave, pero no podrás realizar transacciones.\",\"SZRUQ4\":\"Deslizamiento máximo\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"Sk2zW9\":\"Desactivando E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"La dirección del proveedor del pool no esta registrada\",\"T/AIqG\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"T0xCO9\":\"No se puede validar la dirección de la cartera. Vuelve a intentarlo.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Tomar prestado\",\"TFxQlw\":\"Penalización de liquidación\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"El activo solo puede usarse como garantía en el Isolation mode únicamente.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"El usuario no tiene deuda pendiente de tasa estable en esta reserva\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Balance de préstamo después del cambio\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recarga la página\",\"U2r8nY\":\"Elige cuánto poder de voto/proposición otorgar a otra persona delegando parte de tu balance de AAVe o stkAAVE. Tus tokens permanecerán en tu cuenta, pero tu delegado podrá votar o proponer en tu lugar. Si tu balance de AAVE, stkAAVE o aAave cambia, el poder de voto/proposición de tu delegado se ajustará automáticamente.\",\"U8IubP\":\"La aplicación se está ejecutando en testnet mode. Aprende como funciona en\",\"U9btTk\":\"El activo no se puede pedir prestado en isolation mode\",\"UAOZRe\":\"El impacto del precio es la diferencia entre el valor total de los tokens de entrada cambiados y los tokens de destino obtenidos (en USD), que resulta de la liquidez limitada del par de cambio.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Detalles\",\"UTTKmT\":\"Cooldown de stakeo activado\",\"UXeR72\":\"Estos fondos se han tomado prestados y no están disponibles para su retirada en este momento.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"El ratio LTV máximo representa el poder de endeudamiento máximo de una garantía específica. Por ejemplo, si una garantía tiene un LTV del 75 %, el usuario puede pedir prestado hasta 0,75 ETH en la moneda principal por cada 1 ETH de garantía.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No hay recompensas para reclamar\",\"V0f2Xv\":\"Factor de reserva\",\"V1HK43\":\"Riesgos de migración\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Deuda cubierta\",\"VHOVEJ\":\"Conectar cartera\",\"VMfYUK\":\"Seguridad de tu garantía depositada contra los activos prestados y su valor subyacente.\",\"VOAZJh\":\"Total de préstamos\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Revisar detalles de la tx\",\"W5hVah\":\"Nada suministrado aún\",\"W5kTFy\":\"Votando\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"No respaldado\",\"WNGZwH\":\"El E-Mode incrementa tu LTV para una categoría seleccionada de activos hasta el <0/>. <1>Aprende más\",\"WPWG/y\":\"Configuración y estado de la reserva\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"El usuario no puede retirar más que el balance disponible\",\"WaZyaV\":\"<0>Ampleforth es un activo con rebase. Visita la <1>documentación para aprender más.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Debido a que este activo está en pausa, no se pueden realizar acciones hasta nuevo aviso\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Para tomar prestado, necesitas suministrar cualquier activo para ser utilizado como garantía.\",\"X/ITG9\":\"Copiar el texto del error\",\"X3Pp6x\":\"Utilizado como garantía\",\"X4Zt7j\":\"No se puede realizar la acción porque la reserva está pausada\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Direcciones de cartera de contrato inteligente representativas (Safe) en otras cadenas.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Por favor ten siempre en cuenta tu <0>factor de salud (HF) cuando migres parcialmente una posición y que tus tasas serán actualizadas a tasas de la V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy+o6U\":\"For security reasons, limit orders are not supported for Native tokens. To place a limit order, use the wrapped version.\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTAR NO\",\"YDIOks\":\"Habilitar E-Mode\",\"YSodyW\":\"Esta acción reducirá tu factor de salud. Por favor ten en cuenta el riesgo incrementado de liquidación de la garantía.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode está ON\",\"YrDxdO\":\"Si tu relación préstamo-valor supera el umbral de liquidación, tu garantía puede ser liquidada.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"No se cumplieron las condiciones de ajuste de tasas de interés\",\"YyydIq\":[\"Añade \",[\"0\"],\" a tu cartera para hacer un seguimiento del balance.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Gobierno de Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Modo de eficiencia (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Deshabilitar testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Antes de suministrar\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valor de liquidación\",\"ZrEc8j\":\"No pudimos encontrar ningún activo relacionado con tu búsqueda. Vuelve a intentarlo con un nombre diferente de activo, símbolo o dirección.\",\"ZsLF7e\":\"habilitado\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Tempo restante para unstakear\",\"a7u1N9\":\"Precio\",\"a9D+6D\":\"Unstakeado\",\"aEtiwq\":\"Votar NO\",\"aMmFE1\":\"Comprar Crypto con Fiat\",\"aOKIms\":\"Los parámetros del array que deberían ser iguales en longitud no lo son\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"Se ha producido un error al recuperar la propuesta.\",\"aoXTT7\":\"APY préstamo, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Advertencia periodo de cooldown\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Activo\",\"bXQ/Og\":\"Compartir en twitter\",\"bXr0ee\":\"Los activos aislados han limitado tu capacidad de préstamo y otros activos no pueden ser usados como garantía.\",\"bYmAV1\":\"Direcciones\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"La cantidad solicitada es mayor que el tamaño máximo del préstamo en el modo de tasa estable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Suministrar\",\"bxN6EM\":\"No se puede deshabilitar E-Mode\",\"c91vuQ\":\"La dirección no es un contrato\",\"c97os2\":\"aToken de Aave\",\"c9b44w\":\"No puedes retirar esta cantidad porque causará una liquidación\",\"cBc+4A\":\"Esta es la cantidad total disponible que puedes tomar prestada. Puedes tomar prestado basado en tu garantía y hasta que el límite de préstamo se alcance.\",\"cIl5kp\":\"Tu poder de voto se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"cLo09S\":\"Detalles de riesgo\",\"cNT+ij\":\"Tomar prestado no está disponible porque has habilitado el Efficiency Mode (E-Mode) y el Isolation mode. Para administrar el E-Mode y el Isolation Mode, visita tu <0>Panel de control.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Para enviar una propuesta de cambios menores al protocolo, necesitarás al menos 80K de poder. Si deseas cambiar la base central del código, necesitarás un poder de 320K.<0>Aprende más\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Votar SI\",\"ckf7gX\":[\"Pagando \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Hilo de discusión del foro\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"No has participado en esta propuesta\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gobierno\",\"dEgA5A\":\"Cancelar\",\"dIsyWh\":\"La validación del LTV ha fallado\",\"dOB5nW\":[\"La cantidad máxima disponible para suministrar es <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"No tienes suficientes fondos en tu cartera para pagar la cantidad total. Si procedes a pagar con tu cantidad actual de fondos, aún tendrás un pequeño préstamo en tu panel de control.\",\"dXUQFX\":\"Activos a tomar prestado\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Tomar prestado está deshabilitado debido a una decisión de la comunidad de Aave. <0>Más información\",\"djsg0o\":\"Uso de la garantía\",\"drdV8R\":\"Liquidación\",\"dxW8cS\":\"Token de deuda de Aave\",\"e4V3oW\":\"Top 10 direcciones\",\"eD8WX/\":\"La acción requiere una reserva activa\",\"eJRJ04\":\"Cantidad para unstakear\",\"eLh0cL\":\"El deslizamiento es la diferencia entre las cantidades calculadas y las recibidas debido a las condiciones cambiantes del mercado entre el momento en que se envía la transacción y su verificación.\",\"ePK91l\":\"Editar\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Recompensas de Staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aún no hay transacciones.\",\"ebLGGN\":\"Total tomado prestado\",\"ecqEvn\":\"El balance de garantía es 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible en\",\"enruNF\":\"empieza\",\"eqLYiD\":\"Unstakea ahora\",\"evw5ha\":\"Valor neto\",\"ezcU16\":\"Obtener Token ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Has cambiado a tasa \",[\"0\"]],\"fMJQZK\":\"Prestado\",\"fZ5Vnu\":\"Recibido\",\"firl9Q\":\"Tu actual relación préstamo-valor basado en tu garantía suministrada.\",\"fldjW9\":\"Previsualizar la tx y migrar\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Retirar \",[\"symbol\"]],\"fwjWSI\":\"Suministrado\",\"fwyTMb\":\"Migrar a stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g4Ius4\":\"This is the fee for executing position changes, set by governance.\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Votó NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. <0>More información\",\"gTHi2T\":\"El usuario está intentando tomar prestado múltiples activos incluido uno aislado\",\"gVW59Y\":\"Por favor conecta tu cartera para obtener activos testnet gratis.\",\"gcFNxP\":\"Aprobación confirmada\",\"goff7V\":\"Dirección cero no válida\",\"gp+f1B\":\"Versión 3\",\"gvTM4B\":\"El APY neto es el efecto combinado de todos los suministros y préstamos sobre total, incluidos los incentivos. Es posible tener un APY neto negativo si el APY de la deuda es mayor que el APY de suministro.\",\"gzcch9\":\"Comisión de puente de protocolo inválida\",\"h33MxW\":\"Direcciones de cartera de contrato inteligente representantes (Safe) en otras cadenas.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activar Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY neto\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Reclamado\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"El % de tu poder de préstamo total utilizado. Esto se basa en la cantidad de tu garantía suministrada y la cantidad total que puedes pedir prestado.\",\"hehnjM\":\"Cantidad\",\"hjDCQr\":\"Hubo un error. Por favor intenta cambiar los parámetros o <0><1>copiar el error\",\"hom7qf\":\"Reclamar\",\"hpHJ4I\":\"Garantía liquidada\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Tomando prestado \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"Sobre GHO\",\"iChbOF\":\"Parámetros inconsistentes del préstamo flash\",\"iEPVHF\":\"No hay suficiente poder de voto para participar en esta propuesta\",\"iEW87X\":\"Poder delegado\",\"iEju36\":[\"Has votado \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Seleccionar tolerancia de deslizamiento\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Ingresa una cantidad\",\"iSLIjg\":\"Conectar\",\"iUo5rv\":\"tokens no es lo mismo que stakearlos. Si deseas stakearlos\",\"iZxa38\":\"Úsalo para votar a favor o en contra de propuestas activas.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"En el Isolation mode, no puedes suministrar otros activos como garantía. Un límite de deuda global limita la capacidad de préstamo del activo aislado. Para salir del Isolation mode, deshabilita \",[\"0\"],\" como garantía antes de tomar prestado otro activo. Lee más en nuestras <0>preguntas frecuentes \"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"El uso de garantías está limitado debido al Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Suministrando tu\",\"jFi7dz\":\"Tasa de interés determinada por el gobierno de Aave. Esta tasa puede cambiar con el tiempo dependiendo de la necesidad de que el suministro de GHO se contraiga/expanda. <0>Aprende más\",\"jG3UJ7\":\"Desactivar el E-Mode\",\"jKYzR1\":\"Habilitar E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Periodo restante de cooldown\",\"jeMZNr\":[[\"0\"],\" el servicio on-ramp es proporcionado por proveedores externos y al seleccionarlo, estás aceptando los términos de dichos proveedores. Tu acceso al servicio podría depender de que el proveedor externo esté operativo.\"],\"jfl9OP\":\"Migrado\",\"jmXdoY\":\"En E-Mode algunos activos no se pueden pedir prestados. Sal del E-Mode para obtener acceso a todos los activos\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"No disponible\",\"k/sb6z\":\"Seleccionar idioma\",\"k3wP3f\":\"<0>Atención: Los cambios de parámetros a través de la gobernanza pueden alterar el factor de salud de tu cuenta y el riesgo de liquidación. Sigue el <1>foro de gobierno de Aave para mantenerte actualizado.\",\"kACpF3\":[\"Reclamar \",[\"0\"]],\"kH6wUX\":\"Impacto del precio\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" activos seleccionados\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Para pagar en nombre de un usuario, se necesita una cantidad explícita para pagar\",\"kRTD40\":[\"Cantidad a pagar para alcanzar el \",[\"0\"],\"% de utilización\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"El límite de suministro se ha sobrepasado\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"El límite de deuda no es cero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"El balance de DAI se convertirá a través de los contratos de DSR y luego se suministrará como sDAI. El cambio no genera costos adicionales ni deslizamientos.\",\"lU2d1/\":[\"Este activo no se puede migrar debido a una liquidez insuficiente o a una limitación del límite de préstamo en el mercado v3 de \",[\"marketName\"],\".\"],\"lVhKKI\":\"Votó YAE\",\"lWLqxB\":\"No pudimos encontrar ninguna transacción relacionada con tu búsqueda. Vuelve a intentarlo con un nombre de activo diferente o restablece los filtros.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Inglés\",\"lfEjIE\":\"Aprende más en nuestra guía <0>Preguntas frecuentes\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Emisiones totales por día\",\"m7r7Hh\":\"Activos de préstamo seleccionados\",\"mDDK4p\":\"Pool de Balancer\",\"mUAFd6\":\"Versión 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos o usa <0>\",[\"0\"],\" para transferir tus activos de \",[\"network\"],\".\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Comprar \",[\"cryptoSymbol\"],\" con Fiat\"],\"mvCXBY\":\"Stakea AAVE\",\"mwdzil\":\"Vale, cerrar\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Este activo no puede usarse como garantía.\",\"n+SX4g\":\"Desarrolladores\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Apy de suministro\",\"nJgsQu\":\"Con un poder de votación de <0/>\",\"nLC6tu\":\"Francés\",\"nNHV0z\":\"Migrar múltiples garantías y activos prestados al mismo tiempo puede ser una operación costosa y podría fallar en ciertas situaciones.<0>Por lo tanto, no se recomienda migrar posiciones con más de 5 activos (depositados + tomados prestados) al mismo tiempo.\",\"nNbnzu\":\"Proposición\",\"nPGNMh\":\"Puede ser ejecutado\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Ambos\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Se produjo un error\",\"nxyWvj\":\"Retirar esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"o17QVP\":\"Tu factor de salud y la relación préstamo-valor determinan la seguridad de tu garantía. Para evitar liquidaciones, puedes suministrar más garantía o pagar las posiciones de préstamo.\",\"o1xc2V\":\"El balance de AToken no es cero\",\"o5ooMr\":\"Deuda\",\"o7J4JM\":\"Filtro\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown para undstakear\",\"oJ5ZiG\":\"El usuario no tiene deuda pendiente de tasa variable en esta reserva\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Activos de prueba\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"La tasa de interés estable <0>permanecerá igual durante la duración de su préstamo. Está recomendado para los períodos de préstamo a largo plazo y para los usuarios que prefieren la previsibilidad.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible para suministrar\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Sin resultados\",\"owSsI3\":\"Firmas listas\",\"p+R52m\":\"Ir al pool de Balancer\",\"p2S64u\":\"La relación préstamo-valor de las posiciones migradas provocaría la liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"p2Z2Qi\":\"Este activo ha alcanzado su límite de préstamo. No queda nada disponible para ser prestado de este mercado.\",\"p45alK\":\"Configurar la delegación\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"El balance subyacente debe ser mayor que 0\",\"pgWG9H\":\"No hay suficiente balance stakeado\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"por favor comprueba que la cantidad que deseas depositar no está siendo utilizada actualmente para stakear. Si está utilizando para stakear, tu transacción podría fallar.\",\"pjO/iH\":\"Cantidad mínima recibida\",\"pooutM\":\"La votación está activa\",\"pqaM5s\":\"Confirmando transacción\",\"ptaxX3\":[\"Entiendo como el cooldown (\",[\"0\"],\") y el proceso de unstaking (\",[\"1\"],\") funcionan\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"La función debe ser llamada por un pool\",\"q/51mF\":\"Migrar a V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Estrategia de tasa de interés\",\"q6lAbz\":\"Stakeado\",\"qB4kPi\":\"Suministrar APY\",\"qENI8q\":\"Configuración global\",\"qGz5zl\":\"Balance de la garantía tras pagar\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copiar el error\",\"qXCkEM\":\"Por favor, conecta tu cartera para ver tus suministros, préstamos y posiciones abiertas.\",\"qY2jnw\":\"Expiración inválida\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Cantidad inválida para quemar\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"La cantidad debe ser mayor que 0\",\"rQ+R+0\":\"Activos de suministro seleccionados\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Este activo no se puede migrar porque tienes una garantía en Isolation Mode en el mercado v3 de \",[\"marketName\"],\" que limita los activos prestados. Puedes administrar tu garantía en el <0>Panel de control V3 de \",[\"marketName\"],\"\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Mostrar activos con 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacidad\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Reclamar todas las recompensas\",\"rwyUva\":\"Estos activos están temporalmente congelados o pausados por decisiones de la comunidad de Aave, lo que significa que no se puede suministrar / tomar prestado o intercambiar tasas de estos activos. Se permiten retiros y pagos de deuda. Sigue el <0>foro de gobierno de Aave para más actualizaciones.\",\"rxJW5W\":\"Tu poder de proposición se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstakear \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NO\",\"sQv06Y\":\"para\",\"sTtO6J\":\"Confirmar transacción\",\"sXKb3l\":\"Tasa de cambio\",\"sb0q4+\":\"Unstakea aquí\",\"smJNwH\":\"Disponible para tomar prestado\",\"solypO\":\"El factor de salud no está por debajo del umbral\",\"sr0UJD\":\"Volver atrás\",\"ss5GCK\":\"La dirección del proveedor del grupo de direcciones no es válida\",\"swEgK4\":\"Tu información de voto\",\"t+wtgf\":\"Nada tomado prestado aún\",\"t/YqKh\":\"Eliminar\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Precio del oráculo\",\"tFZLf8\":\"Este cálculo de gas es solo una estimación. Tu cartera establecerá el precio de la transacción. Puedes modificar la configuración de gas directamente desde tu proveedor de cartera.\",\"tHuvQI\":\"Ir al panel de control V3\",\"tOcg3N\":\"Dado que este activo está congelado, las únicas acciones disponibles son retirar y pagar, a las que se puede acceder desde el <0>Panel de control\",\"tOuXfv\":[\"Cantidad a tomar prestado para alcanzar el \",[\"0\"],\"% de utilización\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"Por favor, conecta tu cartera\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Tus suministros\",\"u3ZeYl\":\"Error en la transacción\",\"u706uF\":\"Préstamo flash inválido\",\"u8Gfu7\":[\"Sin resultados de búsqueda\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No hay activos seleccionados para migrar.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrando\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Para el pago de un tipo específico de deuda, el usuario necesita tener una deuda de ese tipo\",\"ulNuNq\":\"Exportar datos a\",\"ulup2p\":\"Comprar Crypto con Fiat\",\"usB84Z\":\"La cantidad máxima disponible para tomar prestado está limitada porque casi se ha alcanzado el límite de préstamo del protocolo.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restakeado\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Ocultar\",\"vMba49\":\"Tomar prestado no está habilitado\",\"vMpNwt\":\"Aprobar con\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Idioma\",\"vesuBJ\":\"Te permite decidir si utilizar un activo suministrado como garantía. Un activo utilizado como garantía afectará a tu poder de préstamo y factor de salud.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"El balance de deuda estable no es cero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"APR de recompensas\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Tu \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Canal de Discord\",\"wQZbc/\":\"El llamador de la función no es un AToken\",\"wZFvVU\":\"VOTAR SI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"El Protocolo Aave está programado para usar siempre el precio de 1 GHO = $1. Esto es diferente del uso del precio de mercado a través de oráculos para otros criptoactivos. Esto crea oportunidades de arbitraje estabilizadoras cuando el precio de GHO fluctúa.\",\"wh7Ezv\":\"No tienes balance de AAVE/stkAAVE/aAave para delegar.\",\"wlsIx7\":\"Con la testnet Faucet puedes obtener activos gratuitos para probar el Protocolo Aave. Asegúrate de cambiar tu proveedor de cartera a la red de testnet adecuada, selecciona el activo deseado y haz clic en \\\"Faucet\\\" para obtener tokens transferidos a tu cartera. Los activos de una testnet no son \\\"reales\\\", lo que significada que no tienen valor monetario. <0>Aprende más\",\"wmE285\":\"Obtener Token ABP v2\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"Como resultado de las decisiones del gobierno, este pool de stakeo de ABPT está obsoleto. Tienes la flexibilidad de migrar todos tus tokens a v2 o unstakearlos sin ningún periodo de cooldown.\",\"x5KiLL\":\"Los activos seleccionados se han migrado correctamente. Visita el panel de control del mercado para verlos.\",\"x7F2p6\":\"Diferencial actual\",\"x7K5ib\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue \",[\"0\"],\" de prueba gratis en\"],\"x9iLRD\":\"tokens, por favor ve al\",\"xNy/UG\":\"Pagar con\",\"xPm8wv\":\"Aprende más sobre los riesgos involucrados\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Tu información\",\"xaWZ6f\":\"Cambio tipo de APY\",\"xh6k71\":\"El uso de garantías está limitado debido al isolation mode.\",\"xvIklc\":\"El préstamo flash está deshabilitado para este activo, por lo tanto, esta posición no se puede migrar.\",\"y5rS9U\":\"Migrar\",\"yB1YpA\":\"Modo oscuro\",\"yCrG6m\":\"Tamaño total del mercado\",\"yJUUbn\":\"Resumen de la transacción\",\"yLGmLX\":[\"Restakear \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Dirección no válida\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Haz seguimiento de tu cartera\",\"yh2sjd\":[\"Impacto en el precio \",[\"0\"],\"%\"],\"ylmtBZ\":\"La aplicación se ejecuta en fork mode.\",\"ymNY32\":[\"No hay fondos suficientes en la reserva\",[\"0\"],\"para tomar prestado\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Cerrar\",\"z4uGQg\":\"El límite de deuda está sobrepasado\",\"z5JUmg\":[\"Estimated costs are \",[\"0\"],\"% of the sell amount. This order is unlikely to be filled.\"],\"z5UQOM\":\"La garantía elegida no puede ser liquidada\",\"z5Y+p6\":[\"Suministrando \",[\"symbol\"]],\"zCjNKs\":\"No se puede realizar la acción porque la reserva está congelada\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Límite de deuda aislado\",\"zTOjMP\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Deuda restante\",\"zmTPiV\":\"Balance de suministro\",\"zpPbZl\":\"Parámetros de riesgo de liquidación\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menú\",\"zwWKhA\":\"Aprende más\",\"zy9fXn\":[\"Este activo está congelado en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"zys+R6\":\"Ten en cuenta la congestión de la red y los precios del gas.\",\"+EGVI0\":\"Recibir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Parece que no podemos cambiar la red automáticamente. Por favor, comprueba si puedes cambiarla desde la cartera.\",\"+kLZGu\":\"Cantidad de activos suministrados\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Cantidad mínima de Aave stakeado\",\"00OflG\":\"No hay suficiente liquidez para que el activo seleccionado realice el cambio. Prueba reduciendo la cantidad.\",\"08/rZ9\":\"El periodo de cooldown es el tiempo requerido antes de unstakear tus tokens (20 días). Solo puedes retirar tus activos del Módulo de Seguridad después del periodo de cooldown y dentro de la ventana de unstakeo.<0>Aprende más\",\"1Onqx8\":[\"Aprobando \",[\"symbol\"],\"...\"],\"1m9Qqc\":\"Retirando y Cambiando\",\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Dirección bloqueada\",\"2bAhR7\":\"Conoce GHO\",\"2o/xRt\":\"Se ha alcanzado el límite de suministro en la reserva especificada. Prueba reduciendo la cantidad.\",\"3O8YTV\":\"Interés total acumulado\",\"4iPAI3\":\"Cantidad de préstamo mínima de GHO\",\"6NGLTR\":\"Cantidad descontable\",\"6yAAbq\":\"APY, tasa de préstamo\",\"73Auuq\":\"Los parámetros de descuento son decididos por la comunidad de Aave y pueden cambiar con el tiempo. Consulta el Gobierno para ver actualizaciones y vota para participar. <0>-Aprende más\",\"7sofdl\":\"Retirar y Cambiar\",\"ARu1L4\":\"Pagado\",\"B6aXGH\":\"Estable\",\"B9Gqbz\":\"Tasa variable\",\"BJyN77\":\"Debido al impacto del factor de salud, se requiere un préstamo flash para realizar esta transacción, pero el Gobierno de Aave ha inhabilitado la disponibilidad de préstamos flash para este activo. Intenta reducir la cantidad o suministrar garantía adicional.\",\"BjLdl1\":\"Con un descuento\",\"CMHmbm\":\"Deslizamiento\",\"EBL9Gz\":\"¡COPIADO!\",\"ES8dkb\":\"Interés fijo\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Descuento\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Guardar y compartir\",\"JK9zf1\":[\"Interés compuesto estimado, incluyendo el descuento por Staking \",[\"0\"],\"AAVE en el Módulo de Seguridad.\"],\"JPrLjO\":\"No puedes usar este activo como garantía\",\"JU6q+W\":\"Recompensa(s) por reclamar\",\"K05qZY\":\"Retirar y Cambiar\",\"KRpokz\":\"VER TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Habilitar este activo como garantía aumenta tu poder préstamo y el factor de salud. Sin embargo, puede ser liquidado si tu factor de salud cae por debajo de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stakear GHO\",\"RIfckG\":[\"Desactivar \",[\"symbol\"],\" como garantía\"],\"RbXH+k\":\"Los poseedores de AAVE, GHO y ABPT (solo en la red de Ethereum) pueden stakear sus activos en el Módulo de Seguridad para añadir más seguridad al protocolo y obtener incentivos de seguridad. En el caso de un evento de shortfall, tu stakeo puede ser reducido para cubrir el déficit. proporcionando una capa adicional de protección para el protocolo.\",\"RoafuO\":\"Enviar feedback\",\"TeCFg/\":\"Cambio de tasa de préstamo\",\"TskbEN\":\"Los poseedores de stkAAVE reciben un descuento en la tasa de préstamo de GHO\",\"TtZL6q\":\"Parámetros del modelo de descuento\",\"Tz0GSZ\":\"actividades bloqueadas\",\"UE3KJZ\":\"El historial de transacciones no está disponible actualmente para este mercado\",\"W8ekPc\":\"Volver al panel de control\",\"XZzneG\":\"Saldrás del modo aislamiento y otros tokens pueden ser usados ahora como garantía\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Deshabilitar este activo como garantía afecta tu poder de préstamo y Factor de Salud.\",\"aX31hk\":\"Tu balance es más bajo que la cantidad seleccionada.\",\"al6Pyz\":\"Supera el descuento\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"No hay suficiente garantía para pagar esta cantidad de deuda con\",\"cqnmnD\":\"Tasa de interés efectiva\",\"dMtLDE\":\"para\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY con descuento aplicado\",\"fHcELk\":\"APR Neto\",\"flRCF/\":\"Descuento por staking\",\"gncRUO\":\"Esta dirección está bloqueada en app.aave.com porque está asociada con una o más\",\"gr8mYw\":\"Puedes tomar prestado hasta <0/> GHO al <1/> (descuento máximo)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Balance tomado prestado\",\"i2JTiw\":\"Puedes ingresar una cantidad específica en el campo.\",\"jMam5g\":[\"Balance \",[\"0\"]],\"jpctdh\":\"Ver\",\"kwwn6i\":\"Los usuarios que stakean AAVE en el Modulo de Seguridad (es decir, poseedores de stkAAVE) reciben un descuento en la tasa de interés de préstamo de GHO. Este descuento se aplica a 100 GHO por cada 1 stkAAVE en posesión. Usa el calculador de abajo para ver la tasa de préstamo de GHO con el descuento aplicado.\",\"lNVG7i\":\"Selecciona un activo\",\"lt6bpt\":\"Garantía a pagar con\",\"mIM0qu\":\"Cantidad esperada a pagar\",\"mzI/c+\":\"Descargar\",\"n8Psk4\":\"No podemos detectar una cartera. Conecta una cartera para stakear y ver tu balance.\",\"nOy4ob\":\"Te sugerimos volver al Panel de control.\",\"nakd8r\":\"poseedores de stkAAVE obtienen un descuento en la tasa de préstamo de GHO\",\"nh2EJK\":[\"Por favor, cambia a \",[\"networkName\"],\".\"],\"ntkAoE\":\"Descuento aplicado para <0/> AAVE stakeados\",\"o4tCu3\":\"APY préstamo\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"El periodo de cooldown es \",[\"0\"],\". Después \",[\"1\"],\" del cooldown, entrarás a la ventana de unstakeo de \",[\"2\"],\". Continuarás recibiendo premios durante el cooldown y la ventana de unstakeo.\"],\"p3j+mb\":\"Tu balance de recompensa es 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interés acumulado\",\"rf8POi\":\"Cantidad de activos tomados prestados\",\"ruc7X+\":\"Añade stkAAVE para ver el APY de préstamo con el descuento\",\"sK+Nag\":\"Revisión tx\",\"t81DpC\":[\"Aprueba \",[\"symbol\"],\" para continuar\"],\"umICAY\":\"<0><1><2/>Añade stkAAVE para ver la tasa de préstamo con descuento\",\"uwAUvj\":\"COPIAR IMAGEN\",\"v8x7Mg\":\"Garantía insuficiente para cubrir la nueva posición de préstamo. La cartera debe tener poder de préstamo suficiente para realizar el cambio de deuda.\",\"wRRqvW\":\"No tienes suministros en este activo\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Habilitar \",[\"symbol\"],\" como garantía\"],\"yW1oWB\":\"Tipo APY\",\"yhvj6d\":\"No puedes cambiar el uso como modo de garantía para este activo, porque causará una liquidación\",\"zevmS2\":\"<0><1><2/>añade <3/> stkAAVE para tomar prestado al <4/> (descuento máximo)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si NO unstakeas entre \",[\"0\"],\" de la ventana de unstakeo, necesitarás activar el proceso de cooldown de nuevo.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participar en esta reserva de \",[\"symbol\"],\" da recompensas anuales.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Utiliza tu balance de AAVE, stkAAVE o aAava para delegar tu voto y poder de proposición. No enviarás ningún token, solo los derechos de votar y proponer cambios en el protocolo. Puedes volver a delegar o revocar el poder de vuelta en cualquier momento.\",\"+i3Pd2\":\"Límite del préstamo\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Cantidad para migrar\",\"/7ykiW\":\"Tomar prestado esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"Preguntas frecuentes\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"El préstamo estable no está habilitado\",\"/yQcJM\":\"Valor total\",\"00AB2i\":\"El usuario no tomó prestado el activo especificado\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Cambio de tasa\",\"0BF3yK\":\"Lo sentimos, no hemos podido encontrar la página que estabas buscando.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Riesgo de liquidación\",\"0ojY+Y\":\"Balance actual v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Cambio de garantía\",\"0wGCWc\":\"Esta es la cantidad total que puedes suministrar en esta reserva. Puedes suministrar el balance de tu cartera hasta que se alcance el límite de suministro.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"Los datos de los precios no están disponibles actualmente para esta reserva en el subgraph del protocolo\",\"1LjK22\":\"Historial de transacciones\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Por favor conecta una cartera para ver tu información personal aquí.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Umbral <0/> de liquidación\",\"1t7rez\":\"El suministro de activos está limitado a una cierta cantidad para reducir la exposición del protocolo a este activo y ayudar a manejar los riesgos implicados.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Ver detalles\",\"2FYpfJ\":\"Más\",\"2O3qp5\":\"Liquidez disponible\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"Este activo no se puede migrar debido a una restricción del límite de suministro en el mercado v3 de \",[\"marketName\"],\".\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave es un protocolo totalmente descentralizado, gobernado por la comunidad de poseedores de tokens AAVE. Los poseedores de tokens AAVE discuten, proponen y votan colectivamente sobre las actualizaciones del protocolo. Los poseedores de tokens AAVE (solo en la red Ethereum) pueden votar ellos mismos sobre nuevas propuestas o delegarse a una dirección de su elección. Para aprender más, consulta la\",\"2a6G7d\":\"Por favor introduce una dirección de cartera válida.\",\"2eBWE6\":\"Acepto los riesgos involucadros.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"El préstamo estable no está habilitado\",\"34Qfwy\":\"El límite del préstamo se ha sobrepasado\",\"39eQRj\":[\"Tomar prestado \",[\"symbol\"]],\"3BL1xB\":\"Total suministrado\",\"3K0oMo\":\"Suministro restante\",\"3MoZhl\":\"No hay suficiente garantía para cubrir un nuevo préstamo\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Suministrar \",[\"symbol\"]],\"3mXg0z\":\"LTV máximo\",\"3q3mFy\":\"Pagar\",\"3qsjtp\":\"El promedio ponderado de APY para todos los activos suministrados, incluidos los incentivos.\",\"3rL+os\":\"Solo puedes retirar tus activos del Módulo de Seguridad después de que finalice el período de cooldown y la ventana de unstakeo esté activa.\",\"42UgDM\":[\"Migrar al mercado V3 de \",[\"0\"]],\"49UFQA\":\"Resultados de la votación\",\"4DMZUI\":\"Ver Transacciones\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Términos\",\"4YYh4d\":\"Máximo disponible para tomar prestado\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Firma para continuar\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transacciones\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue activos de prueba gratis en\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentación\",\"5NOSGa\":\"El límite de deuda limita la cantidad posible que los usuarios del protocolo pueden tomar prestado contra este activo. El límite de deuda es específico para los activos en isolation mode y se indica en USD.\",\"5Ncc6j\":[\"Este activo casi ha alcanzado su límite de suministro. Solo se puede suministrar \",[\"messageValue\"],\" a este mercado.\"],\"5cZ/KX\":\"El suministro de deuda variable no es cero\",\"5che++\":\"Para solicitar acceso a este mercado, porfavor visita: <0>Nombre del proveedor de acceso\",\"5ctNdV\":[\"Mínimo \",[\"0\"],\" recibido\"],\"5hDe9v\":\"Acción de permiso requerida\",\"5rsnKT\":\"Recompensas disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Ver todos los votos\",\"6/dCYd\":\"Resumen\",\"60crCe\":\"Todas las transacciones\",\"62Xcjh\":\"Garantía\",\"65A04M\":\"Español\",\"68ANm7\":\"Withdrawing GHO\",\"6G8s+q\":\"Firmando\",\"6Jrv+z\":[\"Pagar \",[\"symbol\"]],\"6Xr0UU\":\"Cooling down...\",\"6bxci/\":\"Poder de votación\",\"6f8S68\":\"Mercados\",\"6g1gi0\":\"Propuestas\",\"6gvoHP\":\"Copiar mensaje de error\",\"6h3Q5G\":\"reembolsado\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Cambiar de red\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Factor de salud\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Alcanzado\",\"7YlcXu\":\"El fork mode está activado\",\"7Z76Iw\":\"Tomar prestado no está disponible porque estás usando el Isolation mode. Para administrar el Isolation mode, visita tu <0>Panel de control.\",\"7aKlMS\":\"Compartir en Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Reclamar todo\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7i1oxe\":\"Withdrawing and Swapping\",\"7l88b8\":\"No se pudieron recuperar los datos, por favor recarga el gráfico.\",\"7p5kLi\":\"Panel de control\",\"8+6BI0\":\"Ten cuidado - Estás muy cerca de la liquidación. Considera depositar más garantía o pagar alguno de tus préstamos\",\"87pUEW\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos.\"],\"8F1i42\":\"Página no encontrada\",\"8G8M0u\":\"Cargando datos...\",\"8Iu1QS\":\"retirado\",\"8JL93T\":\"Todas las propuestas\",\"8Q51DU\":\"Añadir a la cartera\",\"8X/oyn\":\"Cantidad invalidad para generar\",\"8Z5FPv\":\"Desconectar cartera\",\"8Zz7s5\":\"activos\",\"8aLW8H\":\"Balance a revocar\",\"8bOT3H\":\"Tasa de uso\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Ver contrato\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Mostrar\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Estás entrando en el Isolation mode\",\"9CDK3/\":[\"Tomar prestado no está disponible actualmente para \",[\"0\"],\".\"],\"9GIj3z\":\"Tamaño de la reserva\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Balance stakeado\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votos actuales\",\"9Rw96f\":[\"Este activo casi ha alcanzado su límite de préstamo. Solo hay \",[\"messageValue\"],\" disponibles para ser prestado de este mercado.\"],\"9Xj/qR\":[\"Algunos activos migrados no se utilizarán como garantía debido al isolation mode habilitado en el mercado V3 de \",[\"marketName\"],\". Visita el <0>Panel de control de \",[\"marketName\"],\" V3 para administrar el isolation mode.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Este activo ha alcanzado su límite de suministro. No queda nada disponible para ser suministrado desde este mercado.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"MAI ha sido pausado debido a una decisión de la comunidad. Los suministros, préstamos y pagos se han visto afectados. <0>Más información\",\"9lXchd\":\"Token subyacente\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Puesto que esta es una red de pruebas, puedes obtener cualquiera de los activos si tienes ETH en tu cartera\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Elige uno de los servicios on-ramp\",\"A6dCI6\":[\"La máxima cantidad disponible para tomar prestado es <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Tus préstamos\",\"AV7cGz\":\"Revisa los detalles del approve\",\"AZOjB8\":\"Recuperando datos...\",\"Ai0jas\":\"Únete a la discusión de la comunidad\",\"Ajl2rq\":\"El poder de préstamo y los activos están limitados debido al Isolation mode.\",\"AqgYNC\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"stETH suministrado como garantía continuará acumulando recompensas de staking proporcionadas por rebases diarios.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"El uso como garantía está limitado debido al isolation mode. <0>Aprende más\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Categoría de activos\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Este activo está congelado debido a una decisión de la comunidad de Aave. <0>Más información\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Documento técnico\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Griego\",\"CkTRmy\":[\"Reclamar \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Por favor conecta tu cartera para ver la herramienta de migración.\",\"CtGlFb\":[\"Faucet \",[\"networkName\"]],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Esta acción reducirá el factor de salud de V3 por debajo del umbral de liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"Este activo ha sido pausado debido a una decisión de la comunidad. El suministro, los retiros, los préstamos y los pagos se han visto afectados.\",\"DAma/S\":\"La garantía es (en su mayoría) el mismo activo que se está tomando prestado\",\"DCnFg0\":[\"Direcciones (\",[\"0\"],\")\"],\"DG3Lv1\":\"Entiendo completamente los riesgos de migrar.\",\"DONJcV\":\"El activo base no puede ser rescatado\",\"DR+4uL\":\"Balance del suministro después del cambio\",\"DWjrck\":[\"Este activo no se puede migrar al mercado V3 de \",[\"marketName\"],\" debido a las restricciones del E-mode. Puedes deshabilitar o administrar las categorías del E-mode en tu <0>Panel de control V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave por mes\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Colateralización\",\"DxfsGs\":\"Puedes reportar cualquier incidente a nuestro <0>Discord o <1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Deshabilitado\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Restakeando \",[\"symbol\"]],\"Ebgc76\":[\"Retirando \",[\"symbol\"]],\"EdQY6l\":\"Ninguno\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Reactivar el periodo de cooldown para unstakear \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrar a V3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Aprende más.\",\"FHlMf/\":\"Balance actual v2\",\"FHpxjF\":[\"El factor de reserva es un porcentaje de interés que va a un \",[\"0\"],\" que es controlado por el gobierno de Aave para promover el crecimiento del ecosistema.\"],\"FOBZa6\":\"Capacidad de préstamo utilizada\",\"FPKEug\":\"Operación no soportada\",\"FbmMe7\":\"Direcciones vinculadas\",\"Fdp03t\":\"en\",\"Fjw9N+\":\"Activos a suministrar\",\"FmN0fk\":\"Restakear\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO es un activo nativo descentralizado, digital y respaldado por garantía, vinculado al USD. Es creado por los usuarios que lo toman prestado contra múltiples garantías. Cuando el usuario paga su posición de préstamo de GHO, el protocolo quema el GHO de ese usuario. Todos los pagos de interés acumulados por los acuñadores de GHO serán transferidos directamente a la tesorería de\xA0la\xA0DAO\xA0de\xA0Aave.\",\"GQrBTq\":\"Cambiar E-Mode\",\"GWswcZ\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. El 20 de diciembre de 2022, renFIL ya no será compatible y no se podrá conectar de nuevo a su red nativa. Se recomienda retirar las posiciones de suministro y pagar las posiciones de préstamo para que renFIL se pueda convertir de nuevo a FIL antes de la fecha límite. Después de esta fecha, ya no será posible convertir renFIL a FIL. <0>Más detalles\",\"GX8GKD\":\"Activos\",\"GgEj+0\":\"Modo de solo lectura. Conéctate a una cartera para realizar transacciones.\",\"GjkIKV\":\"finaliza\",\"GtP2hp\":[\"Tomar prestado no está disponible porque has habilitado el Efficieny Mode (E-Mode) para la categoría \",[\"0\"],\". Para manejar las categorías del E-Mode visita tu <0>Panel de control.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Lo sentimos, se produjo un error imprevisto. Mientras tanto, puedes intentar recargar la página, o volver después.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Ventana de unstakeo\",\"HpK/8d\":\"Recargar\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"Este activo no se puede migrar al mercado v3 de \",[\"marketName\"],\", ya que el activo de garantía habilitará el isolation mode.\"],\"Hvwnm9\":[\"La cantidad máxima disponible para suministrar está limitada porque el límite de suministro del protocolo está al \",[\"0\"],\"%.\"],\"I8CX2c\":\"La cantidad total de tus activos denominados en USD que pueden ser usados como garantía para activos de préstamo.\",\"IAD2SB\":[\"Reclamando \",[\"symbol\"]],\"IG9X9/\":\"Tomar prestado este activo está limitado a una cierta cantidad para minimizar la insolvencia del fondo de liquidez.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Está previsto que este activo se desvincule debido a una decisión del Gobierno del Protocolo Aave. <0>Más detalles\",\"IP+I/j\":\"Periodo de cooldown\",\"IaA40H\":\"Liquidación en\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Administrar analíticas\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Unstakeando \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stakear\",\"JZMxX0\":\"No hay suficiente balance en tu cartera\",\"Jgflkm\":\"Obtener GHO\",\"JoMQnI\":\"Balance de la cartera\",\"JtwD8u\":\"Balance tomado prestado tras pagar\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"KLXVqE\":[\"Los tokens stETH se migrarán a Wrapped stETH usando el wrapper del protocolo de Lido, lo que provoca un cambio en el balance de suministro después de la migración: \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Esto representa el umbral en el que un préstamo será considerado sin garantía suficiente y sujeto a la liquidación de la misma. Por ejemplo, si una garantía tiene un umbral de liquidación del 80 %, significa que el préstamo será liquidado cuando el valor de la deuda alcanze el 80% del valor de la garantía.\",\"KYAjf3\":\"Aislado\",\"KkPgim\":\"Cambiando E-Mode\",\"KnN1Tu\":\"Caduca\",\"KoOBI2\":\"Debido a mecánicas internas de stETH requeridas para el soporte del rebase, no es posible realizar un cambio de garantía donde stETH es el token de origen.\",\"KojyJ4\":\"Red incorrecta\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Introduce la dirección ETH\",\"KvG1xW\":\"Reclamando\",\"L+8Lzs\":\"LTV actual\",\"L+qiq+\":\"Mercado\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Sin poder de voto\",\"LL0zks\":\"Puede ser garantía\",\"LLdJWu\":\"AAVE Reclamable\",\"LSIpNK\":\"Tomar prestado y pagar en el mismo bloque no está permitido\",\"LVt3TI\":[\"<0>Tolerancia de deslizamiento <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Modo E\",\"Ly2enB\":\"This will cancel the order via an on-chain transaction. Note that the order will not be marked as cancelled in the CoW Protocol system, but will remain open and expire naturally. Keep in mind that a solver may already have filled your order.\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Tip: Intenta aumentar el deslizamiento o reduce la cantidad de entrada\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Dirección del destinatario\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vista de stakeo\",\"McHlGl\":\"Cambio de APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si el factor de salud se encuentra por debajo de 1, la liquidación de tu colateral puede ser activada.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Has cancelado la transacción.\",\"MnE2QX\":\"Información de préstamo\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valor de retorno inválido en la función executor del préstamo flash\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"Este activo solo se puede utilizar como garantía en isolation mode con poder de préstamo limitado. Para entrar en el isolation mode, deshabilita todas las demás garantías.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"Pendiente...\",\"NK9ikO\":\"Balance de la cartera\",\"NMt2CB\":\"Cantidad reclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Collector Contract\",\"NfpPeS\":\"Nada invertido\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"El límite de minteo sin respaldo ha sido excedido\",\"O+tyU+\":[\"La cantidad máxima disponible para tomar prestado contra este activo está limitada porque el límite de deuda está al \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstakear\",\"OR8cYX\":\"Resumen de la propuesta\",\"OYuJ9K\":\"El límite de deuda del protocolo está al 100% para este activo. No es posible tomar más prestado usando este activo como garantía.\",\"OfhWJH\":\"Restablecer\",\"Og2SKn\":\"deshabilitado\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Página web\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirar\",\"P1dURE\":\"Revocar poder\",\"P2WCD/\":[\"El activo subyacente no existe en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"P2sL6B\":\"Cuando ocurre una liquidación, los liquidadores pagan hasta el 50% de la cantidad pendiente del préstamo en nombre del prestatario. A cambio, pueden comprar la garantía con descuento y quedarse con la diferencia (sanción de liquidación) como bonificación.\",\"P6sRoL\":\"Stakea ABPT\",\"P72/OW\":\"El promedio ponderado de APY para todos los activos prestados, incluidos los incentivos.\",\"P7e6Ug\":\"Por favor conecta tu cartera para ver el historial de transacciones.\",\"PByO0X\":\"Votos\",\"PI+kVe\":\"Deshabilitar fork\",\"PJK9u/\":\"Apy préstamo\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Umbral de liquidación\",\"PctCOf\":\"A temporary contract will be used to execute the trade. Your wallet may show a warning for approving a new or empty address.\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Esta acción reducirá el factor de salud V2 por debajo del umbral de liquidación. Mantén la garantía o migra la posición de préstamo para continuar.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"El Aave Balancer Pool Token (ABPT) es un token de pool de liquidez. Puedes recibir ABPT depositando una combinación de AAVE + wstETH en el pool de liquidez de Balancer. Luego puedes stakear tu BPT en el módulo de seguridad para asegurar el protocolo y ganar incentivos de seguridad.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Retirando\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"No alcanzado\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Diferencial\",\"RNK49r\":\"Firma inválida\",\"RS0o7b\":\"Estado\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Detalles de la propuesta\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"El activo no está listado\",\"Rj01Fz\":\"Enlaces\",\"RmWFEe\":\"Staking APR\",\"RtBLm7\":\"El factor de salud es menor que el umbral de liquidación\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Habilitado\",\"SDav7h\":\"Fondos en el Módulo de Seguridad\",\"SENccp\":\"Si el error persiste, <0/> podrías reportarlo a esto\",\"SIWumd\":\"Mostrar activos congelados o pausados\",\"SM58dD\":\"Cantidad en cooldown\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Error al cargar los votantes de la propuesta. Por favor actualiza la página.\",\"SSQVIz\":\"Umbral de liquidación\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"El modo de solo lectura permite ver las posiciones de las direcciones en Aave, pero no podrás realizar transacciones.\",\"SZRUQ4\":\"Deslizamiento máximo\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"El límite de préstamo del protocolo está al 100% para este activo. No es posible tomar más prestado.\",\"Sk2zW9\":\"Desactivando E-Mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"La dirección del proveedor del pool no esta registrada\",\"T/AIqG\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"T0xCO9\":\"No se puede validar la dirección de la cartera. Vuelve a intentarlo.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Tomar prestado\",\"TFxQlw\":\"Penalización de liquidación\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"El activo solo puede usarse como garantía en el Isolation mode únicamente.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"El usuario no tiene deuda pendiente de tasa estable en esta reserva\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Balance de préstamo después del cambio\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recarga la página\",\"U2r8nY\":\"Elige cuánto poder de voto/proposición otorgar a otra persona delegando parte de tu balance de AAVe o stkAAVE. Tus tokens permanecerán en tu cuenta, pero tu delegado podrá votar o proponer en tu lugar. Si tu balance de AAVE, stkAAVE o aAave cambia, el poder de voto/proposición de tu delegado se ajustará automáticamente.\",\"U8IubP\":\"La aplicación se está ejecutando en testnet mode. Aprende como funciona en\",\"U9btTk\":\"El activo no se puede pedir prestado en isolation mode\",\"UAOZRe\":\"El impacto del precio es la diferencia entre el valor total de los tokens de entrada cambiados y los tokens de destino obtenidos (en USD), que resulta de la liquidez limitada del par de cambio.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Detalles\",\"UTTKmT\":\"Cooldown de stakeo activado\",\"UXeR72\":\"Estos fondos se han tomado prestados y no están disponibles para su retirada en este momento.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"El ratio LTV máximo representa el poder de endeudamiento máximo de una garantía específica. Por ejemplo, si una garantía tiene un LTV del 75 %, el usuario puede pedir prestado hasta 0,75 ETH en la moneda principal por cada 1 ETH de garantía.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"No hay recompensas para reclamar\",\"V0f2Xv\":\"Factor de reserva\",\"V1HK43\":\"Riesgos de migración\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Deuda cubierta\",\"VHOVEJ\":\"Conectar cartera\",\"VMfYUK\":\"Seguridad de tu garantía depositada contra los activos prestados y su valor subyacente.\",\"VOAZJh\":\"Total de préstamos\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Revisar detalles de la tx\",\"W5hVah\":\"Nada suministrado aún\",\"W5kTFy\":\"Votando\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"No respaldado\",\"WNGZwH\":\"El E-Mode incrementa tu LTV para una categoría seleccionada de activos hasta el <0/>. <1>Aprende más\",\"WPWG/y\":\"Configuración y estado de la reserva\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"El usuario no puede retirar más que el balance disponible\",\"WaZyaV\":\"<0>Ampleforth es un activo con rebase. Visita la <1>documentación para aprender más.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Debido a que este activo está en pausa, no se pueden realizar acciones hasta nuevo aviso\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Para tomar prestado, necesitas suministrar cualquier activo para ser utilizado como garantía.\",\"X/ITG9\":\"Copiar el texto del error\",\"X3Pp6x\":\"Utilizado como garantía\",\"X4Zt7j\":\"No se puede realizar la acción porque la reserva está pausada\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Direcciones de cartera de contrato inteligente representativas (Safe) en otras cadenas.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Por favor ten siempre en cuenta tu <0>factor de salud (HF) cuando migres parcialmente una posición y que tus tasas serán actualizadas a tasas de la V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy+o6U\":\"For security reasons, limit orders are not supported for Native tokens. To place a limit order, use the wrapped version.\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTAR NO\",\"YDIOks\":\"Habilitar E-Mode\",\"YSodyW\":\"Esta acción reducirá tu factor de salud. Por favor ten en cuenta el riesgo incrementado de liquidación de la garantía.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Testnet mode está ON\",\"YrDxdO\":\"Si tu relación préstamo-valor supera el umbral de liquidación, tu garantía puede ser liquidada.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"No se cumplieron las condiciones de ajuste de tasas de interés\",\"YyydIq\":[\"Añade \",[\"0\"],\" a tu cartera para hacer un seguimiento del balance.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Gobierno de Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Modo de eficiencia (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Deshabilitar testnet\",\"Zbyywy\":\"Max slashing\",\"ZfUGFb\":\"Antes de suministrar\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valor de liquidación\",\"ZrEc8j\":\"No pudimos encontrar ningún activo relacionado con tu búsqueda. Vuelve a intentarlo con un nombre diferente de activo, símbolo o dirección.\",\"ZsLF7e\":\"habilitado\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Tempo restante para unstakear\",\"a7u1N9\":\"Precio\",\"a9D+6D\":\"Unstakeado\",\"aEtiwq\":\"Votar NO\",\"aMmFE1\":\"Comprar Crypto con Fiat\",\"aOKIms\":\"Los parámetros del array que deberían ser iguales en longitud no lo son\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"Se ha producido un error al recuperar la propuesta.\",\"aoXTT7\":\"APY préstamo, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Advertencia periodo de cooldown\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Activo\",\"bXQ/Og\":\"Compartir en twitter\",\"bXr0ee\":\"Los activos aislados han limitado tu capacidad de préstamo y otros activos no pueden ser usados como garantía.\",\"bYmAV1\":\"Direcciones\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"La cantidad solicitada es mayor que el tamaño máximo del préstamo en el modo de tasa estable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Suministrar\",\"bxN6EM\":\"No se puede deshabilitar E-Mode\",\"c91vuQ\":\"La dirección no es un contrato\",\"c97os2\":\"aToken de Aave\",\"c9b44w\":\"No puedes retirar esta cantidad porque causará una liquidación\",\"cBc+4A\":\"Esta es la cantidad total disponible que puedes tomar prestada. Puedes tomar prestado basado en tu garantía y hasta que el límite de préstamo se alcance.\",\"cIl5kp\":\"Tu poder de voto se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"cLo09S\":\"Detalles de riesgo\",\"cNT+ij\":\"Tomar prestado no está disponible porque has habilitado el Efficiency Mode (E-Mode) y el Isolation mode. Para administrar el E-Mode y el Isolation Mode, visita tu <0>Panel de control.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Para enviar una propuesta de cambios menores al protocolo, necesitarás al menos 80K de poder. Si deseas cambiar la base central del código, necesitarás un poder de 320K.<0>Aprende más\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Votar SI\",\"ckf7gX\":[\"Pagando \",[\"symbol\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Hilo de discusión del foro\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"No has participado en esta propuesta\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gobierno\",\"dEgA5A\":\"Cancelar\",\"dIsyWh\":\"La validación del LTV ha fallado\",\"dOB5nW\":[\"La cantidad máxima disponible para suministrar es <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"No tienes suficientes fondos en tu cartera para pagar la cantidad total. Si procedes a pagar con tu cantidad actual de fondos, aún tendrás un pequeño préstamo en tu panel de control.\",\"dXUQFX\":\"Activos a tomar prestado\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"Tomar prestado está deshabilitado debido a una decisión de la comunidad de Aave. <0>Más información\",\"djsg0o\":\"Uso de la garantía\",\"drdV8R\":\"Liquidación\",\"dxW8cS\":\"Token de deuda de Aave\",\"e4V3oW\":\"Top 10 direcciones\",\"eD8WX/\":\"La acción requiere una reserva activa\",\"eJRJ04\":\"Cantidad para unstakear\",\"eLh0cL\":\"El deslizamiento es la diferencia entre las cantidades calculadas y las recibidas debido a las condiciones cambiantes del mercado entre el momento en que se envía la transacción y su verificación.\",\"ePK91l\":\"Editar\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Recompensas de Staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aún no hay transacciones.\",\"ebLGGN\":\"Total tomado prestado\",\"ecqEvn\":\"El balance de garantía es 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible en\",\"enruNF\":\"empieza\",\"eqLYiD\":\"Unstakea ahora\",\"evw5ha\":\"Valor neto\",\"ezcU16\":\"Obtener Token ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Has cambiado a tasa \",[\"0\"]],\"fMJQZK\":\"Prestado\",\"fZ5Vnu\":\"Recibido\",\"firl9Q\":\"Tu actual relación préstamo-valor basado en tu garantía suministrada.\",\"fldjW9\":\"Previsualizar la tx y migrar\",\"fsBGk0\":\"Balance\",\"fu1Dbh\":[\"Retirar \",[\"symbol\"]],\"fwjWSI\":\"Suministrado\",\"fwyTMb\":\"Migrar a stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Powered by\",\"g4Ius4\":\"This is the fee for executing position changes, set by governance.\",\"g8KGoA\":\"FAQS\",\"g9zzqS\":\"Votó NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Testnet mode\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Este activo está congelado debido a una decisión del Gobierno del Protocolo Aave. <0>More información\",\"gTHi2T\":\"El usuario está intentando tomar prestado múltiples activos incluido uno aislado\",\"gVW59Y\":\"Por favor conecta tu cartera para obtener activos testnet gratis.\",\"gcFNxP\":\"Aprobación confirmada\",\"goff7V\":\"Dirección cero no válida\",\"gp+f1B\":\"Versión 3\",\"gvTM4B\":\"El APY neto es el efecto combinado de todos los suministros y préstamos sobre total, incluidos los incentivos. Es posible tener un APY neto negativo si el APY de la deuda es mayor que el APY de suministro.\",\"gzcch9\":\"Comisión de puente de protocolo inválida\",\"h33MxW\":\"Direcciones de cartera de contrato inteligente representantes (Safe) en otras cadenas.\",\"h3ilK+\":\".CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activar Cooldown\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY neto\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Reclamado\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"El % de tu poder de préstamo total utilizado. Esto se basa en la cantidad de tu garantía suministrada y la cantidad total que puedes pedir prestado.\",\"hehnjM\":\"Cantidad\",\"hjDCQr\":\"Hubo un error. Por favor intenta cambiar los parámetros o <0><1>copiar el error\",\"hom7qf\":\"Reclamar\",\"hpHJ4I\":\"Garantía liquidada\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Tomando prestado \",[\"symbol\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"Sobre GHO\",\"iChbOF\":\"Parámetros inconsistentes del préstamo flash\",\"iEPVHF\":\"No hay suficiente poder de voto para participar en esta propuesta\",\"iEW87X\":\"Poder delegado\",\"iEju36\":[\"Has votado \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Seleccionar tolerancia de deslizamiento\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Ingresa una cantidad\",\"iSLIjg\":\"Conectar\",\"iUo5rv\":\"tokens no es lo mismo que stakearlos. Si deseas stakearlos\",\"iZxa38\":\"Úsalo para votar a favor o en contra de propuestas activas.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Collector Info\",\"igkfR1\":[\"En el Isolation mode, no puedes suministrar otros activos como garantía. Un límite de deuda global limita la capacidad de préstamo del activo aislado. Para salir del Isolation mode, deshabilita \",[\"0\"],\" como garantía antes de tomar prestado otro activo. Lee más en nuestras <0>preguntas frecuentes \"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"El uso de garantías está limitado debido al Isolation mode.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Suministrando tu\",\"jFi7dz\":\"Tasa de interés determinada por el gobierno de Aave. Esta tasa puede cambiar con el tiempo dependiendo de la necesidad de que el suministro de GHO se contraiga/expanda. <0>Aprende más\",\"jG3UJ7\":\"Desactivar el E-Mode\",\"jKYzR1\":\"Habilitar E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Periodo restante de cooldown\",\"jeMZNr\":[[\"0\"],\" el servicio on-ramp es proporcionado por proveedores externos y al seleccionarlo, estás aceptando los términos de dichos proveedores. Tu acceso al servicio podría depender de que el proveedor externo esté operativo.\"],\"jfl9OP\":\"Migrado\",\"jmXdoY\":\"En E-Mode algunos activos no se pueden pedir prestados. Sal del E-Mode para obtener acceso a todos los activos\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"No disponible\",\"k/sb6z\":\"Seleccionar idioma\",\"k3wP3f\":\"<0>Atención: Los cambios de parámetros a través de la gobernanza pueden alterar el factor de salud de tu cuenta y el riesgo de liquidación. Sigue el <1>foro de gobierno de Aave para mantenerte actualizado.\",\"kACpF3\":[\"Reclamar \",[\"0\"]],\"kH6wUX\":\"Impacto del precio\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" activos seleccionados\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Para pagar en nombre de un usuario, se necesita una cantidad explícita para pagar\",\"kRTD40\":[\"Cantidad a pagar para alcanzar el \",[\"0\"],\"% de utilización\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"El límite de suministro se ha sobrepasado\",\"knxE+G\":\".JSON\",\"ks2LWT\":\"El límite de deuda no es cero\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"El balance de DAI se convertirá a través de los contratos de DSR y luego se suministrará como sDAI. El cambio no genera costos adicionales ni deslizamientos.\",\"lU2d1/\":[\"Este activo no se puede migrar debido a una liquidez insuficiente o a una limitación del límite de préstamo en el mercado v3 de \",[\"marketName\"],\".\"],\"lVhKKI\":\"Votó YAE\",\"lWLqxB\":\"No pudimos encontrar ninguna transacción relacionada con tu búsqueda. Vuelve a intentarlo con un nombre de activo diferente o restablece los filtros.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Inglés\",\"lfEjIE\":\"Aprende más en nuestra guía <0>Preguntas frecuentes\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Emisiones totales por día\",\"m7r7Hh\":\"Activos de préstamo seleccionados\",\"mDDK4p\":\"Pool de Balancer\",\"mUAFd6\":\"Versión 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Tu cartera de \",[\"name\"],\" está vacía. Compra o transfiere activos o usa <0>\",[\"0\"],\" para transferir tus activos de \",[\"network\"],\".\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Comprar \",[\"cryptoSymbol\"],\" con Fiat\"],\"mvCXBY\":\"Stakea AAVE\",\"mwdzil\":\"Vale, cerrar\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"Este activo no puede usarse como garantía.\",\"n+SX4g\":\"Desarrolladores\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Apy de suministro\",\"nJgsQu\":\"Con un poder de votación de <0/>\",\"nLC6tu\":\"Francés\",\"nNHV0z\":\"Migrar múltiples garantías y activos prestados al mismo tiempo puede ser una operación costosa y podría fallar en ciertas situaciones.<0>Por lo tanto, no se recomienda migrar posiciones con más de 5 activos (depositados + tomados prestados) al mismo tiempo.\",\"nNbnzu\":\"Proposición\",\"nPGNMh\":\"Puede ser ejecutado\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Ambos\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nweCqF\":\"Cancelling order...\",\"nwtY4N\":\"Se produjo un error\",\"nxyWvj\":\"Retirar esta cantidad reducirá tu factor de salud y aumentará el riesgo de liquidación.\",\"o17QVP\":\"Tu factor de salud y la relación préstamo-valor determinan la seguridad de tu garantía. Para evitar liquidaciones, puedes suministrar más garantía o pagar las posiciones de préstamo.\",\"o1xc2V\":\"El balance de AToken no es cero\",\"o5ooMr\":\"Deuda\",\"o7J4JM\":\"Filtro\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Cooldown para undstakear\",\"oJ5ZiG\":\"El usuario no tiene deuda pendiente de tasa variable en esta reserva\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Activos de prueba\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"La tasa de interés estable <0>permanecerá igual durante la duración de su préstamo. Está recomendado para los períodos de préstamo a largo plazo y para los usuarios que prefieren la previsibilidad.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible para suministrar\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Sin resultados\",\"owSsI3\":\"Firmas listas\",\"p+R52m\":\"Ir al pool de Balancer\",\"p2S64u\":\"La relación préstamo-valor de las posiciones migradas provocaría la liquidación. Aumenta la garantía migrada o reduce el préstamo migrado para continuar.\",\"p2Z2Qi\":\"Este activo ha alcanzado su límite de préstamo. No queda nada disponible para ser prestado de este mercado.\",\"p45alK\":\"Configurar la delegación\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"El balance subyacente debe ser mayor que 0\",\"pgWG9H\":\"No hay suficiente balance stakeado\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"por favor comprueba que la cantidad que deseas depositar no está siendo utilizada actualmente para stakear. Si está utilizando para stakear, tu transacción podría fallar.\",\"pjO/iH\":\"Cantidad mínima recibida\",\"pooutM\":\"La votación está activa\",\"pqaM5s\":\"Confirmando transacción\",\"ptaxX3\":[\"Entiendo como el cooldown (\",[\"0\"],\") y el proceso de unstaking (\",[\"1\"],\") funcionan\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"La función debe ser llamada por un pool\",\"q/51mF\":\"Migrar a V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Estrategia de tasa de interés\",\"q6lAbz\":\"Stakeado\",\"qB4kPi\":\"Suministrar APY\",\"qENI8q\":\"Configuración global\",\"qGz5zl\":\"Balance de la garantía tras pagar\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copiar el error\",\"qXCkEM\":\"Por favor, conecta tu cartera para ver tus suministros, préstamos y posiciones abiertas.\",\"qY2jnw\":\"Expiración inválida\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Cantidad inválida para quemar\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"La cantidad debe ser mayor que 0\",\"rQ+R+0\":\"Activos de suministro seleccionados\",\"rSayea\":\"APY\",\"rTBDeu\":[\"Este activo no se puede migrar porque tienes una garantía en Isolation Mode en el mercado v3 de \",[\"marketName\"],\" que limita los activos prestados. Puedes administrar tu garantía en el <0>Panel de control V3 de \",[\"marketName\"],\"\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Mostrar activos con 0 balance\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Privacidad\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Reclamar todas las recompensas\",\"rwyUva\":\"Estos activos están temporalmente congelados o pausados por decisiones de la comunidad de Aave, lo que significa que no se puede suministrar / tomar prestado o intercambiar tasas de estos activos. Se permiten retiros y pagos de deuda. Sigue el <0>foro de gobierno de Aave para más actualizaciones.\",\"rxJW5W\":\"Tu poder de proposición se basa en tu balance de AAVE/stkAAVE y delegaciones recibidas.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstakear \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NO\",\"sQv06Y\":\"para\",\"sTtO6J\":\"Confirmar transacción\",\"sXKb3l\":\"Tasa de cambio\",\"sb0q4+\":\"Unstakea aquí\",\"smJNwH\":\"Disponible para tomar prestado\",\"solypO\":\"El factor de salud no está por debajo del umbral\",\"sr0UJD\":\"Volver atrás\",\"ss5GCK\":\"La dirección del proveedor del grupo de direcciones no es válida\",\"swEgK4\":\"Tu información de voto\",\"t+wtgf\":\"Nada tomado prestado aún\",\"t/YqKh\":\"Eliminar\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Precio del oráculo\",\"tFZLf8\":\"Este cálculo de gas es solo una estimación. Tu cartera establecerá el precio de la transacción. Puedes modificar la configuración de gas directamente desde tu proveedor de cartera.\",\"tHuvQI\":\"Ir al panel de control V3\",\"tOcg3N\":\"Dado que este activo está congelado, las únicas acciones disponibles son retirar y pagar, a las que se puede acceder desde el <0>Panel de control\",\"tOuXfv\":[\"Cantidad a tomar prestado para alcanzar el \",[\"0\"],\"% de utilización\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"Por favor, conecta tu cartera\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Tus suministros\",\"u3ZeYl\":\"Error en la transacción\",\"u706uF\":\"Préstamo flash inválido\",\"u8Gfu7\":[\"Sin resultados de búsqueda\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"No hay activos seleccionados para migrar.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migrando\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"Para el pago de un tipo específico de deuda, el usuario necesita tener una deuda de ese tipo\",\"ulNuNq\":\"Exportar datos a\",\"ulup2p\":\"Comprar Crypto con Fiat\",\"usB84Z\":\"La cantidad máxima disponible para tomar prestado está limitada porque casi se ha alcanzado el límite de préstamo del protocolo.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restakeado\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Ocultar\",\"vMba49\":\"Tomar prestado no está habilitado\",\"vMpNwt\":\"Aprobar con\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Idioma\",\"vesuBJ\":\"Te permite decidir si utilizar un activo suministrado como garantía. Un activo utilizado como garantía afectará a tu poder de préstamo y factor de salud.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"El balance de deuda estable no es cero\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"APR de recompensas\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Tu \",[\"action\"],\" <0/> \",[\"symbol\"]],\"wBIsjb\":\"Canal de Discord\",\"wQZbc/\":\"El llamador de la función no es un AToken\",\"wZFvVU\":\"VOTAR SI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"El Protocolo Aave está programado para usar siempre el precio de 1 GHO = $1. Esto es diferente del uso del precio de mercado a través de oráculos para otros criptoactivos. Esto crea oportunidades de arbitraje estabilizadoras cuando el precio de GHO fluctúa.\",\"wh7Ezv\":\"No tienes balance de AAVE/stkAAVE/aAave para delegar.\",\"wlsIx7\":\"Con la testnet Faucet puedes obtener activos gratuitos para probar el Protocolo Aave. Asegúrate de cambiar tu proveedor de cartera a la red de testnet adecuada, selecciona el activo deseado y haz clic en \\\"Faucet\\\" para obtener tokens transferidos a tu cartera. Los activos de una testnet no son \\\"reales\\\", lo que significada que no tienen valor monetario. <0>Aprende más\",\"wmE285\":\"Obtener Token ABP v2\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"Como resultado de las decisiones del gobierno, este pool de stakeo de ABPT está obsoleto. Tienes la flexibilidad de migrar todos tus tokens a v2 o unstakearlos sin ningún periodo de cooldown.\",\"x5KiLL\":\"Los activos seleccionados se han migrado correctamente. Visita el panel de control del mercado para verlos.\",\"x7F2p6\":\"Diferencial actual\",\"x7K5ib\":[\"Tu cartera de \",[\"networkName\"],\" está vacía. Consigue \",[\"0\"],\" de prueba gratis en\"],\"x9iLRD\":\"tokens, por favor ve al\",\"xNy/UG\":\"Pagar con\",\"xPm8wv\":\"Aprende más sobre los riesgos involucrados\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Tu información\",\"xaWZ6f\":\"Cambio tipo de APY\",\"xh6k71\":\"El uso de garantías está limitado debido al isolation mode.\",\"xvIklc\":\"El préstamo flash está deshabilitado para este activo, por lo tanto, esta posición no se puede migrar.\",\"y5rS9U\":\"Migrar\",\"yB1YpA\":\"Modo oscuro\",\"yCrG6m\":\"Tamaño total del mercado\",\"yJUUbn\":\"Resumen de la transacción\",\"yLGmLX\":[\"Restakear \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Dirección no válida\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Haz seguimiento de tu cartera\",\"yh2sjd\":[\"Impacto en el precio \",[\"0\"],\"%\"],\"ylmtBZ\":\"La aplicación se ejecuta en fork mode.\",\"ymNY32\":[\"No hay fondos suficientes en la reserva\",[\"0\"],\"para tomar prestado\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Cerrar\",\"z4uGQg\":\"El límite de deuda está sobrepasado\",\"z5JUmg\":[\"Estimated costs are \",[\"0\"],\"% of the sell amount. This order is unlikely to be filled.\"],\"z5UQOM\":\"La garantía elegida no puede ser liquidada\",\"z5Y+p6\":[\"Suministrando \",[\"symbol\"]],\"zCjNKs\":\"No se puede realizar la acción porque la reserva está congelada\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Límite de deuda aislado\",\"zTOjMP\":\"El límite de suministro del protocolo está al 100% para este activo. No es posible suministrar más.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Deuda restante\",\"zmTPiV\":\"Balance de suministro\",\"zpPbZl\":\"Parámetros de riesgo de liquidación\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menú\",\"zwWKhA\":\"Aprende más\",\"zy9fXn\":[\"Este activo está congelado en el mercado v3 de \",[\"marketName\"],\", por lo tanto, esta posición no se puede migrar.\"],\"zys+R6\":\"Ten en cuenta la congestión de la red y los precios del gas.\",\"+EGVI0\":\"Recibir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"Parece que no podemos cambiar la red automáticamente. Por favor, comprueba si puedes cambiarla desde la cartera.\",\"+kLZGu\":\"Cantidad de activos suministrados\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Cantidad mínima de Aave stakeado\",\"00OflG\":\"No hay suficiente liquidez para que el activo seleccionado realice el cambio. Prueba reduciendo la cantidad.\",\"08/rZ9\":\"El periodo de cooldown es el tiempo requerido antes de unstakear tus tokens (20 días). Solo puedes retirar tus activos del Módulo de Seguridad después del periodo de cooldown y dentro de la ventana de unstakeo.<0>Aprende más\",\"1Onqx8\":[\"Aprobando \",[\"symbol\"],\"...\"],\"1m9Qqc\":\"Retirando y Cambiando\",\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Dirección bloqueada\",\"2bAhR7\":\"Conoce GHO\",\"2o/xRt\":\"Se ha alcanzado el límite de suministro en la reserva especificada. Prueba reduciendo la cantidad.\",\"3O8YTV\":\"Interés total acumulado\",\"4iPAI3\":\"Cantidad de préstamo mínima de GHO\",\"6NGLTR\":\"Cantidad descontable\",\"6yAAbq\":\"APY, tasa de préstamo\",\"73Auuq\":\"Los parámetros de descuento son decididos por la comunidad de Aave y pueden cambiar con el tiempo. Consulta el Gobierno para ver actualizaciones y vota para participar. <0>-Aprende más\",\"7sofdl\":\"Retirar y Cambiar\",\"ARu1L4\":\"Pagado\",\"B6aXGH\":\"Estable\",\"B9Gqbz\":\"Tasa variable\",\"BJyN77\":\"Debido al impacto del factor de salud, se requiere un préstamo flash para realizar esta transacción, pero el Gobierno de Aave ha inhabilitado la disponibilidad de préstamos flash para este activo. Intenta reducir la cantidad o suministrar garantía adicional.\",\"BjLdl1\":\"Con un descuento\",\"CMHmbm\":\"Deslizamiento\",\"EBL9Gz\":\"¡COPIADO!\",\"ES8dkb\":\"Interés fijo\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Descuento\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Guardar y compartir\",\"JK9zf1\":[\"Interés compuesto estimado, incluyendo el descuento por Staking \",[\"0\"],\"AAVE en el Módulo de Seguridad.\"],\"JPrLjO\":\"No puedes usar este activo como garantía\",\"JU6q+W\":\"Recompensa(s) por reclamar\",\"K05qZY\":\"Retirar y Cambiar\",\"KRpokz\":\"VER TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"Habilitar este activo como garantía aumenta tu poder préstamo y el factor de salud. Sin embargo, puede ser liquidado si tu factor de salud cae por debajo de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stakear GHO\",\"RIfckG\":[\"Desactivar \",[\"symbol\"],\" como garantía\"],\"RbXH+k\":\"Los poseedores de AAVE, GHO y ABPT (solo en la red de Ethereum) pueden stakear sus activos en el Módulo de Seguridad para añadir más seguridad al protocolo y obtener incentivos de seguridad. En el caso de un evento de shortfall, tu stakeo puede ser reducido para cubrir el déficit. proporcionando una capa adicional de protección para el protocolo.\",\"RoafuO\":\"Enviar feedback\",\"TeCFg/\":\"Cambio de tasa de préstamo\",\"TskbEN\":\"Los poseedores de stkAAVE reciben un descuento en la tasa de préstamo de GHO\",\"TtZL6q\":\"Parámetros del modelo de descuento\",\"Tz0GSZ\":\"actividades bloqueadas\",\"UE3KJZ\":\"El historial de transacciones no está disponible actualmente para este mercado\",\"W8ekPc\":\"Volver al panel de control\",\"XZzneG\":\"Saldrás del modo aislamiento y otros tokens pueden ser usados ahora como garantía\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"Deshabilitar este activo como garantía afecta tu poder de préstamo y Factor de Salud.\",\"aX31hk\":\"Tu balance es más bajo que la cantidad seleccionada.\",\"al6Pyz\":\"Supera el descuento\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"No hay suficiente garantía para pagar esta cantidad de deuda con\",\"cqnmnD\":\"Tasa de interés efectiva\",\"dMtLDE\":\"para\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY con descuento aplicado\",\"fHcELk\":\"APR Neto\",\"flRCF/\":\"Descuento por staking\",\"gncRUO\":\"Esta dirección está bloqueada en app.aave.com porque está asociada con una o más\",\"gr8mYw\":\"Puedes tomar prestado hasta <0/> GHO al <1/> (descuento máximo)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Balance tomado prestado\",\"i2JTiw\":\"Puedes ingresar una cantidad específica en el campo.\",\"jMam5g\":[\"Balance \",[\"0\"]],\"jpctdh\":\"Ver\",\"kwwn6i\":\"Los usuarios que stakean AAVE en el Modulo de Seguridad (es decir, poseedores de stkAAVE) reciben un descuento en la tasa de interés de préstamo de GHO. Este descuento se aplica a 100 GHO por cada 1 stkAAVE en posesión. Usa el calculador de abajo para ver la tasa de préstamo de GHO con el descuento aplicado.\",\"lNVG7i\":\"Selecciona un activo\",\"lt6bpt\":\"Garantía a pagar con\",\"mIM0qu\":\"Cantidad esperada a pagar\",\"mzI/c+\":\"Descargar\",\"n8Psk4\":\"No podemos detectar una cartera. Conecta una cartera para stakear y ver tu balance.\",\"nOy4ob\":\"Te sugerimos volver al Panel de control.\",\"nakd8r\":\"poseedores de stkAAVE obtienen un descuento en la tasa de préstamo de GHO\",\"nh2EJK\":[\"Por favor, cambia a \",[\"networkName\"],\".\"],\"ntkAoE\":\"Descuento aplicado para <0/> AAVE stakeados\",\"o4tCu3\":\"APY préstamo\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"El periodo de cooldown es \",[\"0\"],\". Después \",[\"1\"],\" del cooldown, entrarás a la ventana de unstakeo de \",[\"2\"],\". Continuarás recibiendo premios durante el cooldown y la ventana de unstakeo.\"],\"p3j+mb\":\"Tu balance de recompensa es 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Interés acumulado\",\"rf8POi\":\"Cantidad de activos tomados prestados\",\"ruc7X+\":\"Añade stkAAVE para ver el APY de préstamo con el descuento\",\"sK+Nag\":\"Revisión tx\",\"t81DpC\":[\"Aprueba \",[\"symbol\"],\" para continuar\"],\"umICAY\":\"<0><1><2/>Añade stkAAVE para ver la tasa de préstamo con descuento\",\"uwAUvj\":\"COPIAR IMAGEN\",\"v8x7Mg\":\"Garantía insuficiente para cubrir la nueva posición de préstamo. La cartera debe tener poder de préstamo suficiente para realizar el cambio de deuda.\",\"wRRqvW\":\"No tienes suministros en este activo\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Habilitar \",[\"symbol\"],\" como garantía\"],\"yW1oWB\":\"Tipo APY\",\"yhvj6d\":\"No puedes cambiar el uso como modo de garantía para este activo, porque causará una liquidación\",\"zevmS2\":\"<0><1><2/>añade <3/> stkAAVE para tomar prestado al <4/> (descuento máximo)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/locales/fr/messages.js b/src/locales/fr/messages.js index 0644ad4f2c..c302e18aca 100644 --- a/src/locales/fr/messages.js +++ b/src/locales/fr/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si vous NE vous désengagez PAS dans les \",[\"0\"],\" de la fenêtre de désengagement, vous devrez réactiver le processus de refroidissement.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participer à cette réserve \",[\"symbol\"],\" donne des récompenses annualisées.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Limite d'emprunt\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Emprunter ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"L'emprunt stable n'est pas activé\",\"/yQcJM\":\"Valeur totale\",\"00AB2i\":\"L'utilisateur n'a pas emprunté la devise spécifiée\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Changement de taux\",\"0BF3yK\":\"Désolé, nous n’avons pas trouvé la page que vous cherchiez.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Risque de liquidation\",\"0ojY+Y\":\"Solde actuel v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Modification des garanties\",\"0wGCWc\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"À l’heure actuelle, les données sur les prix ne sont pas disponibles pour cette réserve dans le sous-graphe du protocole\",\"1LjK22\":\"Historique des transactions\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Veuillez connecter un portefeuille pour afficher vos informations personnelles ici.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Seuil de liquidation <0/>\",\"1t7rez\":\"L’offre d’actifs est limitée à un certain montant afin de réduire l’exposition du protocole à l’actif et d’aider à gérer les risques encourus.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Voir détails\",\"2FYpfJ\":\"Plus\",\"2O3qp5\":\"Liquidités disponibles\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"L’actif ne peut pas être migré en raison d’une restriction de plafond d’approvisionnement dans \",[\"marketName\"],\" v3 marché.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave est un protocole entièrement décentralisé et régi par la communauté par les détenteurs de jetons AAVE. Les détenteurs de jetons AAVE discutent, proposent et votent collectivement sur les mises à niveau du protocole. Les détenteurs de jetons AAVE (réseau Ethereum uniquement) peuvent soit voter eux-mêmes sur de nouvelles propositions, soit choisir l’adresse de leur choix. Pour en savoir plus, consultez la page Gouvernance\",\"2a6G7d\":\"Veuillez saisir une adresse de portefeuille valide.\",\"2eBWE6\":\"Je reconnais les risques encourus.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"L'emprunt stable est activé\",\"34Qfwy\":\"Le plafond d'emprunt est dépassé\",\"39eQRj\":[\"Emprunter \",[\"symbole\"]],\"3BL1xB\":\"Total fourni\",\"3K0oMo\":\"Offre restante\",\"3MoZhl\":\"Il n'y a pas assez de collatéral pour couvrir un nouvel emprunt\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Fournir \",[\"symbole\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Rembourser\",\"3qsjtp\":\"La moyenne pondérée de l'APY pour tous les actifs fournis, y compris les incitations.\",\"3rL+os\":\"Vous ne pouvez retirer vos actifs du module de sécurité qu'après la fin de la période de refroidissement et que la fenêtre de retrait est active.\",\"42UgDM\":[\"Migrer vers \",[\"0\"],\" Marché v3\"],\"49UFQA\":\"Résultats du vote\",\"4DMZUI\":\"Afficher les transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Petits caractères\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Signez pour continuer\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenez des ressources de test gratuites à l’adresse suivante :\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Le plafond de la dette limite le montant que les utilisateurs du protocole peuvent emprunter sur cet actif. Le plafond de la dette est spécifique aux actifs isolés et est indiqué en USD.\",\"5Ncc6j\":[\"Cet actif a presque atteint son plafond d'offre. Il ne peut y avoir que \",[\"messageValue\"],\" fourni à ce marché.\"],\"5cZ/KX\":\"L'offre de dette variable n'est pas nulle\",\"5che++\":\"Pour demander l'accès à ce marché autorisé, veuillez consulter\xA0: <0>Nom du fournisseur d'accès\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" reçu\"],\"5hDe9v\":\"Allocation action requise\",\"5rsnKT\":\"Récompenses disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Voir tous les votes\",\"6/dCYd\":\"Aperçu\",\"60crCe\":\"Toutes les transactions\",\"62Xcjh\":\"Collatérale\",\"65A04M\":\"Espagnol\",\"68ANm7\":\"Withdrawing GHO\",\"6G8s+q\":\"Signature\",\"6Jrv+z\":[\"Rembourser \",[\"symbole\"]],\"6Xr0UU\":\"Refroidissement...\",\"6bxci/\":\"Pouvoir de vote\",\"6f8S68\":\"Marchés\",\"6g1gi0\":\"Les propositions\",\"6gvoHP\":\"Copier le message d’erreur\",\"6h3Q5G\":\"Remboursé\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Changer de réseau\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Facteur de santé\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Atteint\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"L’emprunt n’est pas disponible car vous utilisez le mode Isolation. Pour gérer le mode d’isolation, rendez-vous sur votre <0>tableau de bord.\",\"7aKlMS\":\"Partager sur Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Réclamer tout\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7i1oxe\":\"Withdrawing and Swapping\",\"7l88b8\":\"Les données n’ont pas pu être récupérées, veuillez recharger le graphique.\",\"7p5kLi\":\"Tableau de bord\",\"8+6BI0\":\"Soyez prudent - Vous êtes très proche de la liquidation. Envisagez de déposer plus de collatéral ou de rembourser certaines de vos positions empruntées\",\"87pUEW\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs.\"],\"8F1i42\":\"Page introuvable\",\"8G8M0u\":\"Chargement des données...\",\"8Iu1QS\":\"Retiré\",\"8JL93T\":\"Toutes les propositions\",\"8Q51DU\":\"Ajouter au portefeuille\",\"8X/oyn\":\"Montant invalide à frapper\",\"8Z5FPv\":\"Déconnecter le portefeuille\",\"8Zz7s5\":\"actifs\",\"8aLW8H\":\"Solde à révoquer\",\"8bOT3H\":\"Taux d'utilisation\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Voir le contrat\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Montrer\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Vous entrez en mode Isolation\",\"9CDK3/\":[\"L'emprunt n'est actuellement pas disponible pour \",[\"0\"],\".\"],\"9GIj3z\":\"Taille de réserve\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Solde de mise en jeu\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votes actuels\",\"9Rw96f\":[\"Cet actif a presque atteint son plafond d'emprunt. Il n'y a que \",[\"messageValue\"],\" disponible pour être emprunté sur ce marché.\"],\"9Xj/qR\":[\"Certaines ressources migrées ne seront pas utilisées comme garantie en raison de l’activation du mode d’isolement dans \",[\"marketName\"],\" Marché V3. Visite <0>\",[\"marketName\"],\" Tableau de bord V3 pour gérer le mode d’isolation.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Cet actif a atteint son plafond d'offre. Rien n'est disponible pour être fourni à partir de ce marché.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"L’AMI a été suspendu en raison d’une décision de la communauté. L’offre, les emprunts et les remboursements sont impactés. <0>Plus d’informations\",\"9lXchd\":\"Jeton sous-jacent\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Comme il s'agit d'un réseau de test, vous pouvez obtenir n'importe lequel des actifs si vous avez ETH dans votre portefeuille\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choisissez l’un des services de rampe d’accès\",\"A6dCI6\":[\"Le montant maximal disponible pour emprunter est de <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Vos emprunts\",\"AV7cGz\":\"Examiner les détails de la taxe d'approbation\",\"AZOjB8\":\"Récupération de données...\",\"Ai0jas\":\"Rejoignez la discussion de la communauté\",\"Ajl2rq\":\"Le pouvoir d'emprunt et les actifs sont limités en raison du mode d'isolement.\",\"AqgYNC\":\"Plafond d’emprunt du protocole à 100% pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"Les stETH fournis en garantie continueront d’accumuler des récompenses de staking fournies par les rebasages quotidiens.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"L'utilisation de la garantie est limitée en raison du mode d'isolement. <0>En savoir plus\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Catégorie d'actifs\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Cet actif est gelé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Fiche technique\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Grec\",\"CkTRmy\":[\"Revendication \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Veuillez connecter votre portefeuille pour voir l’outil de migration.\",\"CtGlFb\":[[\"networkName\"],\" Robinet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Cette action réduira le facteur de santé de V3 en dessous du seuil de liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"La garantie est (principalement) la même devise que celle qui est empruntée\",\"DCnFg0\":[\"Adresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"Je comprends parfaitement les risques liés à la migration.\",\"DONJcV\":\"L'actif sous-jacent ne peut pas être sauvé\",\"DR+4uL\":\"Bilan de l’alimentation après le changement\",\"DWjrck\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" V3 Market en raison des restrictions du mode E. Vous pouvez désactiver ou gérer les catégories du mode E dans votre <0>tableau de bord V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave par mois\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collatéralisation\",\"DxfsGs\":\"Vous pouvez signaler un incident sur notre <0>Discord ou<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Désactivé\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Reprise \",[\"symbol\"]],\"Ebgc76\":[\"Retrait \",[\"symbole\"]],\"EdQY6l\":\"Aucun/Aucune\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Réactiver la période de recharge pour annuler le pieu \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrer vers la v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Pour en savoir plus.\",\"FHlMf/\":\"Solde actuel de la v2\",\"FHpxjF\":[\"Le facteur de réserve est un pourcentage de l’intérêt qui va à un \",[\"0\"],\" qui est contrôlé par la gouvernance Aave pour promouvoir la croissance de l’écosystème.\"],\"FOBZa6\":\"Puissance d'emprunt utilisée\",\"FPKEug\":\"Opération non prise en charge\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"sur\",\"Fjw9N+\":\"Actifs à déposer\",\"FmN0fk\":\"Remise en jeu\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO est un actif numérique natif décentralisé et adossé à des garanties, indexé sur le dollar américain. Il est créé par les utilisateurs en empruntant contre plusieurs garanties. Lorsque l’utilisateur rembourse sa position d’emprunt de HO, le protocole brûle le GHO de cet utilisateur. Tous les paiements d’intérêts accumulés par les minters de GHO seraient directement transférés à la trésorerie d’AaveDAO.\",\"GQrBTq\":\"Changer de mode E\",\"GWswcZ\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. Le 20 décembre 2022, renFIL ne sera plus pris en charge et ne pourra plus être reconnecté à son réseau natif. Il est recommandé de retirer les positions d’offre et de rembourser les positions d’emprunt afin que renFIL puisse être relié à FIL avant la date limite. Après cette date, il ne sera plus possible de convertir renFIL en FIL. <0>Plus d’informations\",\"GX8GKD\":\"Actifs\",\"GgEj+0\":\"Mode lecture seule. Connectez-vous à un portefeuille pour effectuer des transactions.\",\"GjkIKV\":\"Prend fin\",\"GtP2hp\":[\"L'emprunt n'est pas disponible, car vous avez activé le mode d'efficacité (E-Mode) pour la catégorie \",[\"0\"],\". Pour gérer les catégories E-Mode, visitez votre <0>tableau de bord.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Désolé, une erreur inattendue s’est produite. En attendant, vous pouvez essayer de recharger la page, ou revenir plus tard.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Fenêtre d'arrêt de staking\",\"HpK/8d\":\"Recharger\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" v3 Marché puisque l’actif collatéral activera le mode d’isolation.\"],\"Hvwnm9\":[\"La quantité maximale disponible pour l’approvisionnement est limitée parce que le plafond d’approvisionnement du protocole est à \",[\"0\"],\"%.\"],\"I8CX2c\":\"Le montant total de vos actifs libellés en USD qui peut être utilisé comme garantie pour emprunter des actifs.\",\"IAD2SB\":[\"Prétendant \",[\"symbol\"]],\"IG9X9/\":\"L’emprunt de cet actif est limité à un certain montant afin de minimiser l’insolvabilité du pool de liquidités.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Il est prévu que cet actif soit désactivé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"IP+I/j\":\"Période de recharge\",\"IaA40H\":\"Liquidation à\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Gérer l’analytique\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Déjalonnement \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Pas assez de solde sur votre portefeuille\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Solde du portefeuille\",\"JtwD8u\":\"Emprunter le solde après le remboursement\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter davantage sur cet actif.\",\"KLXVqE\":[\"Les tokens stETH seront migrés vers Wrapped stETH à l’aide du wrapper Lido Protocol, ce qui entraîne une modification de l’équilibre de l’offre après la migration : \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Cela représente le seuil auquel une position d'emprunt sera considérée comme sous-garantie et sujette à liquidation pour chaque garantie. Par exemple, si une garantie a un seuil de liquidation de 80\xA0%, cela signifie que la position sera liquidée lorsque la valeur de la dette vaut 80 % de la valeur de la garantie.\",\"KYAjf3\":\"Isolé\",\"KkPgim\":\"Changement de mode E\",\"KnN1Tu\":\"Expire\",\"KoOBI2\":\"En raison de la mécanique interne de stETH requise pour le rebasage de la prise en charge, il n’est pas possible d’effectuer un changement de garantie où stETH est le jeton source.\",\"KojyJ4\":\"Mauvais réseau\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Entrez l'adresse ETH\",\"KvG1xW\":\"Réclamer\",\"L+8Lzs\":\"LTV actuelle\",\"L+qiq+\":\"Marché\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Pas de pouvoir de vote\",\"LL0zks\":\"Peut être collatéral\",\"LLdJWu\":\"AAVE Réclamable\",\"LSIpNK\":\"Emprunter et rembourser dans le même bloc n'est pas autorisé\",\"LVt3TI\":[\"<0>Tolérance de glissement <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Astuce : Essayez d’augmenter le glissement ou de réduire la quantité d’entrée\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Adresse du destinataire\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vue de staking\",\"McHlGl\":\"Changement d’APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si le facteur de santé descend en dessous de 1, la liquidation de votre collatéral peut être déclenchée.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Vous avez annulé la transaction.\",\"MnE2QX\":\"Emprunter des informations\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valeur de retour invalide de la fonction flashloan executor\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"L’actif ne peut être utilisé comme garantie qu’en mode isolé avec un pouvoir d’emprunt limité. Pour passer en mode d’isolation, désactivez toutes les autres garanties.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"En attente...\",\"NK9ikO\":\"Solde du portefeuille\",\"NMt2CB\":\"Montant réclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Contrat de collectionneur\",\"NfpPeS\":\"Rien staké\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Le plafond de mintage non soutenu est dépassé\",\"O+tyU+\":[\"Le montant maximal disponible pour emprunter sur cet actif est limité car le plafond de la dette est à \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Aperçu de la proposition\",\"OYuJ9K\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter sur cet actif.\",\"OfhWJH\":\"Réinitialisation\",\"Og2SKn\":\"handicapé\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Site internet\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirer\",\"P1dURE\":\"Révoquer le pouvoir\",\"P2WCD/\":[\"L’actif sous-jacent n’existe pas dans \",[\"marketName\"],\" v3 Market, par conséquent, cette position ne peut pas être migrée.\"],\"P2sL6B\":\"Lorsqu'une liquidation survient, les liquidateurs remboursent jusqu'à 50 % de l'encours emprunté au nom de l'emprunteur. En contrepartie, ils peuvent acheter le collatéral à prix réduit et conserver la différence (pénalité de liquidation) en bonus.\",\"P6sRoL\":\"Mise en jeu ABPT\",\"P72/OW\":\"La moyenne pondérée de l'APY pour tous les actifs empruntés, y compris les incitatifs.\",\"P7e6Ug\":\"Veuillez connecter votre portefeuille pour consulter l’historique des transactions.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Emprunter apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Seuil de liquidation\",\"PctCOf\":\"A temporary contract will be used to execute the trade. Your wallet may show a warning for approving a new or empty address.\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Cette action réduira le facteur de santé V2 en dessous du seuil de liquidation. Conservez la garantie ou migrez la position d’emprunt pour continuer.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Non atteint\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Différentiel\",\"RNK49r\":\"Signature non valide\",\"RS0o7b\":\"État\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Détails de la proposition\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"L'actif n'est pas répertorié\",\"Rj01Fz\":\"Liens\",\"RmWFEe\":\"APR staké\",\"RtBLm7\":\"Le facteur santé est inférieur au seuil de liquidation\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Activé\",\"SDav7h\":\"Fonds dans le Safety Module\",\"SENccp\":\"Si l’erreur persiste,<0/> vous pouvez la signaler à ce\",\"SIWumd\":\"Afficher les ressources gelées ou mises en pause\",\"SM58dD\":\"Quantité en temps de recharge\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Impossible de charger les votants de proposition. Veuillez rafraîchir la page.\",\"SSQVIz\":\"Seuil de liquidation\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Le mode lecture seule permet de voir les positions d’adresses dans Aave, mais vous ne pourrez pas effectuer de transactions.\",\"SZRUQ4\":\"Glissement maximal\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Le plafond d’emprunt du protocole est de 100 % pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"Sk2zW9\":\"Désactiver le E-mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Le fournisseur d'adresses de pool n'est pas enregistré\",\"T/AIqG\":\"Limite d’approvisionnement du protocole à 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Emprunter\",\"TFxQlw\":\"Pénalité de liquidation\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"L'actif ne peut être utilisé comme garantie qu'en mode isolé.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"L'utilisateur n'a pas de dette à taux stable impayée sur cette réserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Emprunter le solde après le changement\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recharger la page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"L’application s’exécute en mode réseau de test. Découvrez comment cela fonctionne dans\",\"U9btTk\":\"L'actif n'est pas empruntable en mode d'isolement\",\"UAOZRe\":\"L’impact sur les prix est l’écart entre la valeur totale des tokens d’entrée échangés et les tokens de destination obtenus (en USD), qui résulte de la liquidité limitée de la paire de trading.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Détails\",\"UTTKmT\":\"Temps de recharge de la mise activé\",\"UXeR72\":\"Ces fonds ont été empruntés et ne peuvent pas être retirés pour le moment.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Le ratio LTV maximum représente le pouvoir d'emprunt maximum d'une garantie spécifique. Par exemple, si une garantie a un LTV de 75 %, l'utilisateur peut emprunter jusqu'à 0,75 ETH dans la devise principale pour chaque 1 ETH de garantie.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Aucune récompense à réclamer\",\"V0f2Xv\":\"Facteur de réserve\",\"V1HK43\":\"Risques liés à la migration\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Dette couverte\",\"VHOVEJ\":\"Connecter le portefeuille\",\"VMfYUK\":\"Sécurité de votre garantie déposée contre les actifs empruntés et sa valeur sous-jacente.\",\"VOAZJh\":\"Total des emprunts\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Examiner les détails de la transaction\",\"W5hVah\":\"Rien fourni pour le moment\",\"W5kTFy\":\"Vote\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Sans support\",\"WNGZwH\":\"E-Mode augmente votre LTV pour une catégorie d'actifs sélectionnée jusqu'à <0/>. <1>En savoir plus\",\"WPWG/y\":\"Statut et configuration de la réserve\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"L'utilisateur ne peut pas retirer plus que le solde disponible\",\"WaZyaV\":\"<0>Ampleforth est un actif de rebasage. Consultez la <1>documentation pour en savoir plus.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Étant donné que cette ressource est suspendue, aucune action ne peut être entreprise jusqu’à nouvel ordre\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Pour emprunter, vous devez fournir tout actif à utiliser comme garantie.\",\"X/ITG9\":\"Copier le texte d'erreur\",\"X3Pp6x\":\"Utilisé comme collatéral\",\"X4Zt7j\":\"L'action ne peut pas être effectuée car la réserve est mise en pause\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Veuillez toujours tenir compte de votre <0>facteur de santé (HF) lors de la migration partielle d’une position et que vos tarifs seront mis à jour vers les taux V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy+o6U\":\"For security reasons, limit orders are not supported for Native tokens. To place a limit order, use the wrapped version.\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTER NON\",\"YDIOks\":\"Activation du E-Mode\",\"YSodyW\":\"Cette action réduira votre facteur de santé. Veuillez garder à l’esprit le risque accru de liquidation des garanties.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Le mode réseau de test est activé\",\"YrDxdO\":\"Si votre prêt à la valeur dépasse le seuil de liquidation, votre garantie fournie peut être liquidée.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Les conditions de rééquilibrage des taux d'intérêt n'ont pas été remplies\",\"YyydIq\":[\"Ajouter \",[\"0\"],\" à Wallet pour suivre votre solde.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Gouvernance Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Mode efficacité (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Désactiver le réseau de test\",\"Zbyywy\":\"Coupure maximale\",\"ZfUGFb\":\"Avant de déposer\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valeur de liquidation\",\"ZrEc8j\":\"Nous n’avons trouvé aucun élément lié à votre recherche. Réessayez avec un autre nom, symbole ou adresse de ressource.\",\"ZsLF7e\":\"Activé\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Temps restant pour dépiquer\",\"a7u1N9\":\"Prix\",\"a9D+6D\":\"Non jalonné\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"aOKIms\":\"Les paramètres de tableau devraient être de même longueur ne sont pas\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Prêt APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Avertissement de période de refroidissement\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Actif\",\"bXQ/Og\":\"Partager sur Twitter\",\"bXr0ee\":\"Les actifs isolés ont un pouvoir d'emprunt limité et les autres actifs ne peuvent pas être utilisés comme garantie.\",\"bYmAV1\":\"Adresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Le montant demandé est supérieur au montant maximum du prêt en mode taux stable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Fournir\",\"bxN6EM\":\"Impossible de désactiver le mode E\",\"c91vuQ\":\"L'adresse n'est pas un contrat\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Vous ne pouvez pas retirer ce montant car cela entraînera un appel de garantie\",\"cBc+4A\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"cIl5kp\":\"Votre pouvoir de vote est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"cLo09S\":\"Détails des risques\",\"cNT+ij\":\"L'emprunt n'est pas disponible car vous avez activé le mode Efficacité (E-Mode) et le mode Isolation. Pour gérer le mode E et le mode Isolation, rendez-vous sur votre <0>tableau de bord.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Pour soumettre une proposition de modifications mineures du protocole, vous aurez besoin d’une puissance d’au moins 80,00 K. Si vous souhaitez modifier la base de code de base, vous aurez besoin d’une puissance de 320k. <0>Pour en savoir plus.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Remboursement \",[\"symbole\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Discussion de forum\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"Vous n'avez pas participé à cette proposition\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gouvernance\",\"dEgA5A\":\"Annuler\",\"dIsyWh\":\"Échec de la validation LTV\",\"dOB5nW\":[\"La quantité maximale disponible pour la fourniture est de <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Vous n'avez pas assez de fonds dans votre portefeuille pour rembourser le montant total. Si vous continuez à rembourser avec votre montant actuel de fonds, vous aurez toujours une petite position d'emprunt dans votre tableau de bord.\",\"dXUQFX\":\"Actifs à emprunter\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"L’emprunt est désactivé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"djsg0o\":\"Usage de collatéral\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Jeton de dette Aave\",\"e4V3oW\":\"Top 10 des adresses\",\"eD8WX/\":\"L'action nécessite une réserve active\",\"eJRJ04\":\"Montant à la mise en jeu\",\"eLh0cL\":\"Le slippage est la différence entre les montants cotés et reçus en raison de l’évolution des conditions du marché entre le moment où la transaction est soumise et sa vérification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Récompenses de staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aucune transaction n’a encore été effectuée.\",\"ebLGGN\":\"Total emprunté\",\"ecqEvn\":\"Le solde de la garantie est de 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible sur\",\"enruNF\":\"Commence\",\"eqLYiD\":\"Arrêter de staker maintenant\",\"evw5ha\":\"Valeur nette\",\"ezcU16\":\"Obtenir le jeton ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Vous êtes passé au tarif \",[\"0\"]],\"fMJQZK\":\"Emprunté\",\"fZ5Vnu\":\"Reçu\",\"firl9Q\":\"Votre prêt actuel à la valeur en fonction de votre collatéral fournie.\",\"fldjW9\":\"Prévisualiser tx et migrer\",\"fsBGk0\":\"Solde\",\"fu1Dbh\":[\"Retirer \",[\"symbole\"]],\"fwjWSI\":\"Fourni\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Alimenté par\",\"g4Ius4\":\"This is the fee for executing position changes, set by governance.\",\"g8KGoA\":\"Foire aux questions\",\"g9zzqS\":\"A voté NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Mode réseau test\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"gTHi2T\":\"L'utilisateur essaie d'emprunter plusieurs actifs, y compris un en silo\",\"gVW59Y\":\"Veuillez connecter votre portefeuille pour obtenir des ressources de réseau de test gratuites.\",\"gcFNxP\":\"Approuver Confirmé\",\"goff7V\":\"Adresse zéro non-valide\",\"gp+f1B\":\"Variante 3\",\"gvTM4B\":\"L'APY net est l'effet combiné de toutes les positions d'offre et d'emprunt sur la valeur nette, y compris les incitations. Il est possible d'avoir un APY net négatif si l'APY de la dette est supérieur à l'APY de l'offre.\",\"gzcch9\":\"Frais de protocole de pont invalide\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\". .CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activer le temps de recharge\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY Net\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Revendiqué\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Le % de votre pouvoir d'emprunt total utilisé. Ceci est basé sur le montant de votre garantie fournie et le montant total que vous pouvez emprunter.\",\"hehnjM\":\"Montant\",\"hjDCQr\":\"Il y a eu une erreur. Veuillez essayer de modifier les paramètres ou <0><1>copier l'erreur\",\"hom7qf\":\"Réclamer\",\"hpHJ4I\":\"Garantie liquidée\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Emprunter \",[\"symbole\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"À propos de GHO\",\"iChbOF\":\"Paramètres de prêt flash incohérents\",\"iEPVHF\":\"Pas assez de pouvoir de vote pour participer à cette proposition\",\"iEW87X\":\"Délégation de pouvoirs\",\"iEju36\":[\"Vous avez voté \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Sélectionner la tolérance de glissement\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Entrez un montant\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens n'est pas la même chose que de les staker . Si vous souhaitez staker votre\",\"iZxa38\":\"Utilisez-le pour voter pour ou contre les propositions actives.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Informations sur le collectionneur\",\"igkfR1\":[\"En mode Isolation, vous ne pouvez pas fournir d’autres actifs en garantie. Un plafond d’endettement global limite le pouvoir d’emprunt de l’actif isolé. Pour quitter le mode d’isolement, désactivez \",[\"0\"],\" en garantie avant d’emprunter un autre actif. Pour en savoir plus, consultez notre <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"L'utilisation du collatéral est limitée en raison du mode d'isolation.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Fournir votre\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Désactiver le E-mode\",\"jKYzR1\":\"Activer le E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Temps de recharge restant\",\"jeMZNr\":[[\"0\"],\" Le service de rampe d’accès est fourni par le fournisseur externe et, en le sélectionnant, vous acceptez les conditions du fournisseur. Votre accès au service peut dépendre de l’opérationnalité du fournisseur externe.\"],\"jfl9OP\":\"Migré\",\"jmXdoY\":\"En E-Mode, certains actifs ne sont pas empruntables. Quittez le E-mode pour accéder à tous les actifs\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Non disponible\",\"k/sb6z\":\"Choisir la langue\",\"k3wP3f\":\"<0>Attention: Les changements de paramètres via la gouvernance peuvent modifier le facteur de santé de votre compte et le risque de liquidation. Suivez le <1>forum de gouvernance d’Aave pour les mises à jour.\",\"kACpF3\":[\"Réclamer \",[\"0\"]],\"kH6wUX\":\"Impact sur les prix\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" Actifs sélectionnés\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Pour rembourser au nom d'un utilisateur, un montant explicite à rembourser est nécessaire\",\"kRTD40\":[\"Montant de remboursement à atteindre \",[\"0\"],\"% d’utilisation\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Le plafond d'approvisionnement est dépassé\",\"knxE+G\":\". JSON (en anglais seulement)\",\"ks2LWT\":\"Le plafond de la dette n'est pas nul\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"L’actif ne peut pas être migré en raison d’une liquidité insuffisante ou d’une limitation du plafond d’emprunt \",[\"marketName\"],\" v3 marché.\"],\"lVhKKI\":\"A voté YAE\",\"lWLqxB\":\"Nous n’avons trouvé aucune transaction liée à votre recherche. Réessayez avec un autre nom de ressource ou réinitialisez les filtres.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Anglais\",\"lfEjIE\":\"En savoir plus dans notre <0>guide FAQ\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Émission totale par jour\",\"m7r7Hh\":\"Sélection d’actifs d’emprunt\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Variante 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs ou utiliser <0>\",[\"0\"],\" pour transférer votre \",[\"network\"],\" actif.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Acheter \",[\"cryptoSymbol\"],\" avec Fiat\"],\"mvCXBY\":\"Mise en jeu AAVE\",\"mwdzil\":\"D'accord, fermer\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"L'actif ne peut pas être utilisé comme collatéral.\",\"n+SX4g\":\"Développeurs\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Fournir apy\",\"nJgsQu\":\"Avec un pouvoir de vote de <0/>\",\"nLC6tu\":\"Français\",\"nNHV0z\":\"La migration simultanée de plusieurs garanties et d’actifs empruntés peut s’avérer coûteuse et peut échouer dans certaines situations. <0>Par conséquent, il n’est pas recommandé de migrer des positions avec plus de 5 actifs (déposés + empruntés) en même temps.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Peut être exécuté\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Les deux\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nwtY4N\":\"Quelque chose s’est mal passé\",\"nxyWvj\":\"Le retrait de ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"o17QVP\":\"Votre facteur de santé et votre prêt à la valeur déterminent l'assurance de votre collatéral. Pour éviter les liquidations, vous pouvez fournir plus de garanties ou rembourser les positions d'emprunt.\",\"o1xc2V\":\"L'approvisionnement en aTokens n'est pas nul\",\"o5ooMr\":\"Dette\",\"o7J4JM\":\"Filtrer\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Temps de recharge pour déstaker\",\"oJ5ZiG\":\"L'utilisateur n'a pas de dette à taux variable impayée sur cette réserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Ressources de test\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Le taux d'intérêt stable <0>restera le même pendant toute la durée de votre prêt. Recommandé pour les périodes de prêt à long terme et pour les utilisateurs qui préfèrent la prévisibilité.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible au dépôt\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Rien n’a été trouvé\",\"owSsI3\":\"Signatures prêtes\",\"p+R52m\":\"Accéder à Balancer Pool\",\"p2S64u\":\"Le ratio prêt/valeur des positions migrées entraînerait la liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"p2Z2Qi\":\"Cet actif a atteint son plafond d'emprunt. Rien n'est disponible pour être emprunté à ce marché.\",\"p45alK\":\"Configurer la délégation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Le solde sous-jacent doit être supérieur à 0\",\"pgWG9H\":\"Pas assez de solde staké\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"veuillez vérifier que le montant que vous souhaitez fournir n'est pas actuellement utilisé pour le staking. S'il est utilisé pour le staking, votre transaction peut échouer.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Je comprends comment fonctionnent le temps de recharge (\",[\"0\"],\") et le retrait (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"L'appelant de cette fonction doit être un pool\",\"q/51mF\":\"Migrer vers la V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Stratégie de taux d’intérêt\",\"q6lAbz\":\"Staké\",\"qB4kPi\":\"Fournir APY\",\"qENI8q\":\"Paramètres globaux\",\"qGz5zl\":\"Solde de garantie après remboursement\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copier l'erreur\",\"qXCkEM\":\"Veuillez connecter votre portefeuille pour voir vos fournitures, vos emprunts et vos positions ouvertes.\",\"qY2jnw\":\"Expiration invalide\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Montant non valide à brûler\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Le montant doit être supérieur à 0\",\"rQ+R+0\":\"Sélection d’actifs d’approvisionnement\",\"rSayea\":\"APY\",\"rTBDeu\":[\"L’actif ne peut pas être migré car vous disposez d’une garantie isolée dans \",[\"marketName\"],\" v3 Marché qui limite les actifs empruntables. Vous pouvez gérer vos garanties dans <0>\",[\"marketName\"],\" Tableau de bord V3\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Afficher les actifs avec 0 solde\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Vie privée\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Réclamez toutes les récompenses\",\"rwyUva\":\"Ces actifs sont temporairement gelés ou suspendus par des décisions de la communauté Aave, ce qui signifie qu’il n’est pas possible d’obtenir / emprunter ou d’échanger des taux de ces actifs. Les retraits et les remboursements de dettes sont autorisés. Suivez le <0>forum de gouvernance d’Aave pour d’autres mises à jour.\",\"rxJW5W\":\"Votre pouvoir de proposition est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NON\",\"sQv06Y\":\"pour\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Vous unstaké ici\",\"smJNwH\":\"Disponible à emprunter\",\"solypO\":\"Le facteur de santé n'est pas inférieur au seuil\",\"sr0UJD\":\"Retourner\",\"ss5GCK\":\"L'adresse du fournisseur d'adresses du pool n'est pas valide\",\"swEgK4\":\"Vos informations de vote\",\"t+wtgf\":\"Aucun emprunt pour l'instant\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Prix Oracle\",\"tFZLf8\":\"Ce calcul de gaz n'est qu'une estimation. Votre portefeuille fixera le prix de la transaction. Vous pouvez modifier les paramètres de gaz directement depuis votre fournisseur de portefeuille.\",\"tHuvQI\":\"Accéder au tableau de bord V3\",\"tOcg3N\":\"Étant donné que cet actif est gelé, les seules actions disponibles sont le retrait et le remboursement, accessibles depuis le <0>tableau de bord\",\"tOuXfv\":[\"Emprunter le montant à atteindre \",[\"0\"],\"% d’utilisation\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"S'il vous plaît, connectez votre portefeuille\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Vos ressources\",\"u3ZeYl\":\"La transaction a échoué\",\"u706uF\":\"Prime flash non valide\",\"u8Gfu7\":[\"Aucun résultat de recherche\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"Aucune ressource n’a été sélectionnée pour la migration.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migration\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Exporter des données vers\",\"ulup2p\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"usB84Z\":\"Le montant maximum disponible pour emprunter est limité car le plafond d’emprunt du protocole est presque atteint.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restauré\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Cacher\",\"vMba49\":\"L'emprunt n'est pas activé\",\"vMpNwt\":\"Approuvez avec\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Vous permet de décider si vous souhaitez utiliser un actif fourni en tant que collatéral. Un actif utilisé comme collatéral affectera votre pouvoir d'emprunt et votre Health Factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"L'offre de dette stable n'est pas nulle\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Récompenses APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Vous \",[\"action\"],\" <0/> \",[\"symbole\"]],\"wBIsjb\":\"Canal Discord\",\"wQZbc/\":\"L'appelant de la fonction n'est pas un AToken\",\"wZFvVU\":\"VOTER OUI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"Le protocole Aave est programmé pour toujours utiliser le prix de 1 GHO = 1 $. C’est différent de l’utilisation des prix du marché via des oracles pour d’autres actifs cryptographiques. Cela crée des opportunités d’arbitrage stabilisatrices lorsque le prix du GHO fluctue.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"Avec testnet Faucet, vous pouvez obtenir des ressources gratuites pour tester le protocole Aave. Assurez-vous de changer votre fournisseur de portefeuille pour le réseau de test approprié, sélectionnez l’actif souhaité et cliquez sur «\xA0Faucet\xA0» pour obtenir des jetons transférés vers votre portefeuille. Les actifs d’un réseau de test ne sont pas « réels », ce qui signifie qu’ils n’ont aucune valeur monétaire. <0>Pour en savoir plus\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Les ressources sélectionnées ont été migrées avec succès. Rendez-vous sur le tableau de bord du marché pour les voir.\",\"x7F2p6\":\"Différentiel de courant\",\"x7K5ib\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenir un test gratuit \",[\"0\"],\" à\"],\"x9iLRD\":\"tokens, veuillez vous rendre sur\",\"xNy/UG\":\"Rembourser avec\",\"xPm8wv\":\"En savoir plus sur les risques encourus\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Vos informations\",\"xaWZ6f\":\"Changement de type APY\",\"xh6k71\":\"L’utilisation des garanties est limitée en raison du mode d’isolation.\",\"xvIklc\":\"Flashloan est désactivé pour cet actif, cette position ne peut donc pas être migrée.\",\"y5rS9U\":\"Émigrer\",\"yB1YpA\":\"Mode Sombre\",\"yCrG6m\":\"Taille totale du marché\",\"yJUUbn\":\"Aperçu des transactions\",\"yLGmLX\":[\"Remise en jeu \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Pas une adresse valide\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Suivre le portefeuille\",\"yh2sjd\":[\"Impact sur les prix \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Il n'y a pas assez de fonds dans la \",[\"0\"],\" réserve pour emprunter\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Fermer\",\"z4uGQg\":\"Le plafond de la dette est dépassé\",\"z5JUmg\":[\"Estimated costs are \",[\"0\"],\"% of the sell amount. This order is unlikely to be filled.\"],\"z5UQOM\":\"La garantie choisie ne peut être liquidée\",\"z5Y+p6\":[\"Fournir \",[\"symbole\"]],\"zCjNKs\":\"L'action ne peut pas être effectuée car la réserve est gelée\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Plafond de la dette isolée\",\"zTOjMP\":\"La limite d’approvisionnement du protocole est de 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Dette restante\",\"zmTPiV\":\"Bilan d'approvisionnement\",\"zpPbZl\":\"Paramètres du risque de liquidation\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Apprendre encore plus\",\"zy9fXn\":[\"L’actif est gelé \",[\"marketName\"],\" v3, donc cette position ne peut pas être migrée.\"],\"zys+R6\":\"Faites attention à la congestion du réseau et aux prix de l’essence.\",\"+EGVI0\":\"Recevoir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"On dirait que nous ne pouvons pas changer de réseau automatiquement. Veuillez vérifier si vous pouvez le changer depuis le portefeuille.\",\"+kLZGu\":\"Montant de l’actif fourni\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Montant minimum d’Aave mis en jeu\",\"00OflG\":\"Il n’y a pas assez de liquidités pour que l’actif cible puisse effectuer le changement. Essayez de réduire le montant.\",\"08/rZ9\":\"La période de recharge est le temps nécessaire avant de retirer vos jetons (20 jours). Vous ne pouvez retirer vos actifs du module de sécurité qu’après la période de recharge et pendant la période de désenjeu. <0>Pour en savoir plus\",\"1Onqx8\":[\"Approuver \",[\"symbol\"],\"...\"],\"1m9Qqc\":\"Retrait et changement\",\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Adresse bloquée\",\"2bAhR7\":\"Rencontrez GHO\",\"2o/xRt\":\"Plafond d'approvisionnement sur la réserve cible atteint. Essayez de réduire le montant.\",\"3O8YTV\":\"Total des intérêts courus\",\"4iPAI3\":\"Montant minimum d’emprunt GHO\",\"6NGLTR\":\"Montant actualisable\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Les paramètres de remise sont décidés par la communauté Aave et peuvent être modifiés au fil du temps. Consultez la section Gouvernance pour les mises à jour et votez pour participer. <0>Pour en savoir plus\",\"7sofdl\":\"Retrait et échange\",\"ARu1L4\":\"Remboursé\",\"B6aXGH\":\"Stable\",\"B9Gqbz\":\"Taux variable\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"À prix réduit\",\"CMHmbm\":\"Glissement\",\"EBL9Gz\":\"COPIÉ!\",\"ES8dkb\":\"Taux fixe\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Rabais\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Enregistrer et partager\",\"JK9zf1\":[\"Intérêts composés estimés, y compris l’escompte pour le jalonnement \",[\"0\"],\"AAVE dans le module de sécurité.\"],\"JPrLjO\":\"Vous ne pouvez pas utiliser cette devise comme garantie\",\"JU6q+W\":\"Récompense(s) à réclamer\",\"K05qZY\":\"Retrait et échange\",\"KRpokz\":\"VOIR TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"L'activation de cet actif comme garantie augmente votre pouvoir d'emprunt et votre facteur de santé. Cependant, il peut être liquidé si votre facteur de santé tombe en dessous de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Désactiver \",[\"symbol\"],\" comme garantie\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Envoyer des commentaires\",\"TeCFg/\":\"Modification du taux d’emprunt\",\"TskbEN\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"TtZL6q\":\"Paramètres du modèle de remise\",\"Tz0GSZ\":\"Activités bloquées\",\"UE3KJZ\":\"L’historique des transactions n’est actuellement pas disponible pour ce marché\",\"W8ekPc\":\"Retour au tableau de bord\",\"XZzneG\":\"Vous quitterez le mode d'isolement et d'autres jetons peuvent désormais être utilisés comme collatéral\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"La désactivation de cet actif en tant que garantie affecte votre pouvoir d'emprunt et votre facteur de santé.\",\"aX31hk\":\"Votre solde est inférieur au montant sélectionné.\",\"al6Pyz\":\"Dépasse la remise\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Pas assez de collatéral pour rembourser ce montant de dette avec\",\"cqnmnD\":\"Taux d’intérêt effectif\",\"dMtLDE\":\"À\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY avec remise appliquée\",\"fHcELk\":\"APR Net\",\"flRCF/\":\"Remise sur le staking\",\"gncRUO\":\"Cette adresse est bloquée sur app.aave.com car elle est associée à un ou plusieurs\",\"gr8mYw\":\"Vous pouvez emprunter jusqu’à GHO à <0/> <1/> (rabais maximum)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Emprunter le solde\",\"i2JTiw\":\"Vous pouvez saisir un montant personnalisé dans le champ.\",\"jMam5g\":[[\"0\"],\" Balance\"],\"jpctdh\":\"Vue\",\"kwwn6i\":\"Les utilisateurs qui misent des AAVE dans le module de sécurité (c’est-à-dire les détenteurs de stkAAVE) bénéficient d’une réduction sur le taux d’intérêt d’emprunt de HO. La réduction s’applique à 100 GHO pour chaque 1 stkAAVE détenu. Utilisez le calculateur ci-dessous pour voir le taux d’emprunt GHO avec le rabais appliqué.\",\"lNVG7i\":\"Sélectionner une ressource\",\"lt6bpt\":\"Garantie à rembourser\",\"mIM0qu\":\"Montant prévu à rembourser\",\"mzI/c+\":\"Télécharger\",\"n8Psk4\":\"Nous n’avons pas pu détecter de portefeuille. Connectez un portefeuille pour staker et consulter votre solde.\",\"nOy4ob\":\"Nous vous suggérons de revenir au tableau de bord.\",\"nakd8r\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"nh2EJK\":[\"Veuillez passer à \",[\"networkName\"],\".\"],\"ntkAoE\":\"Remise appliquée pour <0/> le staking d’AAVE\",\"o4tCu3\":\"Emprunter de l’APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"La période de recharge est de \",[\"0\"],\". Après \",[\"1\"],\" de temps de recharge, vous entrerez dans la fenêtre de désengagement de \",[\"2\"],\". Vous continuerez à recevoir des récompenses pendant le temps de recharge et la fenêtre de retrait.\"],\"p3j+mb\":\"Votre solde de récompenses est de 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Intérêts courus\",\"rf8POi\":\"Montant de l’actif emprunté\",\"ruc7X+\":\"Ajoutez stkAAVE pour voir l’APY d’emprunt avec la remise\",\"sK+Nag\":\"Réviser tx\",\"t81DpC\":[\"Approuver \",[\"symbol\"],\" pour continuer\"],\"umICAY\":\"<0><1><2/>Ajoutez stkAAVE pour voir le taux d’emprunt avec escompte\",\"uwAUvj\":\"COPIER L’IMAGE\",\"v8x7Mg\":\"Garantie insuffisante pour couvrir une nouvelle position d’emprunt. Le portefeuille doit avoir une capacité d’emprunt restante pour effectuer le transfert de dette.\",\"wRRqvW\":\"Vous n'avez pas de fournitures dans cette devise\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Activer \",[\"symbol\"],\" comme collatéral\"],\"yW1oWB\":\"APY type\",\"yhvj6d\":\"Vous ne pouvez pas changer d'utilisation en tant que mode de garantie pour cette devise, car cela entraînera un appel de garantie\",\"zevmS2\":\"<0><1><2/>Ajoutez <3/> stkAAVE pour emprunter à <4/> (remise maximale)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"+0xecS\":[\"Si vous NE vous désengagez PAS dans les \",[\"0\"],\" de la fenêtre de désengagement, vous devrez réactiver le processus de refroidissement.\"],\"+5vxU4\":\"Reward APY at target liquidity\",\"+9RBfc\":\"Thank you for submitting your inquiry!\",\"+F6nAX\":\"Save with sGHO\",\"+KaZP2\":\"Aave Labs does not guarantee the program and accepts no liability.\",\"+Nk14N\":\"Savings GHO token\",\"+VR63W\":[\"Participer à cette réserve \",[\"symbol\"],\" donne des récompenses annualisées.\"],\"+XNrRN\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictions, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"+bmKdK\":\"Use your AAVE, stkAAVE, or aAave balance to delegate your voting and proposition powers. You will not be sending any tokens, only the rights to vote and propose changes to the protocol. You can re-delegate or revoke power to self at any time.\",\"+i3Pd2\":\"Limite d'emprunt\",\"+nuEh/\":\"Estimated time\",\"+xMFF8\":\"Remind me\",\"/+Vmgq\":\"Total amount of underlying assets staked. This number represents the combined sum of your original asset and the corresponding aTokens staked in Umbrella.\",\"/1Qot4\":\"Protocol Rewards\",\"/1xACT\":\"Reward APY adjusts with total staked amount, following a curve that targets optimal staking levels.\",\"/57U31\":\"Amount to migrate\",\"/7ykiW\":\"Emprunter ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"/FwCXs\":[[\"0\"],\" \",[\"symbol\"],\"...\"],\"/LCAwL\":\"In progress\",\"/ZyLeG\":\"Amount available to unstake\",\"/jQctM\":\"To\",\"/lDBHm\":\"FAQ\",\"/lMWs6\":[\"Deposit GHO and earn up to <0>\",[\"0\"],\"% APY\"],\"/yNlZf\":\"L'emprunt stable n'est pas activé\",\"/yQcJM\":\"Valeur totale\",\"00AB2i\":\"L'utilisateur n'a pas emprunté la devise spécifiée\",\"02/4d1\":\"We suggest you go back to the home page.\",\"0AmQcW\":\"Changement de taux\",\"0BF3yK\":\"Désolé, nous n’avons pas trouvé la page que vous cherchiez.\",\"0RrIzN\":\"Select token\",\"0TAbjq\":\"Recent Transactions\",\"0jhlyw\":\"Risque de liquidation\",\"0ojY+Y\":\"Solde actuel v2\",\"0r31vq\":\"Reward Token\",\"0thX3P\":\"Modification des garanties\",\"0wGCWc\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"11xQTX\":[\"This asset is eligible for \",[\"0\"],\" Ethena Rewards.\"],\"18GnfY\":[\"Repay \",[\"0\"]],\"1AsVfF\":\"À l’heure actuelle, les données sur les prix ne sont pas disponibles pour cette réserve dans le sous-graphe du protocole\",\"1LjK22\":\"Historique des transactions\",\"1PMU2v\":\"Learn more about the risks.\",\"1Ue8sX\":\"Veuillez connecter un portefeuille pour afficher vos informations personnelles ici.\",\"1W8DZp\":\"USDT on Ethereum requires approval reset before a new approval. This will require an additional transaction.\",\"1YH41K\":[\"After the cooldown period ends, you will enter the unstake window of \",[\"0\"],\". You will continue receiving rewards during cooldown and the unstake period.\"],\"1bpx9A\":\"...\",\"1kWUB+\":\"Seuil de liquidation <0/>\",\"1t7rez\":\"L’offre d’actifs est limitée à un certain montant afin de réduire l’exposition du protocole à l’actif et d’aider à gérer les risques encourus.\",\"2/aIvj\":\"Cancellation submited\",\"2Eoi/a\":\"Voir détails\",\"2FYpfJ\":\"Plus\",\"2O3qp5\":\"Liquidités disponibles\",\"2OIfa1\":\"Please connect your wallet to swap collateral.\",\"2OM8/D\":[\"L’actif ne peut pas être migré en raison d’une restriction de plafond d’approvisionnement dans \",[\"marketName\"],\" v3 marché.\"],\"2RubOP\":\"Initiate Withdraw\",\"2S7oCr\":[\"This asset is eligible for the Ether.fi Loyalty program with a <0>x\",[\"multiplier\"],\" multiplier.\"],\"2ZGocC\":\"Aave est un protocole entièrement décentralisé et régi par la communauté par les détenteurs de jetons AAVE. Les détenteurs de jetons AAVE discutent, proposent et votent collectivement sur les mises à niveau du protocole. Les détenteurs de jetons AAVE (réseau Ethereum uniquement) peuvent soit voter eux-mêmes sur de nouvelles propositions, soit choisir l’adresse de leur choix. Pour en savoir plus, consultez la page Gouvernance\",\"2a6G7d\":\"Veuillez saisir une adresse de portefeuille valide.\",\"2eBWE6\":\"Je reconnais les risques encourus.\",\"2r2h/U\":\"Total Deposited\",\"2uJToh\":[[\"0\"],[\"name\"]],\"2x1UO0\":\"Favourited\",\"2x58bP\":\"L'emprunt stable est activé\",\"34Qfwy\":\"Le plafond d'emprunt est dépassé\",\"39eQRj\":[\"Emprunter \",[\"symbole\"]],\"3BL1xB\":\"Total fourni\",\"3K0oMo\":\"Offre restante\",\"3MoZhl\":\"Il n'y a pas assez de collatéral pour couvrir un nouvel emprunt\",\"3NO6VI\":[[\"0\"],\" Balance\",[\"1\"]],\"3Np5O8\":[\"Fournir \",[\"symbole\"]],\"3mXg0z\":\"Max LTV\",\"3q3mFy\":\"Rembourser\",\"3qsjtp\":\"La moyenne pondérée de l'APY pour tous les actifs fournis, y compris les incitations.\",\"3rL+os\":\"Vous ne pouvez retirer vos actifs du module de sécurité qu'après la fin de la période de refroidissement et que la fenêtre de retrait est active.\",\"42UgDM\":[\"Migrer vers \",[\"0\"],\" Marché v3\"],\"49UFQA\":\"Résultats du vote\",\"4DMZUI\":\"Afficher les transactions\",\"4HtGBb\":\"MAX\",\"4Y5H+g\":\"Petits caractères\",\"4YYh4d\":\"Maximum available to borrow\",\"4fCwrW\":\"or from the\",\"4lDFps\":\"Signez pour continuer\",\"4p5njr\":\"Total amount staked\",\"4wyw8H\":\"Transactions\",\"5+lhtA\":\"For swapping safety module assets please unstake your position <0>here.\",\"5CCqcz\":\"Fees help support the user experience and security of the Aave application. <0>Learn more.\",\"5JSSxX\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenez des ressources de test gratuites à l’adresse suivante :\"],\"5K3B36\":\"We couldn't find any assets related to your search. Try again with a different category.\",\"5K7kGO\":\"documentation\",\"5NOSGa\":\"Le plafond de la dette limite le montant que les utilisateurs du protocole peuvent emprunter sur cet actif. Le plafond de la dette est spécifique aux actifs isolés et est indiqué en USD.\",\"5Ncc6j\":[\"Cet actif a presque atteint son plafond d'offre. Il ne peut y avoir que \",[\"messageValue\"],\" fourni à ce marché.\"],\"5cZ/KX\":\"L'offre de dette variable n'est pas nulle\",\"5che++\":\"Pour demander l'accès à ce marché autorisé, veuillez consulter\xA0: <0>Nom du fournisseur d'accès\",\"5ctNdV\":[\"Minimum \",[\"0\"],\" reçu\"],\"5hDe9v\":\"Allocation action requise\",\"5rsnKT\":\"Récompenses disponibles\",\"5ty6hB\":\"Claiming individual protocol reward only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"5vxk14\":\"To continue, you need to grant smart contracts permission to move your funds from your wallet. Depending on the asset and wallet you use, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more\",\"5yC5m5\":\"Voir tous les votes\",\"6/dCYd\":\"Aperçu\",\"60crCe\":\"Toutes les transactions\",\"62Xcjh\":\"Collatérale\",\"65A04M\":\"Espagnol\",\"68ANm7\":\"Withdrawing GHO\",\"6G8s+q\":\"Signature\",\"6Jrv+z\":[\"Rembourser \",[\"symbole\"]],\"6Xr0UU\":\"Refroidissement...\",\"6bxci/\":\"Pouvoir de vote\",\"6f8S68\":\"Marchés\",\"6g1gi0\":\"Les propositions\",\"6gvoHP\":\"Copier le message d’erreur\",\"6h3Q5G\":\"Remboursé\",\"6lFSyT\":\"Available to Stake\",\"6s8L6f\":\"Changer de réseau\",\"70wH1Q\":\"APR\",\"72c5Qo\":\"Total\",\"75qcAQ\":[[\"stepName\"]],\"7ITr5L\":\"Facteur de santé\",\"7R/kqr\":\"The cooldown period is the time required prior to unstaking your tokens (<0/>). You can only withdraw your assets from the Security Module after the cooldown period and within the unstake window. <1>Learn more\",\"7T/o5R\":\"Atteint\",\"7YlcXu\":\"Fork mode is ON\",\"7Z76Iw\":\"L’emprunt n’est pas disponible car vous utilisez le mode Isolation. Pour gérer le mode d’isolation, rendez-vous sur votre <0>tableau de bord.\",\"7aKlMS\":\"Partager sur Lens\",\"7bdUsR\":\"Redeem as aToken\",\"7c6Gy8\":\"Learn more about Sonic Rewards program\",\"7er5fP\":\"Réclamer tout\",\"7hb2+s\":\"Time remaining until the withdraw period ends.\",\"7i1oxe\":\"Withdrawing and Swapping\",\"7l88b8\":\"Les données n’ont pas pu être récupérées, veuillez recharger le graphique.\",\"7p5kLi\":\"Tableau de bord\",\"8+6BI0\":\"Soyez prudent - Vous êtes très proche de la liquidation. Envisagez de déposer plus de collatéral ou de rembourser certaines de vos positions empruntées\",\"87pUEW\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs.\"],\"8F1i42\":\"Page introuvable\",\"8G8M0u\":\"Chargement des données...\",\"8Iu1QS\":\"Retiré\",\"8JL93T\":\"Toutes les propositions\",\"8Q51DU\":\"Ajouter au portefeuille\",\"8X/oyn\":\"Montant invalide à frapper\",\"8Z5FPv\":\"Déconnecter le portefeuille\",\"8Zz7s5\":\"actifs\",\"8aLW8H\":\"Solde à révoquer\",\"8bOT3H\":\"Taux d'utilisation\",\"8d61xO\":\"The Ink instance is governed by the Ink Foundation\",\"8sLe4/\":\"Voir le contrat\",\"8ss7VF\":\"Transaction cancelled\",\"8t/M0y\":\"Please connect your wallet to be able to bridge your tokens.\",\"8u3DDw\":[\"Swap \",[\"0\"],\" collateral\"],\"8vETh9\":\"Montrer\",\"93T2Os\":\"Total deposited\",\"94OHPx\":\"Vous entrez en mode Isolation\",\"9CDK3/\":[\"L'emprunt n'est actuellement pas disponible pour \",[\"0\"],\".\"],\"9GIj3z\":\"Taille de réserve\",\"9ITYjl\":\"%\",\"9Knqb4\":\"Solde de mise en jeu\",\"9OBKm7\":\"Quorum\",\"9QHoGr\":\"Votes actuels\",\"9Rw96f\":[\"Cet actif a presque atteint son plafond d'emprunt. Il n'y a que \",[\"messageValue\"],\" disponible pour être emprunté sur ce marché.\"],\"9Xj/qR\":[\"Certaines ressources migrées ne seront pas utilisées comme garantie en raison de l’activation du mode d’isolement dans \",[\"marketName\"],\" Marché V3. Visite <0>\",[\"marketName\"],\" Tableau de bord V3 pour gérer le mode d’isolation.\"],\"9YcC7V\":\"Select Categories\",\"9c6vDV\":\"Cet actif a atteint son plafond d'offre. Rien n'est disponible pour être fourni à partir de ce marché.\",\"9iDHmv\":\"Collateral Swap\",\"9kTWHA\":\"L’AMI a été suspendu en raison d’une décision de la communauté. L’offre, les emprunts et les remboursements sont impactés. <0>Plus d’informations\",\"9lXchd\":\"Jeton sous-jacent\",\"9rWaKF\":\"Bridged Via CCIP\",\"9xSooW\":\"Comme il s'agit d'un réseau de test, vous pouvez obtenir n'importe lequel des actifs si vous avez ETH dans votre portefeuille\",\"9y0Q0y\":[\"There is not enough liquidity in \",[\"symbol\"],\" to complete this swap. Try lowering the amount.\"],\"9zzsBx\":\"This is a program initiated by the Aave DAO and implemented by Merkl. Aave Labs does not guarantee the program and accepts no liability.\",\"A/lwoe\":\"Choisissez l’un des services de rampe d’accès\",\"A6dCI6\":[\"Le montant maximal disponible pour emprunter est de <0/> \",[\"0\"],\" (<1/>).\"],\"ACUEES\":\"Check errors\",\"AReoaV\":\"Vos emprunts\",\"AV7cGz\":\"Examiner les détails de la taxe d'approbation\",\"AZOjB8\":\"Récupération de données...\",\"Ai0jas\":\"Rejoignez la discussion de la communauté\",\"Ajl2rq\":\"Le pouvoir d'emprunt et les actifs sont limités en raison du mode d'isolement.\",\"AqgYNC\":\"Plafond d’emprunt du protocole à 100% pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"B6zvhF\":\"Shares\",\"BDFEd+\":\"Les stETH fournis en garantie continueront d’accumuler des récompenses de staking fournies par les rebasages quotidiens.\",\"BE2mP0\":\"Borrowed assets\",\"BNL4Ep\":\"L'utilisation de la garantie est limitée en raison du mode d'isolement. <0>En savoir plus\",\"BQ+4lu\":\"Swap saved in your <0>history section.\",\"BQ/wCO\":\"Migrate your assets\",\"BaCmXf\":\"AAVE and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"Baj2MJ\":\"Savings\",\"BnhYo8\":\"Catégorie d'actifs\",\"Bo6b9i\":\"Withdraw GHO\",\"Bq9Y7e\":\"Cet actif est gelé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"BqWMDJ\":\"Faucet\",\"BqynZO\":\"Optimized for efficiency and risk by supporting blue-chip collateral assets\",\"Bsu7zX\":\"The fee includes the gas cost to complete the transaction on the destination chain and the fee paid to Chainlink CCIP service providers. You can chose to pay in the network token or GHO. <0>Learn more\",\"BwJKBw\":\"de\",\"C4/GSi\":\"Your balance of assets that are available to stake\",\"C4qYyX\":[\"Repay \",[\"0\"],\" with \",[\"1\"]],\"C5jQc6\":\"GHO Balance\",\"CDrsH+\":\"Fiche technique\",\"CGiscJ\":\"You've successfully submitted an order.\",\"CK1KXz\":\"Max\",\"COUcFd\":\"Points\",\"CZXzs4\":\"Grec\",\"CkTRmy\":[\"Revendication \",[\"symbol\"]],\"CrrC++\":\"Position swaps are disabled for this asset due to security reasons.\",\"CsqtLm\":\"Veuillez connecter votre portefeuille pour voir l’outil de migration.\",\"CtGlFb\":[[\"networkName\"],\" Robinet\"],\"CuAHqa\":\"Protocol Incentives\",\"Cxt2YY\":\"Watch wallet\",\"D33VQU\":\"Cette action réduira le facteur de santé de V3 en dessous du seuil de liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"D4Q4h/\":\"Gas estimation error\",\"D79cZK\":\"Instant\",\"D8sc3k\":\"Stake balance\",\"D9BLRG\":\"This asset has been paused due to a community decision. Supply, withdraw, borrows and repays are impacted.\",\"DAma/S\":\"La garantie est (principalement) la même devise que celle qui est empruntée\",\"DCnFg0\":[\"Adresses (\",[\"0\"],\")\"],\"DG3Lv1\":\"Je comprends parfaitement les risques liés à la migration.\",\"DONJcV\":\"L'actif sous-jacent ne peut pas être sauvé\",\"DR+4uL\":\"Bilan de l’alimentation après le changement\",\"DWjrck\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" V3 Market en raison des restrictions du mode E. Vous pouvez désactiver ou gérer les catégories du mode E dans votre <0>tableau de bord V3\"],\"DhaOWH\":\"Stake your Aave aTokens or underlying assets to earn rewards. In case of a shortfall event, your stake may be slashed to cover the deficit.\",\"Dj+3wB\":\"Aave par mois\",\"DlRHbH\":\"Claiming all protocol rewards only. Merit rewards excluded - select \\\"claim all\\\" to include merit rewards.\",\"DuEq2K\":\"Collatéralisation\",\"DxfsGs\":\"Vous pouvez signaler un incident sur notre <0>Discord ou<1>Github.\",\"Dzma+E\":\"Main Ethereum market with the largest selection of assets and yield options\",\"E/QGRL\":\"Désactivé\",\"E6UoJs\":\"Estimated compounding interest rate, that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand.\",\"EZd3Dk\":[\"Reprise \",[\"symbol\"]],\"Ebgc76\":[\"Retrait \",[\"symbole\"]],\"EdQY6l\":\"Aucun/Aucune\",\"Ef7StM\":\"Unknown\",\"Ehzc//\":[\"Swapping \",[\"0\"],\" debt\"],\"Ekea1N\":\"We couldn't detect a wallet. Connect a wallet to stake and view your balance.\",\"Enslfm\":\"Destination\",\"EvE9nO\":[\"Réactiver la période de recharge pour annuler le pieu \",[\"0\"],\" \",[\"stakedToken\"]],\"EvECnL\":\"Migrer vers la v3\",\"Evai+Y\":\"error code: 2455\",\"EzMQbh\":\"The source chain time to finality is the main factor that determines the time to destination. <0>Learn more\",\"F40cwT\":\"Legacy Markets\",\"F6TdXL\":\"Pour en savoir plus.\",\"FHlMf/\":\"Solde actuel de la v2\",\"FHpxjF\":[\"Le facteur de réserve est un pourcentage de l’intérêt qui va à un \",[\"0\"],\" qui est contrôlé par la gouvernance Aave pour promouvoir la croissance de l’écosystème.\"],\"FOBZa6\":\"Puissance d'emprunt utilisée\",\"FPKEug\":\"Opération non prise en charge\",\"FbmMe7\":\"Linked addresses\",\"Fdp03t\":\"sur\",\"Fjw9N+\":\"Actifs à déposer\",\"FmN0fk\":\"Remise en jeu\",\"G15AUr\":\"Sending cancel...\",\"GDGLIs\":\"GHO est un actif numérique natif décentralisé et adossé à des garanties, indexé sur le dollar américain. Il est créé par les utilisateurs en empruntant contre plusieurs garanties. Lorsque l’utilisateur rembourse sa position d’emprunt de HO, le protocole brûle le GHO de cet utilisateur. Tous les paiements d’intérêts accumulés par les minters de GHO seraient directement transférés à la trésorerie d’AaveDAO.\",\"GQrBTq\":\"Changer de mode E\",\"GWswcZ\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. Le 20 décembre 2022, renFIL ne sera plus pris en charge et ne pourra plus être reconnecté à son réseau natif. Il est recommandé de retirer les positions d’offre et de rembourser les positions d’emprunt afin que renFIL puisse être relié à FIL avant la date limite. Après cette date, il ne sera plus possible de convertir renFIL en FIL. <0>Plus d’informations\",\"GX8GKD\":\"Actifs\",\"GgEj+0\":\"Mode lecture seule. Connectez-vous à un portefeuille pour effectuer des transactions.\",\"GjkIKV\":\"Prend fin\",\"GtP2hp\":[\"L'emprunt n'est pas disponible, car vous avez activé le mode d'efficacité (E-Mode) pour la catégorie \",[\"0\"],\". Pour gérer les catégories E-Mode, visitez votre <0>tableau de bord.\"],\"Gz07IS\":\"Your health factor after this swap will be critically low and may result in liquidation. Please choose a different asset or reduce the swap amount to stay safe.\",\"H1oAjw\":[[\"selectedCount\"],\" Categories\"],\"HB/wfS\":[[\"tooltipText\"]],\"HD4KkW\":[\"Swapping \",[\"0\"],\" collateral\"],\"HKDsQN\":\"Rewards can be claimed through\",\"Hi6Ttn\":\"Désolé, une erreur inattendue s’est produite. En attendant, vous pouvez essayer de recharger la page, ou revenir plus tard.\",\"HkEDbS\":[[\"d\"],\"d\"],\"HlWGZc\":[\"Your \",[\"0\"],\" balance is lower than the selected amount.\"],\"HmkYqM\":\"Fenêtre d'arrêt de staking\",\"HpK/8d\":\"Recharger\",\"HtBqo9\":\"sGHO\",\"HtuY7v\":\"Please connect your wallet to swap tokens.\",\"HvJKMU\":[\"La ressource ne peut pas être migrée vers \",[\"marketName\"],\" v3 Marché puisque l’actif collatéral activera le mode d’isolation.\"],\"Hvwnm9\":[\"La quantité maximale disponible pour l’approvisionnement est limitée parce que le plafond d’approvisionnement du protocole est à \",[\"0\"],\"%.\"],\"I8CX2c\":\"Le montant total de vos actifs libellés en USD qui peut être utilisé comme garantie pour emprunter des actifs.\",\"IAD2SB\":[\"Prétendant \",[\"symbol\"]],\"IG9X9/\":\"L’emprunt de cet actif est limité à un certain montant afin de minimiser l’insolvabilité du pool de liquidités.\",\"ILXMQA\":\"The Safety Module has been upgraded to <0>Umbrella, a new system that introduces automated slashing, aToken staking, and improved incentives design.\",\"IN8luu\":\"All done\",\"IOIx8L\":\"Il est prévu que cet actif soit désactivé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"IP+I/j\":\"Période de recharge\",\"IaA40H\":\"Liquidation à\",\"IhAc6F\":\"Costs & Fees\",\"ImxB3A\":\"deposited\",\"J/hVSQ\":[[\"0\"]],\"JCoxL6\":\"Gérer l’analytique\",\"JEdlTC\":\"Stablecoins\",\"JOqFba\":[\"Déjalonnement \",[\"symbol\"]],\"JPHuMW\":\"Swapping\",\"JPhc4G\":\"ETH Correlated\",\"JYKRJS\":\"Stake\",\"JZMxX0\":\"Pas assez de solde sur votre portefeuille\",\"Jgflkm\":\"Get GHO\",\"JoMQnI\":\"Solde du portefeuille\",\"JtwD8u\":\"Emprunter le solde après le remboursement\",\"JumYTK\":\"Supplied assets\",\"KAz/NV\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter davantage sur cet actif.\",\"KLXVqE\":[\"Les tokens stETH seront migrés vers Wrapped stETH à l’aide du wrapper Lido Protocol, ce qui entraîne une modification de l’équilibre de l’offre après la migration : \",[\"0\"]],\"KLd6ky\":\"Use connected account\",\"KSlpka\":\"Cela représente le seuil auquel une position d'emprunt sera considérée comme sous-garantie et sujette à liquidation pour chaque garantie. Par exemple, si une garantie a un seuil de liquidation de 80\xA0%, cela signifie que la position sera liquidée lorsque la valeur de la dette vaut 80 % de la valeur de la garantie.\",\"KYAjf3\":\"Isolé\",\"KkPgim\":\"Changement de mode E\",\"KnN1Tu\":\"Expire\",\"KoOBI2\":\"En raison de la mécanique interne de stETH requise pour le rebasage de la prise en charge, il n’est pas possible d’effectuer un changement de garantie où stETH est le jeton source.\",\"KojyJ4\":\"Mauvais réseau\",\"KqoLVC\":\"Merkl rewards are claimed through the\",\"KsqhWn\":\"Staking\",\"KuBTQq\":\"Entrez l'adresse ETH\",\"KvG1xW\":\"Réclamer\",\"L+8Lzs\":\"LTV actuelle\",\"L+qiq+\":\"Marché\",\"L2tU22\":\"Learn more about Ethena Rewards program\",\"L3ZyJR\":[[\"popularSectionTitle\"]],\"LEdkyb\":\"Rewards to claim\",\"LIrMcF\":\"Pas de pouvoir de vote\",\"LL0zks\":\"Peut être collatéral\",\"LLdJWu\":\"AAVE Réclamable\",\"LSIpNK\":\"Emprunter et rembourser dans le même bloc n'est pas autorisé\",\"LVt3TI\":[\"<0>Tolérance de glissement <1>\",[\"selectedSlippage\"],\"% <2>\",[\"0\"],\"\"],\"Lhf8zD\":\"Waiting for actions...\",\"Lp2cTp\":\"Eligible for incentives through Merkl.\",\"LvVpD/\":\"Emode\",\"Ly2enB\":\"This will cancel the order via an on-chain transaction. Note that the order will not be marked as cancelled in the CoW Protocol system, but will remain open and expire naturally. Keep in mind that a solver may already have filled your order.\",\"M1RnFv\":\"Expired\",\"M2sknc\":\"Astuce : Essayez d’augmenter le glissement ou de réduire la quantité d’entrée\",\"MKiONF\":\"Activating Cooldown\",\"MOvzXm\":\"Comparing best rates...\",\"MZ/nQf\":\"Adresse du destinataire\",\"MZbQHL\":\"No results found.\",\"Ma/MtY\":\"vue de staking\",\"McHlGl\":\"Changement d’APY\",\"MeCCA+\":\"APY, variable\",\"MghdTe\":\"Si le facteur de santé descend en dessous de 1, la liquidation de votre collatéral peut être déclenchée.\",\"MlRlXX\":\"Current APY\",\"Mm/DVQ\":\"Vous avez annulé la transaction.\",\"MnE2QX\":\"Emprunter des informations\",\"MrmQHg\":\"View Bridge Transactions\",\"MuDFEQ\":\"Valeur de retour invalide de la fonction flashloan executor\",\"My0ZGV\":\"Learn more about the Kernel points distribution\",\"N+3mX2\":\"Please connect your wallet to swap debt.\",\"N40H+G\":\"All\",\"N5kUMV\":\"L’actif ne peut être utilisé comme garantie qu’en mode isolé avec un pouvoir d’emprunt limité. Pour passer en mode d’isolation, désactivez toutes les autres garanties.\",\"N6Pxr9\":\"View all\",\"ND1ISA\":\"Weekly Rewards\",\"NF0e1Q\":\"En attente...\",\"NK9ikO\":\"Solde du portefeuille\",\"NMt2CB\":\"Montant réclamable\",\"Na7NlU\":[[\"remainingCustomMessage\"]],\"NcFGxG\":\"Contrat de collectionneur\",\"NfpPeS\":\"Rien staké\",\"Nh9DAo\":[[\"m\"],\"m\"],\"Npz7kI\":\"Inquiry\",\"O+sCUU\":\"Le plafond de mintage non soutenu est dépassé\",\"O+tyU+\":[\"Le montant maximal disponible pour emprunter sur cet actif est limité car le plafond de la dette est à \",[\"0\"],\"%.\"],\"O3oNi5\":\"Email\",\"OC4Tzv\":\"here\",\"OFjZGo\":\"Unstake\",\"OR8cYX\":\"Aperçu de la proposition\",\"OYuJ9K\":\"Le plafond d’endettement du protocole est de 100% pour cet actif. Il n’est pas possible d’emprunter sur cet actif.\",\"OfhWJH\":\"Réinitialisation\",\"Og2SKn\":\"handicapé\",\"OiykRd\":\"Deposit GHO\",\"On0aF2\":\"Site internet\",\"OqAwLU\":\"Protocol APY\",\"OsyKSt\":\"Retirer\",\"P1dURE\":\"Révoquer le pouvoir\",\"P2WCD/\":[\"L’actif sous-jacent n’existe pas dans \",[\"marketName\"],\" v3 Market, par conséquent, cette position ne peut pas être migrée.\"],\"P2sL6B\":\"Lorsqu'une liquidation survient, les liquidateurs remboursent jusqu'à 50 % de l'encours emprunté au nom de l'emprunteur. En contrepartie, ils peuvent acheter le collatéral à prix réduit et conserver la différence (pénalité de liquidation) en bonus.\",\"P6sRoL\":\"Mise en jeu ABPT\",\"P72/OW\":\"La moyenne pondérée de l'APY pour tous les actifs empruntés, y compris les incitatifs.\",\"P7e6Ug\":\"Veuillez connecter votre portefeuille pour consulter l’historique des transactions.\",\"PByO0X\":\"Votes\",\"PI+kVe\":\"Disable fork\",\"PJK9u/\":\"Emprunter apy\",\"PLUB/s\":\"Fee\",\"PP5ZA8\":[\"Participating in staking \",[\"symbol\"],\" gives annualized rewards. Your wallet balance is the sum of your aTokens and underlying assets. The breakdown to stake is below\"],\"PcBUgb\":\"Seuil de liquidation\",\"PctCOf\":\"A temporary contract will be used to execute the trade. Your wallet may show a warning for approving a new or empty address.\",\"PjU6bu\":\"This asset is eligible for SPK incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"PsOFSf\":\"Cette action réduira le facteur de santé V2 en dessous du seuil de liquidation. Conservez la garantie ou migrez la position d’emprunt pour continuer.\",\"Pu4bI/\":[[\"currentMethod\"]],\"Q0LzKi\":\"View TX\",\"Q4eNqa\":\"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + wstETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.\",\"QONKTE\":\"Merit Rewards\",\"QQYsQ7\":\"Withdrawing\",\"QZEgwS\":\"Execution fee\",\"R+30X3\":\"Non atteint\",\"R9Khdg\":\"Auto\",\"RCU5PY\":\"Age\",\"RMtxNk\":\"Différentiel\",\"RNK49r\":\"Signature non valide\",\"RS0o7b\":\"État\",\"RTG4/6\":\"There are no stake assets configured for this market\",\"RU+LqV\":\"Détails de la proposition\",\"RYfdBk\":\"Visit <0><1>https://aave.self.xyz/ to get started with Self’s ZK-powered proof-of-humanity authentication.\",\"RiSYV4\":\"L'actif n'est pas répertorié\",\"Rj01Fz\":\"Liens\",\"RmWFEe\":\"APR staké\",\"RtBLm7\":\"Le facteur santé est inférieur au seuil de liquidation\",\"RvF1Ts\":\"stkGHO is now Savings GHO\",\"RxzN1M\":\"Activé\",\"SDav7h\":\"Fonds dans le Safety Module\",\"SENccp\":\"Si l’erreur persiste,<0/> vous pouvez la signaler à ce\",\"SIWumd\":\"Afficher les ressources gelées ou mises en pause\",\"SM58dD\":\"Quantité en temps de recharge\",\"SNmu1z\":\"Shares are Umbrella Stake Tokens you receive when staking. They represent your ownership in the pool, and the amount of underlying you can redeem depends on the current exchange rate between shares and the underlying.\",\"SSMiac\":\"Impossible de charger les votants de proposition. Veuillez rafraîchir la page.\",\"SSQVIz\":\"Seuil de liquidation\",\"SUb8x0\":\"Total disponible\",\"SWIgh4\":\"Fees exceed wallet balance\",\"SY9hVo\":\"Le mode lecture seule permet de voir les positions d’adresses dans Aave, mais vous ne pourrez pas effectuer de transactions.\",\"SZRUQ4\":\"Glissement maximal\",\"SZkDmY\":\"The swap could not be completed. Try increasing slippage or changing the amount.\",\"Sa1UE/\":\"Le plafond d’emprunt du protocole est de 100 % pour cet actif. Il n’est pas possible d’emprunter davantage.\",\"Sk2zW9\":\"Désactiver le E-mode\",\"St4jqF\":\"This list may not include all your swaps.\",\"SxaD0o\":\"Le fournisseur d'adresses de pool n'est pas enregistré\",\"T/AIqG\":\"Limite d’approvisionnement du protocole à 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"T0xCO9\":\"Can't validate the wallet address. Try again.\",\"T4OhVl\":\"GHO balance\",\"T6uYU2\":\"Emprunter\",\"TFxQlw\":\"Pénalité de liquidation\",\"TQ7WsV\":\"Available to stake\",\"TUI7iB\":\"L'actif ne peut être utilisé comme garantie qu'en mode isolé.\",\"TbjyhA\":\"Docs\",\"TduuS0\":\"L'utilisateur n'a pas de dette à taux stable impayée sur cette réserve\",\"Tg1JyO\":\"Bridge history\",\"TszKts\":\"Emprunter le solde après le changement\",\"Tw07Vv\":\"Show assets with small balance\",\"TwJI9F\":\"Asset has been successfully sent to CCIP contract. You can check the status of the transactions below\",\"U/eBjN\":\"Recharger la page\",\"U2r8nY\":\"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE, stkAAVE or aAave balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE, stkAAVE or aAave balance changes, your delegate's voting/proposition power will be automatically adjusted.\",\"U8IubP\":\"L’application s’exécute en mode réseau de test. Découvrez comment cela fonctionne dans\",\"U9btTk\":\"L'actif n'est pas empruntable en mode d'isolement\",\"UAOZRe\":\"L’impact sur les prix est l’écart entre la valeur totale des tokens d’entrée échangés et les tokens de destination obtenus (en USD), qui résulte de la liquidité limitée de la paire de trading.\",\"UMgOim\":\"Send cancel\",\"URmyfc\":\"Détails\",\"UTTKmT\":\"Temps de recharge de la mise activé\",\"UXeR72\":\"Ces fonds ont été empruntés et ne peuvent pas être retirés pour le moment.\",\"UYb8CM\":\"Learn more about the SPK rewards\",\"UbRrG0\":\"Le ratio LTV maximum représente le pouvoir d'emprunt maximum d'une garantie spécifique. Par exemple, si une garantie a un LTV de 75 %, l'utilisateur peut emprunter jusqu'à 0,75 ETH dans la devise principale pour chaque 1 ETH de garantie.\",\"UiO4Hu\":[\"You'll need to wait \",[\"0\"],\" before you can unstake your tokens. This cooldown starts when you request to unstake. Once it ends, you can withdraw during the unstake window.\"],\"UpndFj\":\"Aucune récompense à réclamer\",\"V0f2Xv\":\"Facteur de réserve\",\"V1HK43\":\"Risques liés à la migration\",\"V7QGpc\":\"I understand the liquidation risk and want to proceed\",\"VATFH9\":\"Dette couverte\",\"VHOVEJ\":\"Connecter le portefeuille\",\"VMfYUK\":\"Sécurité de votre garantie déposée contre les actifs empruntés et sa valeur sous-jacente.\",\"VOAZJh\":\"Total des emprunts\",\"ViKYxK\":\"YAE\",\"VnQFYr\":\"Claiming all merit rewards only\",\"W1SSoD\":\"Examiner les détails de la transaction\",\"W5hVah\":\"Rien fourni pour le moment\",\"W5kTFy\":\"Vote\",\"WHrVwg\":\"Loading quote...\",\"WMJGls\":\"Estimated Costs & Fees\",\"WMPbRK\":\"Sans support\",\"WNGZwH\":\"E-Mode augmente votre LTV pour une catégorie d'actifs sélectionnée jusqu'à <0/>. <1>En savoir plus\",\"WPWG/y\":\"Statut et configuration de la réserve\",\"WS67YQ\":\"Let us know how we can help you. You may also consider joining our community\",\"WT188T\":\"Withdraw & Swap\",\"WZLQSU\":\"L'utilisateur ne peut pas retirer plus que le solde disponible\",\"WaZyaV\":\"<0>Ampleforth est un actif de rebasage. Consultez la <1>documentation pour en savoir plus.\",\"WbTDwg\":\"In Progress\",\"WfU+XN\":\"Étant donné que cette ressource est suspendue, aucune action ne peut être entreprise jusqu’à nouvel ordre\",\"Wjmqs2\":\"No results found. You can import a custom token with a contract address\",\"WkZ6C6\":\"Pour emprunter, vous devez fournir tout actif à utiliser comme garantie.\",\"X/ITG9\":\"Copier le texte d'erreur\",\"X3Pp6x\":\"Utilisé comme collatéral\",\"X4Zt7j\":\"L'action ne peut pas être effectuée car la réserve est mise en pause\",\"X4tRM3\":[[\"0\"],\" \",[\"symbol\"],\" to continue\"],\"XBdKOj\":\"Representative smart contract wallet (ie. Safe) addresses on other chains.\",\"XPN5UR\":\"User denied the operation.\",\"XYLcNv\":\"Support\",\"Xe5bTg\":\"Deposit APR\",\"Xg5y9S\":\"Amount to Bridge\",\"Xn4hUi\":\"Veuillez toujours tenir compte de votre <0>facteur de santé (HF) lors de la migration partielle d’une position et que vos tarifs seront mis à jour vers les taux V3.\",\"XwKkg/\":\"Staked Underlying\",\"Xy+o6U\":\"For security reasons, limit orders are not supported for Native tokens. To place a limit order, use the wrapped version.\",\"Xy71ST\":\"Umbrella\",\"Y+hUcK\":\"Merit Program and Self rewards can be claimed\",\"Y46iXX\":\"The order could't be filled.\",\"Y5kGkc\":\"VOTER NON\",\"YDIOks\":\"Activation du E-Mode\",\"YSodyW\":\"Cette action réduira votre facteur de santé. Veuillez garder à l’esprit le risque accru de liquidation des garanties.\",\"YXOWXM\":\"The total amount bridged minus CCIP fees. Paying in network token does not impact gho amount.\",\"Ya/che\":\"Stake token shares\",\"Ykj2Om\":\"Default slippage\",\"YogbCJ\":\"Le mode réseau de test est activé\",\"YrDxdO\":\"Si votre prêt à la valeur dépasse le seuil de liquidation, votre garantie fournie peut être liquidée.\",\"YrcHPy\":\"VIEW\",\"YyIM65\":\"Les conditions de rééquilibrage des taux d'intérêt n'ont pas été remplies\",\"YyydIq\":[\"Ajouter \",[\"0\"],\" à Wallet pour suivre votre solde.\"],\"Z3FXyt\":\"Loading...\",\"Z99M+T\":\"This is an off-chain operation. Keep in mind that a solver may already have filled your order.\",\"ZBvhI+\":\"Gouvernance Aave\",\"ZIIRAd\":\"Raw-Ipfs\",\"ZRq4tX\":\"Mode efficacité (E-Mode)\",\"ZRuM45\":\"These are the estimated costs associated with your limit swap, including costs and fees. Consider these costs when setting your order amounts to help optimize execution and maximize your chances of filling the order.\",\"ZSqEW+\":\"Manage E-Mode\",\"ZUFYFE\":\"Désactiver le réseau de test\",\"Zbyywy\":\"Coupure maximale\",\"ZfUGFb\":\"Avant de déposer\",\"ZiXN+B\":\"Assets to stake\",\"ZlsSDH\":\"Valeur de liquidation\",\"ZrEc8j\":\"Nous n’avons trouvé aucun élément lié à votre recherche. Réessayez avec un autre nom, symbole ou adresse de ressource.\",\"ZsLF7e\":\"Activé\",\"a0YQoQ\":\"Enter a valid address\",\"a2fBZn\":\"Temps restant pour dépiquer\",\"a7u1N9\":\"Prix\",\"a9D+6D\":\"Non jalonné\",\"aEtiwq\":\"Vote NAY\",\"aMmFE1\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"aOKIms\":\"Les paramètres de tableau devraient être de même longueur ne sont pas\",\"aQYztl\":[\"Repaying \",[\"0\"]],\"aXgo8+\":\"from the\",\"adUsDd\":\"An error has occurred fetching the proposal.\",\"aoXTT7\":\"Prêt APY, variable\",\"aqX1Yp\":\"This asset is eligible for rewards through SuperFest. Aave Labs does not guarantee the program and accepts no liability.\",\"b4NS3e\":\"Avertissement de période de refroidissement\",\"bBHmeP\":\"Available to withdraw\",\"bNEQeI\":\"Cooldown\",\"bUUVED\":\"Actif\",\"bXQ/Og\":\"Partager sur Twitter\",\"bXr0ee\":\"Les actifs isolés ont un pouvoir d'emprunt limité et les autres actifs ne peuvent pas être utilisés comme garantie.\",\"bYmAV1\":\"Adresses\",\"bYtb3C\":\"Network costs\",\"bguKoJ\":\"Le montant demandé est supérieur au montant maximum du prêt en mode taux stable\",\"bm/mjh\":\"This is a program initiated and implemented by the Aave Chan Initiative (ACI). Aave Labs does not guarantee the program and accepts no liability.\",\"bq0uL+\":\"supply\",\"bwSQI0\":\"Fournir\",\"bxN6EM\":\"Impossible de désactiver le mode E\",\"c91vuQ\":\"L'adresse n'est pas un contrat\",\"c97os2\":\"Aave aToken\",\"c9b44w\":\"Vous ne pouvez pas retirer ce montant car cela entraînera un appel de garantie\",\"cBc+4A\":\"Il s'agit du montant total que vous pouvez emprunter. Vous pouvez emprunter en fonction de votre garantie et jusqu'à ce que le plafond d'emprunt soit atteint.\",\"cIl5kp\":\"Votre pouvoir de vote est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"cLo09S\":\"Détails des risques\",\"cNT+ij\":\"L'emprunt n'est pas disponible car vous avez activé le mode Efficacité (E-Mode) et le mode Isolation. Pour gérer le mode E et le mode Isolation, rendez-vous sur votre <0>tableau de bord.\",\"cZOeBk\":\"Something went wrong fetching bridge message, please try again later.\",\"cc6gEH\":\"Incentives APR\",\"ceix5S\":\"Pour soumettre une proposition de modifications mineures du protocole, vous aurez besoin d’une puissance d’au moins 80,00 K. Si vous souhaitez modifier la base de code de base, vous aurez besoin d’une puissance de 320k. <0>Pour en savoir plus.\",\"ciSsYT\":\"Staking APY\",\"ciybUa\":\"Vote YAE\",\"ckf7gX\":[\"Remboursement \",[\"symbole\"]],\"cp1ZDP\":[\"Bridge \",[\"symbol\"]],\"cqwIvs\":\"Discussion de forum\",\"csDS2L\":\"Disponible\",\"cu7Stb\":\"Vous n'avez pas participé à cette proposition\",\"cuxGZP\":\"Low health factor after swap. Your position will carry a higher risk of liquidation.\",\"d9YZVR\":\"Principle Tokens\",\"dE6BLF\":\"Gouvernance\",\"dEgA5A\":\"Annuler\",\"dIsyWh\":\"Échec de la validation LTV\",\"dOB5nW\":[\"La quantité maximale disponible pour la fourniture est de <0/> \",[\"0\"],\" (<1/>).\"],\"dVfODp\":\"Vous n'avez pas assez de fonds dans votre portefeuille pour rembourser le montant total. Si vous continuez à rembourser avec votre montant actuel de fonds, vous aurez toujours une petite position d'emprunt dans votre tableau de bord.\",\"dXUQFX\":\"Actifs à emprunter\",\"dYG3JG\":\"Data couldn't be loaded.\",\"dfDzrk\":[\"Supply cap reached for \",[\"symbol\"],\". Reduce the amount or choose a different asset.\"],\"dgr1aY\":\"L’emprunt est désactivé en raison d’une décision de la communauté Aave. <0>Plus d’informations\",\"djsg0o\":\"Usage de collatéral\",\"drdV8R\":\"Liquidation\",\"dxW8cS\":\"Jeton de dette Aave\",\"e4V3oW\":\"Top 10 des adresses\",\"eD8WX/\":\"L'action nécessite une réserve active\",\"eJRJ04\":\"Montant à la mise en jeu\",\"eLh0cL\":\"Le slippage est la différence entre les montants cotés et reçus en raison de l’évolution des conditions du marché entre le moment où la transaction est soumise et sa vérification.\",\"ePK91l\":\"Edit\",\"eQ0Wu0\":\"Please connect a wallet to view your balance here.\",\"eVpCmf\":\"Récompenses de staking\",\"eVqvtf\":\"Bridge GHO\",\"eYdurp\":\"Aucune transaction n’a encore été effectuée.\",\"ebLGGN\":\"Total emprunté\",\"ecqEvn\":\"Le solde de la garantie est de 0\",\"edXiYw\":[\"You've successfully swapped \",[\"0\"],\".\"],\"efdrrk\":\"Disponible sur\",\"enruNF\":\"Commence\",\"eqLYiD\":\"Arrêter de staker maintenant\",\"evw5ha\":\"Valeur nette\",\"ezcU16\":\"Obtenir le jeton ABP\",\"f2e3vu\":[\"Deposit GHO into savings GHO (sGHO) and earn <0>\",[\"0\"],\"% APY on your GHO holdings. There are no lockups, no rehypothecation, and you can withdraw anytime. Simply deposit GHO, receive sGHO tokens representing your balance, and watch your savings grow earning claimable rewards from merit.\"],\"f3W0Ej\":[\"Vous êtes passé au tarif \",[\"0\"]],\"fMJQZK\":\"Emprunté\",\"fZ5Vnu\":\"Reçu\",\"firl9Q\":\"Votre prêt actuel à la valeur en fonction de votre collatéral fournie.\",\"fldjW9\":\"Prévisualiser tx et migrer\",\"fsBGk0\":\"Solde\",\"fu1Dbh\":[\"Retirer \",[\"symbole\"]],\"fwjWSI\":\"Fourni\",\"fwyTMb\":\"Migrate to stkABPT v2\",\"g0mals\":\"You can not disable E-Mode because that could cause liquidation. To exit E-Mode supply or repay borrowed positions.\",\"g2UNkE\":\"Alimenté par\",\"g4Ius4\":\"This is the fee for executing position changes, set by governance.\",\"g8KGoA\":\"Foire aux questions\",\"g9zzqS\":\"A voté NAY\",\"gDd2gk\":\"about SuperFest.\",\"gIMJlW\":\"Mode réseau test\",\"gK+IvE\":\"Withdraw and Swap\",\"gOzPxe\":\"Cet actif est gelé en raison d’une décision de gouvernance du protocole Aave. <0>Plus d’informations\",\"gTHi2T\":\"L'utilisateur essaie d'emprunter plusieurs actifs, y compris un en silo\",\"gVW59Y\":\"Veuillez connecter votre portefeuille pour obtenir des ressources de réseau de test gratuites.\",\"gcFNxP\":\"Approuver Confirmé\",\"goff7V\":\"Adresse zéro non-valide\",\"gp+f1B\":\"Variante 3\",\"gvTM4B\":\"L'APY net est l'effet combiné de toutes les positions d'offre et d'emprunt sur la valeur nette, y compris les incitations. Il est possible d'avoir un APY net négatif si l'APY de la dette est supérieur à l'APY de l'offre.\",\"gzcch9\":\"Frais de protocole de pont invalide\",\"h33MxW\":\"Representing smart contract wallet (ie. Safe) addresses on other chains.\",\"h3ilK+\":\". .CSV\",\"h5hG6q\":\"This is the cost of settling your order on-chain, including gas and any LP fees.\",\"hB23LY\":\"Activer le temps de recharge\",\"hIJzBh\":\"Available to Claim\",\"hIS4N0\":\"APY Net\",\"hQRttt\":\"Submit\",\"hRWvpI\":\"Revendiqué\",\"hb8ajh\":\"Debt Swap\",\"hdmy/o\":\"Le % de votre pouvoir d'emprunt total utilisé. Ceci est basé sur le montant de votre garantie fournie et le montant total que vous pouvez emprunter.\",\"hehnjM\":\"Montant\",\"hjDCQr\":\"Il y a eu une erreur. Veuillez essayer de modifier les paramètres ou <0><1>copier l'erreur\",\"hom7qf\":\"Réclamer\",\"hpHJ4I\":\"Garantie liquidée\",\"hrhwub\":\"dashboard\",\"huQ6Tz\":[\"Emprunter \",[\"symbole\"]],\"i/fZ2Z\":\"Staked Balance\",\"i9qiyR\":\"Expires in\",\"iB5+/J\":\"À propos de GHO\",\"iChbOF\":\"Paramètres de prêt flash incohérents\",\"iEPVHF\":\"Pas assez de pouvoir de vote pour participer à cette proposition\",\"iEW87X\":\"Délégation de pouvoirs\",\"iEju36\":[\"Vous avez voté \",[\"0\"]],\"iFq2YN\":\"Borrowable\",\"iGxyIA\":\"Safety Module\",\"iIuDE1\":\"Estimated weekly rewards based on your current sGHO balance and APR. Actual rewards may vary depending on market conditions.\",\"iMVZk9\":\"Sélectionner la tolérance de glissement\",\"iNYgey\":\"Get Support\",\"iPMIoT\":\"Entrez un montant\",\"iSLIjg\":\"Connect\",\"iUo5rv\":\"tokens n'est pas la même chose que de les staker . Si vous souhaitez staker votre\",\"iZxa38\":\"Utilisez-le pour voter pour ou contre les propositions actives.\",\"iboNXd\":\"Amount received\",\"if5PH+\":\"Informations sur le collectionneur\",\"igkfR1\":[\"En mode Isolation, vous ne pouvez pas fournir d’autres actifs en garantie. Un plafond d’endettement global limite le pouvoir d’emprunt de l’actif isolé. Pour quitter le mode d’isolement, désactivez \",[\"0\"],\" en garantie avant d’emprunter un autre actif. Pour en savoir plus, consultez notre <0>FAQ\"],\"ih/VjN\":\"Staking this amount will reduce your health factor and increase risk of liquidation.\",\"il0sEG\":\"L'utilisation du collatéral est limitée en raison du mode d'isolation.\",\"j+K1Xj\":\"Amount After Fee\",\"j4SXZo\":\"Claim all merit rewards\",\"j7JHV+\":\"Total APY\",\"j8cF1R\":\"Cooling down\",\"jA2QeW\":\"Fournir votre\",\"jFi7dz\":\"Interest rate that is determined by Aave Governance. This rate may be changed over time depending on the need for the GHO supply to contract/expand. <0>Learn more\",\"jG3UJ7\":\"Désactiver le E-mode\",\"jKYzR1\":\"Activer le E-Mode\",\"jSYv+Z\":\"Enabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected category. <0>Learn more about how it works and the applied restrictions.\",\"jaKbwW\":[[\"s\"],\"s\"],\"jbFMap\":\"Temps de recharge restant\",\"jeMZNr\":[[\"0\"],\" Le service de rampe d’accès est fourni par le fournisseur externe et, en le sélectionnant, vous acceptez les conditions du fournisseur. Votre accès au service peut dépendre de l’opérationnalité du fournisseur externe.\"],\"jfl9OP\":\"Migré\",\"jmXdoY\":\"En E-Mode, certains actifs ne sont pas empruntables. Quittez le E-mode pour accéder à tous les actifs\",\"jqVo/k\":\"here.\",\"jqzUyM\":\"Non disponible\",\"k/sb6z\":\"Choisir la langue\",\"k3wP3f\":\"<0>Attention: Les changements de paramètres via la gouvernance peuvent modifier le facteur de santé de votre compte et le risque de liquidation. Suivez le <1>forum de gouvernance d’Aave pour les mises à jour.\",\"kACpF3\":[\"Réclamer \",[\"0\"]],\"kH6wUX\":\"Impact sur les prix\",\"kIC28N\":\"Available to claim\",\"kIpSye\":[[\"numSelected\"],\"/\",[\"numAvailable\"],\" Actifs sélectionnés\"],\"kMi0nz\":\"sGHO Merit APY History\",\"kN1Yg5\":\"Pour rembourser au nom d'un utilisateur, un montant explicite à rembourser est nécessaire\",\"kRTD40\":[\"Montant de remboursement à atteindre \",[\"0\"],\"% d’utilisation\"],\"kgKqPv\":\"You can not stake this amount because it will cause collateral call\",\"kj3M8S\":\"Deposit\",\"kjN9tT\":\"Le plafond d'approvisionnement est dépassé\",\"knxE+G\":\". JSON (en anglais seulement)\",\"ks2LWT\":\"Le plafond de la dette n'est pas nul\",\"kz3wtK\":\"and about SPK program\",\"kzZyM4\":\"DAI balance will be converted via DSR contracts and then supplied as sDAI. Switching incurs no additional costs and no slippage.\",\"lU2d1/\":[\"L’actif ne peut pas être migré en raison d’une liquidité insuffisante ou d’une limitation du plafond d’emprunt \",[\"marketName\"],\" v3 marché.\"],\"lVhKKI\":\"A voté YAE\",\"lWLqxB\":\"Nous n’avons trouvé aucune transaction liée à votre recherche. Réessayez avec un autre nom de ressource ou réinitialisez les filtres.\",\"lXj2Sq\":\"Repay with Collateral\",\"lYGfRP\":\"Anglais\",\"lfEjIE\":\"En savoir plus dans notre <0>guide FAQ\",\"ljF4ko\":\"The selected rate is lower than the market price. You might incur a loss if you proceed.\",\"lkE00/\":\"Something went wrong. Please try again later.\",\"lqCWte\":[\"Deposit GHO and earn \",[\"0\"],\"% APY\"],\"m/IEhi\":\"Émission totale par jour\",\"m7r7Hh\":\"Sélection d’actifs d’emprunt\",\"mDDK4p\":\"Balancer Pool\",\"mUAFd6\":\"Variante 2\",\"masO5Z\":\"E-Mode increases your LTV for a selected category of assets. <0>Learn more\",\"mdNjKU\":[\"Votre \",[\"name\"],\" Le portefeuille est vide. Acheter ou transférer des actifs ou utiliser <0>\",[\"0\"],\" pour transférer votre \",[\"network\"],\" actif.\"],\"me5LMQ\":\"Checking approval\",\"mogZv0\":\"Favourite\",\"muiOng\":[\"Acheter \",[\"cryptoSymbol\"],\" avec Fiat\"],\"mvCXBY\":\"Mise en jeu AAVE\",\"mwdzil\":\"D'accord, fermer\",\"mzDAU3\":\"Savings GHO (sGHO)\",\"mzdIia\":\"L'actif ne peut pas être utilisé comme collatéral.\",\"n+SX4g\":\"Développeurs\",\"n1na81\":\"No eligible assets to swap.\",\"n4PWtp\":\"Depositing\",\"nJIhzm\":\"Fournir apy\",\"nJgsQu\":\"Avec un pouvoir de vote de <0/>\",\"nLC6tu\":\"Français\",\"nNHV0z\":\"La migration simultanée de plusieurs garanties et d’actifs empruntés peut s’avérer coûteuse et peut échouer dans certaines situations. <0>Par conséquent, il n’est pas recommandé de migrer des positions avec plus de 5 actifs (déposés + empruntés) en même temps.\",\"nNbnzu\":\"Proposition\",\"nPGNMh\":\"Peut être exécuté\",\"nUK1ou\":[\"Assets with zero LTV (\",[\"0\"],\") must be withdrawn or disabled as collateral to perform this action\"],\"njBeMm\":\"Les deux\",\"ntyFSE\":[[\"h\"],\"h\"],\"nwIsn4\":\"After the cooldown is initiated, you will be able to withdraw your assets immediatley.\",\"nweCqF\":\"Cancelling order...\",\"nwtY4N\":\"Quelque chose s’est mal passé\",\"nxyWvj\":\"Le retrait de ce montant réduira votre facteur santé et augmentera le risque de liquidation.\",\"o17QVP\":\"Votre facteur de santé et votre prêt à la valeur déterminent l'assurance de votre collatéral. Pour éviter les liquidations, vous pouvez fournir plus de garanties ou rembourser les positions d'emprunt.\",\"o1xc2V\":\"L'approvisionnement en aTokens n'est pas nul\",\"o5ooMr\":\"Dette\",\"o7J4JM\":\"Filtrer\",\"o7Yloh\":\"Learn more about the Ether.fi program\",\"o9JQJK\":[\"High price impact (\",[\"0\"],\"%). This route may return \",[\"1\"],\" due to low liquidity or small order size.\"],\"oHFrpj\":\"Temps de recharge pour déstaker\",\"oJ5ZiG\":\"L'utilisateur n'a pas de dette à taux variable impayée sur cette réserve\",\"oS6a3Y\":\"You have assets with zero LTV that are blocking this operation. Please disable them as collateral first.\",\"oUwXhx\":\"Ressources de test\",\"oWQnqT\":\"Staking this asset will earn the underlying asset supply yield in addition to other configured rewards.\",\"oWklJD\":\"Le taux d'intérêt stable <0>restera le même pendant toute la durée de votre prêt. Recommandé pour les périodes de prêt à long terme et pour les utilisateurs qui préfèrent la prévisibilité.\",\"odnIK3\":\"Time remaining until the 48 hour withdraw period starts.\",\"ogU9GD\":\"Target liquidity\",\"oiK5nY\":\"The current incentives period, decided on by the Aave community, has ended. Governance is in the process on renewing, check for updates. <0>Learn more.\",\"olREoo\":\"All borrow positions outside of this category must be closed to enable this category.\",\"om/XHs\":\"Disponible au dépôt\",\"omq5qJ\":\"Claiming all protocol rewards and merit rewards together\",\"ovBPCi\":\"Default\",\"ovT1pF\":[\"Per the community, the \",[\"market\"],\" has been frozen.\"],\"ow3fug\":\"Rien n’a été trouvé\",\"owSsI3\":\"Signatures prêtes\",\"p+R52m\":\"Accéder à Balancer Pool\",\"p2S64u\":\"Le ratio prêt/valeur des positions migrées entraînerait la liquidation. Augmenter les garanties migrées ou réduire les emprunts migrés pour continuer.\",\"p2Z2Qi\":\"Cet actif a atteint son plafond d'emprunt. Rien n'est disponible pour être emprunté à ce marché.\",\"p45alK\":\"Configurer la délégation\",\"pDgeaz\":[[\"title\"]],\"pdZqBk\":\"Le solde sous-jacent doit être supérieur à 0\",\"pgWG9H\":\"Pas assez de solde staké\",\"ph9+uj\":[\"Switching to \",[\"networkName\"],\"...\"],\"piPrJ7\":\"veuillez vérifier que le montant que vous souhaitez fournir n'est pas actuellement utilisé pour le staking. S'il est utilisé pour le staking, votre transaction peut échouer.\",\"pjO/iH\":\"Minimum amount received\",\"pooutM\":\"Voting is on\",\"pqaM5s\":\"Confirming transaction\",\"ptaxX3\":[\"Je comprends comment fonctionnent le temps de recharge (\",[\"0\"],\") et le retrait (\",[\"1\"],\")\"],\"pup/ej\":\"Net Protocol Incentives\",\"py2iiY\":\"L'appelant de cette fonction doit être un pool\",\"q/51mF\":\"Migrer vers la V3\",\"q32aQO\":\"Connection Failed\",\"q3df11\":\"Stratégie de taux d’intérêt\",\"q6lAbz\":\"Staké\",\"qB4kPi\":\"Fournir APY\",\"qENI8q\":\"Paramètres globaux\",\"qGz5zl\":\"Solde de garantie après remboursement\",\"qKfida\":\"Staked tokens are wrapped and use an exchange rate. You may see fewer token shares, but the value matches your deposit and will grow as yield accrues.\",\"qOqbD6\":\"copier l'erreur\",\"qXCkEM\":\"Veuillez connecter votre portefeuille pour voir vos fournitures, vos emprunts et vos positions ouvertes.\",\"qY2jnw\":\"Expiration invalide\",\"qhhf9L\":\"Rewards available to claim\",\"qtS7wW\":\"Thank you for voting\",\"quYPUU\":\"Variable interest rate will <0>fluctuate based on the market conditions.\",\"quzIeW\":\"User is in isolation mode or LTV is zero\",\"qvnz3q\":\"Montant non valide à brûler\",\"qz6JVE\":[\"Your order amounts are \",[\"0\"],\" less favorable by \",[\"1\"],\"% to the liquidity provider than recommended. This order may not be executed.\"],\"qz9c6b\":[\"Repaying \",[\"0\"],\" with \",[\"1\"]],\"qzFp5D\":\"All Categories\",\"rHgdb0\":\"Migrate to Aave V3\",\"rOrHHe\":\"Le montant doit être supérieur à 0\",\"rQ+R+0\":\"Sélection d’actifs d’approvisionnement\",\"rSayea\":\"APY\",\"rTBDeu\":[\"L’actif ne peut pas être migré car vous disposez d’une garantie isolée dans \",[\"marketName\"],\" v3 Marché qui limite les actifs empruntables. Vous pouvez gérer vos garanties dans <0>\",[\"marketName\"],\" Tableau de bord V3\"],\"raME+v\":[\"I confirm the swap with a potential \",[\"0\"],\"% value \",[\"1\"]],\"rcT+yy\":\"Afficher les actifs avec 0 solde\",\"riNWOA\":\"E-Mode\",\"rjGI/Q\":\"Vie privée\",\"rnKPW1\":\"Watch a wallet balance in read-only mode\",\"rojvRp\":\"Approval by signature not available\",\"rvbaFU\":[\"Bridging \",[\"symbol\"]],\"rwVVB7\":\"Réclamez toutes les récompenses\",\"rwyUva\":\"Ces actifs sont temporairement gelés ou suspendus par des décisions de la communauté Aave, ce qui signifie qu’il n’est pas possible d’obtenir / emprunter ou d’échanger des taux de ces actifs. Les retraits et les remboursements de dettes sont autorisés. Suivez le <0>forum de gouvernance d’Aave pour d’autres mises à jour.\",\"rxJW5W\":\"Votre pouvoir de proposition est basé sur votre solde AAVE/stkAAVE et les délégations reçues.\",\"s2jJnW\":\"You don't have any bridge transactions\",\"s5wBAq\":[\"Unstake \",[\"symbol\"]],\"sJbIdI\":\"Enter ETH address or ENS\",\"sP2+gB\":\"NON\",\"sQv06Y\":\"pour\",\"sTtO6J\":\"Confirm transaction\",\"sXKb3l\":\"Exchange rate\",\"sb0q4+\":\"Vous unstaké ici\",\"smJNwH\":\"Disponible à emprunter\",\"solypO\":\"Le facteur de santé n'est pas inférieur au seuil\",\"sr0UJD\":\"Retourner\",\"ss5GCK\":\"L'adresse du fournisseur d'adresses du pool n'est pas valide\",\"swEgK4\":\"Vos informations de vote\",\"t+wtgf\":\"Aucun emprunt pour l'instant\",\"t/YqKh\":\"Remove\",\"t/ct9N\":\"Auto Slippage\",\"tBIz3I\":[\"Supply \",[\"0\"],\" and double your yield by <0><1>verifying your humanity through Self for \",[\"1\"],\" per user.\"],\"tCnbEs\":\"Prix Oracle\",\"tFZLf8\":\"Ce calcul de gaz n'est qu'une estimation. Votre portefeuille fixera le prix de la transaction. Vous pouvez modifier les paramètres de gaz directement depuis votre fournisseur de portefeuille.\",\"tHuvQI\":\"Accéder au tableau de bord V3\",\"tOcg3N\":\"Étant donné que cet actif est gelé, les seules actions disponibles sont le retrait et le remboursement, accessibles depuis le <0>tableau de bord\",\"tOuXfv\":[\"Emprunter le montant à atteindre \",[\"0\"],\"% d’utilisation\"],\"tVJk4q\":\"Cancel order\",\"te9Bfl\":\"S'il vous plaît, connectez votre portefeuille\",\"tj6dr4\":\"Merit Program rewards can be claimed\",\"tt5yma\":\"Vos ressources\",\"u3ZeYl\":\"La transaction a échoué\",\"u706uF\":\"Prime flash non valide\",\"u8Gfu7\":[\"Aucun résultat de recherche\",[\"0\"]],\"uAQUqI\":\"Status\",\"uGG4Lk\":\"Claim all protocol rewards\",\"uHMwk8\":\"Aucune ressource n’a été sélectionnée pour la migration.\",\"uJOI6M\":\"Tip: Try improving your order parameters\",\"uJPHuY\":\"Migration\",\"uRXR6h\":[\"Swap \",[\"0\"],\" debt\"],\"uZiu4N\":\"There is an active order for the same sell asset (avoid nonce reuse).\",\"udFheE\":\"For repayment of a specific type of debt, the user needs to have debt that type\",\"ulNuNq\":\"Exporter des données vers\",\"ulup2p\":\"Acheter des crypto-monnaies avec des monnaies fiduciaires\",\"usB84Z\":\"Le montant maximum disponible pour emprunter est limité car le plafond d’emprunt du protocole est presque atteint.\",\"uyLjNw\":\"Custom slippage\",\"v+Fu0z\":\"This asset is eligible for Kernel points incentive program. Aave Labs does not guarantee the program and accepts no liability.\",\"v0CIlJ\":\"You have no rewards to claim at this time.\",\"vEqxH9\":\"Restauré\",\"vH2C/2\":\"Swap\",\"vLyv1R\":\"Cacher\",\"vMba49\":\"L'emprunt n'est pas activé\",\"vMpNwt\":\"Approuvez avec\",\"vNAHA2\":\"PTs\",\"vXIe7J\":\"Language\",\"vesuBJ\":\"Vous permet de décider si vous souhaitez utiliser un actif fourni en tant que collatéral. Un actif utilisé comme collatéral affectera votre pouvoir d'emprunt et votre Health Factor.\",\"vv7kpg\":\"Cancelled\",\"w+V9Cx\":\"Stablecoin\",\"w/JtJ3\":\"L'offre de dette stable n'est pas nulle\",\"w1f8Ky\":\"Savings GHO\",\"w4VBY+\":\"Récompenses APR\",\"w9dLMW\":[[\"label\"]],\"wAOL+X\":[\"Vous \",[\"action\"],\" <0/> \",[\"symbole\"]],\"wBIsjb\":\"Canal Discord\",\"wQZbc/\":\"L'appelant de la fonction n'est pas un AToken\",\"wZFvVU\":\"VOTER OUI\",\"wapGcj\":[[\"message\"]],\"wb/r1O\":[\"Faucet \",[\"0\"]],\"wdxz7K\":\"Source\",\"weC8IO\":\"All Rewards\",\"weH1nG\":\"Le protocole Aave est programmé pour toujours utiliser le prix de 1 GHO = 1 $. C’est différent de l’utilisation des prix du marché via des oracles pour d’autres actifs cryptographiques. Cela crée des opportunités d’arbitrage stabilisatrices lorsque le prix du GHO fluctue.\",\"wh7Ezv\":\"You have no AAVE/stkAAVE/aAave balance to delegate.\",\"wlsIx7\":\"Avec testnet Faucet, vous pouvez obtenir des ressources gratuites pour tester le protocole Aave. Assurez-vous de changer votre fournisseur de portefeuille pour le réseau de test approprié, sélectionnez l’actif souhaité et cliquez sur «\xA0Faucet\xA0» pour obtenir des jetons transférés vers votre portefeuille. Les actifs d’un réseau de test ne sont pas « réels », ce qui signifie qu’ils n’ont aucune valeur monétaire. <0>Pour en savoir plus\",\"wmE285\":\"Get ABP v2 Token\",\"wuMdlk\":[\"This asset is eligible for \",[\"0\"],\" Sonic Rewards.\"],\"wyRrcJ\":\"As a result of governance decisions, this ABPT staking pool is now deprecated. You have the flexibility to either migrate all of your tokens to v2 or unstake them without any cooldown period.\",\"x5KiLL\":\"Les ressources sélectionnées ont été migrées avec succès. Rendez-vous sur le tableau de bord du marché pour les voir.\",\"x7F2p6\":\"Différentiel de courant\",\"x7K5ib\":[\"Votre \",[\"networkName\"],\" Le portefeuille est vide. Obtenir un test gratuit \",[\"0\"],\" à\"],\"x9iLRD\":\"tokens, veuillez vous rendre sur\",\"xNy/UG\":\"Rembourser avec\",\"xPm8wv\":\"En savoir plus sur les risques encourus\",\"xXYpZl\":[[\"0\"],\" Faucet\"],\"xaVBSS\":\"Vos informations\",\"xaWZ6f\":\"Changement de type APY\",\"xh6k71\":\"L’utilisation des garanties est limitée en raison du mode d’isolation.\",\"xvIklc\":\"Flashloan est désactivé pour cet actif, cette position ne peut donc pas être migrée.\",\"y5rS9U\":\"Émigrer\",\"yB1YpA\":\"Mode Sombre\",\"yCrG6m\":\"Taille totale du marché\",\"yJUUbn\":\"Aperçu des transactions\",\"yLGmLX\":[\"Remise en jeu \",[\"symbol\"]],\"yRkqG9\":\"Limit\",\"yYHqJe\":\"Pas une adresse valide\",\"yZ5ngq\":\"Transaction details not available\",\"yZwLw6\":\"Suivre le portefeuille\",\"yh2sjd\":[\"Impact sur les prix \",[\"0\"],\"%\"],\"ylmtBZ\":\"The app is running in fork mode.\",\"ymNY32\":[\"Il n'y a pas assez de fonds dans la \",[\"0\"],\" réserve pour emprunter\"],\"yv/Kz/\":\"Back home\",\"yz7wBu\":\"Fermer\",\"z4uGQg\":\"Le plafond de la dette est dépassé\",\"z5JUmg\":[\"Estimated costs are \",[\"0\"],\"% of the sell amount. This order is unlikely to be filled.\"],\"z5UQOM\":\"La garantie choisie ne peut être liquidée\",\"z5Y+p6\":[\"Fournir \",[\"symbole\"]],\"zCjNKs\":\"L'action ne peut pas être effectuée car la réserve est gelée\",\"zNgzxM\":\"Excludes variable supply APY\",\"zRHytX\":\"Plafond de la dette isolée\",\"zTOjMP\":\"La limite d’approvisionnement du protocole est de 100 % pour cet actif. D’autres approvisionnements ne sont pas disponibles.\",\"zVdRUG\":\"Submission did not work, please try again later or contact wecare@avara.xyz\",\"zZmf1N\":\"Filled\",\"zgtIDV\":\"Dette restante\",\"zmTPiV\":\"Bilan d'approvisionnement\",\"zpPbZl\":\"Paramètres du risque de liquidation\",\"zr58Jd\":\"Umbrella is the upgraded version of the Safety Module. Manage your previously staked assets\",\"zucql+\":\"Menu\",\"zwWKhA\":\"Apprendre encore plus\",\"zy9fXn\":[\"L’actif est gelé \",[\"marketName\"],\" v3, donc cette position ne peut pas être migrée.\"],\"zys+R6\":\"Faites attention à la congestion du réseau et aux prix de l’essence.\",\"+EGVI0\":\"Recevoir (est.)\",\"+Tzhaj\":\"You've successfully swapped borrow position.\",\"+eOPG+\":\"On dirait que nous ne pouvons pas changer de réseau automatiquement. Veuillez vérifier si vous pouvez le changer depuis le portefeuille.\",\"+kLZGu\":\"Montant de l’actif fourni\",\"/YA5pU\":\"E-Mode increases your LTV for a selected category of assets, meaning that when E-mode is enabled, you will have higher borrowing power over assets of the same E-mode category which are defined by Aave Governance. You can enter E-Mode from your <0>Dashboard. To learn more about E-Mode and applied restrictionn, see the <1>help guide or the <2>Aave V3 Technical Paper.\",\"/izjs/\":\"Montant minimum d’Aave mis en jeu\",\"00OflG\":\"Il n’y a pas assez de liquidités pour que l’actif cible puisse effectuer le changement. Essayez de réduire le montant.\",\"08/rZ9\":\"La période de recharge est le temps nécessaire avant de retirer vos jetons (20 jours). Vous ne pouvez retirer vos actifs du module de sécurité qu’après la période de recharge et pendant la période de désenjeu. <0>Pour en savoir plus\",\"1Onqx8\":[\"Approuver \",[\"symbol\"],\"...\"],\"1m9Qqc\":\"Retrait et changement\",\"1oyh4g\":\"Borrow rate\",\"2Q4GU4\":\"Adresse bloquée\",\"2bAhR7\":\"Rencontrez GHO\",\"2o/xRt\":\"Plafond d'approvisionnement sur la réserve cible atteint. Essayez de réduire le montant.\",\"3O8YTV\":\"Total des intérêts courus\",\"4iPAI3\":\"Montant minimum d’emprunt GHO\",\"6NGLTR\":\"Montant actualisable\",\"6yAAbq\":\"APY, borrow rate\",\"73Auuq\":\"Les paramètres de remise sont décidés par la communauté Aave et peuvent être modifiés au fil du temps. Consultez la section Gouvernance pour les mises à jour et votez pour participer. <0>Pour en savoir plus\",\"7sofdl\":\"Retrait et échange\",\"ARu1L4\":\"Remboursé\",\"B6aXGH\":\"Stable\",\"B9Gqbz\":\"Taux variable\",\"BJyN77\":\"Due to health factor impact, a flashloan is required to perform this transaction, but Aave Governance has disabled flashloan availability for this asset. Try lowering the amount or supplying additional collateral.\",\"BjLdl1\":\"À prix réduit\",\"CMHmbm\":\"Glissement\",\"EBL9Gz\":\"COPIÉ!\",\"ES8dkb\":\"Taux fixe\",\"GoK/QN\":\"Thank you for submitting feedback!\",\"H6Ma8Z\":\"Rabais\",\"Ha/U5f\":\"This is a program initiated and implemented by the decentralised ZKSync community. Aave Labs does not guarantee the program and accepts no liability.\",\"HrnC47\":\"Enregistrer et partager\",\"JK9zf1\":[\"Intérêts composés estimés, y compris l’escompte pour le jalonnement \",[\"0\"],\"AAVE dans le module de sécurité.\"],\"JPrLjO\":\"Vous ne pouvez pas utiliser cette devise comme garantie\",\"JU6q+W\":\"Récompense(s) à réclamer\",\"K05qZY\":\"Retrait et échange\",\"KRpokz\":\"VOIR TX\",\"KZwRuD\":[[\"notifyText\"]],\"LDzfVJ\":\"Send Feedback\",\"LjafV8\":\"Maximum collateral amount to use\",\"LtpQew\":\"Let us know how we can make the app better for you. For user support related inquiries please reach out on\",\"MIy2RJ\":\"Maximum amount received\",\"N7dVh7\":\"Swap to\",\"PpqD5g\":\"L'activation de cet actif comme garantie augmente votre pouvoir d'emprunt et votre facteur de santé. Cependant, il peut être liquidé si votre facteur de santé tombe en dessous de 1.\",\"QSh9Sn\":\"Swapped\",\"QWYCs/\":\"Stake GHO\",\"RIfckG\":[\"Désactiver \",[\"symbol\"],\" comme garantie\"],\"RbXH+k\":\"AAVE, GHO, and ABPT holders (Ethereum network only) can stake their assets in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.\",\"RoafuO\":\"Envoyer des commentaires\",\"TeCFg/\":\"Modification du taux d’emprunt\",\"TskbEN\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"TtZL6q\":\"Paramètres du modèle de remise\",\"Tz0GSZ\":\"Activités bloquées\",\"UE3KJZ\":\"L’historique des transactions n’est actuellement pas disponible pour ce marché\",\"W8ekPc\":\"Retour au tableau de bord\",\"XZzneG\":\"Vous quitterez le mode d'isolement et d'autres jetons peuvent désormais être utilisés comme collatéral\",\"YirHq7\":\"Feedback\",\"a5RYZd\":\"La désactivation de cet actif en tant que garantie affecte votre pouvoir d'emprunt et votre facteur de santé.\",\"aX31hk\":\"Votre solde est inférieur au montant sélectionné.\",\"al6Pyz\":\"Dépasse la remise\",\"avgETN\":\"Eligible for the Merit program.\",\"bSc4Zw\":\"Swaping\",\"bSruit\":\"ZKSync Ignite Program rewards are claimed through the\",\"bxmzSh\":\"Pas assez de collatéral pour rembourser ce montant de dette avec\",\"cqnmnD\":\"Taux d’intérêt effectif\",\"dMtLDE\":\"À\",\"dpc0qG\":\"Variable\",\"euScGB\":\"APY avec remise appliquée\",\"fHcELk\":\"APR Net\",\"flRCF/\":\"Remise sur le staking\",\"gncRUO\":\"Cette adresse est bloquée sur app.aave.com car elle est associée à un ou plusieurs\",\"gr8mYw\":\"Vous pouvez emprunter jusqu’à GHO à <0/> <1/> (rabais maximum)\",\"hpuVIp\":\"Users who stake AAVE in Safety Module (i.e. stkAAVE holders) receive a discount on GHO borrow interest rate.\",\"hxi7vE\":\"Emprunter le solde\",\"i2JTiw\":\"Vous pouvez saisir un montant personnalisé dans le champ.\",\"jMam5g\":[[\"0\"],\" Balance\"],\"jpctdh\":\"Vue\",\"kwwn6i\":\"Les utilisateurs qui misent des AAVE dans le module de sécurité (c’est-à-dire les détenteurs de stkAAVE) bénéficient d’une réduction sur le taux d’intérêt d’emprunt de HO. La réduction s’applique à 100 GHO pour chaque 1 stkAAVE détenu. Utilisez le calculateur ci-dessous pour voir le taux d’emprunt GHO avec le rabais appliqué.\",\"lNVG7i\":\"Sélectionner une ressource\",\"lt6bpt\":\"Garantie à rembourser\",\"mIM0qu\":\"Montant prévu à rembourser\",\"mzI/c+\":\"Télécharger\",\"n8Psk4\":\"Nous n’avons pas pu détecter de portefeuille. Connectez un portefeuille pour staker et consulter votre solde.\",\"nOy4ob\":\"Nous vous suggérons de revenir au tableau de bord.\",\"nakd8r\":\"Les détenteurs de stkAAVE bénéficient d’une réduction sur le taux d’emprunt GHO\",\"nh2EJK\":[\"Veuillez passer à \",[\"networkName\"],\".\"],\"ntkAoE\":\"Remise appliquée pour <0/> le staking d’AAVE\",\"o4tCu3\":\"Emprunter de l’APY\",\"ov0+mq\":\"Eligible for the ZKSync Ignite program.\",\"p2A+s1\":[\"La période de recharge est de \",[\"0\"],\". Après \",[\"1\"],\" de temps de recharge, vous entrerez dans la fenêtre de désengagement de \",[\"2\"],\". Vous continuerez à recevoir des récompenses pendant le temps de recharge et la fenêtre de retrait.\"],\"p3j+mb\":\"Votre solde de récompenses est de 0\",\"p6u2s1\":\"Minimum amount of debt to be repaid\",\"qFD/ij\":\"You've successfully withdrew & swapped tokens.\",\"qT4Lfg\":\"You've successfully swapped tokens.\",\"qf/fr+\":\"Intérêts courus\",\"rf8POi\":\"Montant de l’actif emprunté\",\"ruc7X+\":\"Ajoutez stkAAVE pour voir l’APY d’emprunt avec la remise\",\"sK+Nag\":\"Réviser tx\",\"t81DpC\":[\"Approuver \",[\"symbol\"],\" pour continuer\"],\"umICAY\":\"<0><1><2/>Ajoutez stkAAVE pour voir le taux d’emprunt avec escompte\",\"uwAUvj\":\"COPIER L’IMAGE\",\"v8x7Mg\":\"Garantie insuffisante pour couvrir une nouvelle position d’emprunt. Le portefeuille doit avoir une capacité d’emprunt restante pour effectuer le transfert de dette.\",\"wRRqvW\":\"Vous n'avez pas de fournitures dans cette devise\",\"wyi0tk\":\"Swap borrow position\",\"y66tBm\":[\"Activer \",[\"symbol\"],\" comme collatéral\"],\"yW1oWB\":\"APY type\",\"yhvj6d\":\"Vous ne pouvez pas changer d'utilisation en tant que mode de garantie pour cette devise, car cela entraînera un appel de garantie\",\"zevmS2\":\"<0><1><2/>Ajoutez <3/> stkAAVE pour emprunter à <4/> (remise maximale)\",\"zzzTXS\":\"Merit Program rewards are claimed through the\"}")}; \ No newline at end of file diff --git a/src/modules/history/TransactionMobileRowItem.tsx b/src/modules/history/TransactionMobileRowItem.tsx index 45f38486b9..866b988452 100644 --- a/src/modules/history/TransactionMobileRowItem.tsx +++ b/src/modules/history/TransactionMobileRowItem.tsx @@ -92,8 +92,7 @@ function TransactionMobileRowItem({ transaction }: TransactionHistoryItemProps)
{isSwapTransaction(transaction) && isCowSwapSubset(transaction) && - transaction.status === OrderStatus.OPEN && - transaction.action === ActionName.Swap && ( + transaction.status === OrderStatus.OPEN && ( diff --git a/src/modules/history/types.ts b/src/modules/history/types.ts index 896e4d7474..85930b7c6a 100644 --- a/src/modules/history/types.ts +++ b/src/modules/history/types.ts @@ -56,6 +56,8 @@ export type ParaswapSubset = SwapSubset & { export type CowSwapSubset = SwapSubset & { protocol: 'cow'; orderId: string; + adapterInstanceAddress?: string; // Instance address for adapter-based swaps + usedAdapter?: boolean; // Whether adapter was used }; export type SwapActionFields = { diff --git a/src/utils/swapAdapterHistory.ts b/src/utils/swapAdapterHistory.ts index c1a82c8ccc..d9f5bd1f53 100644 --- a/src/utils/swapAdapterHistory.ts +++ b/src/utils/swapAdapterHistory.ts @@ -21,6 +21,9 @@ export type CowAdapterEntry = { destToken: TokenInfo; srcAmount: string; // raw units destAmount: string; // raw units + // Adapter-specific fields for cancellation + adapterInstanceAddress?: string; // Instance address for adapter-based swaps + usedAdapter?: boolean; // Whether adapter was used (true for DebtSwap, RepayWithCollateral, and CollateralSwap with flashloan) }; export type ParaswapAdapterEntry = { From f0579c21528c5c98b26615cb6215e2bbaf94b06e Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Fri, 14 Nov 2025 14:01:51 -0300 Subject: [PATCH 61/66] fix dust --- .../DebtSwap/DebtSwapActionsViaCoW.tsx | 18 ++++++++++--- .../RepayWithCollateralActionsViaCoW.tsx | 18 ++++++++++--- .../Swap/constants/cow.constants.ts | 2 ++ .../Swap/helpers/cow/adapters.helpers.ts | 27 ++++++++++++++++--- .../transactions/Swap/hooks/useSwapQuote.ts | 9 ++++++- 5 files changed, 62 insertions(+), 12 deletions(-) diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index ec9f5cc49b..6613831e9e 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -1,4 +1,4 @@ -import { normalize } from '@aave/math-utils'; +import { normalize, valueToBigNumber } from '@aave/math-utils'; import { getOrderToSign, LimitTradeParameters, OrderKind, OrderStatus } from '@cowprotocol/cow-sdk'; import { AaveFlashLoanType, HASH_ZERO } from '@cowprotocol/sdk-flash-loans'; import { Trans } from '@lingui/macro'; @@ -14,7 +14,11 @@ import { zeroAddress } from 'viem'; import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; -import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; +import { + COW_PARTNER_FEE, + DUST_PROTECTION_MULTIPLIER, + FLASH_LOAN_FEE_BPS, +} from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; import { addOrderTypeToAppData, @@ -173,6 +177,12 @@ export const DebtSwapActionsViaCoW = ({ ); const flashLoanSdk = await getCowFlashLoanSdk(state.chainId); + const buyAmountWithMarginForDustProtection = valueToBigNumber( + state.buyAmountBigInt.toString() + ) + .multipliedBy(DUST_PROTECTION_MULTIPLIER) + .toFixed(0); + const delegationPermit = signatureParams ? { amount: signatureParams?.amount, @@ -195,7 +205,7 @@ export const DebtSwapActionsViaCoW = ({ buyToken: state.buyAmountToken.underlyingAddress, buyTokenDecimals: state.buyAmountToken.decimals, sellAmount: sellAmountToSign.toString(), - buyAmount: state.buyAmountBigInt.toString(), + buyAmount: buyAmountWithMarginForDustProtection.toString(), kind: state.processedSide === 'buy' ? OrderKind.BUY : OrderKind.SELL, validTo, slippageBps: state.orderType == OrderType.MARKET ? Number(state.slippage) * 100 : undefined, @@ -224,7 +234,7 @@ export const DebtSwapActionsViaCoW = ({ }, { sellAmount: state.sellAmountBigInt, - buyAmount: state.buyAmountBigInt, + buyAmount: BigInt(buyAmountWithMarginForDustProtection), orderToSign, collateralPermit: delegationPermit, } diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx index 740ae7a327..fe0bf14a11 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -1,4 +1,4 @@ -import { normalize } from '@aave/math-utils'; +import { normalize, valueToBigNumber } from '@aave/math-utils'; import { getOrderToSign, LimitTradeParameters, OrderKind, OrderStatus } from '@cowprotocol/cow-sdk'; import { AaveFlashLoanType, HASH_ZERO } from '@cowprotocol/sdk-flash-loans'; import { Trans } from '@lingui/macro'; @@ -13,7 +13,11 @@ import { saveCowOrderToUserHistory } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; -import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; +import { + COW_PARTNER_FEE, + DUST_PROTECTION_MULTIPLIER, + FLASH_LOAN_FEE_BPS, +} from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; import { addOrderTypeToAppData, @@ -171,6 +175,12 @@ export const RepayWithCollateralActionsViaCoW = ({ ); const flashLoanSdk = await getCowFlashLoanSdk(state.chainId); + const buyAmountWithMarginForDustProtection = valueToBigNumber( + state.buyAmountBigInt.toString() + ) + .multipliedBy(DUST_PROTECTION_MULTIPLIER) + .toFixed(0); + const collateralPermit = signatureParams ? { amount: signatureParams?.amount, @@ -193,7 +203,7 @@ export const RepayWithCollateralActionsViaCoW = ({ buyToken: state.buyAmountToken.underlyingAddress, buyTokenDecimals: state.buyAmountToken.decimals, sellAmount: sellAmountToSign.toString(), - buyAmount: state.buyAmountBigInt.toString(), + buyAmount: buyAmountWithMarginForDustProtection.toString(), kind: state.processedSide === 'buy' ? OrderKind.BUY : OrderKind.SELL, validTo, slippageBps: state.orderType == OrderType.MARKET ? Number(state.slippage) * 100 : undefined, @@ -222,7 +232,7 @@ export const RepayWithCollateralActionsViaCoW = ({ }, { sellAmount: state.sellAmountBigInt, - buyAmount: state.buyAmountBigInt, + buyAmount: BigInt(buyAmountWithMarginForDustProtection), orderToSign, collateralPermit, } diff --git a/src/components/transactions/Swap/constants/cow.constants.ts b/src/components/transactions/Swap/constants/cow.constants.ts index ad5e959679..4802cd3e21 100644 --- a/src/components/transactions/Swap/constants/cow.constants.ts +++ b/src/components/transactions/Swap/constants/cow.constants.ts @@ -60,6 +60,8 @@ export const ADAPTER_FACTORY: Record = { [SupportedChainId.PLASMA]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', }; +export const DUST_PROTECTION_MULTIPLIER = 1.001; + export const COW_UNSUPPORTED_ASSETS: Partial< Record>> > = { diff --git a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts index 6baf497e88..e3ca851c6c 100644 --- a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts @@ -1,3 +1,4 @@ +import { valueToBigNumber } from '@aave/math-utils'; import { AppDataParams, getOrderToSign, @@ -14,7 +15,11 @@ import { HASH_ZERO, } from '@cowprotocol/sdk-flash-loans'; -import { COW_PARTNER_FEE, FLASH_LOAN_FEE_BPS } from '../../constants/cow.constants'; +import { + COW_PARTNER_FEE, + DUST_PROTECTION_MULTIPLIER, + FLASH_LOAN_FEE_BPS, +} from '../../constants/cow.constants'; import { OrderType, SwapProvider, SwapState, SwapType } from '../../types'; import { getCowFlashLoanSdk } from './env.helpers'; @@ -39,8 +44,24 @@ export const calculateInstanceAddress = async ({ return; const flashLoanSdk = await getCowFlashLoanSdk(state.chainId); - const { sellAmount, buyAmount, sellToken, buyToken, side, slippageBps, partnerFee } = { + const { + sellAmount, + buyAmountWithMarginForDustProtection, + buyAmount, + sellToken, + buyToken, + side, + slippageBps, + partnerFee, + } = { sellAmount: state.sellAmountBigInt, + // @note: We wont have dust for borrow side, but we may have dust in collateral swaps + buyAmountWithMarginForDustProtection: + state.swapType !== SwapType.CollateralSwap + ? valueToBigNumber(state.buyAmountBigInt.toString()) + .multipliedBy(DUST_PROTECTION_MULTIPLIER) + .toFixed(0) + : state.buyAmountBigInt, sellToken: state.sellAmountToken, buyAmount: state.buyAmountBigInt, buyToken: state.buyAmountToken, @@ -89,7 +110,7 @@ export const calculateInstanceAddress = async ({ flashLoanAmount: sellAmount.toString(), flashLoanFeeAmount: flashLoanFeeAmount.toString(), sellAssetAmount: sellAmount.toString(), - buyAssetAmount: buyAmount.toString(), + buyAssetAmount: buyAmountWithMarginForDustProtection.toString(), }; return await flashLoanSdk.getExpectedInstanceAddress( diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index 9552e4b26a..b4240517c5 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -1,6 +1,7 @@ import { normalizeBN } from '@aave/math-utils'; import { useQuery } from '@tanstack/react-query'; import { Dispatch, useEffect, useMemo } from 'react'; +import { useModalContext } from 'src/hooks/useModal'; import { isTxErrorType, TxErrorType } from 'src/ui-config/errorMapping'; import { queryKeysFactory } from 'src/ui-config/queries'; @@ -88,7 +89,7 @@ const getTokenSelectionForQuote = ( }; }; -export const QUOTE_REFETCH_INTERVAL = 5000; // 30 seconds +export const QUOTE_REFETCH_INTERVAL = 30000; // 30 seconds /** * React hook that orchestrates quoting logic across providers. @@ -280,6 +281,8 @@ const useMultiProviderSwapQuoteQuery = ({ provider: SwapProvider; requiresQuoteInverted: boolean; }) => { + const { approvalTxState } = useModalContext(); + // Amount to quote depends on side (sell uses input amount, buy uses output amount) const amount = useMemo(() => { if (state.side === 'sell') { @@ -427,6 +430,8 @@ const useMultiProviderSwapQuoteQuery = ({ !state.mainTxState.success && !state.mainTxState.txHash && // Don't fetch quotes once transaction is sent !state.mainTxState.loading && // Don't fetch quotes while transaction is processing + !approvalTxState?.loading && // Don't fetch quotes while approval is processing + !approvalTxState?.success && // Don't fetch quotes while approval is successful provider !== SwapProvider.NONE && !state.quoteRefreshPaused && !state.isWrongNetwork @@ -444,6 +449,8 @@ const useMultiProviderSwapQuoteQuery = ({ !state.mainTxState.success && !state.mainTxState.txHash && !state.mainTxState.loading && + !approvalTxState?.loading && + !approvalTxState?.success && !isInsufficientBalance && !isFlashloanDisabled ? QUOTE_REFETCH_INTERVAL From adde3233b1ca43acba7cd3e2b1193a045eda14f9 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Fri, 14 Nov 2025 16:30:03 -0300 Subject: [PATCH 62/66] fix repay w coll and improved slippage --- .../transactions/Swap/helpers/paraswap/misc.helpers.ts | 4 ++++ src/components/transactions/Swap/hooks/useSwapQuote.ts | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts b/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts index cfcb0b8a60..b7a2cb7793 100644 --- a/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts +++ b/src/components/transactions/Swap/helpers/paraswap/misc.helpers.ts @@ -15,5 +15,9 @@ export const getParaswapSlippage = ( return (Number(baseSlippage) * 2).toString(); } + if (swapType === SwapType.RepayWithCollateral) { + return (Number(baseSlippage) * 5).toString(); + } + return baseSlippage; }; diff --git a/src/components/transactions/Swap/hooks/useSwapQuote.ts b/src/components/transactions/Swap/hooks/useSwapQuote.ts index b4240517c5..bcc5bf66e2 100644 --- a/src/components/transactions/Swap/hooks/useSwapQuote.ts +++ b/src/components/transactions/Swap/hooks/useSwapQuote.ts @@ -47,14 +47,16 @@ const getTokenSelectionForQuote = ( const srcToken = state.useFlashloan == false && state.provider === SwapProvider.PARASWAP && - state.swapType !== SwapType.WithdrawAndSwap + state.swapType !== SwapType.WithdrawAndSwap && + state.swapType !== SwapType.RepayWithCollateral ? srcTokenObj.addressToSwap : srcTokenObj.underlyingAddress; const destTokenObj = invertedQuoteRoute ? state.sourceToken : state.destinationToken; const destToken = state.useFlashloan == false && state.provider === SwapProvider.PARASWAP && - state.swapType !== SwapType.WithdrawAndSwap + state.swapType !== SwapType.WithdrawAndSwap && + state.swapType !== SwapType.RepayWithCollateral ? destTokenObj.addressToSwap : destTokenObj.underlyingAddress; From 453884e9457e8b84587b4b580326abb2a424c16b Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Mon, 17 Nov 2025 10:55:04 -0300 Subject: [PATCH 63/66] using latest contracts and sdk --- package.json | 2 +- .../Swap/constants/cow.constants.ts | 88 +++++++++---------- .../Swap/helpers/cow/env.helpers.ts | 3 +- yarn.lock | 8 +- 4 files changed, 51 insertions(+), 50 deletions(-) diff --git a/package.json b/package.json index f26859c598..38bd3686fd 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@amplitude/analytics-browser": "^2.13.0", "@cowprotocol/sdk-app-data": "4.1.6", "@cowprotocol/cow-sdk": "7.1.1", - "@cowprotocol/sdk-flash-loans": "1.5.0", + "@cowprotocol/sdk-flash-loans": "1.5.2", "@cowprotocol/sdk-viem-adapter": "0.2.0", "@bgd-labs/aave-address-book": "^4.36.0", "@emotion/cache": "11.10.3", diff --git a/src/components/transactions/Swap/constants/cow.constants.ts b/src/components/transactions/Swap/constants/cow.constants.ts index 4802cd3e21..e367674edf 100644 --- a/src/components/transactions/Swap/constants/cow.constants.ts +++ b/src/components/transactions/Swap/constants/cow.constants.ts @@ -6,58 +6,58 @@ import { OrderType, SwapType } from '../types'; export const HOOK_ADAPTER_PER_TYPE: Record> = { [AaveFlashLoanType.CollateralSwap]: { - [SupportedChainId.MAINNET]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.GNOSIS_CHAIN]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.ARBITRUM_ONE]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.AVALANCHE]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.BNB]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.POLYGON]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.SEPOLIA]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.BASE]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.LENS]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.LINEA]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', - [SupportedChainId.PLASMA]: '0x29A9b0a13c81d59f13BA0f39DBDCAA1AB2adc95F', + [SupportedChainId.MAINNET]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', + [SupportedChainId.GNOSIS_CHAIN]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', + [SupportedChainId.ARBITRUM_ONE]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', + [SupportedChainId.AVALANCHE]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', + [SupportedChainId.BNB]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', + [SupportedChainId.POLYGON]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', + [SupportedChainId.BASE]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', + [SupportedChainId.SEPOLIA]: '', + [SupportedChainId.LENS]: '', + [SupportedChainId.LINEA]: '', + [SupportedChainId.PLASMA]: '', }, [AaveFlashLoanType.DebtSwap]: { - [SupportedChainId.MAINNET]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.GNOSIS_CHAIN]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.ARBITRUM_ONE]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.AVALANCHE]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.BNB]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.POLYGON]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.SEPOLIA]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.BASE]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.LENS]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.LINEA]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', - [SupportedChainId.PLASMA]: '0xbE9A121bb958BBBb027dA728DEC0D5496811b7d1', + [SupportedChainId.MAINNET]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', + [SupportedChainId.GNOSIS_CHAIN]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', + [SupportedChainId.ARBITRUM_ONE]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', + [SupportedChainId.AVALANCHE]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', + [SupportedChainId.BNB]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', + [SupportedChainId.POLYGON]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', + [SupportedChainId.BASE]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', + [SupportedChainId.SEPOLIA]: '', + [SupportedChainId.LENS]: '', + [SupportedChainId.LINEA]: '', + [SupportedChainId.PLASMA]: '', }, [AaveFlashLoanType.RepayCollateral]: { - [SupportedChainId.MAINNET]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.GNOSIS_CHAIN]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.ARBITRUM_ONE]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.AVALANCHE]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.BNB]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.POLYGON]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.SEPOLIA]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.BASE]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.LENS]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.LINEA]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', - [SupportedChainId.PLASMA]: '0x8e25d1210FabB0fcAdE92a82C4a89568B4b10E0F', + [SupportedChainId.MAINNET]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', + [SupportedChainId.GNOSIS_CHAIN]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', + [SupportedChainId.ARBITRUM_ONE]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', + [SupportedChainId.AVALANCHE]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', + [SupportedChainId.BNB]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', + [SupportedChainId.POLYGON]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', + [SupportedChainId.BASE]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', + [SupportedChainId.SEPOLIA]: '', + [SupportedChainId.LENS]: '', + [SupportedChainId.LINEA]: '', + [SupportedChainId.PLASMA]: '', }, }; export const ADAPTER_FACTORY: Record = { - [SupportedChainId.MAINNET]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.GNOSIS_CHAIN]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.ARBITRUM_ONE]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.AVALANCHE]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.BNB]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.POLYGON]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.SEPOLIA]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.BASE]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.LENS]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.LINEA]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', - [SupportedChainId.PLASMA]: '0x43c658Ea38bBfD897706fDb35e2468ef5D8F6927', + [SupportedChainId.MAINNET]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', + [SupportedChainId.GNOSIS_CHAIN]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', + [SupportedChainId.ARBITRUM_ONE]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', + [SupportedChainId.AVALANCHE]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', + [SupportedChainId.BNB]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', + [SupportedChainId.POLYGON]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', + [SupportedChainId.BASE]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', + [SupportedChainId.LENS]: '', + [SupportedChainId.LINEA]: '', + [SupportedChainId.PLASMA]: '', + [SupportedChainId.SEPOLIA]: '', }; export const DUST_PROTECTION_MULTIPLIER = 1.001; diff --git a/src/components/transactions/Swap/helpers/cow/env.helpers.ts b/src/components/transactions/Swap/helpers/cow/env.helpers.ts index 22fd6cc4cd..f17ed809b9 100644 --- a/src/components/transactions/Swap/helpers/cow/env.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/env.helpers.ts @@ -4,7 +4,7 @@ import { ViemAdapter } from '@cowprotocol/sdk-viem-adapter'; import { wagmiConfig } from 'src/ui-config/wagmiConfig'; import { getPublicClient, getWalletClient } from 'wagmi/actions'; -import { HOOK_ADAPTER_PER_TYPE } from '../../constants/cow.constants'; +import { ADAPTER_FACTORY, HOOK_ADAPTER_PER_TYPE } from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; import { SwapState } from '../../types'; import { COW_ENV } from './orders.helpers'; @@ -39,6 +39,7 @@ export const getCowFlashLoanSdk = async (chainId: number) => { setGlobalAdapter(await getCowAdapter(chainId)); return new AaveCollateralSwapSdk({ hookAdapterPerType: HOOK_ADAPTER_PER_TYPE, + aaveAdapterFactory: ADAPTER_FACTORY, }); }; diff --git a/yarn.lock b/yarn.lock index ec34ec207a..503cebaa0d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1426,10 +1426,10 @@ "@cowprotocol/sdk-common" "0.3.0" "@cowprotocol/sdk-config" "0.3.0" -"@cowprotocol/sdk-flash-loans@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-flash-loans/-/sdk-flash-loans-1.5.0.tgz#c3f4126c5aba99d7691e93b2388d54ccafd74e92" - integrity sha512-AmKABf0Vwam0RLWoNLHZekE3zrSey5ZN7KXEZNTMNvgISBb/XAuUZCivpsKMfPZTa11Lv0k/vSaQdIKFV3/zLA== +"@cowprotocol/sdk-flash-loans@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-flash-loans/-/sdk-flash-loans-1.5.2.tgz#d5f8375441bf07a1a7a70ae786dcb969e91b2b73" + integrity sha512-RihEc1Gpow4p+b/tLCvptl+TLYNvXsqOC7KvA/5tdk40eOtWUqCiltb66J4FGnc5W8pqmLoRalql4myOMh8dLg== dependencies: "@cowprotocol/sdk-app-data" "4.1.6" "@cowprotocol/sdk-common" "0.3.0" From 61a433e341eccbc1229eb20107d60f8031f42c0a Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Tue, 18 Nov 2025 14:17:10 -0300 Subject: [PATCH 64/66] remove gho and eurc for base --- src/components/transactions/Swap/constants/cow.constants.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/transactions/Swap/constants/cow.constants.ts b/src/components/transactions/Swap/constants/cow.constants.ts index e367674edf..c13fd477f1 100644 --- a/src/components/transactions/Swap/constants/cow.constants.ts +++ b/src/components/transactions/Swap/constants/cow.constants.ts @@ -124,6 +124,8 @@ export const COW_UNSUPPORTED_ASSETS: Partial< ], [SupportedChainId.BASE]: [ '0x90072A4aA69B5Eb74984Ab823EFC5f91e90b3a72'.toLowerCase(), // alBTC does not have good solver liquidity + '0x6Bb7a212910682DCFdbd5BCBb3e28FB4E8da10Ee'.toLowerCase(), // GHO does not have good solver liquidity + '0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42'.toLowerCase(), // EURC does not have good solver liquidity ], [SupportedChainId.MAINNET]: [ '0x00907f9921424583e7ffBfEdf84F92B7B2Be4977'.toLowerCase(), // aGHO not supported From 9656993969bb263dddb036a485795334e4dd2fbd Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Tue, 18 Nov 2025 16:24:28 -0300 Subject: [PATCH 65/66] debt swap and repay through paraswap --- src/components/transactions/Swap/constants/cow.constants.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/transactions/Swap/constants/cow.constants.ts b/src/components/transactions/Swap/constants/cow.constants.ts index c13fd477f1..ed3761a171 100644 --- a/src/components/transactions/Swap/constants/cow.constants.ts +++ b/src/components/transactions/Swap/constants/cow.constants.ts @@ -74,7 +74,7 @@ export const COW_UNSUPPORTED_ASSETS: Partial< [SupportedChainId.MAINNET]: 'ALL', [SupportedChainId.POLYGON]: 'ALL', [SupportedChainId.SEPOLIA]: 'ALL', - // Base is supported + [SupportedChainId.BASE]: 'ALL', // Base is not supported }, [SwapType.CollateralSwap]: { [SupportedChainId.ARBITRUM_ONE]: 'ALL', @@ -94,7 +94,7 @@ export const COW_UNSUPPORTED_ASSETS: Partial< [SupportedChainId.MAINNET]: 'ALL', [SupportedChainId.POLYGON]: 'ALL', [SupportedChainId.SEPOLIA]: 'ALL', - // Base is supported + [SupportedChainId.BASE]: 'ALL', // Base is not supported }, // Specific assets that are not supported for certain chains across all swap types From d21baf14b78d54a29bed45c5662d56e71f30250d Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Tue, 18 Nov 2025 16:41:28 -0300 Subject: [PATCH 66/66] add quoteid to cow orders for analytics --- .../CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx | 2 ++ .../Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx | 2 ++ .../RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx | 2 ++ .../transactions/Swap/helpers/cow/adapters.helpers.ts | 5 ++++- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx index 83d19f4adf..9fe42097da 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx @@ -25,6 +25,7 @@ import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; import { areActionsBlocked, ExpiryToSecondsMap, + isCowProtocolRates, OrderType, SwapParams, SwapState, @@ -188,6 +189,7 @@ export const CollateralSwapActionsViaCowAdapters = ({ buyToken: state.buyAmountToken.underlyingAddress, buyTokenDecimals: state.buyAmountToken.decimals, sellAmount: sellAmountToSign.toString(), + quoteId: isCowProtocolRates(state.swapRate) ? state.swapRate?.quoteId : undefined, buyAmount: state.buyAmountBigInt.toString(), kind: state.processedSide === 'buy' ? OrderKind.BUY : OrderKind.SELL, validTo, diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index 6613831e9e..e4afce7d23 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -30,6 +30,7 @@ import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; import { areActionsBlocked, ExpiryToSecondsMap, + isCowProtocolRates, isProtocolSwapState, OrderType, SwapParams, @@ -207,6 +208,7 @@ export const DebtSwapActionsViaCoW = ({ sellAmount: sellAmountToSign.toString(), buyAmount: buyAmountWithMarginForDustProtection.toString(), kind: state.processedSide === 'buy' ? OrderKind.BUY : OrderKind.SELL, + quoteId: isCowProtocolRates(state.swapRate) ? state.swapRate?.quoteId : undefined, validTo, slippageBps: state.orderType == OrderType.MARKET ? Number(state.slippage) * 100 : undefined, partnerFee: COW_PARTNER_FEE(state.sellAmountToken.symbol, state.buyAmountToken.symbol), diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx index fe0bf14a11..d6560d0008 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -29,6 +29,7 @@ import { useSwapGasEstimation } from '../../hooks/useSwapGasEstimation'; import { areActionsBlocked, ExpiryToSecondsMap, + isCowProtocolRates, OrderType, SwapParams, SwapState, @@ -205,6 +206,7 @@ export const RepayWithCollateralActionsViaCoW = ({ sellAmount: sellAmountToSign.toString(), buyAmount: buyAmountWithMarginForDustProtection.toString(), kind: state.processedSide === 'buy' ? OrderKind.BUY : OrderKind.SELL, + quoteId: isCowProtocolRates(state.swapRate) ? state.swapRate?.quoteId : undefined, validTo, slippageBps: state.orderType == OrderType.MARKET ? Number(state.slippage) * 100 : undefined, partnerFee: COW_PARTNER_FEE(state.sellAmountToken.symbol, state.buyAmountToken.symbol), diff --git a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts index e3ca851c6c..d6e73ede08 100644 --- a/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/adapters.helpers.ts @@ -20,7 +20,7 @@ import { DUST_PROTECTION_MULTIPLIER, FLASH_LOAN_FEE_BPS, } from '../../constants/cow.constants'; -import { OrderType, SwapProvider, SwapState, SwapType } from '../../types'; +import { isCowProtocolRates, OrderType, SwapProvider, SwapState, SwapType } from '../../types'; import { getCowFlashLoanSdk } from './env.helpers'; export const calculateInstanceAddress = async ({ @@ -50,6 +50,7 @@ export const calculateInstanceAddress = async ({ buyAmount, sellToken, buyToken, + quoteId, side, slippageBps, partnerFee, @@ -65,6 +66,7 @@ export const calculateInstanceAddress = async ({ sellToken: state.sellAmountToken, buyAmount: state.buyAmountBigInt, buyToken: state.buyAmountToken, + quoteId: isCowProtocolRates(state.swapRate) ? state.swapRate?.quoteId : undefined, side: state.processedSide, slippageBps: state.orderType == OrderType.MARKET ? Number(state.slippage) * 100 : undefined, partnerFee: COW_PARTNER_FEE(state.sellAmountToken.symbol, state.buyAmountToken.symbol), @@ -83,6 +85,7 @@ export const calculateInstanceAddress = async ({ sellAmount: sellAmountToSign.toString(), buyAmount: buyAmount.toString(), kind: side === 'buy' ? OrderKind.BUY : OrderKind.SELL, + quoteId, validTo, slippageBps, partnerFee,