From d206b910fef41567a83a7baaca9070c99e4540af Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Wed, 9 Aug 2023 01:02:15 +0100 Subject: [PATCH 01/24] feat: added simple withdraw and switch selector --- .../FlowCommons/TxModalDetails.tsx | 30 +++++ .../transactions/Withdraw/WithdrawModal.tsx | 3 + .../Withdraw/WithdrawModalContent.tsx | 124 ++++++++++++++++-- src/locales/en/messages.po | 2 + 4 files changed, 150 insertions(+), 9 deletions(-) diff --git a/src/components/transactions/FlowCommons/TxModalDetails.tsx b/src/components/transactions/FlowCommons/TxModalDetails.tsx index 252ba1e408..168cadc69e 100644 --- a/src/components/transactions/FlowCommons/TxModalDetails.tsx +++ b/src/components/transactions/FlowCommons/TxModalDetails.tsx @@ -358,3 +358,33 @@ export const DetailsUnwrapSwitch = ({ ); }; + +interface DetailsSwitchWithdrawProps { + switchWithdraw: boolean; + setSwitchWithdraw: (value: boolean) => void; + label: ReactNode; +} + +export const DetailsSwitchWithdraw = ({ + switchWithdraw, + setSwitchWithdraw, + label, +}: DetailsSwitchWithdrawProps) => { + return ( + + setSwitchWithdraw(!switchWithdraw)} + data-cy={'wrappedSwitcher'} + /> + } + labelPlacement="end" + label={label} + /> + + ); +}; diff --git a/src/components/transactions/Withdraw/WithdrawModal.tsx b/src/components/transactions/Withdraw/WithdrawModal.tsx index 0840f16686..fc6ff1aab1 100644 --- a/src/components/transactions/Withdraw/WithdrawModal.tsx +++ b/src/components/transactions/Withdraw/WithdrawModal.tsx @@ -12,6 +12,7 @@ export const WithdrawModal = () => { underlyingAsset: string; }>; const [withdrawUnWrapped, setWithdrawUnWrapped] = useState(true); + const [switchWithdraw, setSwitchWithdraw] = useState(false); return ( @@ -24,6 +25,8 @@ export const WithdrawModal = () => { {(params) => ( diff --git a/src/components/transactions/Withdraw/WithdrawModalContent.tsx b/src/components/transactions/Withdraw/WithdrawModalContent.tsx index a52b9c1c8c..f08a8ede47 100644 --- a/src/components/transactions/Withdraw/WithdrawModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawModalContent.tsx @@ -1,23 +1,32 @@ import { API_ETH_MOCK_ADDRESS } from '@aave/contract-helpers'; import { calculateHealthFactorFromBalancesBigUnits, valueToBigNumber } from '@aave/math-utils'; +import { SwitchVerticalIcon } from '@heroicons/react/outline'; import { Trans } from '@lingui/macro'; -import { Box, Checkbox, Typography } from '@mui/material'; +import { Box, Checkbox, SvgIcon, Typography } from '@mui/material'; import BigNumber from 'bignumber.js'; import { useRef, useState } from 'react'; +import { PriceImpactTooltip } from 'src/components/infoTooltips/PriceImpactTooltip'; import { Warning } from 'src/components/primitives/Warning'; -import { useAppDataContext } from 'src/hooks/app-data-provider/useAppDataProvider'; +import { + ComputedUserReserveData, + useAppDataContext, +} from 'src/hooks/app-data-provider/useAppDataProvider'; +import { useCollateralSwap } from 'src/hooks/paraswap/useCollateralSwap'; import { useModalContext } from 'src/hooks/useModal'; import { useProtocolDataContext } from 'src/hooks/useProtocolDataContext'; +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/mixPanelEvents'; -import { AssetInput } from '../AssetInput'; +import { Asset, AssetInput } from '../AssetInput'; import { GasEstimationError } from '../FlowCommons/GasEstimationError'; import { ModalWrapperProps } from '../FlowCommons/ModalWrapper'; import { TxSuccessView } from '../FlowCommons/Success'; import { DetailsHFLine, DetailsNumberLine, + DetailsSwitchWithdraw, DetailsUnwrapSwitch, TxModalDetails, } from '../FlowCommons/TxModalDetails'; @@ -37,16 +46,65 @@ export const WithdrawModalContent = ({ setUnwrap: setWithdrawUnWrapped, symbol, isWrongNetwork, -}: ModalWrapperProps & { unwrap: boolean; setUnwrap: (unwrap: boolean) => void }) => { + switchWithdraw, + setSwitchWithdraw, +}: ModalWrapperProps & { + unwrap: boolean; + setUnwrap: (unwrap: boolean) => void; + switchWithdraw: boolean; + setSwitchWithdraw: (switchWithdraw: boolean) => void; +}) => { const { gasLimit, mainTxState: withdrawTxState, txError } = useModalContext(); - const { user } = useAppDataContext(); - const { currentNetworkConfig } = useProtocolDataContext(); + const { currentAccount } = useWeb3Context(); + const { user, reserves } = useAppDataContext(); + const { currentNetworkConfig, currentChainId } = useProtocolDataContext(); const [_amount, setAmount] = useState(''); const [withdrawMax, setWithdrawMax] = useState(''); const [riskCheckboxAccepted, setRiskCheckboxAccepted] = useState(false); - const amountRef = useRef(); + const amountRef = useRef(''); const trackEvent = useRootStore((store) => store.trackEvent); + const [maxSlippage, setMaxSlippage] = useState('0.1'); + + const swapTargets = reserves + .filter((r) => r.underlyingAsset !== poolReserve.underlyingAsset) + .map((reserve) => ({ + address: reserve.underlyingAsset, + symbol: reserve.symbol, + iconSymbol: reserve.iconSymbol, + })); + + const [targetReserve, setTargetReserve] = useState(swapTargets[0]); + + const isMaxSelected = _amount === '-1'; + + const swapTarget = user.userReservesData.find( + (r) => r.underlyingAsset === targetReserve.address + ) as ComputedUserReserveData; + + 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, + skip: withdrawTxState.loading || false, + maxSlippage: Number(maxSlippage), + }); + + // to be used in actions, didn't delete to remember the names, will change in future. + console.log(inputAmount); + console.log(buildTxFn); + + const loadingSkeleton = routeLoading && outputAmountUSD === '0'; // calculations const underlyingBalance = valueToBigNumber(userReserve?.underlyingBalance || '0'); @@ -75,7 +133,6 @@ export const WithdrawModalContent = ({ ); } - const isMaxSelected = _amount === '-1'; const amount = isMaxSelected ? maxAmountToWithdraw.toString(10) : _amount; const handleChange = (value: string) => { @@ -215,6 +272,42 @@ export const WithdrawModalContent = ({ } /> + {switchWithdraw && ( + <> + + + + + + + + + Switch to} + balanceText={Supply balance} + disableInput + loading={loadingSkeleton} + /> + + {error && !loadingSkeleton && ( + + {error} + + )} + + )} + {blockingError !== undefined && ( @@ -231,7 +324,20 @@ export const WithdrawModalContent = ({ /> )} - + + + + ) + } + > Remaining supply} value={underlyingBalance.minus(amount || '0').toString(10)} diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index 83ce068080..d8444f7f63 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -2161,6 +2161,7 @@ msgstr "Supply apy" #: src/components/transactions/Swap/SwapModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawModalContent.tsx #: src/modules/dashboard/lists/SuppliedPositionsList/SuppliedPositionsListMobileItem.tsx #: src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsListMobileItem.tsx msgid "Supply balance" @@ -2228,6 +2229,7 @@ msgstr "Switch rate" #: src/components/transactions/DebtSwitch/DebtSwitchModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "Switch to" msgstr "Switch to" From d76be2e9cd42097e4940b7bbafc38bb4dee36314 Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Wed, 9 Aug 2023 14:45:23 +0100 Subject: [PATCH 02/24] feat: tabs ui for changing withdraw type in withdraw modal --- .../FlowCommons/TxModalDetails.tsx | 30 --------- .../transactions/Withdraw/WithdrawModal.tsx | 3 - .../Withdraw/WithdrawModalContent.tsx | 16 ++--- .../Withdraw/WithdrawTypeSelector.tsx | 62 +++++++++++++++++++ src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 9 +++ src/utils/mixPanelEvents.ts | 4 ++ 7 files changed, 81 insertions(+), 45 deletions(-) create mode 100644 src/components/transactions/Withdraw/WithdrawTypeSelector.tsx diff --git a/src/components/transactions/FlowCommons/TxModalDetails.tsx b/src/components/transactions/FlowCommons/TxModalDetails.tsx index 168cadc69e..252ba1e408 100644 --- a/src/components/transactions/FlowCommons/TxModalDetails.tsx +++ b/src/components/transactions/FlowCommons/TxModalDetails.tsx @@ -358,33 +358,3 @@ export const DetailsUnwrapSwitch = ({ ); }; - -interface DetailsSwitchWithdrawProps { - switchWithdraw: boolean; - setSwitchWithdraw: (value: boolean) => void; - label: ReactNode; -} - -export const DetailsSwitchWithdraw = ({ - switchWithdraw, - setSwitchWithdraw, - label, -}: DetailsSwitchWithdrawProps) => { - return ( - - setSwitchWithdraw(!switchWithdraw)} - data-cy={'wrappedSwitcher'} - /> - } - labelPlacement="end" - label={label} - /> - - ); -}; diff --git a/src/components/transactions/Withdraw/WithdrawModal.tsx b/src/components/transactions/Withdraw/WithdrawModal.tsx index fc6ff1aab1..0840f16686 100644 --- a/src/components/transactions/Withdraw/WithdrawModal.tsx +++ b/src/components/transactions/Withdraw/WithdrawModal.tsx @@ -12,7 +12,6 @@ export const WithdrawModal = () => { underlyingAsset: string; }>; const [withdrawUnWrapped, setWithdrawUnWrapped] = useState(true); - const [switchWithdraw, setSwitchWithdraw] = useState(false); return ( @@ -25,8 +24,6 @@ export const WithdrawModal = () => { {(params) => ( diff --git a/src/components/transactions/Withdraw/WithdrawModalContent.tsx b/src/components/transactions/Withdraw/WithdrawModalContent.tsx index f08a8ede47..3e42e36e36 100644 --- a/src/components/transactions/Withdraw/WithdrawModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawModalContent.tsx @@ -26,12 +26,12 @@ import { TxSuccessView } from '../FlowCommons/Success'; import { DetailsHFLine, DetailsNumberLine, - DetailsSwitchWithdraw, DetailsUnwrapSwitch, TxModalDetails, } from '../FlowCommons/TxModalDetails'; import { zeroLTVBlockingWithdraw } from '../utils'; import { WithdrawActions } from './WithdrawActions'; +import { WithdrawType, WithdrawTypeSelector } from './WithdrawTypeSelector'; export enum ErrorType { CAN_NOT_WITHDRAW_THIS_AMOUNT, @@ -46,13 +46,9 @@ export const WithdrawModalContent = ({ setUnwrap: setWithdrawUnWrapped, symbol, isWrongNetwork, - switchWithdraw, - setSwitchWithdraw, }: ModalWrapperProps & { unwrap: boolean; setUnwrap: (unwrap: boolean) => void; - switchWithdraw: boolean; - setSwitchWithdraw: (switchWithdraw: boolean) => void; }) => { const { gasLimit, mainTxState: withdrawTxState, txError } = useModalContext(); const { currentAccount } = useWeb3Context(); @@ -75,6 +71,7 @@ export const WithdrawModalContent = ({ })); const [targetReserve, setTargetReserve] = useState(swapTargets[0]); + const [withdrawType, setWithdrawType] = useState(WithdrawType.WITHDRAW); const isMaxSelected = _amount === '-1'; @@ -243,8 +240,11 @@ export const WithdrawModalContent = ({ /> ); + const switchWithdraw = withdrawType === WithdrawType.WITHDRAWSWAP; + return ( <> + )} - - void; +}) { + const { currentMarketData } = useProtocolDataContext(); + const trackEvent = useRootStore((store) => store.trackEvent); + + if (!currentMarketData.enabledFeatures?.collateralRepay) return null; + return ( + + + Action + + + setWithdrawType(value)} + > + + trackEvent(WITHDRAW_MODAL.SWITCH_WITHDRAW_TYPE, { withdrawType: 'Withdraw' }) + } + > + + Withdraw + + + + + trackEvent(WITHDRAW_MODAL.SWITCH_WITHDRAW_TYPE, { withdrawType: 'Withdraw and Switch' }) + } + > + + Withdraw and Switch + + + + + ); +} diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index 869b6df7e4..2aaed5b4d6 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action":"Action","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw and Switch":"Withdraw and Switch","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index d8444f7f63..a488d3f8fb 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -142,6 +142,10 @@ msgstr "About GHO" msgid "Account" msgstr "Account" +#: src/components/transactions/Withdraw/WithdrawTypeSelector.tsx +msgid "Action" +msgstr "Action" + #: src/ui-config/errorMapping.tsx msgid "Action cannot be performed because the reserve is frozen" msgstr "Action cannot be performed because the reserve is frozen" @@ -2817,6 +2821,7 @@ msgid "With testnet Faucet you can get free assets to test the Aave Protocol. Ma msgstr "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" #: src/components/transactions/Withdraw/WithdrawModal.tsx +#: src/components/transactions/Withdraw/WithdrawTypeSelector.tsx #: src/modules/dashboard/lists/SuppliedPositionsList/SuppliedPositionsListItem.tsx #: src/modules/dashboard/lists/SuppliedPositionsList/SuppliedPositionsListMobileItem.tsx #: src/modules/history/HistoryFilterMenu.tsx @@ -2824,6 +2829,10 @@ msgstr "With testnet Faucet you can get free assets to test the Aave Protocol. M msgid "Withdraw" msgstr "Withdraw" +#: src/components/transactions/Withdraw/WithdrawTypeSelector.tsx +msgid "Withdraw and Switch" +msgstr "Withdraw and Switch" + #: src/components/transactions/Withdraw/WithdrawActions.tsx msgid "Withdraw {symbol}" msgstr "Withdraw {symbol}" diff --git a/src/utils/mixPanelEvents.ts b/src/utils/mixPanelEvents.ts index 86e7cc1bf0..91e4097354 100644 --- a/src/utils/mixPanelEvents.ts +++ b/src/utils/mixPanelEvents.ts @@ -67,6 +67,10 @@ export const REPAY_MODAL = { SWITCH_REPAY_TYPE: 'Change repay type', }; +export const WITHDRAW_MODAL = { + SWITCH_WITHDRAW_TYPE: 'Change withdraw type', +}; + export const STAKE = { STAKE_TOKEN: 'Stake Action', }; From 60545308790b9d6f39fd18ea3268d1d599836d70 Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Tue, 15 Aug 2023 05:23:28 +0100 Subject: [PATCH 03/24] feat: new withdraw and swap actions --- package.json | 2 +- .../Withdraw/WithdrawAndSwapActions.tsx | 231 +++++++++++ .../Withdraw/WithdrawAndSwapModalContent.tsx | 381 ++++++++++++++++++ .../transactions/Withdraw/WithdrawModal.tsx | 27 +- .../Withdraw/WithdrawModalContent.tsx | 108 +---- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 19 +- src/store/poolSlice.ts | 53 +++ src/ui-config/marketsConfig.tsx | 2 + yarn.lock | 8 +- 10 files changed, 718 insertions(+), 115 deletions(-) create mode 100644 src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx create mode 100644 src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx diff --git a/package.json b/package.json index 11e62f0ca0..245cdbdb4f 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "test:coverage": "jest --coverage" }, "dependencies": { - "@aave/contract-helpers": "1.18.2", + "@aave/contract-helpers": "1.18.3-8d53fd85c8d5907980477bcf3a47b0e68f65ac36.0", "@aave/math-utils": "1.18.2", "@bgd-labs/aave-address-book": "^1.29.0", "@emotion/cache": "11.10.3", diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx new file mode 100644 index 0000000000..f9e2e3de8f --- /dev/null +++ b/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx @@ -0,0 +1,231 @@ +import { ERC20Service } from '@aave/contract-helpers'; +import { SignatureLike } from '@ethersproject/bytes'; +import { Trans } from '@lingui/macro'; +import { BoxProps } from '@mui/material'; +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 { TxActionsWrapper } from '../TxActionsWrapper'; + +interface WithdrawAndSwapProps extends BoxProps { + amountToSwap: string; + amountToReceive: string; + poolReserve: ComputedReserveData; + targetReserve: ComputedReserveData; + isWrongNetwork: boolean; + blocked: boolean; + isMaxSelected: boolean; + loading?: boolean; + buildTxFn: () => Promise; +} + +export interface WithdrawAndSwapActionProps + extends Pick< + WithdrawAndSwapProps, + 'amountToSwap' | 'amountToReceive' | 'poolReserve' | 'targetReserve' | 'isMaxSelected' + > { + augustus: string; + signatureParams?: SignedParams; + txCalldata: string; +} + +interface SignedParams { + signature: SignatureLike; + deadline: string; + amount: string; +} + +export const WithdrawAndSwapActions = ({ + amountToSwap, + amountToReceive, + isWrongNetwork, + sx, + poolReserve, + targetReserve, + isMaxSelected, + loading, + blocked, + buildTxFn, +}: WithdrawAndSwapProps) => { + const [ + withdrawAndSwap, + currentMarketData, + jsonRpcProvider, + account, + generateApproval, + estimateGasLimit, + walletApprovalMethodPreference, + generateSignatureRequest, + ] = useRootStore((state) => [ + state.withdrawAndSwap, + state.currentMarketData, + state.jsonRpcProvider, + state.account, + state.generateApproval, + state.estimateGasLimit, + state.walletApprovalMethodPreference, + state.generateSignatureRequest, + ]); + const { + approvalTxState, + mainTxState, + loadingTxns, + setMainTxState, + setTxError, + setGasLimit, + setLoadingTxns, + setApprovalTxState, + } = useModalContext(); + + console.log(setGasLimit); + console.log(amountToReceive); + + const { sendTx, signTxData } = useWeb3Context(); + + const [approvedAmount, setApprovedAmount] = useState(0); + const [signatureParams, setSignatureParams] = useState(); + + const requiresApproval = useMemo(() => { + return approvedAmount <= Number(amountToSwap); + }, [approvedAmount, amountToSwap]); + + const useSignature = walletApprovalMethodPreference === ApprovalMethod.PERMIT; + + const action = async () => { + try { + setMainTxState({ ...mainTxState, loading: true }); + const route = await buildTxFn(); + const tx = withdrawAndSwap({ + poolReserve, + targetReserve, + isMaxSelected, + amountToSwap: parseUnits(route.inputAmount, targetReserve.decimals).toString(), + amountToReceive: parseUnits(route.outputAmount, poolReserve.decimals).toString(), + augustus: route.augustus, + txCalldata: route.swapCallData, + signatureParams, + }); + const txDataWithGasEstimation = await estimateGasLimit(tx); + const response = await sendTx(txDataWithGasEstimation); + setMainTxState({ + txHash: response.hash, + loading: false, + success: true, + }); + } catch (error) { + const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); + setTxError(parsedError); + setMainTxState({ + txHash: undefined, + loading: false, + }); + } + }; + + const approval = async () => { + const amountToApprove = calculateSignedAmount(amountToSwap, poolReserve.decimals); + const approvalData = { + user: account, + token: poolReserve.aTokenAddress, + spender: currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER || '', + amount: amountToApprove, + }; + try { + if (useSignature) { + const deadline = Math.floor(Date.now() / 1000 + 3600).toString(); + const signatureRequest = await generateSignatureRequest({ + ...approvalData, + deadline, + }); + 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, + }); + 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_AND_SWAP_ADAPTER || '', + }); + setApprovedAmount(approvedTargetAmount); + setLoadingTxns(false); + }, + [ + jsonRpcProvider, + account, + currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER, + setLoadingTxns, + ] + ); + + useEffect(() => { + fetchApprovedAmount(poolReserve.aTokenAddress); + }, [fetchApprovedAmount, poolReserve.aTokenAddress]); + + 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/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx new file mode 100644 index 0000000000..fa84179242 --- /dev/null +++ b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx @@ -0,0 +1,381 @@ +import { calculateHealthFactorFromBalancesBigUnits, valueToBigNumber } from '@aave/math-utils'; +import { SwitchVerticalIcon } from '@heroicons/react/outline'; +import { Trans } from '@lingui/macro'; +import { Box, Checkbox, SvgIcon, Typography } from '@mui/material'; +import BigNumber from 'bignumber.js'; +import { useRef, useState } from 'react'; +import { PriceImpactTooltip } from 'src/components/infoTooltips/PriceImpactTooltip'; +import { Warning } from 'src/components/primitives/Warning'; +import { + ComputedUserReserveData, + useAppDataContext, +} from 'src/hooks/app-data-provider/useAppDataProvider'; +import { useCollateralSwap } from 'src/hooks/paraswap/useCollateralSwap'; +import { useModalContext } from 'src/hooks/useModal'; +import { useProtocolDataContext } from 'src/hooks/useProtocolDataContext'; +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/mixPanelEvents'; + +import { Asset, AssetInput } from '../AssetInput'; +import { GasEstimationError } from '../FlowCommons/GasEstimationError'; +import { ModalWrapperProps } from '../FlowCommons/ModalWrapper'; +import { TxSuccessView } from '../FlowCommons/Success'; +import { + DetailsHFLine, + DetailsNumberLine, + DetailsUnwrapSwitch, + TxModalDetails, +} from '../FlowCommons/TxModalDetails'; +import { zeroLTVBlockingWithdraw } from '../utils'; +import { WithdrawAndSwapActions } from './WithdrawAndSwapActions'; + +export enum ErrorType { + CAN_NOT_WITHDRAW_THIS_AMOUNT, + POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY, + ZERO_LTV_WITHDRAW_BLOCKED, +} + +export const WithdrawAndSwapModalContent = ({ + poolReserve, + userReserve, + unwrap: withdrawUnWrapped, + setUnwrap: setWithdrawUnWrapped, + symbol, + isWrongNetwork, +}: ModalWrapperProps & { + unwrap: boolean; + setUnwrap: (unwrap: boolean) => void; +}) => { + const { gasLimit, mainTxState: withdrawTxState, txError } = useModalContext(); + const { currentAccount } = useWeb3Context(); + const { user, reserves } = useAppDataContext(); + const { currentNetworkConfig, currentChainId } = useProtocolDataContext(); + + const [_amount, setAmount] = useState(''); + const [riskCheckboxAccepted, setRiskCheckboxAccepted] = useState(false); + const amountRef = useRef(''); + const trackEvent = useRootStore((store) => store.trackEvent); + const [maxSlippage, setMaxSlippage] = useState('0.1'); + + const swapTargets = reserves + .filter((r) => r.underlyingAsset !== poolReserve.underlyingAsset) + .map((reserve) => ({ + address: reserve.underlyingAsset, + symbol: reserve.symbol, + iconSymbol: reserve.iconSymbol, + })); + + const [targetReserve, setTargetReserve] = useState(swapTargets[0]); + + const isMaxSelected = _amount === '-1'; + + const swapTarget = user.userReservesData.find( + (r) => r.underlyingAsset === targetReserve.address + ) as ComputedUserReserveData; + + 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, + skip: withdrawTxState.loading || false, + maxSlippage: Number(maxSlippage), + }); + + const loadingSkeleton = routeLoading && outputAmountUSD === '0'; + + // calculations + const underlyingBalance = valueToBigNumber(userReserve?.underlyingBalance || '0'); + const unborrowedLiquidity = valueToBigNumber(poolReserve.unborrowedLiquidity); + let maxAmountToWithdraw = BigNumber.min(underlyingBalance, unborrowedLiquidity); + let maxCollateralToWithdrawInETH = valueToBigNumber('0'); + const reserveLiquidationThreshold = + user.isInEmode && user.userEmodeCategoryId === poolReserve.eModeCategoryId + ? poolReserve.formattedEModeLiquidationThreshold + : poolReserve.formattedReserveLiquidationThreshold; + if ( + userReserve?.usageAsCollateralEnabledOnUser && + poolReserve.reserveLiquidationThreshold !== '0' && + user.totalBorrowsMarketReferenceCurrency !== '0' + ) { + // if we have any borrowings we should check how much we can withdraw to a minimum HF of 1.01 + const excessHF = valueToBigNumber(user.healthFactor).minus('1.01'); + if (excessHF.gt('0')) { + maxCollateralToWithdrawInETH = excessHF + .multipliedBy(user.totalBorrowsMarketReferenceCurrency) + .div(reserveLiquidationThreshold); + } + maxAmountToWithdraw = BigNumber.min( + maxAmountToWithdraw, + maxCollateralToWithdrawInETH.dividedBy(poolReserve.formattedPriceInMarketReferenceCurrency) + ); + } + + const amount = isMaxSelected ? maxAmountToWithdraw.toString(10) : _amount; + + const handleChange = (value: string) => { + const maxSelected = value === '-1'; + amountRef.current = maxSelected ? maxAmountToWithdraw.toString(10) : value; + setAmount(value); + if (maxSelected && maxAmountToWithdraw.eq(underlyingBalance)) { + trackEvent(GENERAL.MAX_INPUT_SELECTION, { type: 'withdraw' }); + } + }; + + // health factor calculations + let totalCollateralInETHAfterWithdraw = valueToBigNumber( + user.totalCollateralMarketReferenceCurrency + ); + let liquidationThresholdAfterWithdraw = user.currentLiquidationThreshold; + let healthFactorAfterWithdraw = valueToBigNumber(user.healthFactor); + + const assetsBlockingWithdraw: string[] = zeroLTVBlockingWithdraw(user); + + if ( + userReserve?.usageAsCollateralEnabledOnUser && + poolReserve.reserveLiquidationThreshold !== '0' + ) { + const amountToWithdrawInEth = valueToBigNumber(amount).multipliedBy( + poolReserve.formattedPriceInMarketReferenceCurrency + ); + totalCollateralInETHAfterWithdraw = + totalCollateralInETHAfterWithdraw.minus(amountToWithdrawInEth); + + liquidationThresholdAfterWithdraw = valueToBigNumber( + user.totalCollateralMarketReferenceCurrency + ) + .multipliedBy(valueToBigNumber(user.currentLiquidationThreshold)) + .minus(valueToBigNumber(amountToWithdrawInEth).multipliedBy(reserveLiquidationThreshold)) + .div(totalCollateralInETHAfterWithdraw) + .toFixed(4, BigNumber.ROUND_DOWN); + + healthFactorAfterWithdraw = calculateHealthFactorFromBalancesBigUnits({ + collateralBalanceMarketReferenceCurrency: totalCollateralInETHAfterWithdraw, + borrowBalanceMarketReferenceCurrency: user.totalBorrowsMarketReferenceCurrency, + currentLiquidationThreshold: liquidationThresholdAfterWithdraw, + }); + } + const displayRiskCheckbox = + healthFactorAfterWithdraw.toNumber() >= 1 && + healthFactorAfterWithdraw.toNumber() < 1.5 && + userReserve.usageAsCollateralEnabledOnUser; + + let blockingError: ErrorType | undefined = undefined; + if (!withdrawTxState.success && !withdrawTxState.txHash) { + if (assetsBlockingWithdraw.length > 0 && !assetsBlockingWithdraw.includes(poolReserve.symbol)) { + blockingError = ErrorType.ZERO_LTV_WITHDRAW_BLOCKED; + } else if ( + healthFactorAfterWithdraw.lt('1') && + user.totalBorrowsMarketReferenceCurrency !== '0' + ) { + blockingError = ErrorType.CAN_NOT_WITHDRAW_THIS_AMOUNT; + } else if ( + !blockingError && + (unborrowedLiquidity.eq('0') || valueToBigNumber(amount).gt(poolReserve.unborrowedLiquidity)) + ) { + blockingError = ErrorType.POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY; + } + } + + // error render handling + const BlockingError: React.FC = () => { + switch (blockingError) { + case ErrorType.CAN_NOT_WITHDRAW_THIS_AMOUNT: + return ( + You can not withdraw this amount because it will cause collateral call + ); + case ErrorType.POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY: + return ( + + These funds have been borrowed and are not available for withdrawal at this time. + + ); + case ErrorType.ZERO_LTV_WITHDRAW_BLOCKED: + return ( + + Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as + collateral to perform this action + + ); + default: + return null; + } + }; + + // calculating input usd value + const usdValue = valueToBigNumber(amount).multipliedBy(userReserve?.reserve.priceInUSD || 0); + + if (withdrawTxState.success) + return ( + withdrew} + amount={amountRef.current} + symbol={ + withdrawUnWrapped && poolReserve.isWrappedBaseAsset + ? currentNetworkConfig.baseAssetSymbol + : poolReserve.symbol + } + /> + ); + + return ( + <> + Available + ) : ( + Supply balance + ) + } + /> + + + + + + + + + + Switch to} + balanceText={Supply balance} + disableInput + loading={loadingSkeleton} + /> + + {error && !loadingSkeleton && ( + + {error} + + )} + + {blockingError !== undefined && ( + + + + )} + + {poolReserve.isWrappedBaseAsset && ( + {`Unwrap ${poolReserve.symbol} (to withdraw ${currentNetworkConfig.baseAssetSymbol})`} + } + /> + )} + + + } + > + Remaining supply} + value={underlyingBalance.minus(amount || '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. + + + + )} + + + + ); +}; diff --git a/src/components/transactions/Withdraw/WithdrawModal.tsx b/src/components/transactions/Withdraw/WithdrawModal.tsx index 0840f16686..7792efaa9a 100644 --- a/src/components/transactions/Withdraw/WithdrawModal.tsx +++ b/src/components/transactions/Withdraw/WithdrawModal.tsx @@ -5,13 +5,16 @@ import { ModalContextType, ModalType, useModalContext } from 'src/hooks/useModal import { BasicModal } from '../../primitives/BasicModal'; import { ModalWrapper } from '../FlowCommons/ModalWrapper'; +import { WithdrawAndSwapModalContent } from './WithdrawAndSwapModalContent'; import { WithdrawModalContent } from './WithdrawModalContent'; +import { WithdrawType, WithdrawTypeSelector } from './WithdrawTypeSelector'; export const WithdrawModal = () => { const { type, close, args } = useModalContext() as ModalContextType<{ underlyingAsset: string; }>; const [withdrawUnWrapped, setWithdrawUnWrapped] = useState(true); + const [withdrawType, setWithdrawType] = useState(WithdrawType.WITHDRAW); return ( @@ -22,11 +25,25 @@ export const WithdrawModal = () => { requiredPermission={PERMISSION.DEPOSITOR} > {(params) => ( - + <> + + {withdrawType === WithdrawType.WITHDRAW && ( + + )} + {withdrawType === WithdrawType.WITHDRAWSWAP && ( + <> + + + )} + )} diff --git a/src/components/transactions/Withdraw/WithdrawModalContent.tsx b/src/components/transactions/Withdraw/WithdrawModalContent.tsx index 3e42e36e36..134c832f58 100644 --- a/src/components/transactions/Withdraw/WithdrawModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawModalContent.tsx @@ -1,25 +1,17 @@ import { API_ETH_MOCK_ADDRESS } from '@aave/contract-helpers'; import { calculateHealthFactorFromBalancesBigUnits, valueToBigNumber } from '@aave/math-utils'; -import { SwitchVerticalIcon } from '@heroicons/react/outline'; import { Trans } from '@lingui/macro'; -import { Box, Checkbox, SvgIcon, Typography } from '@mui/material'; +import { Box, Checkbox, Typography } from '@mui/material'; import BigNumber from 'bignumber.js'; import { useRef, useState } from 'react'; -import { PriceImpactTooltip } from 'src/components/infoTooltips/PriceImpactTooltip'; import { Warning } from 'src/components/primitives/Warning'; -import { - ComputedUserReserveData, - useAppDataContext, -} from 'src/hooks/app-data-provider/useAppDataProvider'; -import { useCollateralSwap } from 'src/hooks/paraswap/useCollateralSwap'; +import { useAppDataContext } from 'src/hooks/app-data-provider/useAppDataProvider'; import { useModalContext } from 'src/hooks/useModal'; import { useProtocolDataContext } from 'src/hooks/useProtocolDataContext'; -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/mixPanelEvents'; -import { Asset, AssetInput } from '../AssetInput'; +import { AssetInput } from '../AssetInput'; import { GasEstimationError } from '../FlowCommons/GasEstimationError'; import { ModalWrapperProps } from '../FlowCommons/ModalWrapper'; import { TxSuccessView } from '../FlowCommons/Success'; @@ -31,7 +23,6 @@ import { } from '../FlowCommons/TxModalDetails'; import { zeroLTVBlockingWithdraw } from '../utils'; import { WithdrawActions } from './WithdrawActions'; -import { WithdrawType, WithdrawTypeSelector } from './WithdrawTypeSelector'; export enum ErrorType { CAN_NOT_WITHDRAW_THIS_AMOUNT, @@ -51,58 +42,17 @@ export const WithdrawModalContent = ({ setUnwrap: (unwrap: boolean) => void; }) => { const { gasLimit, mainTxState: withdrawTxState, txError } = useModalContext(); - const { currentAccount } = useWeb3Context(); - const { user, reserves } = useAppDataContext(); - const { currentNetworkConfig, currentChainId } = useProtocolDataContext(); + const { user } = useAppDataContext(); + const { currentNetworkConfig } = useProtocolDataContext(); const [_amount, setAmount] = useState(''); const [withdrawMax, setWithdrawMax] = useState(''); const [riskCheckboxAccepted, setRiskCheckboxAccepted] = useState(false); const amountRef = useRef(''); const trackEvent = useRootStore((store) => store.trackEvent); - const [maxSlippage, setMaxSlippage] = useState('0.1'); - - const swapTargets = reserves - .filter((r) => r.underlyingAsset !== poolReserve.underlyingAsset) - .map((reserve) => ({ - address: reserve.underlyingAsset, - symbol: reserve.symbol, - iconSymbol: reserve.iconSymbol, - })); - - const [targetReserve, setTargetReserve] = useState(swapTargets[0]); - const [withdrawType, setWithdrawType] = useState(WithdrawType.WITHDRAW); const isMaxSelected = _amount === '-1'; - const swapTarget = user.userReservesData.find( - (r) => r.underlyingAsset === targetReserve.address - ) as ComputedUserReserveData; - - 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, - skip: withdrawTxState.loading || false, - maxSlippage: Number(maxSlippage), - }); - - // to be used in actions, didn't delete to remember the names, will change in future. - console.log(inputAmount); - console.log(buildTxFn); - - const loadingSkeleton = routeLoading && outputAmountUSD === '0'; - // calculations const underlyingBalance = valueToBigNumber(userReserve?.underlyingBalance || '0'); const unborrowedLiquidity = valueToBigNumber(poolReserve.unborrowedLiquidity); @@ -240,11 +190,8 @@ export const WithdrawModalContent = ({ /> ); - const switchWithdraw = withdrawType === WithdrawType.WITHDRAWSWAP; - return ( <> - - {switchWithdraw && ( - <> - - - - - - - - - Switch to} - balanceText={Supply balance} - disableInput - loading={loadingSkeleton} - /> - - {error && !loadingSkeleton && ( - - {error} - - )} - - )} - {blockingError !== undefined && ( @@ -324,14 +235,7 @@ export const WithdrawModalContent = ({ /> )} - - ) - } - > + Remaining supply} value={underlyingBalance.minus(amount || '0').toString(10)} diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index 2aaed5b4d6..011690f175 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action":"Action","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw and Switch":"Withdraw and Switch","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action":"Action","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw and Switch":"Withdraw and Switch","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing and Switching":"Withdrawing and Switching","Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index a488d3f8fb..e1be81d3d9 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -347,6 +347,7 @@ msgstr "Assets to supply" #: src/components/transactions/CollateralChange/CollateralChangeModalContent.tsx #: src/components/transactions/Repay/CollateralRepayModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action" msgstr "Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action" @@ -361,6 +362,7 @@ msgstr "Author" #: src/components/transactions/Borrow/BorrowModalContent.tsx #: src/components/transactions/Borrow/GhoBorrowModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx #: src/modules/dashboard/lists/BorrowAssetsList/BorrowAssetsList.tsx #: src/modules/dashboard/lists/BorrowAssetsList/GhoBorrowAssetsListItem.tsx @@ -1150,6 +1152,7 @@ msgid "Holders of stkAAVE receive a discount on the GHO borrowing rate" msgstr "Holders of stkAAVE receive a discount on the GHO borrowing rate" #: src/components/transactions/Borrow/BorrowAmountWarning.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "I acknowledge the risks involved." msgstr "I acknowledge the risks involved." @@ -1795,6 +1798,7 @@ msgstr "Reload the page" msgid "Remaining debt" msgstr "Remaining debt" +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "Remaining supply" msgstr "Remaining supply" @@ -2164,7 +2168,8 @@ msgstr "Supply apy" #: src/components/transactions/DebtSwitch/DebtSwitchModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx #: src/modules/dashboard/lists/SuppliedPositionsList/SuppliedPositionsListMobileItem.tsx #: src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsListMobileItem.tsx @@ -2233,7 +2238,7 @@ msgstr "Switch rate" #: src/components/transactions/DebtSwitch/DebtSwitchModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx msgid "Switch to" msgstr "Switch to" @@ -2383,6 +2388,7 @@ msgstr "There was some error. Please try changing the parameters or <0><1>copy t msgid "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." msgstr "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." +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "These funds have been borrowed and are not available for withdrawal at this time." msgstr "These funds have been borrowed and are not available for withdrawal at this time." @@ -2829,6 +2835,8 @@ msgstr "With testnet Faucet you can get free assets to test the Aave Protocol. M msgid "Withdraw" msgstr "Withdraw" +#: src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx #: src/components/transactions/Withdraw/WithdrawTypeSelector.tsx msgid "Withdraw and Switch" msgstr "Withdraw and Switch" @@ -2837,6 +2845,11 @@ msgstr "Withdraw and Switch" msgid "Withdraw {symbol}" msgstr "Withdraw {symbol}" +#: src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx +msgid "Withdrawing and Switching" +msgstr "Withdrawing and Switching" + +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "Withdrawing this amount will reduce your health factor and increase risk of liquidation." msgstr "Withdrawing this amount will reduce your health factor and increase risk of liquidation." @@ -2879,6 +2892,7 @@ msgstr "You can not switch usage as collateral mode for this currency, because i msgid "You can not use this currency as collateral" msgstr "You can not use this currency as collateral" +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "You can not withdraw this amount because it will cause collateral call" msgstr "You can not withdraw this amount because it will cause collateral call" @@ -3108,6 +3122,7 @@ msgstr "tokens, please go to the" msgid "will receive" msgstr "will receive" +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "withdrew" msgstr "withdrew" diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index e26b6527ad..5b50008081 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -25,6 +25,7 @@ import { UiPoolDataProvider, UserReserveDataHumanized, V3FaucetService, + WithdrawAndSwapAdapterService, } from '@aave/contract-helpers'; import { LPBorrowParamsType, @@ -47,6 +48,7 @@ import { DebtSwitchActionProps } from 'src/components/transactions/DebtSwitch/De import { CollateralRepayActionProps } from 'src/components/transactions/Repay/CollateralRepayActions'; import { RepayActionProps } from 'src/components/transactions/Repay/RepayActions'; import { SwapActionProps } from 'src/components/transactions/Swap/SwapActions'; +import { WithdrawAndSwapActionProps } from 'src/components/transactions/Withdraw/WithdrawAndSwapActions'; import { Approval } from 'src/helpers/useTransactionHandler'; import { MarketDataType } from 'src/ui-config/marketsConfig'; import { minBaseTokenRemainingByNetwork, optimizedPath } from 'src/utils/utils'; @@ -92,6 +94,7 @@ export interface PoolSlice { claimRewards: (args: ClaimRewardsActionsProps) => Promise; // TODO: optimize types to use only neccessary properties swapCollateral: (args: SwapActionProps) => Promise; + withdrawAndSwap: (args: WithdrawAndSwapActionProps) => PopulatedTransaction; repay: (args: RepayActionProps) => Promise; repayWithPermit: ( args: RepayActionProps & { @@ -628,6 +631,56 @@ export const createPoolSlice: StateCreator< permitSignature, }); }, + withdrawAndSwap: async ({ + poolReserve, + targetReserve, + isMaxSelected, + amountToSwap, + amountToReceive, + augustus, + signatureParams, + txCalldata, + }) => { + const user = get().account; + + const provider = get().jsonRpcProvider(); + const currentMarketData = get().currentMarketData; + + const withdrawAndSwapService = new WithdrawAndSwapAdapterService( + provider, + currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER + ); + + let signatureDeconstruct: PermitSignature = { + amount: signatureParams?.amount ?? '0', + deadline: signatureParams?.deadline?.toString() ?? '0', + v: 0, + r: '0x0000000000000000000000000000000000000000000000000000000000000000', + s: '0x0000000000000000000000000000000000000000000000000000000000000000', + }; + + if (signatureParams) { + const sig: Signature = splitSignature(signatureParams.signature); + signatureDeconstruct = { + ...signatureDeconstruct, + v: sig.v, + r: sig.r, + s: sig.s, + }; + } + + return withdrawAndSwapService.withdrawAndSwap({ + assetToSwapFrom: poolReserve.underlyingAsset, + assetToSwapTo: targetReserve.underlyingAsset, + swapAll: isMaxSelected, + amountToSwap: amountToSwap, + minAmountToReceive: amountToReceive, + user, + augustus, + swapCallData: txCalldata, + permitParams: signatureDeconstruct, + }); + }, setUserEMode: async (categoryId) => { const pool = getCorrectPool() as Pool; const user = get().account; diff --git a/src/ui-config/marketsConfig.tsx b/src/ui-config/marketsConfig.tsx index a2a02c3006..7267acfb66 100644 --- a/src/ui-config/marketsConfig.tsx +++ b/src/ui-config/marketsConfig.tsx @@ -55,6 +55,7 @@ export type MarketDataType = { SWAP_COLLATERAL_ADAPTER?: string; REPAY_WITH_COLLATERAL_ADAPTER?: string; DEBT_SWITCH_ADAPTER?: string; + WITHDRAW_AND_SWAP_ADAPTER?: string; FAUCET?: string; PERMISSION_MANAGER?: string; WALLET_BALANCE_PROVIDER: string; @@ -136,6 +137,7 @@ export const marketsData: { COLLECTOR: AaveV3Ethereum.COLLECTOR, GHO_TOKEN_ADDRESS: AaveV3Ethereum.GHO_TOKEN, GHO_UI_DATA_PROVIDER: AaveV3Ethereum.UI_GHO_DATA_PROVIDER, + WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647aDE75cb48afcDC3D0be9Db9AA663711f', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', diff --git a/yarn.lock b/yarn.lock index b9e147086b..dd848bc65f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@aave/contract-helpers@1.18.2": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.18.2.tgz#1c614ae9498f2bb30fa09932d364dbf3548f7e39" - integrity sha512-xzVUkOEyLJl/UmztJyGoHVtjnkc3+0eZc3fvpncvfl6QLK+JLFGFNCPaXdLCaBzh1FXZX8m/pSprMZteCIWs4g== +"@aave/contract-helpers@1.18.3-8d53fd85c8d5907980477bcf3a47b0e68f65ac36.0": + version "1.18.3-8d53fd85c8d5907980477bcf3a47b0e68f65ac36.0" + resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.18.3-8d53fd85c8d5907980477bcf3a47b0e68f65ac36.0.tgz#2f6fe27aa00d2190d82369918a9f1132526f7e7f" + integrity sha512-JAYDDlDHO00ljt7swRFvGItQaz054/OQs4g7uInZJPm1O+iqp89pZx67CF/ThNe1gt2OAGdhPDheh/IJU3XFpQ== dependencies: isomorphic-unfetch "^3.1.0" From 595af704f9f97499ee81c67c975c44a013ab3ca8 Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Wed, 16 Aug 2023 04:17:24 +0100 Subject: [PATCH 04/24] feat: small ux fixes to withdraw and swap --- package.json | 2 +- .../Withdraw/WithdrawAndSwapActions.tsx | 23 ++++++++---- .../Withdraw/WithdrawAndSwapModalContent.tsx | 35 ++++--------------- .../transactions/Withdraw/WithdrawModal.tsx | 24 +++++++++---- src/store/poolSlice.ts | 25 +++++++++++++ src/ui-config/marketsConfig.tsx | 4 ++- src/utils/marketsAndNetworksConfig.ts | 1 + yarn.lock | 8 ++--- 8 files changed, 73 insertions(+), 49 deletions(-) diff --git a/package.json b/package.json index 245cdbdb4f..c1e410fbd2 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "test:coverage": "jest --coverage" }, "dependencies": { - "@aave/contract-helpers": "1.18.3-8d53fd85c8d5907980477bcf3a47b0e68f65ac36.0", + "@aave/contract-helpers": "1.18.3-c675ef5b4dc014124c8a23388b69d4affda5dcc1.0", "@aave/math-utils": "1.18.2", "@bgd-labs/aave-address-book": "^1.29.0", "@emotion/cache": "11.10.3", diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx index f9e2e3de8f..48e094ad24 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx @@ -1,4 +1,4 @@ -import { ERC20Service } from '@aave/contract-helpers'; +import { ERC20Service, gasLimitRecommendations, ProtocolAction } from '@aave/contract-helpers'; import { SignatureLike } from '@ethersproject/bytes'; import { Trans } from '@lingui/macro'; import { BoxProps } from '@mui/material'; @@ -14,6 +14,7 @@ import { ApprovalMethod } from 'src/store/walletSlice'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; import { TxActionsWrapper } from '../TxActionsWrapper'; +import { APPROVAL_GAS_LIMIT } from '../utils'; interface WithdrawAndSwapProps extends BoxProps { amountToSwap: string; @@ -45,7 +46,6 @@ interface SignedParams { export const WithdrawAndSwapActions = ({ amountToSwap, - amountToReceive, isWrongNetwork, sx, poolReserve, @@ -85,9 +85,6 @@ export const WithdrawAndSwapActions = ({ setApprovalTxState, } = useModalContext(); - console.log(setGasLimit); - console.log(amountToReceive); - const { sendTx, signTxData } = useWeb3Context(); const [approvedAmount, setApprovedAmount] = useState(0); @@ -107,12 +104,13 @@ export const WithdrawAndSwapActions = ({ poolReserve, targetReserve, isMaxSelected, - amountToSwap: parseUnits(route.inputAmount, targetReserve.decimals).toString(), - amountToReceive: parseUnits(route.outputAmount, poolReserve.decimals).toString(), + amountToSwap: parseUnits(route.inputAmount, poolReserve.decimals).toString(), + amountToReceive: parseUnits(route.outputAmount, targetReserve.decimals).toString(), augustus: route.augustus, txCalldata: route.swapCallData, signatureParams, }); + console.log(tx); const txDataWithGasEstimation = await estimateGasLimit(tx); const response = await sendTx(txDataWithGasEstimation); setMainTxState({ @@ -121,6 +119,7 @@ export const WithdrawAndSwapActions = ({ success: true, }); } catch (error) { + console.log(error); const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); setTxError(parsedError); setMainTxState({ @@ -145,6 +144,7 @@ export const WithdrawAndSwapActions = ({ ...approvalData, deadline, }); + setApprovalTxState({ ...approvalTxState, loading: true }); const response = await signTxData(signatureRequest); setSignatureParams({ signature: response, deadline, amount: amountToApprove }); setApprovalTxState({ @@ -203,6 +203,15 @@ export const WithdrawAndSwapActions = ({ fetchApprovedAmount(poolReserve.aTokenAddress); }, [fetchApprovedAmount, poolReserve.aTokenAddress]); + useEffect(() => { + let switchGasLimit = 0; + switchGasLimit = Number(gasLimitRecommendations[ProtocolAction.withdrawAndSwap].recommended); + if (requiresApproval && !approvalTxState.success) { + switchGasLimit += Number(APPROVAL_GAS_LIMIT); + } + setGasLimit(switchGasLimit.toString()); + }, [requiresApproval, approvalTxState, setGasLimit]); + return ( void; -}) => { +}: ModalWrapperProps) => { const { gasLimit, mainTxState: withdrawTxState, txError } = useModalContext(); const { currentAccount } = useWeb3Context(); const { user, reserves } = useAppDataContext(); @@ -222,9 +212,7 @@ export const WithdrawAndSwapModalContent = ({ action={withdrew} amount={amountRef.current} symbol={ - withdrawUnWrapped && poolReserve.isWrappedBaseAsset - ? currentNetworkConfig.baseAssetSymbol - : poolReserve.symbol + poolReserve.isWrappedBaseAsset ? currentNetworkConfig.baseAssetSymbol : poolReserve.symbol } /> ); @@ -239,10 +227,9 @@ export const WithdrawAndSwapModalContent = ({ { balance: maxAmountToWithdraw.toString(10), symbol: symbol, - iconSymbol: - withdrawUnWrapped && poolReserve.isWrappedBaseAsset - ? currentNetworkConfig.baseAssetSymbol - : poolReserve.iconSymbol, + iconSymbol: poolReserve.isWrappedBaseAsset + ? currentNetworkConfig.baseAssetSymbol + : poolReserve.iconSymbol, }, ]} usdValue={usdValue.toString(10)} @@ -294,16 +281,6 @@ export const WithdrawAndSwapModalContent = ({ )} - {poolReserve.isWrappedBaseAsset && ( - {`Unwrap ${poolReserve.symbol} (to withdraw ${currentNetworkConfig.baseAssetSymbol})`} - } - /> - )} - { - const { type, close, args } = useModalContext() as ModalContextType<{ + const { type, close, args, mainTxState } = useModalContext() as ModalContextType<{ underlyingAsset: string; }>; const [withdrawUnWrapped, setWithdrawUnWrapped] = useState(true); const [withdrawType, setWithdrawType] = useState(WithdrawType.WITHDRAW); + const { currentMarketData } = useProtocolDataContext(); + const { reserves } = useAppDataContext(); + + const ghoReserve = getGhoReserve(reserves); + + const isWithdrawAndSwapPossible = + isFeatureEnabled.withdrawAndSwap(currentMarketData) && + args.underlyingAsset !== ghoReserve?.underlyingAsset; return ( @@ -26,7 +38,9 @@ export const WithdrawModal = () => { > {(params) => ( <> - + {isWithdrawAndSwapPossible && !mainTxState.txHash && ( + + )} {withdrawType === WithdrawType.WITHDRAW && ( { )} {withdrawType === WithdrawType.WITHDRAWSWAP && ( <> - + )} diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index 5b50008081..8ac3a9cf00 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -616,6 +616,19 @@ export const createPoolSlice: StateCreator< s: sig.s, }; } + console.log({ + 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, @@ -669,6 +682,18 @@ export const createPoolSlice: StateCreator< }; } + console.log({ + assetToSwapFrom: poolReserve.underlyingAsset, + assetToSwapTo: targetReserve.underlyingAsset, + swapAll: isMaxSelected, + amountToSwap: amountToSwap, + minAmountToReceive: amountToReceive, + user, + augustus, + swapCallData: txCalldata, + permitParams: signatureDeconstruct, + }); + return withdrawAndSwapService.withdrawAndSwap({ assetToSwapFrom: poolReserve.underlyingAsset, assetToSwapTo: targetReserve.underlyingAsset, diff --git a/src/ui-config/marketsConfig.tsx b/src/ui-config/marketsConfig.tsx index 7267acfb66..b4418f0f4b 100644 --- a/src/ui-config/marketsConfig.tsx +++ b/src/ui-config/marketsConfig.tsx @@ -43,6 +43,7 @@ export type MarketDataType = { incentives?: boolean; permissions?: boolean; debtSwitch?: boolean; + withdrawAndSwap?: boolean; }; isFork?: boolean; permissionComponent?: ReactNode; @@ -123,6 +124,7 @@ export const marketsData: { collateralRepay: true, incentives: true, debtSwitch: false, + withdrawAndSwap: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3', addresses: { @@ -137,7 +139,7 @@ export const marketsData: { COLLECTOR: AaveV3Ethereum.COLLECTOR, GHO_TOKEN_ADDRESS: AaveV3Ethereum.GHO_TOKEN, GHO_UI_DATA_PROVIDER: AaveV3Ethereum.UI_GHO_DATA_PROVIDER, - WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647aDE75cb48afcDC3D0be9Db9AA663711f', + WITHDRAW_AND_SWAP_ADAPTER: '0xd5d2e138531fef36288ff9448c6890ff67f651eb', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', diff --git a/src/utils/marketsAndNetworksConfig.ts b/src/utils/marketsAndNetworksConfig.ts index 82783a2af9..937023920f 100644 --- a/src/utils/marketsAndNetworksConfig.ts +++ b/src/utils/marketsAndNetworksConfig.ts @@ -155,6 +155,7 @@ export const isFeatureEnabled = { collateralRepay: (data: MarketDataType) => data.enabledFeatures?.collateralRepay, permissions: (data: MarketDataType) => data.enabledFeatures?.permissions, debtSwitch: (data: MarketDataType) => data.enabledFeatures?.debtSwitch, + withdrawAndSwap: (data: MarketDataType) => data.enabledFeatures?.withdrawAndSwap, }; const providers: { [network: string]: ethersProviders.Provider } = {}; diff --git a/yarn.lock b/yarn.lock index dd848bc65f..f0ff6ec0a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@aave/contract-helpers@1.18.3-8d53fd85c8d5907980477bcf3a47b0e68f65ac36.0": - version "1.18.3-8d53fd85c8d5907980477bcf3a47b0e68f65ac36.0" - resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.18.3-8d53fd85c8d5907980477bcf3a47b0e68f65ac36.0.tgz#2f6fe27aa00d2190d82369918a9f1132526f7e7f" - integrity sha512-JAYDDlDHO00ljt7swRFvGItQaz054/OQs4g7uInZJPm1O+iqp89pZx67CF/ThNe1gt2OAGdhPDheh/IJU3XFpQ== +"@aave/contract-helpers@1.18.3-c675ef5b4dc014124c8a23388b69d4affda5dcc1.0": + version "1.18.3-c675ef5b4dc014124c8a23388b69d4affda5dcc1.0" + resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.18.3-c675ef5b4dc014124c8a23388b69d4affda5dcc1.0.tgz#bdf873723015632676443d0f7c96ac53c6a736c4" + integrity sha512-sA9GELzKwlkh/N2vrMwSNO8ZTy6851BIw3yYGEG5+a5MPiun2ZbHxI+dcpcLhDQLAOwTDyozwsr7HaesdVBobg== dependencies: isomorphic-unfetch "^3.1.0" From 52056720cee63e99c8ec7cbfe8b3ad254b2522db Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Wed, 16 Aug 2023 14:09:02 +0100 Subject: [PATCH 05/24] chore: deleted some not used console log --- src/store/poolSlice.ts | 25 ------------------------- src/ui-config/marketsConfig.tsx | 1 - 2 files changed, 26 deletions(-) diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index 8ac3a9cf00..5b50008081 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -616,19 +616,6 @@ export const createPoolSlice: StateCreator< s: sig.s, }; } - console.log({ - 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, @@ -682,18 +669,6 @@ export const createPoolSlice: StateCreator< }; } - console.log({ - assetToSwapFrom: poolReserve.underlyingAsset, - assetToSwapTo: targetReserve.underlyingAsset, - swapAll: isMaxSelected, - amountToSwap: amountToSwap, - minAmountToReceive: amountToReceive, - user, - augustus, - swapCallData: txCalldata, - permitParams: signatureDeconstruct, - }); - return withdrawAndSwapService.withdrawAndSwap({ assetToSwapFrom: poolReserve.underlyingAsset, assetToSwapTo: targetReserve.underlyingAsset, diff --git a/src/ui-config/marketsConfig.tsx b/src/ui-config/marketsConfig.tsx index 96317ae962..6cd65278d6 100644 --- a/src/ui-config/marketsConfig.tsx +++ b/src/ui-config/marketsConfig.tsx @@ -123,7 +123,6 @@ export const marketsData: { liquiditySwap: true, collateralRepay: true, incentives: true, - debtSwitch: false, withdrawAndSwap: true, debtSwitch: true, }, From ad140bc13e007cd68dba8660f0c0b410fc3a0e8f Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Wed, 16 Aug 2023 14:34:46 +0100 Subject: [PATCH 06/24] feat: deleted async from withdraw and swap --- src/store/poolSlice.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index 5b50008081..344b9195e6 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -631,7 +631,7 @@ export const createPoolSlice: StateCreator< permitSignature, }); }, - withdrawAndSwap: async ({ + withdrawAndSwap: ({ poolReserve, targetReserve, isMaxSelected, From e6ee3c6cf80b5f99932dd4a30171045aba97c81b Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Wed, 16 Aug 2023 15:43:57 +0100 Subject: [PATCH 07/24] feat: ux reviews --- .../Withdraw/WithdrawAndSwapModalContent.tsx | 11 +++++++---- .../transactions/Withdraw/WithdrawTypeSelector.tsx | 6 +----- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 12 ++++++------ 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx index c33c5e4b13..e7bc637cda 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx @@ -1,5 +1,5 @@ import { calculateHealthFactorFromBalancesBigUnits, valueToBigNumber } from '@aave/math-utils'; -import { SwitchVerticalIcon } from '@heroicons/react/outline'; +import { ArrowDownIcon } from '@heroicons/react/solid'; import { Trans } from '@lingui/macro'; import { Box, Checkbox, SvgIcon, Typography } from '@mui/material'; import BigNumber from 'bignumber.js'; @@ -57,7 +57,9 @@ export const WithdrawAndSwapModalContent = ({ iconSymbol: reserve.iconSymbol, })); - const [targetReserve, setTargetReserve] = useState(swapTargets[0]); + const [targetReserve, setTargetReserve] = useState( + swapTargets.find((reserve) => reserve.symbol === 'GHO') || reserves[0] + ); const isMaxSelected = _amount === '-1'; @@ -220,6 +222,7 @@ export const WithdrawAndSwapModalContent = ({ return ( <> Withdraw} value={amount} onChange={handleChange} symbol={symbol} @@ -247,7 +250,7 @@ export const WithdrawAndSwapModalContent = ({ - + Switch to} + inputTitle={Received} balanceText={Supply balance} disableInput loading={loadingSkeleton} diff --git a/src/components/transactions/Withdraw/WithdrawTypeSelector.tsx b/src/components/transactions/Withdraw/WithdrawTypeSelector.tsx index 2712a4d390..b033a14fb0 100644 --- a/src/components/transactions/Withdraw/WithdrawTypeSelector.tsx +++ b/src/components/transactions/Withdraw/WithdrawTypeSelector.tsx @@ -23,10 +23,6 @@ export function WithdrawTypeSelector({ if (!currentMarketData.enabledFeatures?.collateralRepay) return null; return ( - - Action - - - Withdraw and Switch + Withdraw & Switch diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index 6d962dfff5..e6d4292c3e 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action":"Action","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY":"Borrow APY","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Fixed":"Fixed","Fixed rate":"Fixed rate","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Variable rate":"Variable rate","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw and Switch":"Withdraw and Switch","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing and Switching":"Withdrawing and Switching","Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY":"Borrow APY","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Fixed":"Fixed","Fixed rate":"Fixed rate","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Variable rate":"Variable rate","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw & Switch":"Withdraw & Switch","Withdraw and Switch":"Withdraw and Switch","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing and Switching":"Withdrawing and Switching","Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index 04f893936a..695d0fd220 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -142,10 +142,6 @@ msgstr "About GHO" msgid "Account" msgstr "Account" -#: src/components/transactions/Withdraw/WithdrawTypeSelector.tsx -msgid "Action" -msgstr "Action" - #: src/ui-config/errorMapping.tsx msgid "Action cannot be performed because the reserve is frozen" msgstr "Action cannot be performed because the reserve is frozen" @@ -1787,6 +1783,7 @@ msgid "Read-only mode. Connect to a wallet to perform transactions." msgstr "Read-only mode. Connect to a wallet to perform transactions." #: src/components/transactions/Faucet/FaucetModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx msgid "Received" msgstr "Received" @@ -2252,7 +2249,6 @@ msgstr "Switch rate" #: src/components/transactions/DebtSwitch/DebtSwitchModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx msgid "Switch to" msgstr "Switch to" @@ -2844,6 +2840,7 @@ msgstr "With a voting power of <0/>" msgid "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" msgstr "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" +#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModal.tsx #: src/components/transactions/Withdraw/WithdrawTypeSelector.tsx #: src/modules/dashboard/lists/SuppliedPositionsList/SuppliedPositionsListItem.tsx @@ -2853,9 +2850,12 @@ msgstr "With testnet Faucet you can get free assets to test the Aave Protocol. M msgid "Withdraw" msgstr "Withdraw" +#: src/components/transactions/Withdraw/WithdrawTypeSelector.tsx +msgid "Withdraw & Switch" +msgstr "Withdraw & Switch" + #: src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx #: src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx -#: src/components/transactions/Withdraw/WithdrawTypeSelector.tsx msgid "Withdraw and Switch" msgstr "Withdraw and Switch" From 825a2848be2f70ea84add7192deaf1dc962d80cd Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Wed, 16 Aug 2023 15:48:54 +0100 Subject: [PATCH 08/24] feat: change receive label --- .../transactions/Withdraw/WithdrawAndSwapModalContent.tsx | 2 +- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx index e7bc637cda..d124b656b3 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx @@ -266,7 +266,7 @@ export const WithdrawAndSwapModalContent = ({ usdValue={outputAmountUSD} symbol={targetReserve.symbol} assets={swapTargets} - inputTitle={Received} + inputTitle={Receive (est.)} balanceText={Supply balance} disableInput loading={loadingSkeleton} diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index e6d4292c3e..b4b2733877 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY":"Borrow APY","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Fixed":"Fixed","Fixed rate":"Fixed rate","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Variable rate":"Variable rate","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw & Switch":"Withdraw & Switch","Withdraw and Switch":"Withdraw and Switch","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing and Switching":"Withdrawing and Switching","Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY":"Borrow APY","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Fixed":"Fixed","Fixed rate":"Fixed rate","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Receive (est.)":"Receive (est.)","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Variable rate":"Variable rate","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw & Switch":"Withdraw & Switch","Withdraw and Switch":"Withdraw and Switch","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing and Switching":"Withdrawing and Switching","Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index 695d0fd220..b9f2f63dce 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -1782,8 +1782,11 @@ msgstr "Read-only mode." msgid "Read-only mode. Connect to a wallet to perform transactions." msgstr "Read-only mode. Connect to a wallet to perform transactions." -#: src/components/transactions/Faucet/FaucetModalContent.tsx #: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +msgid "Receive (est.)" +msgstr "Receive (est.)" + +#: src/components/transactions/Faucet/FaucetModalContent.tsx msgid "Received" msgstr "Received" From a096d5800fdbf452bdce56034661e31607b2122d Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Wed, 16 Aug 2023 14:23:59 -0500 Subject: [PATCH 09/24] fix: only set max selected if the underlying balance equals max amount --- .../transactions/Withdraw/WithdrawAndSwapModalContent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx index d124b656b3..d07e2451cc 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx @@ -350,7 +350,7 @@ export const WithdrawAndSwapModalContent = ({ targetReserve={swapTarget.reserve} amountToSwap={inputAmount} amountToReceive={outputAmount} - isMaxSelected={isMaxSelected} + isMaxSelected={isMaxSelected && maxAmountToWithdraw.eq(underlyingBalance)} isWrongNetwork={isWrongNetwork} blocked={blockingError !== undefined || (displayRiskCheckbox && !riskCheckboxAccepted)} buildTxFn={buildTxFn} From d37c037ed293a6c7d15464d322646aa4d5170362 Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Wed, 16 Aug 2023 14:27:32 -0500 Subject: [PATCH 10/24] fix: show gho at top of list --- .../transactions/Withdraw/WithdrawAndSwapModalContent.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx index d07e2451cc..87688be58b 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx @@ -49,7 +49,7 @@ export const WithdrawAndSwapModalContent = ({ const trackEvent = useRootStore((store) => store.trackEvent); const [maxSlippage, setMaxSlippage] = useState('0.1'); - const swapTargets = reserves + let swapTargets = reserves .filter((r) => r.underlyingAsset !== poolReserve.underlyingAsset) .map((reserve) => ({ address: reserve.underlyingAsset, @@ -57,6 +57,11 @@ export const WithdrawAndSwapModalContent = ({ iconSymbol: reserve.iconSymbol, })); + swapTargets = [ + ...swapTargets.filter((r) => r.symbol === 'GHO'), + ...swapTargets.filter((r) => r.symbol !== 'GHO'), + ]; + const [targetReserve, setTargetReserve] = useState( swapTargets.find((reserve) => reserve.symbol === 'GHO') || reserves[0] ); From af5ad9099d6545455b472009ef2d33b4f03e5ddb Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Mon, 21 Aug 2023 07:22:07 -0500 Subject: [PATCH 11/24] refactor: pulled out shared logic in withdraw modals (#1745) * refactor: pulled out shared logic in withdraw modals * fix: error component --- .../Withdraw/WithdrawAndSwapModalContent.tsx | 139 ++++-------------- .../transactions/Withdraw/WithdrawError.tsx | 72 +++++++++ .../Withdraw/WithdrawModalContent.tsx | 130 ++++------------ src/components/transactions/Withdraw/utils.ts | 41 ++++++ src/locales/en/messages.po | 9 +- src/ui-config/marketsConfig.tsx | 2 +- src/utils/hfUtils.ts | 53 +++++++ 7 files changed, 224 insertions(+), 222 deletions(-) create mode 100644 src/components/transactions/Withdraw/WithdrawError.tsx create mode 100644 src/components/transactions/Withdraw/utils.ts diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx index 87688be58b..cd498c8f8e 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx @@ -1,8 +1,7 @@ -import { calculateHealthFactorFromBalancesBigUnits, valueToBigNumber } from '@aave/math-utils'; +import { valueToBigNumber } from '@aave/math-utils'; import { ArrowDownIcon } from '@heroicons/react/solid'; import { Trans } from '@lingui/macro'; import { Box, Checkbox, SvgIcon, Typography } from '@mui/material'; -import BigNumber from 'bignumber.js'; import { useRef, useState } from 'react'; import { PriceImpactTooltip } from 'src/components/infoTooltips/PriceImpactTooltip'; import { Warning } from 'src/components/primitives/Warning'; @@ -16,6 +15,7 @@ import { useProtocolDataContext } from 'src/hooks/useProtocolDataContext'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { ListSlippageButton } from 'src/modules/dashboard/lists/SlippageList'; import { useRootStore } from 'src/store/root'; +import { calculateHFAfterWithdraw } from 'src/utils/hfUtils'; import { GENERAL } from 'src/utils/mixPanelEvents'; import { Asset, AssetInput } from '../AssetInput'; @@ -24,7 +24,9 @@ import { ModalWrapperProps } from '../FlowCommons/ModalWrapper'; import { TxSuccessView } from '../FlowCommons/Success'; import { DetailsHFLine, DetailsNumberLine, TxModalDetails } from '../FlowCommons/TxModalDetails'; import { zeroLTVBlockingWithdraw } from '../utils'; +import { calculateMaxWithdrawAmount } from './utils'; import { WithdrawAndSwapActions } from './WithdrawAndSwapActions'; +import { useWithdrawError } from './WithdrawError'; export enum ErrorType { CAN_NOT_WITHDRAW_THIS_AMOUNT, @@ -62,9 +64,7 @@ export const WithdrawAndSwapModalContent = ({ ...swapTargets.filter((r) => r.symbol !== 'GHO'), ]; - const [targetReserve, setTargetReserve] = useState( - swapTargets.find((reserve) => reserve.symbol === 'GHO') || reserves[0] - ); + const [targetReserve, setTargetReserve] = useState(swapTargets[0]); const isMaxSelected = _amount === '-1'; @@ -91,35 +91,27 @@ export const WithdrawAndSwapModalContent = ({ }); const loadingSkeleton = routeLoading && outputAmountUSD === '0'; - - // calculations const underlyingBalance = valueToBigNumber(userReserve?.underlyingBalance || '0'); const unborrowedLiquidity = valueToBigNumber(poolReserve.unborrowedLiquidity); - let maxAmountToWithdraw = BigNumber.min(underlyingBalance, unborrowedLiquidity); - let maxCollateralToWithdrawInETH = valueToBigNumber('0'); - const reserveLiquidationThreshold = - user.isInEmode && user.userEmodeCategoryId === poolReserve.eModeCategoryId - ? poolReserve.formattedEModeLiquidationThreshold - : poolReserve.formattedReserveLiquidationThreshold; - if ( - userReserve?.usageAsCollateralEnabledOnUser && - poolReserve.reserveLiquidationThreshold !== '0' && - user.totalBorrowsMarketReferenceCurrency !== '0' - ) { - // if we have any borrowings we should check how much we can withdraw to a minimum HF of 1.01 - const excessHF = valueToBigNumber(user.healthFactor).minus('1.01'); - if (excessHF.gt('0')) { - maxCollateralToWithdrawInETH = excessHF - .multipliedBy(user.totalBorrowsMarketReferenceCurrency) - .div(reserveLiquidationThreshold); - } - maxAmountToWithdraw = BigNumber.min( - maxAmountToWithdraw, - maxCollateralToWithdrawInETH.dividedBy(poolReserve.formattedPriceInMarketReferenceCurrency) - ); - } + const maxAmountToWithdraw = calculateMaxWithdrawAmount(user, userReserve, poolReserve); + + const assetsBlockingWithdraw: string[] = zeroLTVBlockingWithdraw(user); - const amount = isMaxSelected ? maxAmountToWithdraw.toString(10) : _amount; + const withdrawAmount = isMaxSelected ? maxAmountToWithdraw.toString(10) : _amount; + + const healthFactorAfterWithdraw = calculateHFAfterWithdraw({ + user, + userReserve, + poolReserve, + withdrawAmount, + }); + + const { blockingError, errorComponent } = useWithdrawError({ + assetsBlockingWithdraw, + poolReserve, + healthFactorAfterWithdraw, + withdrawAmount, + }); const handleChange = (value: string) => { const maxSelected = value === '-1'; @@ -130,88 +122,15 @@ export const WithdrawAndSwapModalContent = ({ } }; - // health factor calculations - let totalCollateralInETHAfterWithdraw = valueToBigNumber( - user.totalCollateralMarketReferenceCurrency - ); - let liquidationThresholdAfterWithdraw = user.currentLiquidationThreshold; - let healthFactorAfterWithdraw = valueToBigNumber(user.healthFactor); - - const assetsBlockingWithdraw: string[] = zeroLTVBlockingWithdraw(user); - - if ( - userReserve?.usageAsCollateralEnabledOnUser && - poolReserve.reserveLiquidationThreshold !== '0' - ) { - const amountToWithdrawInEth = valueToBigNumber(amount).multipliedBy( - poolReserve.formattedPriceInMarketReferenceCurrency - ); - totalCollateralInETHAfterWithdraw = - totalCollateralInETHAfterWithdraw.minus(amountToWithdrawInEth); - - liquidationThresholdAfterWithdraw = valueToBigNumber( - user.totalCollateralMarketReferenceCurrency - ) - .multipliedBy(valueToBigNumber(user.currentLiquidationThreshold)) - .minus(valueToBigNumber(amountToWithdrawInEth).multipliedBy(reserveLiquidationThreshold)) - .div(totalCollateralInETHAfterWithdraw) - .toFixed(4, BigNumber.ROUND_DOWN); - - healthFactorAfterWithdraw = calculateHealthFactorFromBalancesBigUnits({ - collateralBalanceMarketReferenceCurrency: totalCollateralInETHAfterWithdraw, - borrowBalanceMarketReferenceCurrency: user.totalBorrowsMarketReferenceCurrency, - currentLiquidationThreshold: liquidationThresholdAfterWithdraw, - }); - } const displayRiskCheckbox = healthFactorAfterWithdraw.toNumber() >= 1 && healthFactorAfterWithdraw.toNumber() < 1.5 && userReserve.usageAsCollateralEnabledOnUser; - let blockingError: ErrorType | undefined = undefined; - if (!withdrawTxState.success && !withdrawTxState.txHash) { - if (assetsBlockingWithdraw.length > 0 && !assetsBlockingWithdraw.includes(poolReserve.symbol)) { - blockingError = ErrorType.ZERO_LTV_WITHDRAW_BLOCKED; - } else if ( - healthFactorAfterWithdraw.lt('1') && - user.totalBorrowsMarketReferenceCurrency !== '0' - ) { - blockingError = ErrorType.CAN_NOT_WITHDRAW_THIS_AMOUNT; - } else if ( - !blockingError && - (unborrowedLiquidity.eq('0') || valueToBigNumber(amount).gt(poolReserve.unborrowedLiquidity)) - ) { - blockingError = ErrorType.POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY; - } - } - - // error render handling - const BlockingError: React.FC = () => { - switch (blockingError) { - case ErrorType.CAN_NOT_WITHDRAW_THIS_AMOUNT: - return ( - You can not withdraw this amount because it will cause collateral call - ); - case ErrorType.POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY: - return ( - - These funds have been borrowed and are not available for withdrawal at this time. - - ); - case ErrorType.ZERO_LTV_WITHDRAW_BLOCKED: - return ( - - Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as - collateral to perform this action - - ); - default: - return null; - } - }; - // calculating input usd value - const usdValue = valueToBigNumber(amount).multipliedBy(userReserve?.reserve.priceInUSD || 0); + const usdValue = valueToBigNumber(withdrawAmount).multipliedBy( + userReserve?.reserve.priceInUSD || 0 + ); if (withdrawTxState.success) return ( @@ -228,7 +147,7 @@ export const WithdrawAndSwapModalContent = ({ <> Withdraw} - value={amount} + value={withdrawAmount} onChange={handleChange} symbol={symbol} assets={[ @@ -285,7 +204,7 @@ export const WithdrawAndSwapModalContent = ({ {blockingError !== undefined && ( - + {errorComponent} )} @@ -297,7 +216,7 @@ export const WithdrawAndSwapModalContent = ({ > Remaining supply} - value={underlyingBalance.minus(amount || '0').toString(10)} + value={underlyingBalance.minus(withdrawAmount || '0').toString(10)} symbol={ poolReserve.isWrappedBaseAsset ? currentNetworkConfig.baseAssetSymbol diff --git a/src/components/transactions/Withdraw/WithdrawError.tsx b/src/components/transactions/Withdraw/WithdrawError.tsx new file mode 100644 index 0000000000..fee9738764 --- /dev/null +++ b/src/components/transactions/Withdraw/WithdrawError.tsx @@ -0,0 +1,72 @@ +import { valueToBigNumber } from '@aave/math-utils'; +import { Trans } from '@lingui/macro'; +import BigNumber from 'bignumber.js'; +import { + ComputedReserveData, + useAppDataContext, +} from 'src/hooks/app-data-provider/useAppDataProvider'; +import { useModalContext } from 'src/hooks/useModal'; + +enum ErrorType { + CAN_NOT_WITHDRAW_THIS_AMOUNT, + POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY, + ZERO_LTV_WITHDRAW_BLOCKED, +} + +interface WithdrawErrorProps { + assetsBlockingWithdraw: string[]; + poolReserve: ComputedReserveData; + healthFactorAfterWithdraw: BigNumber; + withdrawAmount: string; +} +export const useWithdrawError = ({ + assetsBlockingWithdraw, + poolReserve, + healthFactorAfterWithdraw, + withdrawAmount, +}: WithdrawErrorProps) => { + const { mainTxState: withdrawTxState } = useModalContext(); + const { user } = useAppDataContext(); + + let blockingError: ErrorType | undefined = undefined; + const unborrowedLiquidity = valueToBigNumber(poolReserve.unborrowedLiquidity); + + if (!withdrawTxState.success && !withdrawTxState.txHash) { + if (assetsBlockingWithdraw.length > 0 && !assetsBlockingWithdraw.includes(poolReserve.symbol)) { + blockingError = ErrorType.ZERO_LTV_WITHDRAW_BLOCKED; + } else if ( + healthFactorAfterWithdraw.lt('1') && + user.totalBorrowsMarketReferenceCurrency !== '0' + ) { + blockingError = ErrorType.CAN_NOT_WITHDRAW_THIS_AMOUNT; + } else if ( + !blockingError && + (unborrowedLiquidity.eq('0') || + valueToBigNumber(withdrawAmount).gt(poolReserve.unborrowedLiquidity)) + ) { + blockingError = ErrorType.POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY; + } + } + + const errors = { + [ErrorType.CAN_NOT_WITHDRAW_THIS_AMOUNT]: ( + You can not withdraw this amount because it will cause collateral call + ), + [ErrorType.POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY]: ( + + These funds have been borrowed and are not available for withdrawal at this time. + + ), + [ErrorType.ZERO_LTV_WITHDRAW_BLOCKED]: ( + + Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral + to perform this action + + ), + }; + + return { + blockingError, + errorComponent: blockingError ? errors[blockingError] : null, + }; +}; diff --git a/src/components/transactions/Withdraw/WithdrawModalContent.tsx b/src/components/transactions/Withdraw/WithdrawModalContent.tsx index 134c832f58..c582190115 100644 --- a/src/components/transactions/Withdraw/WithdrawModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawModalContent.tsx @@ -1,14 +1,14 @@ import { API_ETH_MOCK_ADDRESS } from '@aave/contract-helpers'; -import { calculateHealthFactorFromBalancesBigUnits, valueToBigNumber } from '@aave/math-utils'; +import { valueToBigNumber } from '@aave/math-utils'; import { Trans } from '@lingui/macro'; import { Box, Checkbox, Typography } from '@mui/material'; -import BigNumber from 'bignumber.js'; import { useRef, useState } from 'react'; import { Warning } from 'src/components/primitives/Warning'; import { useAppDataContext } from 'src/hooks/app-data-provider/useAppDataProvider'; import { useModalContext } from 'src/hooks/useModal'; import { useProtocolDataContext } from 'src/hooks/useProtocolDataContext'; import { useRootStore } from 'src/store/root'; +import { calculateHFAfterWithdraw } from 'src/utils/hfUtils'; import { GENERAL } from 'src/utils/mixPanelEvents'; import { AssetInput } from '../AssetInput'; @@ -22,7 +22,9 @@ import { TxModalDetails, } from '../FlowCommons/TxModalDetails'; import { zeroLTVBlockingWithdraw } from '../utils'; +import { calculateMaxWithdrawAmount } from './utils'; import { WithdrawActions } from './WithdrawActions'; +import { useWithdrawError } from './WithdrawError'; export enum ErrorType { CAN_NOT_WITHDRAW_THIS_AMOUNT, @@ -52,35 +54,10 @@ export const WithdrawModalContent = ({ const trackEvent = useRootStore((store) => store.trackEvent); const isMaxSelected = _amount === '-1'; - - // calculations + const maxAmountToWithdraw = calculateMaxWithdrawAmount(user, userReserve, poolReserve); const underlyingBalance = valueToBigNumber(userReserve?.underlyingBalance || '0'); const unborrowedLiquidity = valueToBigNumber(poolReserve.unborrowedLiquidity); - let maxAmountToWithdraw = BigNumber.min(underlyingBalance, unborrowedLiquidity); - let maxCollateralToWithdrawInETH = valueToBigNumber('0'); - const reserveLiquidationThreshold = - user.isInEmode && user.userEmodeCategoryId === poolReserve.eModeCategoryId - ? poolReserve.formattedEModeLiquidationThreshold - : poolReserve.formattedReserveLiquidationThreshold; - if ( - userReserve?.usageAsCollateralEnabledOnUser && - poolReserve.reserveLiquidationThreshold !== '0' && - user.totalBorrowsMarketReferenceCurrency !== '0' - ) { - // if we have any borrowings we should check how much we can withdraw to a minimum HF of 1.01 - const excessHF = valueToBigNumber(user.healthFactor).minus('1.01'); - if (excessHF.gt('0')) { - maxCollateralToWithdrawInETH = excessHF - .multipliedBy(user.totalBorrowsMarketReferenceCurrency) - .div(reserveLiquidationThreshold); - } - maxAmountToWithdraw = BigNumber.min( - maxAmountToWithdraw, - maxCollateralToWithdrawInETH.dividedBy(poolReserve.formattedPriceInMarketReferenceCurrency) - ); - } - - const amount = isMaxSelected ? maxAmountToWithdraw.toString(10) : _amount; + const withdrawAmount = isMaxSelected ? maxAmountToWithdraw.toString(10) : _amount; const handleChange = (value: string) => { const maxSelected = value === '-1'; @@ -94,88 +71,31 @@ export const WithdrawModalContent = ({ } }; - // health factor calculations - let totalCollateralInETHAfterWithdraw = valueToBigNumber( - user.totalCollateralMarketReferenceCurrency - ); - let liquidationThresholdAfterWithdraw = user.currentLiquidationThreshold; - let healthFactorAfterWithdraw = valueToBigNumber(user.healthFactor); - const assetsBlockingWithdraw: string[] = zeroLTVBlockingWithdraw(user); - if ( - userReserve?.usageAsCollateralEnabledOnUser && - poolReserve.reserveLiquidationThreshold !== '0' - ) { - const amountToWithdrawInEth = valueToBigNumber(amount).multipliedBy( - poolReserve.formattedPriceInMarketReferenceCurrency - ); - totalCollateralInETHAfterWithdraw = - totalCollateralInETHAfterWithdraw.minus(amountToWithdrawInEth); + const healthFactorAfterWithdraw = calculateHFAfterWithdraw({ + user, + userReserve, + poolReserve, + withdrawAmount, + }); - liquidationThresholdAfterWithdraw = valueToBigNumber( - user.totalCollateralMarketReferenceCurrency - ) - .multipliedBy(valueToBigNumber(user.currentLiquidationThreshold)) - .minus(valueToBigNumber(amountToWithdrawInEth).multipliedBy(reserveLiquidationThreshold)) - .div(totalCollateralInETHAfterWithdraw) - .toFixed(4, BigNumber.ROUND_DOWN); + const { blockingError, errorComponent } = useWithdrawError({ + assetsBlockingWithdraw, + poolReserve, + healthFactorAfterWithdraw, + withdrawAmount, + }); - healthFactorAfterWithdraw = calculateHealthFactorFromBalancesBigUnits({ - collateralBalanceMarketReferenceCurrency: totalCollateralInETHAfterWithdraw, - borrowBalanceMarketReferenceCurrency: user.totalBorrowsMarketReferenceCurrency, - currentLiquidationThreshold: liquidationThresholdAfterWithdraw, - }); - } const displayRiskCheckbox = healthFactorAfterWithdraw.toNumber() >= 1 && healthFactorAfterWithdraw.toNumber() < 1.5 && userReserve.usageAsCollateralEnabledOnUser; - let blockingError: ErrorType | undefined = undefined; - if (!withdrawTxState.success && !withdrawTxState.txHash) { - if (assetsBlockingWithdraw.length > 0 && !assetsBlockingWithdraw.includes(poolReserve.symbol)) { - blockingError = ErrorType.ZERO_LTV_WITHDRAW_BLOCKED; - } else if ( - healthFactorAfterWithdraw.lt('1') && - user.totalBorrowsMarketReferenceCurrency !== '0' - ) { - blockingError = ErrorType.CAN_NOT_WITHDRAW_THIS_AMOUNT; - } else if ( - !blockingError && - (unborrowedLiquidity.eq('0') || valueToBigNumber(amount).gt(poolReserve.unborrowedLiquidity)) - ) { - blockingError = ErrorType.POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY; - } - } - - // error render handling - const BlockingError: React.FC = () => { - switch (blockingError) { - case ErrorType.CAN_NOT_WITHDRAW_THIS_AMOUNT: - return ( - You can not withdraw this amount because it will cause collateral call - ); - case ErrorType.POOL_DOES_NOT_HAVE_ENOUGH_LIQUIDITY: - return ( - - These funds have been borrowed and are not available for withdrawal at this time. - - ); - case ErrorType.ZERO_LTV_WITHDRAW_BLOCKED: - return ( - - Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as - collateral to perform this action - - ); - default: - return null; - } - }; - // calculating input usd value - const usdValue = valueToBigNumber(amount).multipliedBy(userReserve?.reserve.priceInUSD || 0); + const usdValue = valueToBigNumber(withdrawAmount).multipliedBy( + userReserve?.reserve.priceInUSD || 0 + ); if (withdrawTxState.success) return ( @@ -193,7 +113,7 @@ export const WithdrawModalContent = ({ return ( <> - + {errorComponent} )} @@ -238,7 +158,7 @@ export const WithdrawModalContent = ({ Remaining supply} - value={underlyingBalance.minus(amount || '0').toString(10)} + value={underlyingBalance.minus(withdrawAmount || '0').toString(10)} symbol={ poolReserve.isWrappedBaseAsset ? currentNetworkConfig.baseAssetSymbol @@ -293,7 +213,7 @@ export const WithdrawModalContent = ({ { + const underlyingBalance = valueToBigNumber(userReserve?.underlyingBalance || '0'); + const unborrowedLiquidity = valueToBigNumber(poolReserve.unborrowedLiquidity); + let maxAmountToWithdraw = BigNumber.min(underlyingBalance, unborrowedLiquidity); + let maxCollateralToWithdrawInETH = valueToBigNumber('0'); + const reserveLiquidationThreshold = + user.isInEmode && user.userEmodeCategoryId === poolReserve.eModeCategoryId + ? poolReserve.formattedEModeLiquidationThreshold + : poolReserve.formattedReserveLiquidationThreshold; + if ( + userReserve?.usageAsCollateralEnabledOnUser && + poolReserve.reserveLiquidationThreshold !== '0' && + user.totalBorrowsMarketReferenceCurrency !== '0' + ) { + // if we have any borrowings we should check how much we can withdraw to a minimum HF of 1.01 + const excessHF = valueToBigNumber(user.healthFactor).minus('1.01'); + if (excessHF.gt('0')) { + maxCollateralToWithdrawInETH = excessHF + .multipliedBy(user.totalBorrowsMarketReferenceCurrency) + .div(reserveLiquidationThreshold); + } + maxAmountToWithdraw = BigNumber.min( + maxAmountToWithdraw, + maxCollateralToWithdrawInETH.dividedBy(poolReserve.formattedPriceInMarketReferenceCurrency) + ); + } + + return maxAmountToWithdraw; +}; diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index b9f2f63dce..30aa23932a 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -343,8 +343,7 @@ msgstr "Assets to supply" #: src/components/transactions/CollateralChange/CollateralChangeModalContent.tsx #: src/components/transactions/Repay/CollateralRepayModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawError.tsx msgid "Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action" msgstr "Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action" @@ -2401,8 +2400,7 @@ msgstr "There was some error. Please try changing the parameters or <0><1>copy t msgid "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." msgstr "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." -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawError.tsx msgid "These funds have been borrowed and are not available for withdrawal at this time." msgstr "These funds have been borrowed and are not available for withdrawal at this time." @@ -2913,8 +2911,7 @@ msgstr "You can not switch usage as collateral mode for this currency, because i msgid "You can not use this currency as collateral" msgstr "You can not use this currency as collateral" -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawError.tsx msgid "You can not withdraw this amount because it will cause collateral call" msgstr "You can not withdraw this amount because it will cause collateral call" diff --git a/src/ui-config/marketsConfig.tsx b/src/ui-config/marketsConfig.tsx index 6cd65278d6..f916ea6383 100644 --- a/src/ui-config/marketsConfig.tsx +++ b/src/ui-config/marketsConfig.tsx @@ -139,7 +139,7 @@ export const marketsData: { COLLECTOR: AaveV3Ethereum.COLLECTOR, GHO_TOKEN_ADDRESS: AaveV3Ethereum.GHO_TOKEN, GHO_UI_DATA_PROVIDER: AaveV3Ethereum.UI_GHO_DATA_PROVIDER, - WITHDRAW_AND_SWAP_ADAPTER: '0xd5d2e138531fef36288ff9448c6890ff67f651eb', + WITHDRAW_AND_SWAP_ADAPTER: '0x14b5f6dbd74d7a54be5b7aa9543cade6793c0a38', DEBT_SWITCH_ADAPTER: AaveV3Ethereum.DEBT_SWAP_ADAPTER, }, halIntegration: { diff --git a/src/utils/hfUtils.ts b/src/utils/hfUtils.ts index 0ed6deda7f..b2a5852b71 100644 --- a/src/utils/hfUtils.ts +++ b/src/utils/hfUtils.ts @@ -8,6 +8,7 @@ import { import BigNumber from 'bignumber.js'; import { ComputedReserveData, + ComputedUserReserveData, ExtendedFormattedUser, } from 'src/hooks/app-data-provider/useAppDataProvider'; @@ -30,6 +31,13 @@ interface CalculateHFAfterSwapRepayProps { debt: string; } +interface CalculateHFAfterWithdrawProps { + user: ExtendedFormattedUser; + userReserve: ComputedUserReserveData; + poolReserve: ComputedReserveData; + withdrawAmount: string; +} + export function calculateHFAfterSwap({ fromAmount, fromAssetData, @@ -161,3 +169,48 @@ export const calculateHFAfterRepay = ({ hfAfterSwap: hfAfterSwap.isLessThan(0) && !hfAfterSwap.eq(-1) ? 0 : hfAfterSwap, }; }; + +export const calculateHFAfterWithdraw = ({ + user, + userReserve, + poolReserve, + withdrawAmount, +}: CalculateHFAfterWithdrawProps) => { + let totalCollateralInETHAfterWithdraw = valueToBigNumber( + user.totalCollateralMarketReferenceCurrency + ); + let liquidationThresholdAfterWithdraw = user.currentLiquidationThreshold; + let healthFactorAfterWithdraw = valueToBigNumber(user.healthFactor); + + const reserveLiquidationThreshold = + user.isInEmode && user.userEmodeCategoryId === poolReserve.eModeCategoryId + ? poolReserve.formattedEModeLiquidationThreshold + : poolReserve.formattedReserveLiquidationThreshold; + + if ( + userReserve?.usageAsCollateralEnabledOnUser && + poolReserve.reserveLiquidationThreshold !== '0' + ) { + const amountToWithdrawInEth = valueToBigNumber(withdrawAmount).multipliedBy( + poolReserve.formattedPriceInMarketReferenceCurrency + ); + totalCollateralInETHAfterWithdraw = + totalCollateralInETHAfterWithdraw.minus(amountToWithdrawInEth); + + liquidationThresholdAfterWithdraw = valueToBigNumber( + user.totalCollateralMarketReferenceCurrency + ) + .multipliedBy(valueToBigNumber(user.currentLiquidationThreshold)) + .minus(valueToBigNumber(amountToWithdrawInEth).multipliedBy(reserveLiquidationThreshold)) + .div(totalCollateralInETHAfterWithdraw) + .toFixed(4, BigNumber.ROUND_DOWN); + + healthFactorAfterWithdraw = calculateHealthFactorFromBalancesBigUnits({ + collateralBalanceMarketReferenceCurrency: totalCollateralInETHAfterWithdraw, + borrowBalanceMarketReferenceCurrency: user.totalBorrowsMarketReferenceCurrency, + currentLiquidationThreshold: liquidationThresholdAfterWithdraw, + }); + } + + return healthFactorAfterWithdraw; +}; From b8c4ff8d7bcee8e58347473f319fbdbfd239db29 Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Mon, 21 Aug 2023 13:27:19 +0100 Subject: [PATCH 12/24] feat: added refetch to success withdraw and swap --- .../transactions/Withdraw/WithdrawAndSwapActions.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx index 48e094ad24..16555f9786 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx @@ -3,8 +3,10 @@ import { SignatureLike } from '@ethersproject/bytes'; import { Trans } from '@lingui/macro'; import { BoxProps } from '@mui/material'; import { parseUnits } from 'ethers/lib/utils'; +import { queryClient } from 'pages/_app.page'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { MOCK_SIGNED_HASH } from 'src/helpers/useTransactionHandler'; +import { useBackgroundDataProvider } from 'src/hooks/app-data-provider/BackgroundDataProvider'; import { ComputedReserveData } from 'src/hooks/app-data-provider/useAppDataProvider'; import { calculateSignedAmount, SwapTransactionParams } from 'src/hooks/paraswap/common'; import { useModalContext } from 'src/hooks/useModal'; @@ -12,6 +14,7 @@ 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 { QueryKeys } from 'src/ui-config/queries'; import { TxActionsWrapper } from '../TxActionsWrapper'; import { APPROVAL_GAS_LIMIT } from '../utils'; @@ -89,6 +92,7 @@ export const WithdrawAndSwapActions = ({ const [approvedAmount, setApprovedAmount] = useState(0); const [signatureParams, setSignatureParams] = useState(); + const { refetchPoolData, refetchIncentiveData, refetchGhoData } = useBackgroundDataProvider(); const requiresApproval = useMemo(() => { return approvedAmount <= Number(amountToSwap); @@ -110,16 +114,19 @@ export const WithdrawAndSwapActions = ({ txCalldata: route.swapCallData, signatureParams, }); - console.log(tx); const txDataWithGasEstimation = await estimateGasLimit(tx); const response = await sendTx(txDataWithGasEstimation); + await response.wait(1); + queryClient.invalidateQueries({ queryKey: [QueryKeys.POOL_TOKENS] }); + refetchGhoData && refetchGhoData(); + refetchPoolData && refetchPoolData(); + refetchIncentiveData && refetchIncentiveData(); setMainTxState({ txHash: response.hash, loading: false, success: true, }); } catch (error) { - console.log(error); const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); setTxError(parsedError); setMainTxState({ From 8e288a7a238611fa71d886d596aa72053c4f05b4 Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Mon, 21 Aug 2023 14:45:49 +0100 Subject: [PATCH 13/24] feat: added custom success screen and actions --- src/components/TransactionEventHandler.tsx | 3 + .../transactions/FlowCommons/BaseSuccess.tsx | 91 +++++++ .../transactions/FlowCommons/Success.tsx | 233 ++++++------------ .../Withdraw/WithdrawAndSwapActions.tsx | 20 ++ .../Withdraw/WithdrawAndSwapModalContent.tsx | 10 +- .../Withdraw/WithdrawAndSwapSuccess.tsx | 60 +++++ src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 11 +- src/store/transactionsSlice.ts | 5 +- 9 files changed, 272 insertions(+), 163 deletions(-) create mode 100644 src/components/transactions/FlowCommons/BaseSuccess.tsx create mode 100644 src/components/transactions/Withdraw/WithdrawAndSwapSuccess.tsx diff --git a/src/components/TransactionEventHandler.tsx b/src/components/TransactionEventHandler.tsx index 514938cc2b..ec3bf17000 100644 --- a/src/components/TransactionEventHandler.tsx +++ b/src/components/TransactionEventHandler.tsx @@ -30,6 +30,9 @@ export const TransactionEventHandler = () => { support: tx.support, previousState: tx.previousState, newState: tx.newState, + outAsset: tx.outAsset, + outAmount: tx.outAmount, + outAssetName: tx.outAssetName, }); // update local state diff --git a/src/components/transactions/FlowCommons/BaseSuccess.tsx b/src/components/transactions/FlowCommons/BaseSuccess.tsx new file mode 100644 index 0000000000..4095b4ef5c --- /dev/null +++ b/src/components/transactions/FlowCommons/BaseSuccess.tsx @@ -0,0 +1,91 @@ +import { ExternalLinkIcon } from '@heroicons/react/outline'; +import { CheckIcon } from '@heroicons/react/solid'; +import { Trans } from '@lingui/macro'; +import { Box, Button, Link, SvgIcon, Typography } from '@mui/material'; +import { ReactNode } from 'react'; +import { useModalContext } from 'src/hooks/useModal'; +import { useProtocolDataContext } from 'src/hooks/useProtocolDataContext'; + +export type BaseSuccessTxViewProps = { + txHash?: string; + children: ReactNode; +}; + +const ExtLinkIcon = () => ( + + + +); + +export const BaseSuccessView = ({ txHash, children }: BaseSuccessTxViewProps) => { + const { close, mainTxState } = useModalContext(); + const { currentNetworkConfig } = useProtocolDataContext(); + + return ( + <> + + + + + + + + + All done! + + + {children} + + + + + Review tx details + + + + + + ); +}; diff --git a/src/components/transactions/FlowCommons/Success.tsx b/src/components/transactions/FlowCommons/Success.tsx index c2e9ba104a..16a546d102 100644 --- a/src/components/transactions/FlowCommons/Success.tsx +++ b/src/components/transactions/FlowCommons/Success.tsx @@ -1,17 +1,15 @@ import { InterestRate } from '@aave/contract-helpers'; -import { ExternalLinkIcon } from '@heroicons/react/outline'; -import { CheckIcon } from '@heroicons/react/solid'; import { Trans } from '@lingui/macro'; -import { Box, Button, Link, SvgIcon, Typography, useTheme } from '@mui/material'; +import { Box, Button, Typography, useTheme } from '@mui/material'; import { ReactNode, useState } from 'react'; import { WalletIcon } from 'src/components/icons/WalletIcon'; import { FormattedNumber } from 'src/components/primitives/FormattedNumber'; import { Base64Token, TokenIcon } from 'src/components/primitives/TokenIcon'; -import { useModalContext } from 'src/hooks/useModal'; -import { useProtocolDataContext } from 'src/hooks/useProtocolDataContext'; import { useWeb3Context } from 'src/libs/hooks/useWeb3Context'; import { ERC20TokenType } from 'src/libs/web3-data-provider/Web3Provider'; +import { BaseSuccessView } from './BaseSuccess'; + export type SuccessTxViewProps = { txHash?: string; action?: ReactNode; @@ -24,12 +22,6 @@ export type SuccessTxViewProps = { customText?: ReactNode; }; -const ExtLinkIcon = () => ( - - - -); - export const TxSuccessView = ({ txHash, action, @@ -41,169 +33,104 @@ export const TxSuccessView = ({ customAction, customText, }: SuccessTxViewProps) => { - const { close, mainTxState } = useModalContext(); const { addERC20Token } = useWeb3Context(); - const { currentNetworkConfig } = useProtocolDataContext(); const [base64, setBase64] = useState(''); const theme = useTheme(); return ( - <> + - - - - - + {action && amount && symbol && ( + + + You {action} {' '} + {symbol} + + + )} - - All done! - + {customAction && ( + + {customText} + {customAction} + + )} - - {action && amount && symbol && ( - - - You {action}{' '} - {symbol} - - - )} + {!action && !amount && symbol && ( + + Your {symbol} {collateral ? 'now' : 'is not'} used as collateral + + )} - {customAction && ( - - {customText} - {customAction} - - )} - - {!action && !amount && symbol && ( - - Your {symbol} {collateral ? 'now' : 'is not'} used as collateral - - )} + {rate && ( + + + You switched to {rate === InterestRate.Variable ? 'variable' : 'stable'} rate + + + )} - {rate && ( - + {addToken && symbol && ( + ({ + border: theme.palette.mode === 'dark' ? `1px solid ${theme.palette.divider}` : 'none', + background: theme.palette.mode === 'dark' ? 'none' : '#F7F7F9', + borderRadius: '12px', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + mt: '24px', + })} + > + + - You switched to {rate === InterestRate.Variable ? 'variable' : 'stable'} rate + Add {addToken && addToken.aToken ? 'aToken ' : 'token '} to wallet to track your + balance. - )} - - {addToken && symbol && ( - ({ - border: - theme.palette.mode === 'dark' ? `1px solid ${theme.palette.divider}` : 'none', - background: theme.palette.mode === 'dark' ? 'none' : '#F7F7F9', - borderRadius: '12px', - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - justifyContent: 'center', - mt: '24px', - })} + - - )} - - - - - - Review tx details - - - + + + )} - + ); }; diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx index 16555f9786..93269251ea 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx @@ -67,6 +67,7 @@ export const WithdrawAndSwapActions = ({ estimateGasLimit, walletApprovalMethodPreference, generateSignatureRequest, + addTransaction, ] = useRootStore((state) => [ state.withdrawAndSwap, state.currentMarketData, @@ -76,6 +77,7 @@ export const WithdrawAndSwapActions = ({ state.estimateGasLimit, state.walletApprovalMethodPreference, state.generateSignatureRequest, + state.addTransaction, ]); const { approvalTxState, @@ -126,6 +128,16 @@ export const WithdrawAndSwapActions = ({ loading: false, success: true, }); + addTransaction(response.hash, { + action: ProtocolAction.withdrawAndSwap, + 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(), + }); } catch (error) { const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); setTxError(parsedError); @@ -170,6 +182,14 @@ export const WithdrawAndSwapActions = ({ loading: false, success: true, }); + addTransaction(response.hash, { + action: ProtocolAction.withdrawAndSwap, + txState: 'success', + asset: poolReserve.aTokenAddress, + amount: parseUnits(amountToApprove, poolReserve.decimals).toString(), + assetName: `a${poolReserve.symbol}`, + spender: currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER, + }); setTxError(undefined); fetchApprovedAmount(poolReserve.aTokenAddress); } diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx index cd498c8f8e..a2910e31f6 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx @@ -21,11 +21,11 @@ import { GENERAL } from 'src/utils/mixPanelEvents'; import { Asset, AssetInput } from '../AssetInput'; import { GasEstimationError } from '../FlowCommons/GasEstimationError'; import { ModalWrapperProps } from '../FlowCommons/ModalWrapper'; -import { TxSuccessView } from '../FlowCommons/Success'; import { DetailsHFLine, DetailsNumberLine, TxModalDetails } from '../FlowCommons/TxModalDetails'; import { zeroLTVBlockingWithdraw } from '../utils'; import { calculateMaxWithdrawAmount } from './utils'; import { WithdrawAndSwapActions } from './WithdrawAndSwapActions'; +import { WithdrawAndSwapTxSuccessView } from './WithdrawAndSwapSuccess'; import { useWithdrawError } from './WithdrawError'; export enum ErrorType { @@ -134,12 +134,14 @@ export const WithdrawAndSwapModalContent = ({ if (withdrawTxState.success) return ( - withdrew} - amount={amountRef.current} + ); diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapSuccess.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapSuccess.tsx new file mode 100644 index 0000000000..5b5341b917 --- /dev/null +++ b/src/components/transactions/Withdraw/WithdrawAndSwapSuccess.tsx @@ -0,0 +1,60 @@ +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 WithdrawAndSwapTxSuccessViewProps = { + txHash?: string; + amount?: string; + symbol: string; + outAmount?: string; + outSymbol: string; +}; + +export const WithdrawAndSwapTxSuccessView = ({ + txHash, + amount, + symbol, + outAmount, + outSymbol, +}: WithdrawAndSwapTxSuccessViewProps) => { + return ( + + + + You've successfully withdrew & switched tokens. + + + + + {symbol} + + + + + + {outSymbol} + + + + ); +}; diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index b4b2733877..1e6e38e4e5 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY":"Borrow APY","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Fixed":"Fixed","Fixed rate":"Fixed rate","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Receive (est.)":"Receive (est.)","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Variable rate":"Variable rate","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw & Switch":"Withdraw & Switch","Withdraw and Switch":"Withdraw and Switch","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing and Switching":"Withdrawing and Switching","Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{".CSV":".CSV",".JSON":".JSON","<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)":"<0><1><2/>Add <3/> stkAAVE to borrow at <4/> (max discount)","<0><1><2/>Add stkAAVE to see borrow rate with discount":"<0><1><2/>Add stkAAVE to see borrow rate with discount","<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.":"<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more.","<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.":"<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates.","<0>Slippage tolerance <1>{selectedSlippage}% <2>{0}":["<0>Slippage tolerance <1>",["selectedSlippage"],"% <2>",["0"],""],"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.":"AAVE holders (Ethereum network only) can stake their AAVE in the Safety Module to add more security to the protocol and earn Safety Incentives. In the case of a shortfall event, up to 30% of your stake can be slashed to cover the deficit, providing an additional layer of protection for the protocol.","APR":"APR","APY":"APY","APY change":"APY change","APY type":"APY type","APY type change":"APY type change","APY with discount applied":"APY with discount applied","APY, fixed rate":"APY, fixed rate","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave Governance","Aave aToken":"Aave aToken","Aave debt token":"Aave debt token","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":"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","Aave per month":"Aave per month","About GHO":"About GHO","Account":"Account","Action cannot be performed because the reserve is frozen":"Action cannot be performed because the reserve is frozen","Action cannot be performed because the reserve is paused":"Action cannot be performed because the reserve is paused","Action requires an active reserve":"Action requires an active reserve","Activate Cooldown":"Activate Cooldown","Add stkAAVE to see borrow APY with the discount":"Add stkAAVE to see borrow APY with the discount","Add to wallet":"Add to wallet","Add {0} to wallet to track your balance.":["Add ",["0"]," to wallet to track your balance."],"Address is not a contract":"Address is not a contract","Addresses":"Addresses","Addresses ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","All transactions":"All transactions","Allowance required action":"Allowance required action","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.":"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.","Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.":"Allows you to switch between <0>variable and <1>stable interest rates, where variable rate can increase and decrease depending on the amount of liquidity in the reserve, and stable rate will stay the same for the duration of your loan.","Amount":"Amount","Amount claimable":"Amount claimable","Amount in cooldown":"Amount in cooldown","Amount must be greater than 0":"Amount must be greater than 0","Amount to unstake":"Amount to unstake","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approve Confirmed":"Approve Confirmed","Approve with":"Approve with","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approving {symbol}...":["Approving ",["symbol"],"..."],"Array parameters that should be equal length are not":"Array parameters that should be equal length are not","Asset":"Asset","Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.":"Asset can be only used as collateral in isolation mode with limited borrowing power. To enter isolation mode, disable all other collateral.","Asset can only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","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":["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"],"Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in {marketName} v3 market.":["Asset cannot be migrated due to insufficient liquidity or borrow cap limitation in ",["marketName"]," v3 market."],"Asset cannot be migrated due to supply cap restriction in {marketName} v3 market.":["Asset cannot be migrated due to supply cap restriction in ",["marketName"]," v3 market."],"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":["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"],"Asset cannot be migrated to {marketName} v3 Market since collateral asset will enable isolation mode.":["Asset cannot be migrated to ",["marketName"]," v3 Market since collateral asset will enable isolation mode."],"Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","Asset is frozen in {marketName} v3 market, hence this position cannot be migrated.":["Asset is frozen in ",["marketName"]," v3 market, hence this position cannot be migrated."],"Asset is not borrowable in isolation mode":"Asset is not borrowable in isolation mode","Asset is not listed":"Asset is not listed","Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.":"Asset supply is limited to a certain amount to reduce protocol exposure to the asset and to help manage risks involved.","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Assets with zero LTV ({assetsBlockingWithdraw}) must be withdrawn or disabled as collateral to perform this action":["Assets with zero LTV (",["assetsBlockingWithdraw"],") must be withdrawn or disabled as collateral to perform this action"],"At a discount":"At a discount","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available on":"Available on","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","Balance to revoke":"Balance to revoke","Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions":"Be careful - You are very close to liquidation. Consider depositing more collateral or paying down some of your borrowed positions","Be mindful of the network congestion and gas prices.":"Be mindful of the network congestion and gas prices.","Because this asset is paused, no actions can be taken until further notice":"Because this asset is paused, no actions can be taken until further notice","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY":"Borrow APY","Borrow APY rate":"Borrow APY rate","Borrow APY, fixed rate":"Borrow APY, fixed rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow amount to reach {0}% utilization":["Borrow amount to reach ",["0"],"% utilization"],"Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow apy":"Borrow apy","Borrow balance":"Borrow balance","Borrow balance after repay":"Borrow balance after repay","Borrow balance after switch":"Borrow balance after switch","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow info":"Borrow info","Borrow power used":"Borrow power used","Borrow rate change":"Borrow rate change","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","Borrowed asset amount":"Borrowed asset amount","Borrowing is currently unavailable for {0}.":["Borrowing is currently unavailable for ",["0"],"."],"Borrowing is disabled due to an Aave community decision. <0>More details":"Borrowing is disabled due to an Aave community decision. <0>More details","Borrowing is not enabled":"Borrowing is not enabled","Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.":"Borrowing is unavailable because you’re using Isolation mode. To manage Isolation mode visit your <0>Dashboard.","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.":"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.","Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for {0} category. To manage E-Mode categories visit your <0>Dashboard.":["Borrowing is unavailable because you’ve enabled Efficiency Mode (E-Mode) for ",["0"]," category. To manage E-Mode categories visit your <0>Dashboard."],"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.":"Borrowing of this asset is limited to a certain amount to minimize liquidity pool insolvency.","Borrowing power and assets are limited due to Isolation mode.":"Borrowing power and assets are limited due to Isolation mode.","Borrowing this amount will reduce your health factor and increase risk of liquidation.":"Borrowing this amount will reduce your health factor and increase risk of liquidation.","Borrowing {symbol}":["Borrowing ",["symbol"]],"Both":"Both","Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"COPIED!":"COPIED!","COPY IMAGE":"COPY IMAGE","Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.":"Choose how much voting/proposition power to give to someone else by delegating some of your AAVE or stkAAVE balance. Your tokens will remain in your account, but your delegate will be able to vote or propose on your behalf. If your AAVE or stkAAVE balance changes, your delegate's voting/proposition power will be automatically adjusted.","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claim {symbol}":["Claim ",["symbol"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Claiming {symbol}":["Claiming ",["symbol"]],"Close":"Close","Collateral":"Collateral","Collateral balance after repay":"Collateral balance after repay","Collateral change":"Collateral change","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","Collateral to repay with":"Collateral to repay with","Collateral usage":"Collateral usage","Collateral usage is limited because of Isolation mode.":"Collateral usage is limited because of Isolation mode.","Collateral usage is limited because of isolation mode.":"Collateral usage is limited because of isolation mode.","Collateral usage is limited because of isolation mode. <0>Learn More":"Collateral usage is limited because of isolation mode. <0>Learn More","Collateralization":"Collateralization","Collector Contract":"Collector Contract","Collector Info":"Collector Info","Connect wallet":"Connect wallet","Cooldown period":"Cooldown period","Cooldown period warning":"Cooldown period warning","Cooldown time left":"Cooldown time left","Cooldown to unstake":"Cooldown to unstake","Cooling down...":"Cooling down...","Copy address":"Copy address","Copy error message":"Copy error message","Copy error text":"Copy error text","Covered debt":"Covered debt","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","Current v2 Balance":"Current v2 Balance","Current v2 balance":"Current v2 balance","Current votes":"Current votes","Dark mode":"Dark mode","Dashboard":"Dashboard","Data couldn't be fetched, please reload graph.":"Data couldn't be fetched, please reload graph.","Debt":"Debt","Debt ceiling is exceeded":"Debt ceiling is exceeded","Debt ceiling is not zero":"Debt ceiling is not zero","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.":"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.","Delegated power":"Delegated power","Details":"Details","Developers":"Developers","Differential":"Differential","Disable E-Mode":"Disable E-Mode","Disable testnet":"Disable testnet","Disable {symbol} as collateral":["Disable ",["symbol"]," as collateral"],"Disabled":"Disabled","Disabling E-Mode":"Disabling E-Mode","Disabling this asset as collateral affects your borrowing power and Health Factor.":"Disabling this asset as collateral affects your borrowing power and Health Factor.","Disconnect Wallet":"Disconnect Wallet","Discord channel":"Discord channel","Discount":"Discount","Discount applied for <0/> staking AAVE":"Discount applied for <0/> staking AAVE","Discount model parameters":"Discount model parameters","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":"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","Discountable amount":"Discountable amount","Docs":"Docs","Download":"Download","Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.":"Due to internal stETH mechanics required for rebasing support, it is not possible to perform a collateral switch where stETH is the source token.","Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.":"Due to the Horizon bridge exploit, certain assets on the Harmony network are not at parity with Ethereum, which affects the Aave V3 Harmony market.","E-Mode":"E-Mode","E-Mode Category":"E-Mode Category","E-Mode category":"E-Mode category","E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more":"E-Mode increases your LTV for a selected category of assets up to 97%. <0>Learn more","E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more":"E-Mode increases your LTV for a selected category of assets up to<0/>. <1>Learn more","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 in <1>FAQ or <2>Aave V3 Technical Paper.":"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 in <1>FAQ or <2>Aave V3 Technical Paper.","Effective interest rate":"Effective interest rate","Efficiency mode (E-Mode)":"Efficiency mode (E-Mode)","Emode":"Emode","Enable E-Mode":"Enable E-Mode","Enable {symbol} as collateral":["Enable ",["symbol"]," as collateral"],"Enabled":"Enabled","Enabling E-Mode":"Enabling E-Mode","Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.":"Enabling E-Mode only allows you to borrow assets belonging to the selected category. Please visit our <0>FAQ guide to learn more about how it works and the applied restrictions.","Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.":"Enabling this asset as collateral increases your borrowing power and Health Factor. However, it can get liquidated if your health factor drops below 1.","Ended":"Ended","Ends":"Ends","English":"English","Enter ETH address":"Enter ETH address","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Estimated compounding interest, including discount for Staking {0}AAVE in Safety Module.":["Estimated compounding interest, including discount for Staking ",["0"],"AAVE in Safety Module."],"Exceeds the discount":"Exceeds the discount","Executed":"Executed","Expected amount to repay":"Expected amount to repay","Expires":"Expires","Export data to":"Export data to","FAQ":"FAQ","FAQS":"FAQS","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Fetching data...":"Fetching data...","Filter":"Filter","Fixed":"Fixed","Fixed rate":"Fixed rate","Flashloan is disabled for this asset, hence this position cannot be migrated.":"Flashloan is disabled for this asset, hence this position cannot be migrated.","For repayment of a specific type of debt, the user needs to have debt that type":"For repayment of a specific type of debt, the user needs to have debt that type","Forum discussion":"Forum discussion","French":"French","Frozen or paused assets":"Frozen or paused assets","Funds in the Safety Module":"Funds in the Safety Module","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.":"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.","Get ABP Token":"Get ABP Token","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Go to V3 Dashboard":"Go to V3 Dashboard","Governance":"Governance","Greek":"Greek","Health Factor ({0} v2)":["Health Factor (",["0"]," v2)"],"Health Factor ({0} v3)":["Health Factor (",["0"]," v3)"],"Health factor":"Health factor","Health factor is lesser than the liquidation threshold":"Health factor is lesser than the liquidation threshold","Health factor is not below the threshold":"Health factor is not below the threshold","Hide":"Hide","Holders of stkAAVE receive a discount on the GHO borrowing rate":"Holders of stkAAVE receive a discount on the GHO borrowing rate","I acknowledge the risks involved.":"I acknowledge the risks involved.","I fully understand the risks of migrating.":"I fully understand the risks of migrating.","I understand how cooldown ({0}) and unstaking ({1}) work":["I understand how cooldown (",["0"],") and unstaking (",["1"],") work"],"If the error continues to happen,<0/> you may report it to this":"If the error continues to happen,<0/> you may report it to this","If the health factor goes below 1, the liquidation of your collateral might be triggered.":"If the health factor goes below 1, the liquidation of your collateral might be triggered.","If you DO NOT unstake within {0} of unstake window, you will need to activate cooldown process again.":["If you DO NOT unstake within ",["0"]," of unstake window, you will need to activate cooldown process again."],"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.":"If your loan to value goes above the liquidation threshold your collateral supplied may be liquidated.","In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets":"In E-Mode some assets are not borrowable. Exit E-Mode to get access to all assets","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":["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"],"Inconsistent flashloan parameters":"Inconsistent flashloan parameters","Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.":"Insufficient collateral to cover new borrow position. Wallet must have borrowing power remaining to perform debt switch.","Interest accrued":"Interest accrued","Interest rate rebalance conditions were not met":"Interest rate rebalance conditions were not met","Interest rate strategy":"Interest rate strategy","Invalid amount to burn":"Invalid amount to burn","Invalid amount to mint":"Invalid amount to mint","Invalid bridge protocol fee":"Invalid bridge protocol fee","Invalid expiration":"Invalid expiration","Invalid flashloan premium":"Invalid flashloan premium","Invalid return value of the flashloan executor function":"Invalid return value of the flashloan executor function","Invalid signature":"Invalid signature","Isolated":"Isolated","Isolated Debt Ceiling":"Isolated Debt Ceiling","Isolated assets have limited borrowing power and other assets cannot be used as collateral.":"Isolated assets have limited borrowing power and other assets cannot be used as collateral.","Join the community discussion":"Join the community discussion","LEARN MORE":"LEARN MORE","Language":"Language","Learn more":"Learn more","Learn more about risks involved":"Learn more about risks involved","Learn more in our <0>FAQ guide":"Learn more in our <0>FAQ guide","Learn more.":"Learn more.","Links":"Links","Liqudation":"Liqudation","Liquidated collateral":"Liquidated collateral","Liquidation":"Liquidation","Liquidation <0/> threshold":"Liquidation <0/> threshold","Liquidation Threshold":"Liquidation Threshold","Liquidation at":"Liquidation at","Liquidation penalty":"Liquidation penalty","Liquidation risk":"Liquidation risk","Liquidation risk parameters":"Liquidation risk parameters","Liquidation threshold":"Liquidation threshold","Liquidation value":"Liquidation value","Loading data...":"Loading data...","Ltv validation failed":"Ltv validation failed","MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details":"MAI has been paused due to a community decision. Supply, borrows and repays are impacted. <0>More details","MAX":"MAX","Manage analytics":"Manage analytics","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Maximum amount available to borrow against this asset is limited because debt ceiling is at {0}%.":["Maximum amount available to borrow against this asset is limited because debt ceiling is at ",["0"],"%."],"Maximum amount available to borrow is <0/> {0} (<1/>).":["Maximum amount available to borrow is <0/> ",["0"]," (<1/>)."],"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.":"Maximum amount available to borrow is limited because protocol borrow cap is nearly reached.","Maximum amount available to supply is <0/> {0} (<1/>).":["Maximum amount available to supply is <0/> ",["0"]," (<1/>)."],"Maximum amount available to supply is limited because protocol supply cap is at {0}%.":["Maximum amount available to supply is limited because protocol supply cap is at ",["0"],"%."],"Maximum loan to value":"Maximum loan to value","Meet GHO":"Meet GHO","Menu":"Menu","Migrate":"Migrate","Migrate to V3":"Migrate to V3","Migrate to v3":"Migrate to v3","Migrate to {0} v3 Market":["Migrate to ",["0"]," v3 Market"],"Migrated":"Migrated","Migrating":"Migrating","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.":"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.","Migration risks":"Migration risks","Minimum GHO borrow amount":"Minimum GHO borrow amount","Minimum staked Aave amount":"Minimum staked Aave amount","More":"More","NAY":"NAY","Need help connecting a wallet? <0>Read our FAQ":"Need help connecting a wallet? <0>Read our FAQ","Net APR":"Net APR","Net APY":"Net APY","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.":"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.","Net worth":"Net worth","Network":"Network","Network not supported for this wallet":"Network not supported for this wallet","New APY":"New APY","No assets selected to migrate.":"No assets selected to migrate.","No rewards to claim":"No rewards to claim","No search results{0}":["No search results",["0"]],"No transactions yet.":"No transactions yet.","No voting power":"No voting power","None":"None","Not a valid address":"Not a valid address","Not enough balance on your wallet":"Not enough balance on your wallet","Not enough collateral to repay this amount of debt with":"Not enough collateral to repay this amount of debt with","Not enough staked balance":"Not enough staked balance","Not enough voting power to participate in this proposal":"Not enough voting power to participate in this proposal","Not reached":"Not reached","Nothing borrowed yet":"Nothing borrowed yet","Nothing found":"Nothing found","Nothing staked":"Nothing staked","Nothing supplied yet":"Nothing supplied yet","Notify":"Notify","Ok, Close":"Ok, Close","Ok, I got it":"Ok, I got it","Operation not supported":"Operation not supported","Oracle price":"Oracle price","Overview":"Overview","Page not found":"Page not found","Participating in this {symbol} reserve gives annualized rewards.":["Participating in this ",["symbol"]," reserve gives annualized rewards."],"Pending...":"Pending...","Per the community, the Fantom market has been frozen.":"Per the community, the Fantom market has been frozen.","Per the community, the V2 AMM market has been deprecated.":"Per the community, the V2 AMM market has been deprecated.","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.":"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.","Please connect a wallet to view your personal information here.":"Please connect a wallet to view your personal information here.","Please connect your wallet to get free testnet assets.":"Please connect your wallet to get free testnet assets.","Please connect your wallet to see migration tool.":"Please connect your wallet to see migration tool.","Please connect your wallet to see your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","Please connect your wallet to view transaction history.":"Please connect your wallet to view transaction history.","Please enter a valid wallet address.":"Please enter a valid wallet address.","Please switch to {networkName}.":["Please switch to ",["networkName"],"."],"Please, connect your wallet":"Please, connect your wallet","Pool addresses provider is not registered":"Pool addresses provider is not registered","Powered by":"Powered by","Preview tx and migrate":"Preview tx and migrate","Price":"Price","Price data is not currently available for this reserve on the protocol subgraph":"Price data is not currently available for this reserve on the protocol subgraph","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.":"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.","Price impact {0}%":["Price impact ",["0"],"%"],"Privacy":"Privacy","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition":"Proposition","Protocol borrow cap at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap at 100% for this asset. Further borrowing unavailable.","Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.":"Protocol borrow cap is at 100% for this asset. Further borrowing unavailable.","Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Further borrowing against this asset is unavailable.","Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.":"Protocol debt ceiling is at 100% for this asset. Futher borrowing against this asset is unavailable.","Protocol supply cap at 100% for this asset. Further supply unavailable.":"Protocol supply cap at 100% for this asset. Further supply unavailable.","Protocol supply cap is at 100% for this asset. Further supply unavailable.":"Protocol supply cap is at 100% for this asset. Further supply unavailable.","Quorum":"Quorum","Rate change":"Rate change","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","Reactivate cooldown period to unstake {0} {stakedToken}":["Reactivate cooldown period to unstake ",["0"]," ",["stakedToken"]],"Read more here.":"Read more here.","Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Read-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Read-only mode.":"Read-only mode.","Read-only mode. Connect to a wallet to perform transactions.":"Read-only mode. Connect to a wallet to perform transactions.","Receive (est.)":"Receive (est.)","Received":"Received","Recipient address":"Recipient address","Rejected connection request":"Rejected connection request","Reload":"Reload","Reload the page":"Reload the page","Remaining debt":"Remaining debt","Remaining supply":"Remaining supply","Repaid":"Repaid","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"Repayment amount to reach {0}% utilization":["Repayment amount to reach ",["0"],"% utilization"],"Reserve Size":"Reserve Size","Reserve factor":"Reserve factor","Reserve factor is a percentage of interest which goes to a {0} that is controlled by Aave governance to promote ecosystem growth.":["Reserve factor is a percentage of interest which goes to a ",["0"]," that is controlled by Aave governance to promote ecosystem growth."],"Reserve status & configuration":"Reserve status & configuration","Reset":"Reset","Restake":"Restake","Restake {symbol}":["Restake ",["symbol"]],"Restaked":"Restaked","Restaking {symbol}":["Restaking ",["symbol"]],"Review approval tx details":"Review approval tx details","Review changes to continue":"Review changes to continue","Review tx":"Review tx","Review tx details":"Review tx details","Revoke power":"Revoke power","Reward(s) to claim":"Reward(s) to claim","Rewards APR":"Rewards APR","Risk details":"Risk details","SEE CHARTS":"SEE CHARTS","Safety of your deposited collateral against the borrowed assets and its underlying value.":"Safety of your deposited collateral against the borrowed assets and its underlying value.","Save and share":"Save and share","Seatbelt report":"Seatbelt report","Seems like we can't switch the network automatically. Please check if you can change it from the wallet.":"Seems like we can't switch the network automatically. Please check if you can change it from the wallet.","Select":"Select","Select APY type to switch":"Select APY type to switch","Select an asset":"Select an asset","Select language":"Select language","Select slippage tolerance":"Select slippage tolerance","Select v2 borrows to migrate":"Select v2 borrows to migrate","Select v2 supplies to migrate":"Select v2 supplies to migrate","Selected assets have successfully migrated. Visit the Market Dashboard to see them.":"Selected assets have successfully migrated. Visit the Market Dashboard to see them.","Selected borrow assets":"Selected borrow assets","Selected supply assets":"Selected supply assets","Send feedback":"Send feedback","Set up delegation":"Set up delegation","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on Lens":"Share on Lens","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","Sign to continue":"Sign to continue","Signatures ready":"Signatures ready","Signing":"Signing","Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard":"Since this asset is frozen, the only available actions are withdraw and repay which can be accessed from the <0>Dashboard","Since this is a test network, you can get any of the assets if you have ETH on your wallet":"Since this is a test network, you can get any of the assets if you have ETH on your wallet","Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.":"Slippage is the difference between the quoted and received amounts from changing market conditions between the moment the transaction is submitted and its verification.","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.":["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."],"Something went wrong":"Something went wrong","Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.":"Sorry, an unexpected error happened. In the meantime you may try reloading the page, or come back later.","Sorry, we couldn't find the page you were looking for.":"Sorry, we couldn't find the page you were looking for.","Spanish":"Spanish","Stable":"Stable","Stable Interest Type is disabled for this currency":"Stable Interest Type is disabled for this currency","Stable borrowing is enabled":"Stable borrowing is enabled","Stable borrowing is not enabled":"Stable borrowing is not enabled","Stable debt supply is not zero":"Stable debt supply is not zero","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.":"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.","Stablecoin":"Stablecoin","Stake":"Stake","Stake AAVE":"Stake AAVE","Stake ABPT":"Stake ABPT","Stake cooldown activated":"Stake cooldown activated","Staked":"Staked","Staking":"Staking","Staking APR":"Staking APR","Staking Rewards":"Staking Rewards","Staking balance":"Staking balance","Staking discount":"Staking discount","Started":"Started","State":"State","Static 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":"Static 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","Supplied":"Supplied","Supplied asset amount":"Supplied asset amount","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","Supply balance after switch":"Supply balance after switch","Supply cap is exceeded":"Supply cap is exceeded","Supply cap on target reserve reached. Try lowering the amount.":"Supply cap on target reserve reached. Try lowering the amount.","Supply {symbol}":["Supply ",["symbol"]],"Supplying your":"Supplying your","Supplying {symbol}":["Supplying ",["symbol"]],"Switch":"Switch","Switch APY type":"Switch APY type","Switch E-Mode":"Switch E-Mode","Switch E-Mode category":"Switch E-Mode category","Switch Network":"Switch Network","Switch borrow position":"Switch borrow position","Switch rate":"Switch rate","Switch to":"Switch to","Switched":"Switched","Switching":"Switching","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Techpaper":"Techpaper","Terms":"Terms","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","Thank you for voting!!":"Thank you for voting!!","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.":"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.","The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.":"The Aave Balancer Pool Token (ABPT) is a liquidity pool token. You can receive ABPT by depositing a combination of AAVE + ETH in the Balancer liquidity pool. You can then stake your BPT in the Safety Module to secure the protocol and earn Safety Incentives.","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.":"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.","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.":"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.","The Stable Rate is not enabled for this currency":"The Stable Rate is not enabled for this currency","The address of the pool addresses provider is invalid":"The address of the pool addresses provider is invalid","The app is running in testnet mode. Learn how it works in":"The app is running in testnet mode. Learn how it works in","The caller of the function is not an AToken":"The caller of the function is not an AToken","The caller of this function must be a pool":"The caller of this function must be a pool","The collateral balance is 0":"The collateral balance is 0","The collateral chosen cannot be liquidated":"The collateral chosen cannot be liquidated","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":"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","The cooldown period is {0}. After {1} of cooldown, you will enter unstake window of {2}. You will continue receiving rewards during cooldown and unstake window.":["The cooldown period is ",["0"],". After ",["1"]," of cooldown, you will enter unstake window of ",["2"],". You will continue receiving rewards during cooldown and unstake window."],"The effects on the health factor would cause liquidation. Try lowering the amount.":"The effects on the health factor would cause liquidation. Try lowering the amount.","The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.":"The loan to value of the migrated positions would cause liquidation. Increase migrated collateral or reduce migrated borrow to continue.","The requested amount is greater than the max loan size in stable rate mode":"The requested amount is greater than the max loan size in stable rate mode","The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.":"The total amount of your assets denominated in USD that can be used as collateral for borrowing assets.","The underlying asset cannot be rescued":"The underlying asset cannot be rescued","The underlying balance needs to be greater than 0":"The underlying balance needs to be greater than 0","The weighted average of APY for all borrowed assets, including incentives.":"The weighted average of APY for all borrowed assets, including incentives.","The weighted average of APY for all supplied assets, including incentives.":"The weighted average of APY for all supplied assets, including incentives.","There are not enough funds in the{0}reserve to borrow":["There are not enough funds in the",["0"],"reserve to borrow"],"There is not enough collateral to cover a new borrow":"There is not enough collateral to cover a new borrow","There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.":"There is not enough liquidity for the target asset to perform the switch. Try lowering the amount.","There was some error. Please try changing the parameters or <0><1>copy the error":"There was some error. Please try changing the parameters or <0><1>copy the error","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.":"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.","These funds have been borrowed and are not available for withdrawal at this time.":"These funds have been borrowed and are not available for withdrawal at this time.","This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.":"This action will reduce V2 health factor below liquidation threshold. retain collateral or migrate borrow position to continue.","This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.":"This action will reduce health factor of V3 below liquidation threshold. Increase migrated collateral or reduce migrated borrow to continue.","This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.":"This action will reduce your health factor. Please be mindful of the increased risk of collateral liquidation.","This address is blocked on app.aave.com because it is associated with one or more":"This address is blocked on app.aave.com because it is associated with one or more","This asset has almost reached its borrow cap. There is only {messageValue} available to be borrowed from this market.":["This asset has almost reached its borrow cap. There is only ",["messageValue"]," available to be borrowed from this market."],"This asset has almost reached its supply cap. There can only be {messageValue} supplied to this market.":["This asset has almost reached its supply cap. There can only be ",["messageValue"]," supplied to this market."],"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.":"This asset has reached its borrow cap. Nothing is available to be borrowed from this market.","This asset has reached its supply cap. Nothing is available to be supplied from this market.":"This asset has reached its supply cap. Nothing is available to be supplied from this market.","This asset is frozen due to an Aave Protocol Governance decision. <0>More details":"This asset is frozen due to an Aave Protocol Governance decision. <0>More details","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":"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","This asset is frozen due to an Aave community decision. <0>More details":"This asset is frozen due to an Aave community decision. <0>More details","This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details":"This asset is planned to be offboarded due to an Aave Protocol Governance decision. <0>More details","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.":"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.","This integration was<0>proposed and approvedby the community.":"This integration was<0>proposed and approvedby the community.","This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.":"This is the total amount available for you to borrow. You can borrow based on your collateral and until the borrow cap is reached.","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.":"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.","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.":"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.","Time left to be able to withdraw your staked asset.":"Time left to be able to withdraw your staked asset.","Time left to unstake":"Time left to unstake","Time left until the withdrawal window closes.":"Time left until the withdrawal window closes.","Tip: Try increasing slippage or reduce input amount":"Tip: Try increasing slippage or reduce input amount","To borrow you need to supply any asset to be used as collateral.":"To borrow you need to supply any asset to be used as collateral.","To continue, you need to grant Aave 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":"To continue, you need to grant Aave 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","To enable E-mode for the {0} category, all borrow positions outside of this category must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this category must be closed."],"To repay on behalf of a user an explicit amount to repay is needed":"To repay on behalf of a user an explicit amount to repay is needed","To request access for this permissioned market, please visit: <0>Acces Provider Name":"To request access for this permissioned market, please visit: <0>Acces Provider Name","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.":"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.","Top 10 addresses":"Top 10 addresses","Total available":"Total available","Total borrowed":"Total borrowed","Total borrows":"Total borrows","Total emission per day":"Total emission per day","Total interest accrued":"Total interest accrued","Total market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Track wallet":"Track wallet","Track wallet balance in read-only mode":"Track wallet balance in read-only mode","Transaction failed":"Transaction failed","Transaction history":"Transaction history","Transaction history is not currently available for this market":"Transaction history is not currently available for this market","Transaction overview":"Transaction overview","Transactions":"Transactions","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Underlying asset does not exist in {marketName} v3 Market, hence this position cannot be migrated.":["Underlying asset does not exist in ",["marketName"]," v3 Market, hence this position cannot be migrated."],"Underlying token":"Underlying token","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","Unstaking {symbol}":["Unstaking ",["symbol"]],"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.":"Update: Disruptions reported for WETH, WBTC, WMATIC, and USDT. AIP 230 will resolve the disruptions and the market will be operating as normal on ~26th May 13h00 UTC.","Use it to vote for or against active proposals.":"Use it to vote for or against active proposals.","Use your AAVE and stkAAVE 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.":"Use your AAVE and stkAAVE 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.","Used as collateral":"Used as collateral","User cannot withdraw more than the available balance":"User cannot withdraw more than the available balance","User did not borrow the specified currency":"User did not borrow the specified currency","User does not have outstanding stable rate debt on this reserve":"User does not have outstanding stable rate debt on this reserve","User does not have outstanding variable rate debt on this reserve":"User does not have outstanding variable rate debt on this reserve","User is in isolation mode":"User is in isolation mode","User is trying to borrow multiple assets including a siloed one":"User is trying to borrow multiple assets including a siloed one","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.":"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.","Utilization Rate":"Utilization Rate","VIEW TX":"VIEW TX","VOTE NAY":"VOTE NAY","VOTE YAE":"VOTE YAE","Variable":"Variable","Variable debt supply is not zero":"Variable debt supply is not zero","Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.":"Variable interest rate will <0>fluctuate based on the market conditions. Recommended for short-term positions.","Variable rate":"Variable rate","Version 2":"Version 2","Version 3":"Version 3","View":"View","View all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","Voting":"Voting","Voting power":"Voting power","Voting results":"Voting results","Wallet Balance":"Wallet Balance","Wallet balance":"Wallet balance","Wallet not detected. Connect or install wallet and retry":"Wallet not detected. Connect or install wallet and retry","Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.":"Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access to the wallet might be reliant on the External Provider being operational.","We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.":"We couldn't find any assets related to your search. Try again with a different asset name, symbol, or address.","We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.":"We couldn't find any transactions related to your search. Try again with a different asset name, or reset filters.","We couldn’t detect a wallet. Connect a wallet to stake and view your balance.":"We couldn’t detect a wallet. Connect a wallet to stake and view your balance.","We suggest you go back to the Dashboard.":"We suggest you go back to the Dashboard.","Website":"Website","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.":"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.","With a voting power of <0/>":"With a voting power of <0/>","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":"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","Withdraw":"Withdraw","Withdraw & Switch":"Withdraw & Switch","Withdraw and Switch":"Withdraw and Switch","Withdraw {symbol}":["Withdraw ",["symbol"]],"Withdrawing and Switching":"Withdrawing and Switching","Withdrawing this amount will reduce your health factor and increase risk of liquidation.":"Withdrawing this amount will reduce your health factor and increase risk of liquidation.","Withdrawing {symbol}":["Withdrawing ",["symbol"]],"Wrong Network":"Wrong Network","YAE":"YAE","You are entering Isolation mode":"You are entering Isolation mode","You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.":"You can borrow this asset with a stable rate only if you borrow more than the amount you are supplying as collateral.","You can not change Interest Type to stable as your borrowings are higher than your collateral":"You can not change Interest Type to stable as your borrowings are higher than your collateral","You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.":"You can not disable E-Mode as your current collateralization level is above 80%, disabling E-Mode can cause liquidation. To exit E-Mode supply or repay borrowed positions.","You can not switch usage as collateral mode for this currency, because it will cause collateral call":"You can not switch usage as collateral mode for this currency, because it will cause collateral call","You can not use this currency as collateral":"You can not use this currency as collateral","You can not withdraw this amount because it will cause collateral call":"You can not withdraw this amount because it will cause collateral call","You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.":"You can only switch to tokens with variable APY types. After this transaction, you may change the variable rate to a stable one if available.","You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.":"You can only withdraw your assets from the Security Module after the cooldown period ends and the unstake window is active.","You can report incident to our <0>Discord or <1>Github.":"You can report incident to our <0>Discord or <1>Github.","You cancelled the transaction.":"You cancelled the transaction.","You did not participate in this proposal":"You did not participate in this proposal","You do not have supplies in this currency":"You do not have supplies in this currency","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.":"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.","You have no AAVE/stkAAVE balance to delegate.":"You have no AAVE/stkAAVE balance to delegate.","You have not borrow yet using this currency":"You have not borrow yet using this currency","You may borrow up to <0/> GHO at <1/> (max discount)":"You may borrow up to <0/> GHO at <1/> (max discount)","You may enter a custom amount in the field.":"You may enter a custom amount in the field.","You switched to {0} rate":["You switched to ",["0"]," rate"],"You unstake here":"You unstake here","You voted {0}":["You voted ",["0"]],"You will exit isolation mode and other tokens can now be used as collateral":"You will exit isolation mode and other tokens can now be used as collateral","You {action} <0/> {symbol}":["You ",["action"]," <0/> ",["symbol"]],"You've successfully switched borrow position.":"You've successfully switched borrow position.","You've successfully withdrew & switched tokens.":"You've successfully withdrew & switched tokens.","Your borrows":"Your borrows","Your current loan to value based on your collateral supplied.":"Your current loan to value based on your collateral supplied.","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.":"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.","Your info":"Your info","Your proposition power is based on your AAVE/stkAAVE balance and received delegations.":"Your proposition power is based on your AAVE/stkAAVE balance and received delegations.","Your reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","Your voting power is based on your AAVE/stkAAVE balance and received delegations.":"Your voting power is based on your AAVE/stkAAVE balance and received delegations.","Your {name} wallet is empty. Purchase or transfer assets or use <0>{0} to transfer your {network} assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets or use <0>",["0"]," to transfer your ",["network"]," assets."],"Your {name} wallet is empty. Purchase or transfer assets.":["Your ",["name"]," wallet is empty. Purchase or transfer assets."],"Your {networkName} wallet is empty. Get free test assets at":["Your ",["networkName"]," wallet is empty. Get free test assets at"],"Your {networkName} wallet is empty. Get free test {0} at":["Your ",["networkName"]," wallet is empty. Get free test ",["0"]," at"],"Zero address not valid":"Zero address not valid","assets":"assets","blocked activities":"blocked activities","copy the error":"copy the error","disabled":"disabled","documentation":"documentation","enabled":"enabled","ends":"ends","for":"for","of":"of","on":"on","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.":"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.","repaid":"repaid","stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.":"stETH supplied as collateral will continue to accrue staking rewards provided by daily rebases.","stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: {0}":["stETH tokens will be migrated to Wrapped stETH using Lido Protocol wrapper which leads to supply balance change after migration: ",["0"]],"staking view":"staking view","starts":"starts","stkAAVE holders get a discount on GHO borrow rate":"stkAAVE holders get a discount on GHO borrow rate","to":"to","tokens is not the same as staking them. If you wish to stake your":"tokens is not the same as staking them. If you wish to stake your","tokens, please go to the":"tokens, please go to the","will receive":"will receive","withdrew":"withdrew","{0}":[["0"]],"{0} Balance":[["0"]," Balance"],"{0} Faucet":[["0"]," Faucet"],"{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.":[["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."],"{0}{name}":[["0"],["name"]],"{currentMethod}":[["currentMethod"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{notifyText}":[["notifyText"]],"{numSelected}/{numAvailable} assets selected":[["numSelected"],"/",["numAvailable"]," assets selected"],"{s}s":[["s"],"s"],"{title}":[["title"]],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index 30aa23932a..e1daac759a 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -190,7 +190,7 @@ msgid "All Assets" msgstr "All Assets" #: src/components/transactions/Borrow/GhoBorrowSuccessView.tsx -#: src/components/transactions/FlowCommons/Success.tsx +#: src/components/transactions/FlowCommons/BaseSuccess.tsx msgid "All done!" msgstr "All done!" @@ -1587,7 +1587,7 @@ msgstr "Nothing supplied yet" msgid "Notify" msgstr "Notify" -#: src/components/transactions/FlowCommons/Success.tsx +#: src/components/transactions/FlowCommons/BaseSuccess.tsx msgid "Ok, Close" msgstr "Ok, Close" @@ -1896,7 +1896,7 @@ msgid "Review tx" msgstr "Review tx" #: src/components/transactions/Borrow/GhoBorrowSuccessView.tsx -#: src/components/transactions/FlowCommons/Success.tsx +#: src/components/transactions/FlowCommons/BaseSuccess.tsx msgid "Review tx details" msgstr "Review tx details" @@ -2984,6 +2984,10 @@ msgstr "You {action} <0/> {symbol}" msgid "You've successfully switched borrow position." msgstr "You've successfully switched borrow position." +#: src/components/transactions/Withdraw/WithdrawAndSwapSuccess.tsx +msgid "You've successfully withdrew & switched tokens." +msgstr "You've successfully withdrew & switched tokens." + #: src/modules/dashboard/lists/BorrowedPositionsList/BorrowedPositionsList.tsx #: src/modules/dashboard/lists/BorrowedPositionsList/BorrowedPositionsList.tsx msgid "Your borrows" @@ -3140,7 +3144,6 @@ msgstr "tokens, please go to the" msgid "will receive" msgstr "will receive" -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "withdrew" msgstr "withdrew" diff --git a/src/store/transactionsSlice.ts b/src/store/transactionsSlice.ts index 50b457db89..7ac0499012 100644 --- a/src/store/transactionsSlice.ts +++ b/src/store/transactionsSlice.ts @@ -21,6 +21,9 @@ export type TransactionDetails = { previousState?: string; newState?: string; spender?: string; + outAsset?: string; + outAmount?: string; + outAssetName?: string; }; export type TransactionEvent = TransactionDetails & { @@ -42,7 +45,7 @@ export const createTransactionsSlice: StateCreator< > = (set, get) => { return { transactions: [], - addTransaction: (txHash: string, transaction: TransactionDetails) => { + addTransaction: (txHash, transaction) => { const chainId = get().currentChainId; const market = get().currentMarket; set((state) => From c9397cd9e264830afd7e89841c106aa69c0786af Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Mon, 21 Aug 2023 11:02:43 -0500 Subject: [PATCH 14/24] feat: fork config --- src/ui-config/marketsConfig.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ui-config/marketsConfig.tsx b/src/ui-config/marketsConfig.tsx index f916ea6383..f9e413f138 100644 --- a/src/ui-config/marketsConfig.tsx +++ b/src/ui-config/marketsConfig.tsx @@ -139,7 +139,7 @@ export const marketsData: { COLLECTOR: AaveV3Ethereum.COLLECTOR, GHO_TOKEN_ADDRESS: AaveV3Ethereum.GHO_TOKEN, GHO_UI_DATA_PROVIDER: AaveV3Ethereum.UI_GHO_DATA_PROVIDER, - WITHDRAW_AND_SWAP_ADAPTER: '0x14b5f6dbd74d7a54be5b7aa9543cade6793c0a38', + WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647aDE75cb48afcDC3D0be9Db9AA663711f', DEBT_SWITCH_ADAPTER: AaveV3Ethereum.DEBT_SWAP_ADAPTER, }, halIntegration: { @@ -316,6 +316,7 @@ export const marketsData: { liquiditySwap: true, collateralRepay: true, debtSwitch: true, + withdrawAndSwap: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3-arbitrum', addresses: { @@ -330,6 +331,7 @@ export const marketsData: { SWAP_COLLATERAL_ADAPTER: AaveV3Arbitrum.SWAP_COLLATERAL_ADAPTER, REPAY_WITH_COLLATERAL_ADAPTER: AaveV3Arbitrum.REPAY_WITH_COLLATERAL_ADAPTER, DEBT_SWITCH_ADAPTER: AaveV3Arbitrum.DEBT_SWAP_ADAPTER, + WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647ade75cb48afcdc3d0be9db9aa663711f', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', @@ -365,6 +367,7 @@ export const marketsData: { incentives: true, collateralRepay: true, debtSwitch: true, + withdrawAndSwap: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3-avalanche', addresses: { @@ -378,6 +381,7 @@ export const marketsData: { UI_INCENTIVE_DATA_PROVIDER: AaveV3Avalanche.UI_INCENTIVE_DATA_PROVIDER, COLLECTOR: AaveV3Avalanche.COLLECTOR, DEBT_SWITCH_ADAPTER: AaveV3Avalanche.DEBT_SWAP_ADAPTER, + WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647ade75cb48afcdc3d0be9db9aa663711f', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', @@ -514,6 +518,7 @@ export const marketsData: { collateralRepay: true, liquiditySwap: true, debtSwitch: true, + withdrawAndSwap: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3-optimism', addresses: { @@ -528,6 +533,7 @@ export const marketsData: { SWAP_COLLATERAL_ADAPTER: AaveV3Optimism.SWAP_COLLATERAL_ADAPTER, REPAY_WITH_COLLATERAL_ADAPTER: AaveV3Optimism.REPAY_WITH_COLLATERAL_ADAPTER, DEBT_SWITCH_ADAPTER: AaveV3Optimism.DEBT_SWAP_ADAPTER, + WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647ade75cb48afcdc3d0be9db9aa663711f', }, }, [CustomMarket.proto_polygon_v3]: { @@ -539,6 +545,7 @@ export const marketsData: { incentives: true, collateralRepay: true, debtSwitch: true, + withdrawAndSwap: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3-polygon', addresses: { @@ -552,6 +559,7 @@ export const marketsData: { UI_INCENTIVE_DATA_PROVIDER: AaveV3Polygon.UI_INCENTIVE_DATA_PROVIDER, COLLECTOR: AaveV3Polygon.COLLECTOR, DEBT_SWITCH_ADAPTER: AaveV3Polygon.DEBT_SWAP_ADAPTER, + WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647ade75cb48afcdc3d0be9db9aa663711f', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', From c9dfc912d54287f3a8a915d159936fcf5b2a69ef Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Mon, 21 Aug 2023 15:33:43 -0500 Subject: [PATCH 15/24] fix: set max when fetching paraswap route data --- .../transactions/Withdraw/WithdrawAndSwapModalContent.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx index a2910e31f6..841f65bedc 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx @@ -72,6 +72,9 @@ export const WithdrawAndSwapModalContent = ({ (r) => r.underlyingAsset === targetReserve.address ) as ComputedUserReserveData; + const maxAmountToWithdraw = calculateMaxWithdrawAmount(user, userReserve, poolReserve); + const underlyingBalance = valueToBigNumber(userReserve?.underlyingBalance || '0'); + const { inputAmountUSD, inputAmount, @@ -85,15 +88,13 @@ export const WithdrawAndSwapModalContent = ({ userAddress: currentAccount, swapIn: { ...poolReserve, amount: amountRef.current }, swapOut: { ...swapTarget.reserve, amount: '0' }, - max: isMaxSelected, + max: isMaxSelected && maxAmountToWithdraw.eq(underlyingBalance), skip: withdrawTxState.loading || false, maxSlippage: Number(maxSlippage), }); const loadingSkeleton = routeLoading && outputAmountUSD === '0'; - const underlyingBalance = valueToBigNumber(userReserve?.underlyingBalance || '0'); const unborrowedLiquidity = valueToBigNumber(poolReserve.unborrowedLiquidity); - const maxAmountToWithdraw = calculateMaxWithdrawAmount(user, userReserve, poolReserve); const assetsBlockingWithdraw: string[] = zeroLTVBlockingWithdraw(user); From 352ad59bc9c009f1aabce759b3622787baa08fe3 Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Mon, 21 Aug 2023 16:18:32 -0500 Subject: [PATCH 16/24] fix: clear type selection on modal close --- src/components/transactions/Withdraw/WithdrawModal.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/transactions/Withdraw/WithdrawModal.tsx b/src/components/transactions/Withdraw/WithdrawModal.tsx index d36e7a5e1d..8eb03cb8d9 100644 --- a/src/components/transactions/Withdraw/WithdrawModal.tsx +++ b/src/components/transactions/Withdraw/WithdrawModal.tsx @@ -28,8 +28,13 @@ export const WithdrawModal = () => { isFeatureEnabled.withdrawAndSwap(currentMarketData) && args.underlyingAsset !== ghoReserve?.underlyingAsset; + const handleClose = () => { + setWithdrawType(WithdrawType.WITHDRAW); + close(); + }; + return ( - + Withdraw} underlyingAsset={args.underlyingAsset} From 36b65e5f7617a848e28aafe21423fe6b3277af37 Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Tue, 22 Aug 2023 04:05:36 +0100 Subject: [PATCH 17/24] feat: changed swap to switch --- package.json | 2 +- ...tions.tsx => WithdrawAndSwitchActions.tsx} | 22 ++++++++--------- ....tsx => WithdrawAndSwitchModalContent.tsx} | 10 ++++---- ...ccess.tsx => WithdrawAndSwitchSuccess.tsx} | 6 ++--- .../transactions/Withdraw/WithdrawModal.tsx | 8 +++---- .../Withdraw/WithdrawTypeSelector.tsx | 6 ++--- src/locales/en/messages.po | 24 +++++++++---------- src/store/poolSlice.ts | 22 ++++++++--------- src/ui-config/marketsConfig.tsx | 12 +++++----- src/utils/marketsAndNetworksConfig.ts | 2 +- yarn.lock | 8 +++---- 11 files changed, 61 insertions(+), 61 deletions(-) rename src/components/transactions/Withdraw/{WithdrawAndSwapActions.tsx => WithdrawAndSwitchActions.tsx} (95%) rename src/components/transactions/Withdraw/{WithdrawAndSwapModalContent.tsx => WithdrawAndSwitchModalContent.tsx} (97%) rename src/components/transactions/Withdraw/{WithdrawAndSwapSuccess.tsx => WithdrawAndSwitchSuccess.tsx} (91%) diff --git a/package.json b/package.json index 4f9031ce0a..08f704ec89 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "test:coverage": "jest --coverage" }, "dependencies": { - "@aave/contract-helpers": "1.18.3-c675ef5b4dc014124c8a23388b69d4affda5dcc1.0", + "@aave/contract-helpers": "1.19.1-b45a3ae879f959102573849b6b08aec23814490e.0", "@aave/math-utils": "1.18.2", "@bgd-labs/aave-address-book": "^1.30.0", "@emotion/cache": "11.10.3", diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx similarity index 95% rename from src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx rename to src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx index 93269251ea..cb5da50e79 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx @@ -19,7 +19,7 @@ import { QueryKeys } from 'src/ui-config/queries'; import { TxActionsWrapper } from '../TxActionsWrapper'; import { APPROVAL_GAS_LIMIT } from '../utils'; -interface WithdrawAndSwapProps extends BoxProps { +interface WithdrawAndSwitchProps extends BoxProps { amountToSwap: string; amountToReceive: string; poolReserve: ComputedReserveData; @@ -31,9 +31,9 @@ interface WithdrawAndSwapProps extends BoxProps { buildTxFn: () => Promise; } -export interface WithdrawAndSwapActionProps +export interface WithdrawAndSwitchActionProps extends Pick< - WithdrawAndSwapProps, + WithdrawAndSwitchProps, 'amountToSwap' | 'amountToReceive' | 'poolReserve' | 'targetReserve' | 'isMaxSelected' > { augustus: string; @@ -47,7 +47,7 @@ interface SignedParams { amount: string; } -export const WithdrawAndSwapActions = ({ +export const WithdrawAndSwitchActions = ({ amountToSwap, isWrongNetwork, sx, @@ -57,9 +57,9 @@ export const WithdrawAndSwapActions = ({ loading, blocked, buildTxFn, -}: WithdrawAndSwapProps) => { +}: WithdrawAndSwitchProps) => { const [ - withdrawAndSwap, + withdrawAndSwitch, currentMarketData, jsonRpcProvider, account, @@ -69,7 +69,7 @@ export const WithdrawAndSwapActions = ({ generateSignatureRequest, addTransaction, ] = useRootStore((state) => [ - state.withdrawAndSwap, + state.withdrawAndSwitch, state.currentMarketData, state.jsonRpcProvider, state.account, @@ -106,7 +106,7 @@ export const WithdrawAndSwapActions = ({ try { setMainTxState({ ...mainTxState, loading: true }); const route = await buildTxFn(); - const tx = withdrawAndSwap({ + const tx = withdrawAndSwitch({ poolReserve, targetReserve, isMaxSelected, @@ -129,7 +129,7 @@ export const WithdrawAndSwapActions = ({ success: true, }); addTransaction(response.hash, { - action: ProtocolAction.withdrawAndSwap, + action: ProtocolAction.withdrawAndSwitch, txState: 'success', asset: poolReserve.underlyingAsset, amount: parseUnits(route.inputAmount, poolReserve.decimals).toString(), @@ -183,7 +183,7 @@ export const WithdrawAndSwapActions = ({ success: true, }); addTransaction(response.hash, { - action: ProtocolAction.withdrawAndSwap, + action: ProtocolAction.withdrawAndSwitch, txState: 'success', asset: poolReserve.aTokenAddress, amount: parseUnits(amountToApprove, poolReserve.decimals).toString(), @@ -232,7 +232,7 @@ export const WithdrawAndSwapActions = ({ useEffect(() => { let switchGasLimit = 0; - switchGasLimit = Number(gasLimitRecommendations[ProtocolAction.withdrawAndSwap].recommended); + switchGasLimit = Number(gasLimitRecommendations[ProtocolAction.withdrawAndSwitch].recommended); if (requiresApproval && !approvalTxState.success) { switchGasLimit += Number(APPROVAL_GAS_LIMIT); } diff --git a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx b/src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx similarity index 97% rename from src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx rename to src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx index 841f65bedc..e5f98b180e 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx @@ -24,8 +24,8 @@ import { ModalWrapperProps } from '../FlowCommons/ModalWrapper'; import { DetailsHFLine, DetailsNumberLine, TxModalDetails } from '../FlowCommons/TxModalDetails'; import { zeroLTVBlockingWithdraw } from '../utils'; import { calculateMaxWithdrawAmount } from './utils'; -import { WithdrawAndSwapActions } from './WithdrawAndSwapActions'; -import { WithdrawAndSwapTxSuccessView } from './WithdrawAndSwapSuccess'; +import { WithdrawAndSwitchActions } from './WithdrawAndSwitchActions'; +import { WithdrawAndSwitchTxSuccessView } from './WithdrawAndSwitchSuccess'; import { useWithdrawError } from './WithdrawError'; export enum ErrorType { @@ -34,7 +34,7 @@ export enum ErrorType { ZERO_LTV_WITHDRAW_BLOCKED, } -export const WithdrawAndSwapModalContent = ({ +export const WithdrawAndSwitchModalContent = ({ poolReserve, userReserve, symbol, @@ -135,7 +135,7 @@ export const WithdrawAndSwapModalContent = ({ if (withdrawTxState.success) return ( - )} - { +}: WithdrawAndSwitchTxSuccessViewProps) => { return ( { const ghoReserve = getGhoReserve(reserves); const isWithdrawAndSwapPossible = - isFeatureEnabled.withdrawAndSwap(currentMarketData) && + isFeatureEnabled.withdrawAndSwitch(currentMarketData) && args.underlyingAsset !== ghoReserve?.underlyingAsset; const handleClose = () => { @@ -53,9 +53,9 @@ export const WithdrawModal = () => { setUnwrap={setWithdrawUnWrapped} /> )} - {withdrawType === WithdrawType.WITHDRAWSWAP && ( + {withdrawType === WithdrawType.WITHDRAWSWITCH && ( <> - + )} diff --git a/src/components/transactions/Withdraw/WithdrawTypeSelector.tsx b/src/components/transactions/Withdraw/WithdrawTypeSelector.tsx index b033a14fb0..c26184d783 100644 --- a/src/components/transactions/Withdraw/WithdrawTypeSelector.tsx +++ b/src/components/transactions/Withdraw/WithdrawTypeSelector.tsx @@ -8,7 +8,7 @@ import { WITHDRAW_MODAL } from 'src/utils/mixPanelEvents'; export enum WithdrawType { WITHDRAW, - WITHDRAWSWAP, + WITHDRAWSWITCH, } export function WithdrawTypeSelector({ withdrawType, @@ -42,8 +42,8 @@ export function WithdrawTypeSelector({ trackEvent(WITHDRAW_MODAL.SWITCH_WITHDRAW_TYPE, { withdrawType: 'Withdraw and Switch' }) } diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index e1daac759a..87de9160ee 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -357,7 +357,7 @@ msgstr "Author" #: src/components/transactions/Borrow/BorrowModalContent.tsx #: src/components/transactions/Borrow/GhoBorrowModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx #: src/modules/dashboard/lists/BorrowAssetsList/BorrowAssetsList.tsx #: src/modules/dashboard/lists/BorrowAssetsList/GhoBorrowAssetsListItem.tsx @@ -1159,7 +1159,7 @@ msgid "Holders of stkAAVE receive a discount on the GHO borrowing rate" msgstr "Holders of stkAAVE receive a discount on the GHO borrowing rate" #: src/components/transactions/Borrow/BorrowAmountWarning.tsx -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "I acknowledge the risks involved." msgstr "I acknowledge the risks involved." @@ -1781,7 +1781,7 @@ msgstr "Read-only mode." msgid "Read-only mode. Connect to a wallet to perform transactions." msgstr "Read-only mode. Connect to a wallet to perform transactions." -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx msgid "Receive (est.)" msgstr "Receive (est.)" @@ -1809,7 +1809,7 @@ msgstr "Reload the page" msgid "Remaining debt" msgstr "Remaining debt" -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "Remaining supply" msgstr "Remaining supply" @@ -2179,8 +2179,8 @@ msgstr "Supply apy" #: src/components/transactions/DebtSwitch/DebtSwitchModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx #: src/components/transactions/Swap/SwapModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx #: src/modules/dashboard/lists/SuppliedPositionsList/SuppliedPositionsListMobileItem.tsx #: src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsListMobileItem.tsx @@ -2841,7 +2841,7 @@ msgstr "With a voting power of <0/>" msgid "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" msgstr "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" -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModal.tsx #: src/components/transactions/Withdraw/WithdrawTypeSelector.tsx #: src/modules/dashboard/lists/SuppliedPositionsList/SuppliedPositionsListItem.tsx @@ -2855,8 +2855,8 @@ msgstr "Withdraw" msgid "Withdraw & Switch" msgstr "Withdraw & Switch" -#: src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx -#: src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx msgid "Withdraw and Switch" msgstr "Withdraw and Switch" @@ -2864,11 +2864,11 @@ msgstr "Withdraw and Switch" msgid "Withdraw {symbol}" msgstr "Withdraw {symbol}" -#: src/components/transactions/Withdraw/WithdrawAndSwapActions.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx msgid "Withdrawing and Switching" msgstr "Withdrawing and Switching" -#: src/components/transactions/Withdraw/WithdrawAndSwapModalContent.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchModalContent.tsx #: src/components/transactions/Withdraw/WithdrawModalContent.tsx msgid "Withdrawing this amount will reduce your health factor and increase risk of liquidation." msgstr "Withdrawing this amount will reduce your health factor and increase risk of liquidation." @@ -2984,7 +2984,7 @@ msgstr "You {action} <0/> {symbol}" msgid "You've successfully switched borrow position." msgstr "You've successfully switched borrow position." -#: src/components/transactions/Withdraw/WithdrawAndSwapSuccess.tsx +#: src/components/transactions/Withdraw/WithdrawAndSwitchSuccess.tsx msgid "You've successfully withdrew & switched tokens." msgstr "You've successfully withdrew & switched tokens." diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index 344b9195e6..c1753a1044 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -25,7 +25,7 @@ import { UiPoolDataProvider, UserReserveDataHumanized, V3FaucetService, - WithdrawAndSwapAdapterService, + WithdrawAndSwitchAdapterService, } from '@aave/contract-helpers'; import { LPBorrowParamsType, @@ -48,7 +48,7 @@ import { DebtSwitchActionProps } from 'src/components/transactions/DebtSwitch/De import { CollateralRepayActionProps } from 'src/components/transactions/Repay/CollateralRepayActions'; import { RepayActionProps } from 'src/components/transactions/Repay/RepayActions'; import { SwapActionProps } from 'src/components/transactions/Swap/SwapActions'; -import { WithdrawAndSwapActionProps } from 'src/components/transactions/Withdraw/WithdrawAndSwapActions'; +import { WithdrawAndSwitchActionProps } from 'src/components/transactions/Withdraw/WithdrawAndSwitchActions'; import { Approval } from 'src/helpers/useTransactionHandler'; import { MarketDataType } from 'src/ui-config/marketsConfig'; import { minBaseTokenRemainingByNetwork, optimizedPath } from 'src/utils/utils'; @@ -94,7 +94,7 @@ export interface PoolSlice { claimRewards: (args: ClaimRewardsActionsProps) => Promise; // TODO: optimize types to use only neccessary properties swapCollateral: (args: SwapActionProps) => Promise; - withdrawAndSwap: (args: WithdrawAndSwapActionProps) => PopulatedTransaction; + withdrawAndSwitch: (args: WithdrawAndSwitchActionProps) => PopulatedTransaction; repay: (args: RepayActionProps) => Promise; repayWithPermit: ( args: RepayActionProps & { @@ -631,7 +631,7 @@ export const createPoolSlice: StateCreator< permitSignature, }); }, - withdrawAndSwap: ({ + withdrawAndSwitch: ({ poolReserve, targetReserve, isMaxSelected, @@ -646,7 +646,7 @@ export const createPoolSlice: StateCreator< const provider = get().jsonRpcProvider(); const currentMarketData = get().currentMarketData; - const withdrawAndSwapService = new WithdrawAndSwapAdapterService( + const withdrawAndSwapService = new WithdrawAndSwitchAdapterService( provider, currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER ); @@ -669,15 +669,15 @@ export const createPoolSlice: StateCreator< }; } - return withdrawAndSwapService.withdrawAndSwap({ - assetToSwapFrom: poolReserve.underlyingAsset, - assetToSwapTo: targetReserve.underlyingAsset, - swapAll: isMaxSelected, - amountToSwap: amountToSwap, + return withdrawAndSwapService.withdrawAndSwitch({ + assetToSwitchFrom: poolReserve.underlyingAsset, + assetToSwitchTo: targetReserve.underlyingAsset, + switchAll: isMaxSelected, + amountToSwitch: amountToSwap, minAmountToReceive: amountToReceive, user, augustus, - swapCallData: txCalldata, + switchCallData: txCalldata, permitParams: signatureDeconstruct, }); }, diff --git a/src/ui-config/marketsConfig.tsx b/src/ui-config/marketsConfig.tsx index f9e413f138..b286475b38 100644 --- a/src/ui-config/marketsConfig.tsx +++ b/src/ui-config/marketsConfig.tsx @@ -43,7 +43,7 @@ export type MarketDataType = { incentives?: boolean; permissions?: boolean; debtSwitch?: boolean; - withdrawAndSwap?: boolean; + withdrawAndSwitch?: boolean; }; isFork?: boolean; permissionComponent?: ReactNode; @@ -123,7 +123,7 @@ export const marketsData: { liquiditySwap: true, collateralRepay: true, incentives: true, - withdrawAndSwap: true, + withdrawAndSwitch: true, debtSwitch: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3', @@ -316,7 +316,7 @@ export const marketsData: { liquiditySwap: true, collateralRepay: true, debtSwitch: true, - withdrawAndSwap: true, + withdrawAndSwitch: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3-arbitrum', addresses: { @@ -367,7 +367,7 @@ export const marketsData: { incentives: true, collateralRepay: true, debtSwitch: true, - withdrawAndSwap: true, + withdrawAndSwitch: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3-avalanche', addresses: { @@ -518,7 +518,7 @@ export const marketsData: { collateralRepay: true, liquiditySwap: true, debtSwitch: true, - withdrawAndSwap: true, + withdrawAndSwitch: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3-optimism', addresses: { @@ -545,7 +545,7 @@ export const marketsData: { incentives: true, collateralRepay: true, debtSwitch: true, - withdrawAndSwap: true, + withdrawAndSwitch: true, }, subgraphUrl: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v3-polygon', addresses: { diff --git a/src/utils/marketsAndNetworksConfig.ts b/src/utils/marketsAndNetworksConfig.ts index 937023920f..c0130671f3 100644 --- a/src/utils/marketsAndNetworksConfig.ts +++ b/src/utils/marketsAndNetworksConfig.ts @@ -155,7 +155,7 @@ export const isFeatureEnabled = { collateralRepay: (data: MarketDataType) => data.enabledFeatures?.collateralRepay, permissions: (data: MarketDataType) => data.enabledFeatures?.permissions, debtSwitch: (data: MarketDataType) => data.enabledFeatures?.debtSwitch, - withdrawAndSwap: (data: MarketDataType) => data.enabledFeatures?.withdrawAndSwap, + withdrawAndSwitch: (data: MarketDataType) => data.enabledFeatures?.withdrawAndSwitch, }; const providers: { [network: string]: ethersProviders.Provider } = {}; diff --git a/yarn.lock b/yarn.lock index 2dd66c5370..a43f1fd996 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@aave/contract-helpers@1.18.3-c675ef5b4dc014124c8a23388b69d4affda5dcc1.0": - version "1.18.3-c675ef5b4dc014124c8a23388b69d4affda5dcc1.0" - resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.18.3-c675ef5b4dc014124c8a23388b69d4affda5dcc1.0.tgz#bdf873723015632676443d0f7c96ac53c6a736c4" - integrity sha512-sA9GELzKwlkh/N2vrMwSNO8ZTy6851BIw3yYGEG5+a5MPiun2ZbHxI+dcpcLhDQLAOwTDyozwsr7HaesdVBobg== +"@aave/contract-helpers@1.19.1-b45a3ae879f959102573849b6b08aec23814490e.0": + version "1.19.1-b45a3ae879f959102573849b6b08aec23814490e.0" + resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.19.1-b45a3ae879f959102573849b6b08aec23814490e.0.tgz#1fd82c57da072be0d909e045286ca8975b0b89e0" + integrity sha512-yb3gk5WnnY1lZ8lPO1Yi6HZV0xStvLZvk9Uy3nFdeKDvzo5gDQIbltrmej84D3GZgv0J5tWywfxfuxtLgWFFeA== dependencies: isomorphic-unfetch "^3.1.0" From f08c96eee83ec769016d2171fb430df71ec2e9a7 Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Tue, 22 Aug 2023 16:48:47 -0500 Subject: [PATCH 18/24] feat: utils bump --- package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 08f704ec89..4e2f7c1d7d 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,8 @@ "test:coverage": "jest --coverage" }, "dependencies": { - "@aave/contract-helpers": "1.19.1-b45a3ae879f959102573849b6b08aec23814490e.0", - "@aave/math-utils": "1.18.2", + "@aave/contract-helpers": "1.20.0", + "@aave/math-utils": "1.20.0", "@bgd-labs/aave-address-book": "^1.30.0", "@emotion/cache": "11.10.3", "@emotion/react": "11.10.4", diff --git a/yarn.lock b/yarn.lock index a43f1fd996..71c6242d6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@aave/contract-helpers@1.19.1-b45a3ae879f959102573849b6b08aec23814490e.0": - version "1.19.1-b45a3ae879f959102573849b6b08aec23814490e.0" - resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.19.1-b45a3ae879f959102573849b6b08aec23814490e.0.tgz#1fd82c57da072be0d909e045286ca8975b0b89e0" - integrity sha512-yb3gk5WnnY1lZ8lPO1Yi6HZV0xStvLZvk9Uy3nFdeKDvzo5gDQIbltrmej84D3GZgv0J5tWywfxfuxtLgWFFeA== +"@aave/contract-helpers@1.20.0": + version "1.20.0" + resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.20.0.tgz#4ff6afb540402ff2ffef3b08cbcc80a688b627d1" + integrity sha512-LrHswh/g1fyTpZ4fKHO2jdGjDe/2ligz47xZp/b23IS+b2eXxvTqOtPvDyyAXyYvcmK6Ce3zYYAUk2jaMOGoNg== dependencies: isomorphic-unfetch "^3.1.0" -"@aave/math-utils@1.18.2": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.18.2.tgz#0027d10a764c77f0f822ac945af2486e7ce62d21" - integrity sha512-nR3saK+lCVhsWgx8leoBvcvJHSAdo7syb26xQCUQHz8DOfDX2pkiK+s+Io3mwJbPr+zLMPpeWxSHIg8pcEym2Q== +"@aave/math-utils@1.20.0": + version "1.20.0" + resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.20.0.tgz#735f38c8150e8a603490d73d2db59864d5515dd6" + integrity sha512-s6o2x1Gx1aqA+w0Hk8KzKsdqBA2A/iT7WGNkIAelfyxLJol2JC3Ap6tzDTlEny2zzLIfl+vpQjdWhabFMgqv4Q== "@adobe/css-tools@^4.0.1": version "4.0.1" From 2040ab7bb8797eb461a573dcc53964406922d7d6 Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Thu, 24 Aug 2023 08:05:15 -0500 Subject: [PATCH 19/24] feat: updated addresses --- src/ui-config/marketsConfig.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ui-config/marketsConfig.tsx b/src/ui-config/marketsConfig.tsx index 317fc49981..edbd9119bb 100644 --- a/src/ui-config/marketsConfig.tsx +++ b/src/ui-config/marketsConfig.tsx @@ -141,7 +141,7 @@ export const marketsData: { COLLECTOR: AaveV3Ethereum.COLLECTOR, GHO_TOKEN_ADDRESS: AaveV3Ethereum.GHO_TOKEN, GHO_UI_DATA_PROVIDER: AaveV3Ethereum.UI_GHO_DATA_PROVIDER, - WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647aDE75cb48afcDC3D0be9Db9AA663711f', + WITHDRAW_AND_SWAP_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', DEBT_SWITCH_ADAPTER: AaveV3Ethereum.DEBT_SWAP_ADAPTER, }, halIntegration: { @@ -356,7 +356,7 @@ export const marketsData: { SWAP_COLLATERAL_ADAPTER: AaveV3Arbitrum.SWAP_COLLATERAL_ADAPTER, REPAY_WITH_COLLATERAL_ADAPTER: AaveV3Arbitrum.REPAY_WITH_COLLATERAL_ADAPTER, DEBT_SWITCH_ADAPTER: AaveV3Arbitrum.DEBT_SWAP_ADAPTER, - WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647ade75cb48afcdc3d0be9db9aa663711f', + WITHDRAW_AND_SWAP_ADAPTER: '0x5598BbFA2f4fE8151f45bBA0a3edE1b54B51a0a9', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', @@ -406,7 +406,7 @@ export const marketsData: { UI_INCENTIVE_DATA_PROVIDER: AaveV3Avalanche.UI_INCENTIVE_DATA_PROVIDER, COLLECTOR: AaveV3Avalanche.COLLECTOR, DEBT_SWITCH_ADAPTER: AaveV3Avalanche.DEBT_SWAP_ADAPTER, - WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647ade75cb48afcdc3d0be9db9aa663711f', + WITHDRAW_AND_SWAP_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', @@ -558,7 +558,7 @@ export const marketsData: { SWAP_COLLATERAL_ADAPTER: AaveV3Optimism.SWAP_COLLATERAL_ADAPTER, REPAY_WITH_COLLATERAL_ADAPTER: AaveV3Optimism.REPAY_WITH_COLLATERAL_ADAPTER, DEBT_SWITCH_ADAPTER: AaveV3Optimism.DEBT_SWAP_ADAPTER, - WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647ade75cb48afcdc3d0be9db9aa663711f', + WITHDRAW_AND_SWAP_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', }, }, [CustomMarket.proto_polygon_v3]: { @@ -584,7 +584,7 @@ export const marketsData: { UI_INCENTIVE_DATA_PROVIDER: AaveV3Polygon.UI_INCENTIVE_DATA_PROVIDER, COLLECTOR: AaveV3Polygon.COLLECTOR, DEBT_SWITCH_ADAPTER: AaveV3Polygon.DEBT_SWAP_ADAPTER, - WITHDRAW_AND_SWAP_ADAPTER: '0x769e6647ade75cb48afcdc3d0be9db9aa663711f', + WITHDRAW_AND_SWAP_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', From 4bc70cd367212f7a451c8951508a98b3bb7ce6ad Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Fri, 25 Aug 2023 15:07:51 -0500 Subject: [PATCH 20/24] fix: updated adapter config name --- .../Withdraw/WithdrawAndSwitchActions.tsx | 13 ++++--------- src/store/poolSlice.ts | 2 +- src/ui-config/marketsConfig.tsx | 12 ++++++------ 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx index cb5da50e79..a7a09b9458 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx @@ -153,7 +153,7 @@ export const WithdrawAndSwitchActions = ({ const approvalData = { user: account, token: poolReserve.aTokenAddress, - spender: currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER || '', + spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER || '', amount: amountToApprove, }; try { @@ -188,7 +188,7 @@ export const WithdrawAndSwitchActions = ({ asset: poolReserve.aTokenAddress, amount: parseUnits(amountToApprove, poolReserve.decimals).toString(), assetName: `a${poolReserve.symbol}`, - spender: currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER, + spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER, }); setTxError(undefined); fetchApprovedAmount(poolReserve.aTokenAddress); @@ -213,17 +213,12 @@ export const WithdrawAndSwitchActions = ({ const approvedTargetAmount = await erc20Service.approvedAmount({ user: account, token: aTokenAddress, - spender: currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER || '', + spender: currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER || '', }); setApprovedAmount(approvedTargetAmount); setLoadingTxns(false); }, - [ - jsonRpcProvider, - account, - currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER, - setLoadingTxns, - ] + [jsonRpcProvider, account, currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER, setLoadingTxns] ); useEffect(() => { diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index c1753a1044..0d7186591b 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -648,7 +648,7 @@ export const createPoolSlice: StateCreator< const withdrawAndSwapService = new WithdrawAndSwitchAdapterService( provider, - currentMarketData.addresses.WITHDRAW_AND_SWAP_ADAPTER + currentMarketData.addresses.WITHDRAW_SWITCH_ADAPTER ); let signatureDeconstruct: PermitSignature = { diff --git a/src/ui-config/marketsConfig.tsx b/src/ui-config/marketsConfig.tsx index edbd9119bb..3407c66b13 100644 --- a/src/ui-config/marketsConfig.tsx +++ b/src/ui-config/marketsConfig.tsx @@ -57,7 +57,7 @@ export type MarketDataType = { SWAP_COLLATERAL_ADAPTER?: string; REPAY_WITH_COLLATERAL_ADAPTER?: string; DEBT_SWITCH_ADAPTER?: string; - WITHDRAW_AND_SWAP_ADAPTER?: string; + WITHDRAW_SWITCH_ADAPTER?: string; FAUCET?: string; PERMISSION_MANAGER?: string; WALLET_BALANCE_PROVIDER: string; @@ -141,7 +141,7 @@ export const marketsData: { COLLECTOR: AaveV3Ethereum.COLLECTOR, GHO_TOKEN_ADDRESS: AaveV3Ethereum.GHO_TOKEN, GHO_UI_DATA_PROVIDER: AaveV3Ethereum.UI_GHO_DATA_PROVIDER, - WITHDRAW_AND_SWAP_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', + WITHDRAW_SWITCH_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', DEBT_SWITCH_ADAPTER: AaveV3Ethereum.DEBT_SWAP_ADAPTER, }, halIntegration: { @@ -356,7 +356,7 @@ export const marketsData: { SWAP_COLLATERAL_ADAPTER: AaveV3Arbitrum.SWAP_COLLATERAL_ADAPTER, REPAY_WITH_COLLATERAL_ADAPTER: AaveV3Arbitrum.REPAY_WITH_COLLATERAL_ADAPTER, DEBT_SWITCH_ADAPTER: AaveV3Arbitrum.DEBT_SWAP_ADAPTER, - WITHDRAW_AND_SWAP_ADAPTER: '0x5598BbFA2f4fE8151f45bBA0a3edE1b54B51a0a9', + WITHDRAW_SWITCH_ADAPTER: '0x5598BbFA2f4fE8151f45bBA0a3edE1b54B51a0a9', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', @@ -406,7 +406,7 @@ export const marketsData: { UI_INCENTIVE_DATA_PROVIDER: AaveV3Avalanche.UI_INCENTIVE_DATA_PROVIDER, COLLECTOR: AaveV3Avalanche.COLLECTOR, DEBT_SWITCH_ADAPTER: AaveV3Avalanche.DEBT_SWAP_ADAPTER, - WITHDRAW_AND_SWAP_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', + WITHDRAW_SWITCH_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', @@ -558,7 +558,7 @@ export const marketsData: { SWAP_COLLATERAL_ADAPTER: AaveV3Optimism.SWAP_COLLATERAL_ADAPTER, REPAY_WITH_COLLATERAL_ADAPTER: AaveV3Optimism.REPAY_WITH_COLLATERAL_ADAPTER, DEBT_SWITCH_ADAPTER: AaveV3Optimism.DEBT_SWAP_ADAPTER, - WITHDRAW_AND_SWAP_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', + WITHDRAW_SWITCH_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', }, }, [CustomMarket.proto_polygon_v3]: { @@ -584,7 +584,7 @@ export const marketsData: { UI_INCENTIVE_DATA_PROVIDER: AaveV3Polygon.UI_INCENTIVE_DATA_PROVIDER, COLLECTOR: AaveV3Polygon.COLLECTOR, DEBT_SWITCH_ADAPTER: AaveV3Polygon.DEBT_SWAP_ADAPTER, - WITHDRAW_AND_SWAP_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', + WITHDRAW_SWITCH_ADAPTER: '0x78F8Bd884C3D738B74B420540659c82f392820e0', }, halIntegration: { URL: 'https://app.hal.xyz/recipes/aave-v3-track-health-factor', From e9d62584740c382e5001815db86bade32f92afec Mon Sep 17 00:00:00 2001 From: Joaquin Battilana Date: Wed, 30 Aug 2023 15:25:47 +0100 Subject: [PATCH 21/24] feat: ui fixes --- .../FlowCommons/TxModalDetails.tsx | 2 +- .../transactions/GasStation/GasStation.tsx | 39 ++++++++++++------- .../Withdraw/WithdrawAndSwitchActions.tsx | 5 ++- src/modules/dashboard/lists/SlippageList.tsx | 1 - 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/components/transactions/FlowCommons/TxModalDetails.tsx b/src/components/transactions/FlowCommons/TxModalDetails.tsx index 252ba1e408..e1c686b020 100644 --- a/src/components/transactions/FlowCommons/TxModalDetails.tsx +++ b/src/components/transactions/FlowCommons/TxModalDetails.tsx @@ -61,8 +61,8 @@ export const TxModalDetails: React.FC = ({ gasLimit={parseUnits(gasLimit || '0', 'wei')} skipLoad={skipLoad} disabled={disabled} + rightComponent={slippageSelector} /> - {slippageSelector} ); diff --git a/src/components/transactions/GasStation/GasStation.tsx b/src/components/transactions/GasStation/GasStation.tsx index 210b98e9ce..2ac4b50db3 100644 --- a/src/components/transactions/GasStation/GasStation.tsx +++ b/src/components/transactions/GasStation/GasStation.tsx @@ -3,7 +3,7 @@ import LocalGasStationIcon from '@mui/icons-material/LocalGasStation'; import { Box, CircularProgress, Stack } from '@mui/material'; import { BigNumber } from 'ethers/lib/ethers'; import { formatUnits, parseUnits } from 'ethers/lib/utils'; -import React from 'react'; +import React, { ReactNode } from 'react'; import { GasTooltip } from 'src/components/infoTooltips/GasTooltip'; import { Warning } from 'src/components/primitives/Warning'; import { useWalletBalances } from 'src/hooks/app-data-provider/useWalletBalances'; @@ -20,6 +20,7 @@ export interface GasStationProps { gasLimit: BigNumber; skipLoad?: boolean; disabled?: boolean; + rightComponent?: ReactNode; } export const getGasCosts = ( @@ -36,7 +37,12 @@ export const getGasCosts = ( return Number(formatUnits(gasLimit.mul(gasPrice), 18)) * parseFloat(baseCurrencyUsd); }; -export const GasStation: React.FC = ({ gasLimit, skipLoad, disabled }) => { +export const GasStation: React.FC = ({ + gasLimit, + skipLoad, + disabled, + rightComponent, +}) => { const { state, gasPriceData: { data }, @@ -61,20 +67,23 @@ export const GasStation: React.FC = ({ gasLimit, skipLoad, disa : undefined; return ( - - - + + + + - {loadingTxns && !skipLoad ? ( - - ) : totalGasCostsUsd && !disabled ? ( - <> - - - - ) : ( - '-' - )} + {loadingTxns && !skipLoad ? ( + + ) : totalGasCostsUsd && !disabled ? ( + <> + + + + ) : ( + '-' + )} + + {rightComponent} {!disabled && Number(nativeBalanceUSD) < Number(totalGasCostsUsd) && ( diff --git a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx index a7a09b9458..6c188b7fa3 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx @@ -92,12 +92,13 @@ export const WithdrawAndSwitchActions = ({ const { sendTx, signTxData } = useWeb3Context(); - const [approvedAmount, setApprovedAmount] = useState(0); + const [approvedAmount, setApprovedAmount] = useState(undefined); const [signatureParams, setSignatureParams] = useState(); const { refetchPoolData, refetchIncentiveData, refetchGhoData } = useBackgroundDataProvider(); const requiresApproval = useMemo(() => { - return approvedAmount <= Number(amountToSwap); + if (approvedAmount === undefined || isWrongNetwork) return false; + else return approvedAmount <= Number(amountToSwap); }, [approvedAmount, amountToSwap]); const useSignature = walletApprovalMethodPreference === ApprovalMethod.PERMIT; diff --git a/src/modules/dashboard/lists/SlippageList.tsx b/src/modules/dashboard/lists/SlippageList.tsx index 12fd602c6a..50005f908c 100644 --- a/src/modules/dashboard/lists/SlippageList.tsx +++ b/src/modules/dashboard/lists/SlippageList.tsx @@ -65,7 +65,6 @@ export const ListSlippageButton = ({ setSlippage, selectedSlippage }: ListSlippa } disabled={false} data-cy={`slippageButton_${selectedSlippage}`} - sx={{ mt: 6 }} /> Date: Wed, 30 Aug 2023 15:28:06 +0100 Subject: [PATCH 22/24] fix: added dependencies to useMemo on withdraw and swap modal --- .../transactions/Withdraw/WithdrawAndSwitchActions.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx index 6c188b7fa3..c6153af7f1 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx @@ -99,7 +99,7 @@ export const WithdrawAndSwitchActions = ({ const requiresApproval = useMemo(() => { if (approvedAmount === undefined || isWrongNetwork) return false; else return approvedAmount <= Number(amountToSwap); - }, [approvedAmount, amountToSwap]); + }, [approvedAmount, amountToSwap, isWrongNetwork]); const useSignature = walletApprovalMethodPreference === ApprovalMethod.PERMIT; From 95d08470068d0369109c52c6645ac17eb2cdfe7d Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Wed, 30 Aug 2023 09:56:33 -0500 Subject: [PATCH 23/24] feat: track tx errors --- .../transactions/Withdraw/WithdrawAndSwitchActions.tsx | 9 +++++++++ src/utils/mixPanelEvents.ts | 1 + 2 files changed, 10 insertions(+) diff --git a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx index c6153af7f1..110cf01b74 100644 --- a/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx +++ b/src/components/transactions/Withdraw/WithdrawAndSwitchActions.tsx @@ -15,6 +15,7 @@ import { useRootStore } from 'src/store/root'; import { ApprovalMethod } from 'src/store/walletSlice'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; import { QueryKeys } from 'src/ui-config/queries'; +import { GENERAL } from 'src/utils/mixPanelEvents'; import { TxActionsWrapper } from '../TxActionsWrapper'; import { APPROVAL_GAS_LIMIT } from '../utils'; @@ -68,6 +69,7 @@ export const WithdrawAndSwitchActions = ({ walletApprovalMethodPreference, generateSignatureRequest, addTransaction, + trackEvent, ] = useRootStore((state) => [ state.withdrawAndSwitch, state.currentMarketData, @@ -78,6 +80,7 @@ export const WithdrawAndSwitchActions = ({ state.walletApprovalMethodPreference, state.generateSignatureRequest, state.addTransaction, + state.trackEvent, ]); const { approvalTxState, @@ -146,6 +149,12 @@ export const WithdrawAndSwitchActions = ({ txHash: undefined, loading: false, }); + trackEvent(GENERAL.TRANSACTION_ERROR, { + transactiontype: ProtocolAction.withdrawAndSwitch, + asset: poolReserve.underlyingAsset, + assetName: poolReserve.name, + error, + }); } }; diff --git a/src/utils/mixPanelEvents.ts b/src/utils/mixPanelEvents.ts index 91e4097354..dca79f51a6 100644 --- a/src/utils/mixPanelEvents.ts +++ b/src/utils/mixPanelEvents.ts @@ -17,6 +17,7 @@ export const GENERAL = { TOKEN_APPROVAL: 'Token Approval', ACCEPT_RISK: 'Accept Risk', TRANSACTION: 'Transaction', + TRANSACTION_ERROR: 'Transaction Error', OPEN_MODAL: 'Open Modal', MAX_INPUT_SELECTION: 'Select Max input', }; From b1c19c1dc9979df206b82242e62cd2a6df02c7c9 Mon Sep 17 00:00:00 2001 From: Mark Grothe Date: Wed, 30 Aug 2023 14:14:18 -0500 Subject: [PATCH 24/24] fix: use variable debt for dai switch test --- .../e2e/0-v2-markets/0-main-v2-market/switch.aave-v2.cy.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cypress/e2e/0-v2-markets/0-main-v2-market/switch.aave-v2.cy.ts b/cypress/e2e/0-v2-markets/0-main-v2-market/switch.aave-v2.cy.ts index 6e062b48fe..a3d345acde 100644 --- a/cypress/e2e/0-v2-markets/0-main-v2-market/switch.aave-v2.cy.ts +++ b/cypress/e2e/0-v2-markets/0-main-v2-market/switch.aave-v2.cy.ts @@ -14,14 +14,14 @@ const testData = { borrow: { asset: assets.aaveMarket.DAI, amount: 50, - apyType: constants.borrowAPYType.stable, + apyType: constants.borrowAPYType.default, hasApproval: true, }, swap: { fromAsset: assets.aaveMarket.DAI, toAsset: assets.aaveMarket.USDC, isBorrowed: true, - isVariableBorrowedAPY: false, + isVariableBorrowedAPY: true, amount: 200, changeApprove: true, hasApproval: false,