From 3895517e67d5dd170eb7ee241e4c0d97b87c3515 Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Thu, 17 Nov 2022 22:14:44 -0600 Subject: [PATCH 01/31] feat: use updated permit function --- package.json | 4 ++-- src/store/poolSlice.ts | 21 ++++++++++++++------- yarn.lock | 16 ++++++++-------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 168e999951..e4dee08cc2 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,8 @@ "test:ci": "jest --ci" }, "dependencies": { - "@aave/contract-helpers": "1.9.0", - "@aave/math-utils": "1.9.0", + "@aave/contract-helpers": "1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0+078b65b", + "@aave/math-utils": "1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0+078b65b", "@emotion/cache": "11.10.3", "@emotion/react": "11.10.4", "@emotion/server": "latest", diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index 566347024f..743aed56b0 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -13,16 +13,17 @@ import { UiPoolDataProvider, UserReserveDataHumanized, } from '@aave/contract-helpers'; +import { + ERC20_2612Service, + SignERC20ApprovalType, +} from '@aave/contract-helpers/dist/esm/erc20-2612'; import { LPBorrowParamsType, LPSetUsageAsCollateral, LPSwapBorrowRateMode, LPWithdrawParamsType, } from '@aave/contract-helpers/dist/esm/lendingPool-contract/lendingPoolTypes'; -import { - LPSignERC20ApprovalType, - LPSupplyWithPermitType, -} from '@aave/contract-helpers/dist/esm/v3-pool-contract/lendingPoolTypes'; +import { LPSupplyWithPermitType } from '@aave/contract-helpers/dist/esm/v3-pool-contract/lendingPoolTypes'; import { normalize } from '@aave/math-utils'; import { SignatureLike } from '@ethersproject/bytes'; import dayjs from 'dayjs'; @@ -75,7 +76,7 @@ export interface PoolSlice { args: Omit ) => Promise; setUserEMode: (categoryId: number) => Promise; - signERC20Approval: (args: Omit) => Promise; + signERC20Approval: (args: Omit) => Promise; claimRewards: (args: ClaimRewardsActionsProps) => Promise; // TODO: optimize types to use only neccessary properties swapCollateral: (args: SwapActionProps) => Promise; @@ -117,6 +118,10 @@ export const createPoolSlice: StateCreator< }); } } + function getPermitService() { + const provider = get().jsonRpcProvider(); + return new ERC20_2612Service(provider); + } return { data: new Map(), refreshPoolData: async () => { @@ -378,11 +383,13 @@ export const createPoolSlice: StateCreator< }); }, signERC20Approval: async (args) => { - const pool = getCorrectPool() as Pool; + const permitService = getPermitService(); const user = get().account; - return pool.signERC20Approval({ + const spender = get().currentMarketData.addresses.LENDING_POOL; + return permitService.signERC20Approval({ ...args, user, + spender, }); }, claimRewards: async ({ selectedReward }) => { diff --git a/yarn.lock b/yarn.lock index bcc18d190c..6fa01252bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@aave/contract-helpers@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.9.0.tgz#29b32f41b1731608caf7aac710a0762aae0ff090" - integrity sha512-/MZfyeLjReD2dh32pzASWZQKGmi706/IJT+tS00Rx2o3iLRr058nvePDw/S6IgYuWWwltT/I3cUwBqcU7k6OwQ== +"@aave/contract-helpers@1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0+078b65b": + version "1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0" + resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0.tgz#5678ab3b885eebfa5ad686bc1ef36e2c08e6690a" + integrity sha512-gqMvyFy1Yl/iBBBjmgs0k9Mg2kMPTlxSiQY2VRNhN3yVEMvzS0FzoGK9SE7UZzToui3l5czsHlFhUQl836Z22A== dependencies: isomorphic-unfetch "^3.1.0" -"@aave/math-utils@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.9.0.tgz#873b6e4087559baa5ac5bfd3b0b8dbde85e054df" - integrity sha512-6E4SUI3JwSsfmEayClrG1ipgOopVqRjxym50LvwVQrlDa863JRTq656DuQmwprNUarWM2cKAuVL7qh58SnWsOw== +"@aave/math-utils@1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0+078b65b": + version "1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0" + resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0.tgz#5380d814018e6474a32f0614f3ce3796bb115f4b" + integrity sha512-xx+tk7vAoSTVdF+q9qOqQV+5+S/A3IqvmrLxa3ezhWw9jcjNHpcMJiAfLVopYipW0AxibPsOI2iUnT9T1BHnKA== dependencies: bignumber.js "^9.0.1" tslib "^2.4.0" From 7ab4c8cd1f75be0cbde088d81f5ea6a21232922b Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Thu, 17 Nov 2022 22:46:48 -0600 Subject: [PATCH 02/31] chore: bump package for proper export --- package.json | 4 ++-- src/store/poolSlice.ts | 6 ++---- yarn.lock | 16 ++++++++-------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index e4dee08cc2..79a48d83da 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,8 @@ "test:ci": "jest --ci" }, "dependencies": { - "@aave/contract-helpers": "1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0+078b65b", - "@aave/math-utils": "1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0+078b65b", + "@aave/contract-helpers": "1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0+9c2eb60", + "@aave/math-utils": "1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0+9c2eb60", "@emotion/cache": "11.10.3", "@emotion/react": "11.10.4", "@emotion/server": "latest", diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index 743aed56b0..e703e0fc6b 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -1,4 +1,5 @@ import { + ERC20_2612Service, EthereumTransactionTypeExtended, FaucetParamsType, FaucetService, @@ -10,13 +11,10 @@ import { Pool, PoolBaseCurrencyHumanized, ReserveDataHumanized, + SignERC20ApprovalType, UiPoolDataProvider, UserReserveDataHumanized, } from '@aave/contract-helpers'; -import { - ERC20_2612Service, - SignERC20ApprovalType, -} from '@aave/contract-helpers/dist/esm/erc20-2612'; import { LPBorrowParamsType, LPSetUsageAsCollateral, diff --git a/yarn.lock b/yarn.lock index 6fa01252bf..9bdfb6a0b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@aave/contract-helpers@1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0+078b65b": - version "1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0" - resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0.tgz#5678ab3b885eebfa5ad686bc1ef36e2c08e6690a" - integrity sha512-gqMvyFy1Yl/iBBBjmgs0k9Mg2kMPTlxSiQY2VRNhN3yVEMvzS0FzoGK9SE7UZzToui3l5czsHlFhUQl836Z22A== +"@aave/contract-helpers@1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0+9c2eb60": + version "1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0" + resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0.tgz#b9e987367975b1fd4c1cbf8f9e414ba66285f2d1" + integrity sha512-QTzw739lRe8p9y1p8gvFyeT1VbIgdaPBbW2QRRaVllHym7rewnWn6n+wB7Hw0chJUysWUwu8MryWbThkNmw75Q== dependencies: isomorphic-unfetch "^3.1.0" -"@aave/math-utils@1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0+078b65b": - version "1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0" - resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.9.1-62ab71156dfebbc1c67766cfec381151ba755962.0.tgz#5380d814018e6474a32f0614f3ce3796bb115f4b" - integrity sha512-xx+tk7vAoSTVdF+q9qOqQV+5+S/A3IqvmrLxa3ezhWw9jcjNHpcMJiAfLVopYipW0AxibPsOI2iUnT9T1BHnKA== +"@aave/math-utils@1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0+9c2eb60": + version "1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0" + resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0.tgz#6d78bd14d7f630199e9f4193234191066a94a25f" + integrity sha512-qn5UeuFBjneS0SmLz0VYCtXtk1hRNnW8t+8pVrwZjoLCS3DrYq8DaOBakTkcGTOmCm3YcJU/WDeyhPCAxnIY3Q== dependencies: bignumber.js "^9.0.1" tslib "^2.4.0" From b1c00128ae1b9181372094f4c9d2aee37c12c10f Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Thu, 17 Nov 2022 22:59:20 -0600 Subject: [PATCH 03/31] chore: standardize permitConfig casing --- .../transactions/Repay/RepayActions.tsx | 3 +- .../transactions/Supply/SupplyActions.tsx | 4 +- src/ui-config/permitConfig.ts | 132 +++++++++--------- 3 files changed, 71 insertions(+), 68 deletions(-) diff --git a/src/components/transactions/Repay/RepayActions.tsx b/src/components/transactions/Repay/RepayActions.tsx index f2987920b3..37600a101d 100644 --- a/src/components/transactions/Repay/RepayActions.tsx +++ b/src/components/transactions/Repay/RepayActions.tsx @@ -42,7 +42,8 @@ export const RepayActions = ({ useTransactionHandler({ // move tryPermit to store tryPermit: - currentMarketData.v3 && permitByChainAndToken[chainId]?.[utils.getAddress(poolAddress)], + currentMarketData.v3 && + permitByChainAndToken[chainId]?.[utils.getAddress(poolAddress).toLowerCase()], handleGetTxns: async () => { return repay({ amountToRepay, diff --git a/src/components/transactions/Supply/SupplyActions.tsx b/src/components/transactions/Supply/SupplyActions.tsx index 0c378a7ab7..31c8b9a154 100644 --- a/src/components/transactions/Supply/SupplyActions.tsx +++ b/src/components/transactions/Supply/SupplyActions.tsx @@ -36,7 +36,8 @@ export const SupplyActions = ({ useTransactionHandler({ // TODO: move tryPermit tryPermit: - currentMarketData.v3 && permitByChainAndToken[chainId]?.[utils.getAddress(poolAddress)], + currentMarketData.v3 && + permitByChainAndToken[chainId]?.[utils.getAddress(poolAddress).toLowerCase()], handleGetTxns: async () => { return supply({ amountToSupply, @@ -66,6 +67,7 @@ export const SupplyActions = ({ isWrongNetwork={isWrongNetwork} requiresAmount amount={amountToSupply} + symbol={symbol} preparingTransactions={loadingTxns} actionText={Supply {symbol}} actionInProgressText={Supplying {symbol}} diff --git a/src/ui-config/permitConfig.ts b/src/ui-config/permitConfig.ts index 0465aac246..229a1e3fab 100644 --- a/src/ui-config/permitConfig.ts +++ b/src/ui-config/permitConfig.ts @@ -15,92 +15,92 @@ export const permitByChainAndToken: { '0x2e3a2fb8473316a02b8a297b982498e661e1f6f5': true, }, [ChainId.arbitrum_one]: { - '0xf97f4df75117a78c1A5a0DBb814Af92458539FB4': true, - '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8': true, + '0xf97f4df75117a78c1a5a0dbb814af92458539fb4': true, + '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8': true, '0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f': true, - '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1': true, - '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9': true, - '0xba5DdD1f9d7F570dc94a51479a000E3BCE967196': true, - '0xD22a58f79e9481D1a88e00c343885A588b34b68B': false, // eurs + '0x82af49447d8a07e3bd95bd0d56f35241523fbab1': true, + '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9': true, + '0xba5ddd1f9d7f570dc94a51479a000e3bce967196': true, + '0xd22a58f79e9481d1a88e00c343885a588b34b68b': false, // eurs }, [ChainId.arbitrum_goerli]: { - '0x805aC2a202e3E217B0C9fe53908ea5e36856fD29': true, - '0x7e752bC77eBE2225B327e6ebF09fAD7801873931': true, - '0x569275a32682aBD8dE2eD68Dc7443724a8aD8660': true, - '0xD0fbc05a6B234b2a6a9D65389C2ffd93Fef0527e': true, - '0x6775842AE82BF2F0f987b10526768Ad89d79536E': true, - '0xbAc565f93f3192D35E9106E67B9d5c9348bD9389': true, - '0x2Df743730160059c50c6bA9E87b30876FA6Db720': true, - '0xCDa739D69067333974cD73A722aB92E5e0ad8a4F': true, + '0x805ac2a202e3e217b0c9fe53908ea5e36856fd29': true, + '0x7e752bc77ebe2225b327e6ebf09fad7801873931': true, + '0x569275a32682abd8de2ed68dc7443724a8ad8660': true, + '0xd0fbc05a6b234b2a6a9d65389c2ffd93fef0527e': true, + '0x6775842ae82bf2f0f987b10526768ad89d79536e': true, + '0xbac565f93f3192d35e9106e67b9d5c9348bd9389': true, + '0x2df743730160059c50c6ba9e87b30876fa6db720': true, + '0xcda739d69067333974cd73a722ab92e5e0ad8a4f': true, }, [ChainId.fantom]: { - '0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E': true, - '0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8': true, - '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75': true, - '0x321162Cd933E2Be498Cd2267a90534A804051b11': true, - '0x74b23882a30290451A17c44f4F05243b6b58C76d': true, - '0x049d68029688eAbF473097a2fC38ef61633A3C7A': true, - '0x6a07A792ab2965C72a5B8088d3a069A7aC3a993B': true, - '0xae75A438b2E0cB8Bb01Ec1E1e376De11D44477CC': false, // sushi - '0x1E4F97b9f9F913c46F1632781732927B9019C68b': true, + '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e': true, + '0xb3654dc3d10ea7645f8319668e8f54d2574fbdc8': true, + '0x04068da6c83afcfa0e13ba15a6696662335d5b75': true, + '0x321162cd933e2be498cd2267a90534a804051b11': true, + '0x74b23882a30290451a17c44f4f05243b6b58c76d': true, + '0x049d68029688eabf473097a2fc38ef61633a3c7a': true, + '0x6a07a792ab2965c72a5b8088d3a069a7ac3a993b': true, + '0xae75a438b2e0cb8bb01ec1e1e376de11d44477cc': false, // sushi + '0x1e4f97b9f9f913c46f1632781732927b9019c68b': true, }, [ChainId.fantom_testnet]: { - '0x2a6202B83Bd2562d7460F91E9298abC27a2F0a95': true, - '0xAC1a9503D1438B56BAa99939D44555FC2dC286Fc': true, - '0xc469ff24046779DE9B61Be7b5DF91dbFfdF1AE02': true, - '0x42Dc50EB0d35A62eac61f4E4Bc81875db9F9366e': true, - '0x484b87Aa284f51e71F15Eba1aEb06dFD202D5511': true, - '0x06f0790c687A1bED6186ce3624EDD9806edf9F4E': true, - '0x1b901d3C9D4ce153326BEeC60e0D4A2e8a9e3cE3': true, - '0xd0404A349A76CD2a4B7AB322B9a6C993dbC3A7E7': true, - '0x2aF63215417F90bd45608115452d86D0a1bEAE5E': true, - '0xF7475b635EbE06d9C5178CC40D50856Fa98C7332': true, + '0x2a6202b83bd2562d7460f91e9298abc27a2f0a95': true, + '0xac1a9503d1438b56baa99939d44555fc2dc286fc': true, + '0xc469ff24046779de9b61be7b5df91dbffdf1ae02': true, + '0x42dc50eb0d35a62eac61f4e4bc81875db9f9366e': true, + '0x484b87aa284f51e71f15eba1aeb06dfd202d5511': true, + '0x06f0790c687a1bed6186ce3624edd9806edf9f4e': true, + '0x1b901d3c9d4ce153326beec60e0d4a2e8a9e3ce3': true, + '0xd0404a349a76cd2a4b7ab322b9a6c993dbc3a7e7': true, + '0x2af63215417f90bd45608115452d86d0a1beae5e': true, + '0xf7475b635ebe06d9c5178cc40d50856fa98c7332': true, }, [ChainId.polygon]: { - '0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c': true, + '0x4e3decbb3645551b8a19f0ea1678079fcb33fb4c': true, }, [ChainId.mumbai]: { - '0x0AB1917A0cf92cdcf7F7b637EaC3A46BBBE41409': true, - '0xFCadBDefd30E11258559Ba239C8a5A8A8D28CB00': true, - '0xE3981f4840843D67aF50026d34DA0f7e56A02D69': true, - '0x3e4b51076d7e9B844B92F8c6377087f9cf8C8696': true, - '0x9A753f0F7886C9fbF63cF59D0D4423C5eFaCE95B': true, - '0x56e0507A53Ee252947a1E55D84Dc4032F914DD98': true, - '0x302567472401C7c7B50ee7eb3418c375D8E3F728': true, - '0x8AaF462990dD5CC574c94C8266208996426A47e7': true, - '0xBaaCc99123133851Ba2D6d34952aa08CBDf5A4E4': true, - '0xD9E7e5dd6e122dDE11244e14A60f38AbA93097f2': true, - '0xdDc3C9B8614092e6188A86450c8D597509893E20': true, - '0x9aa7fEc87CA69695Dd1f879567CcF49F3ba417E2': true, - '0x21C561e551638401b937b03fE5a0a0652B99B7DD': true, - '0x85E44420b6137bbc75a85CAB5c9A3371af976FdE': true, - '0xd575d4047f8c667E064a4ad433D04E25187F40BB': true, - '0xb685400156cF3CBE8725958DeAA61436727A30c3': false, // WMATIC dont have permit + '0x0ab1917a0cf92cdcf7f7b637eac3a46bbbe41409': true, + '0xfcadbdefd30e11258559ba239c8a5a8a8d28cb00': true, + '0xe3981f4840843d67af50026d34da0f7e56a02d69': true, + '0x3e4b51076d7e9b844b92f8c6377087f9cf8c8696': true, + '0x9a753f0f7886c9fbf63cf59d0d4423c5eface95b': true, + '0x56e0507a53ee252947a1e55d84dc4032f914dd98': true, + '0x302567472401c7c7b50ee7eb3418c375d8e3f728': true, + '0x8aaf462990dd5cc574c94c8266208996426a47e7': true, + '0xbaacc99123133851ba2d6d34952aa08cbdf5a4e4': true, + '0xd9e7e5dd6e122dde11244e14a60f38aba93097f2': true, + '0xddc3c9b8614092e6188a86450c8d597509893e20': true, + '0x9aa7fec87ca69695dd1f879567ccf49f3ba417e2': true, + '0x21c561e551638401b937b03fe5a0a0652b99b7dd': true, + '0x85e44420b6137bbc75a85cab5c9a3371af976fde': true, + '0xd575d4047f8c667e064a4ad433d04e25187f40bb': true, + '0xb685400156cf3cbe8725958deaa61436727a30c3': false, // wmatic dont have permit }, [ChainId.harmony]: {}, [ChainId.avalanche]: { - '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7': true, + '0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7': true, }, [ChainId.fuji]: { - '0x407287b03D1167593AF113d32093942be13A535f': true, - '0xFc7215C9498Fc12b22Bc0ed335871Db4315f03d3': true, - '0x73b4C0C45bfB90FC44D9013FA213eF2C2d908D0A': true, - '0x3E937B4881CBd500d05EeDAB7BA203f2b7B3f74f': true, - '0x09C85Ef96e93f0ae892561052B48AE9DB29F2458': true, - '0x28A8E6e41F84e62284970E4bc0867cEe2AAd0DA4': true, - '0xD90db1ca5A6e9873BCD9B0279AE038272b656728': true, - '0xCcbBaf8D40a5C34bf1c836e8dD33c7B7646706C5': true, + '0x407287b03d1167593af113d32093942be13a535f': true, + '0xfc7215c9498fc12b22bc0ed335871db4315f03d3': true, + '0x73b4c0c45bfb90fc44d9013fa213ef2c2d908d0a': true, + '0x3e937b4881cbd500d05eedab7ba203f2b7b3f74f': true, + '0x09c85ef96e93f0ae892561052b48ae9db29f2458': true, + '0x28a8e6e41f84e62284970e4bc0867cee2aad0da4': true, + '0xd90db1ca5a6e9873bcd9b0279ae038272b656728': true, + '0xccbbaf8d40a5c34bf1c836e8dd33c7b7646706c5': true, }, [ChainId.optimism]: { - '0x76FB31fb4af56892A25e32cFC43De717950c9278': false, // AAVE + '0x76fb31fb4af56892a25e32cfc43de717950c9278': false, // aave }, [ChainId.optimism_goerli]: { ['0xdf1742fe5b0bfc12331d8eaec6b478dfdbd31464']: true, - ['0xaA63E0C86b531E2eDFE9F91F6436dF20C301963D']: true, - ['0xA2025B15a1757311bfD68cb14eaeFCc237AF5b43']: true, - ['0xC2C527C0CACF457746Bd31B2a698Fe89de2b6d49']: true, - ['0x63242B9Bd3C22f18706d5c4E627B4735973f1f07']: true, - ['0x07C725d58437504CA5f814AE406e70E21C5e8e9e']: true, - ['0x2e3A2fb8473316A02b8A297B982498E661E1f6f5']: true, + ['0xaa63e0c86b531e2edfe9f91f6436df20c301963d']: true, + ['0xa2025b15a1757311bfd68cb14eaefcc237af5b43']: true, + ['0xc2c527c0cacf457746bd31b2a698fe89de2b6d49']: true, + ['0x63242b9bd3c22f18706d5c4e627b4735973f1f07']: true, + ['0x07c725d58437504ca5f814ae406e70e21c5e8e9e']: true, + ['0x2e3a2fb8473316a02b8a297b982498e661e1f6f5']: true, }, }; From 3830a055ad0e7e531113640c48d07f1c30023c7c Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Thu, 17 Nov 2022 23:00:33 -0600 Subject: [PATCH 04/31] chore: small styling changes to approval flow --- .../infoTooltips/ApprovalTooltip.tsx | 22 +++++++++++++++++++ .../FlowCommons/LeftHelperText.tsx | 11 ++++------ .../transactions/TxActionsWrapper.tsx | 2 +- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 8 +++++-- 5 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 src/components/infoTooltips/ApprovalTooltip.tsx diff --git a/src/components/infoTooltips/ApprovalTooltip.tsx b/src/components/infoTooltips/ApprovalTooltip.tsx new file mode 100644 index 0000000000..de06f53edb --- /dev/null +++ b/src/components/infoTooltips/ApprovalTooltip.tsx @@ -0,0 +1,22 @@ +import { Trans } from '@lingui/macro'; + +import { Link } from '../primitives/Link'; +import { TextWithTooltip, TextWithTooltipProps } from '../TextWithTooltip'; + +export const ApprovalTooltip = ({ ...rest }: TextWithTooltipProps) => { + return ( + + + To continue you need to grant Aave smart contracts permission to move your funds from your + wallet. Depending on the asset, it is done by signing the permission message (gas free), or + by submitting an approval transaction (requires gas).{' '} + + Learn more + + + + ); +}; diff --git a/src/components/transactions/FlowCommons/LeftHelperText.tsx b/src/components/transactions/FlowCommons/LeftHelperText.tsx index 1d34488358..4db515a7eb 100644 --- a/src/components/transactions/FlowCommons/LeftHelperText.tsx +++ b/src/components/transactions/FlowCommons/LeftHelperText.tsx @@ -1,6 +1,7 @@ import { CheckIcon } from '@heroicons/react/outline'; import { Trans } from '@lingui/macro'; import { Box, Typography, useTheme } from '@mui/material'; +import { ApprovalTooltip } from 'src/components/infoTooltips/ApprovalTooltip'; import { ApprovalInfoContent } from '../../infoModalContents/ApprovalInfoContent'; import { RetryWithApprovalInfoContent } from '../../infoModalContents/RetryWithApprovalInfoContent'; @@ -53,16 +54,12 @@ export const LeftHelperText = ({ error, approvalHash, amount }: LeftHelperTextPr )} {!approvalHash && !error && amount && ( - Why do I need to approve?} iconSize={13} - iconColor={theme.palette.text.secondary} - withContentButton - variant="helperText" + variant="caption" color="text.secondary" - > - - + /> )} ); diff --git a/src/components/transactions/TxActionsWrapper.tsx b/src/components/transactions/TxActionsWrapper.tsx index 26c3f0b846..f5ad4da3ea 100644 --- a/src/components/transactions/TxActionsWrapper.tsx +++ b/src/components/transactions/TxActionsWrapper.tsx @@ -81,7 +81,7 @@ export const TxActionsWrapper = ({ if (approvalTxState?.success) return { disabled: true, content: Approved }; if (retryWithApproval) return { content: Retry with approval, handleClick: handleApproval }; - return { content: Approve to continue, handleClick: handleApproval }; + return { content: Approve {symbol} to continue, handleClick: handleApproval }; } const { content, disabled, loading, handleClick } = getMainParams(); diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index f53bf8509c..3bb6fcec4f 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{"<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.","AAVE holders can stake their AAVE in the Safety Module (Ethereum Network only) 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 can stake their AAVE in the Safety Module (Ethereum Network only) 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.","ACTIVATE COOLDOWN":"ACTIVATE COOLDOWN","APR":"APR","APY":"APY","APY type":"APY type","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave 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 documentation":"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 documentation","Aave per month":"Aave per month","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","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 ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","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.","Already on cooldown":"Already on cooldown","Amount":"Amount","Amount must be greater than 0":"Amount must be greater than 0","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approval":"Approval","Approve confirmed":"Approve confirmed","Approve to continue":"Approve to continue","Approved":"Approved","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 only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","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.","Asset to delegate":"Asset to delegate","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","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","Before supplying":"Before supplying","Before supplying, you need to approve its usage by the Aave protocol. You can learn more in our <0>FAQ":"Before supplying, you need to approve its usage by the Aave protocol. You can learn more in our <0>FAQ","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY rate":"Borrow APY rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow power used":"Borrow power used","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","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"]],"Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"CLAIM {symbol}":["CLAIM ",["symbol"]],"CLAIMING {symbol}":["CLAIMING ",["symbol"]],"Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Cap reached. Lower supply amount":"Cap reached. Lower supply amount","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim AAVE":"Claim AAVE","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Close":"Close","Collateral":"Collateral","Collateral amount to repay with":"Collateral amount to repay with","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","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. <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","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","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 amount to repay":"Debt amount to repay","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.","Define Retry with Approval text":"Define Retry with Approval text","Delegate":"Delegate","Delegating":"Delegating","Delegation":"Delegation","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":"Discord","Discord channel":"Discord channel","Due to a precision bug in the stETH contract, this asset can not be used in flashloan transactions":"Due to a precision bug in the stETH contract, this asset can not be used in flashloan transactions","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.","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","Enabled in isolation":"Enabled in isolation","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 address to track in watch-only mode":"Enter an address to track in watch-only mode","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Executed":"Executed","Expires":"Expires","FAQ":"FAQ","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Filter":"Filter","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","Funds in the Safety Module":"Funds in the Safety Module","Get ABP Token":"Get ABP Token","Github":"Github","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Governance":"Governance","Greek":"Greek","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","I acknowledge the risks involved.":"I acknowledge the risks involved.","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","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","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","Links":"Links","Liquidation <0/> threshold":"Liquidation <0/> 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","MAX":"MAX","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Max slippage rate":"Max slippage rate","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 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","Menu":"Menu","Minimum received":"Minimum received","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 rewards to claim":"No rewards to claim","No search results for":"No search results for","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 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.","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 your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","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","Price impact":"Price impact","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition power":"Proposition power","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","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","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","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"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","Retry What?":"Retry What?","Retry with Approval":"Retry with Approval","Retry with approval":"Retry with approval","Review approval tx details":"Review approval tx details","Review tx":"Review tx","Review tx details":"Review tx details","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.","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 language":"Select language","Select token to add":"Select token to add","Select token to view in block explorer":"Select token to view in block explorer","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","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","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","Started":"Started","State":"State","Supplied":"Supplied","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","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"]],"Swap":"Swap","Swapped":"Swapped","Swapping":"Swapping","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 rate":"Switch rate","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","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 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(10 days). You can only withdraw your assets from the Security Module after the cooldown period and within the active the unstake window.<0>Learn more":"The cooldown period is the time required prior to unstaking your tokens(10 days). You can only withdraw your assets from the Security Module after the cooldown period and within the active 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 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 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 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 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 community decision. <0>More details":"This asset is frozen due to an Aave community 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.","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 enable E-mode for the {0} category, all borrow positions outside of this cateogry must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this cateogry 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","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 market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Transaction failed":"Transaction failed","Transaction overview":"Transaction overview","Type of delegation":"Type of delegation","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"UNSTAKING {symbol}":["UNSTAKING ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","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","Utilization Rate":"Utilization Rate","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 all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote":"Vote","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","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.","Watch-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Watch-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Watch-only mode.":"Watch-only mode.","Watch-only mode. Connect to a wallet to perform transactions.":"Watch-only mode. Connect to a wallet to perform transactions.","We couldn't find any asset matching your search. Try again with a different asset name, symbol, or address.":"We couldn't find any asset matching your search. Try again with a different asset name, symbol, or address.","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.","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.","Why do I need to approve?":"Why do I need to approve?","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 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 not borrow yet using this currency":"You have not borrow yet using this currency","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"]],"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 reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","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","ends":"ends","here.":"here.","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.","staking view":"staking view","starts":"starts","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","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"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{s}s":[["s"],"s"],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{"<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.","AAVE holders can stake their AAVE in the Safety Module (Ethereum Network only) 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 can stake their AAVE in the Safety Module (Ethereum Network only) 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.","ACTIVATE COOLDOWN":"ACTIVATE COOLDOWN","APR":"APR","APY":"APY","APY type":"APY type","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave 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 documentation":"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 documentation","Aave per month":"Aave per month","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","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 ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","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.","Already on cooldown":"Already on cooldown","Amount":"Amount","Amount must be greater than 0":"Amount must be greater than 0","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approval":"Approval","Approve confirmed":"Approve confirmed","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approved":"Approved","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 only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","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.","Asset to delegate":"Asset to delegate","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","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","Before supplying":"Before supplying","Before supplying, you need to approve its usage by the Aave protocol. You can learn more in our <0>FAQ":"Before supplying, you need to approve its usage by the Aave protocol. You can learn more in our <0>FAQ","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY rate":"Borrow APY rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow power used":"Borrow power used","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","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"]],"Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"CLAIM {symbol}":["CLAIM ",["symbol"]],"CLAIMING {symbol}":["CLAIMING ",["symbol"]],"Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Cap reached. Lower supply amount":"Cap reached. Lower supply amount","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim AAVE":"Claim AAVE","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Close":"Close","Collateral":"Collateral","Collateral amount to repay with":"Collateral amount to repay with","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","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. <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","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","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 amount to repay":"Debt amount to repay","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.","Define Retry with Approval text":"Define Retry with Approval text","Delegate":"Delegate","Delegating":"Delegating","Delegation":"Delegation","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":"Discord","Discord channel":"Discord channel","Due to a precision bug in the stETH contract, this asset can not be used in flashloan transactions":"Due to a precision bug in the stETH contract, this asset can not be used in flashloan transactions","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.","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","Enabled in isolation":"Enabled in isolation","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 address to track in watch-only mode":"Enter an address to track in watch-only mode","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Executed":"Executed","Expires":"Expires","FAQ":"FAQ","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Filter":"Filter","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","Funds in the Safety Module":"Funds in the Safety Module","Get ABP Token":"Get ABP Token","Github":"Github","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Governance":"Governance","Greek":"Greek","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","I acknowledge the risks involved.":"I acknowledge the risks involved.","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","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","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","Links":"Links","Liquidation <0/> threshold":"Liquidation <0/> 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","MAX":"MAX","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Max slippage rate":"Max slippage rate","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 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","Menu":"Menu","Minimum received":"Minimum received","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 rewards to claim":"No rewards to claim","No search results for":"No search results for","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 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.","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 your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","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","Price impact":"Price impact","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition power":"Proposition power","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","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","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","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"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","Retry What?":"Retry What?","Retry with Approval":"Retry with Approval","Retry with approval":"Retry with approval","Review approval tx details":"Review approval tx details","Review tx":"Review tx","Review tx details":"Review tx details","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.","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 language":"Select language","Select token to add":"Select token to add","Select token to view in block explorer":"Select token to view in block explorer","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","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","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","Started":"Started","State":"State","Supplied":"Supplied","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","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"]],"Swap":"Swap","Swapped":"Swapped","Swapping":"Swapping","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 rate":"Switch rate","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","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 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(10 days). You can only withdraw your assets from the Security Module after the cooldown period and within the active the unstake window.<0>Learn more":"The cooldown period is the time required prior to unstaking your tokens(10 days). You can only withdraw your assets from the Security Module after the cooldown period and within the active 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 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 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 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 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 community decision. <0>More details":"This asset is frozen due to an Aave community 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.","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, 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, 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 cateogry must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this cateogry 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","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 market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Transaction failed":"Transaction failed","Transaction overview":"Transaction overview","Type of delegation":"Type of delegation","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"UNSTAKING {symbol}":["UNSTAKING ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","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","Utilization Rate":"Utilization Rate","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 all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote":"Vote","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","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.","Watch-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Watch-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Watch-only mode.":"Watch-only mode.","Watch-only mode. Connect to a wallet to perform transactions.":"Watch-only mode. Connect to a wallet to perform transactions.","We couldn't find any asset matching your search. Try again with a different asset name, symbol, or address.":"We couldn't find any asset matching your search. Try again with a different asset name, symbol, or address.","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.","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.","Why do I need to approve?":"Why do I need to approve?","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 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 not borrow yet using this currency":"You have not borrow yet using this currency","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"]],"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 reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","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","ends":"ends","here.":"here.","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.","staking view":"staking view","starts":"starts","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","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"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{s}s":[["s"],"s"],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index ccfa5cc515..d9c04f128b 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -165,8 +165,8 @@ msgid "Approve confirmed" msgstr "Approve confirmed" #: src/components/transactions/TxActionsWrapper.tsx -msgid "Approve to continue" -msgstr "Approve to continue" +msgid "Approve {symbol} to continue" +msgstr "Approve {symbol} to continue" #: src/components/transactions/TxActionsWrapper.tsx msgid "Approved" @@ -1825,6 +1825,10 @@ msgstr "Time left until the withdrawal window closes." msgid "To borrow you need to supply any asset to be used as collateral." msgstr "To borrow you need to supply any asset to be used as collateral." +#: src/components/infoTooltips/ApprovalTooltip.tsx +msgid "To continue you need to grant Aave smart contracts permission to move your funds from your wallet. Depending on the asset, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more" +msgstr "To continue you need to grant Aave smart contracts permission to move your funds from your wallet. Depending on the asset, it is done by signing the permission message (gas free), or by submitting an approval transaction (requires gas). <0>Learn more" + #: src/components/transactions/Emode/EmodeModalContent.tsx msgid "To enable E-mode for the {0} category, all borrow positions outside of this cateogry must be closed." msgstr "To enable E-mode for the {0} category, all borrow positions outside of this cateogry must be closed." From e9346c6e2e2b5d155bca6e014afd02940c3bbe07 Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Thu, 17 Nov 2022 23:02:18 -0600 Subject: [PATCH 05/31] chore: remove approval component which was replaced with tooltip --- .../infoModalContents/ApprovalInfoContent.tsx | 21 ------------------- .../FlowCommons/LeftHelperText.tsx | 1 - 2 files changed, 22 deletions(-) delete mode 100644 src/components/infoModalContents/ApprovalInfoContent.tsx diff --git a/src/components/infoModalContents/ApprovalInfoContent.tsx b/src/components/infoModalContents/ApprovalInfoContent.tsx deleted file mode 100644 index 2c05feb7e4..0000000000 --- a/src/components/infoModalContents/ApprovalInfoContent.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Trans } from '@lingui/macro'; -import Typography from '@mui/material/Typography'; - -import { Link } from '../primitives/Link'; -import { InfoContentWrapper } from './InfoContentWrapper'; - -export const ApprovalInfoContent = () => { - return ( - Approval}> - - - Before supplying, you need to approve its usage by the Aave protocol. You can learn more - in our{' '} - - FAQ - - - - - ); -}; diff --git a/src/components/transactions/FlowCommons/LeftHelperText.tsx b/src/components/transactions/FlowCommons/LeftHelperText.tsx index 4db515a7eb..e1160157b2 100644 --- a/src/components/transactions/FlowCommons/LeftHelperText.tsx +++ b/src/components/transactions/FlowCommons/LeftHelperText.tsx @@ -3,7 +3,6 @@ import { Trans } from '@lingui/macro'; import { Box, Typography, useTheme } from '@mui/material'; import { ApprovalTooltip } from 'src/components/infoTooltips/ApprovalTooltip'; -import { ApprovalInfoContent } from '../../infoModalContents/ApprovalInfoContent'; import { RetryWithApprovalInfoContent } from '../../infoModalContents/RetryWithApprovalInfoContent'; import { TextWithModal } from '../../TextWithModal'; From 83b731f425cb6beb73704291b1f4bfc0606df31a Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Thu, 17 Nov 2022 23:46:22 -0600 Subject: [PATCH 06/31] chore: remove retry with approval text placements --- .../RetryWithApprovalInfoContent.tsx | 14 -------------- .../transactions/FlowCommons/LeftHelperText.tsx | 16 ---------------- 2 files changed, 30 deletions(-) delete mode 100644 src/components/infoModalContents/RetryWithApprovalInfoContent.tsx diff --git a/src/components/infoModalContents/RetryWithApprovalInfoContent.tsx b/src/components/infoModalContents/RetryWithApprovalInfoContent.tsx deleted file mode 100644 index 900103a0a4..0000000000 --- a/src/components/infoModalContents/RetryWithApprovalInfoContent.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { Trans } from '@lingui/macro'; -import Typography from '@mui/material/Typography'; - -import { InfoContentWrapper } from './InfoContentWrapper'; - -export const RetryWithApprovalInfoContent = () => { - return ( - Retry with Approval}> - - Define Retry with Approval text - - - ); -}; diff --git a/src/components/transactions/FlowCommons/LeftHelperText.tsx b/src/components/transactions/FlowCommons/LeftHelperText.tsx index e1160157b2..c8955849bf 100644 --- a/src/components/transactions/FlowCommons/LeftHelperText.tsx +++ b/src/components/transactions/FlowCommons/LeftHelperText.tsx @@ -3,9 +3,6 @@ import { Trans } from '@lingui/macro'; import { Box, Typography, useTheme } from '@mui/material'; import { ApprovalTooltip } from 'src/components/infoTooltips/ApprovalTooltip'; -import { RetryWithApprovalInfoContent } from '../../infoModalContents/RetryWithApprovalInfoContent'; -import { TextWithModal } from '../../TextWithModal'; - export type LeftHelperTextProps = { error?: string; approvalHash?: string; @@ -39,19 +36,6 @@ export const LeftHelperText = ({ error, approvalHash, amount }: LeftHelperTextPr )} - {error && ( - Retry What?} - iconSize={13} - iconColor={theme.palette.text.secondary} - withContentButton - variant="helperText" - color="text.secondary" - > - - - )} - {!approvalHash && !error && amount && ( Why do I need to approve?} From 76479374fb2916057e90229766ab9eedad4bf091 Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Fri, 18 Nov 2022 00:07:37 -0600 Subject: [PATCH 07/31] chore: modify approval function for explicit parmeters and allow force overview of permit --- .../transactions/Borrow/BorrowActions.tsx | 2 +- .../Repay/CollateralRepayActions.tsx | 4 ++- .../transactions/Repay/RepayActions.tsx | 20 +++++++++--- .../transactions/Supply/SupplyActions.tsx | 21 ++++++++---- .../transactions/Swap/SwapActions.tsx | 4 ++- .../transactions/TxActionsWrapper.tsx | 32 +++++++++++++++---- .../transactions/Withdraw/WithdrawActions.tsx | 2 +- src/helpers/useTransactionHandler.tsx | 19 +++++------ src/hooks/useModal.tsx | 6 ---- 9 files changed, 72 insertions(+), 38 deletions(-) diff --git a/src/components/transactions/Borrow/BorrowActions.tsx b/src/components/transactions/Borrow/BorrowActions.tsx index 905a8ceae8..ca4219a76c 100644 --- a/src/components/transactions/Borrow/BorrowActions.tsx +++ b/src/components/transactions/Borrow/BorrowActions.tsx @@ -57,7 +57,7 @@ export const BorrowActions = ({ handleAction={action} actionText={Borrow {symbol}} actionInProgressText={Borrowing {symbol}} - handleApproval={() => approval(amountToBorrow, poolAddress)} + handleApproval={() => approval({ amount: amountToBorrow, underlyingAsset: poolAddress })} requiresApproval={requiresApproval} preparingTransactions={loadingTxns} sx={sx} diff --git a/src/components/transactions/Repay/CollateralRepayActions.tsx b/src/components/transactions/Repay/CollateralRepayActions.tsx index f7fdd6e181..0abac98d17 100644 --- a/src/components/transactions/Repay/CollateralRepayActions.tsx +++ b/src/components/transactions/Repay/CollateralRepayActions.tsx @@ -85,7 +85,9 @@ export const CollateralRepayActions = ({ sx={sx} {...props} handleAction={action} - handleApproval={() => approval()} + handleApproval={() => + approval({ amount: repayAmount, underlyingAsset: poolReserve.aTokenAddress }) + } actionText={Repay {symbol}} actionInProgressText={Repaying {symbol}} /> diff --git a/src/components/transactions/Repay/RepayActions.tsx b/src/components/transactions/Repay/RepayActions.tsx index 37600a101d..49adcb221e 100644 --- a/src/components/transactions/Repay/RepayActions.tsx +++ b/src/components/transactions/Repay/RepayActions.tsx @@ -37,13 +37,13 @@ export const RepayActions = ({ const { currentChainId: chainId, currentMarketData } = useProtocolDataContext(); const repay = useRootStore((state) => state.repay); const repayWithPermit = useRootStore((state) => state.repayWithPermit); - + const tryPermit = + currentMarketData.v3 && + permitByChainAndToken[chainId]?.[utils.getAddress(poolAddress).toLowerCase()]; const { approval, action, requiresApproval, loadingTxns, approvalTxState, mainTxState } = useTransactionHandler({ // move tryPermit to store - tryPermit: - currentMarketData.v3 && - permitByChainAndToken[chainId]?.[utils.getAddress(poolAddress).toLowerCase()], + tryPermit, handleGetTxns: async () => { return repay({ amountToRepay, @@ -86,9 +86,19 @@ export const RepayActions = ({ sx={sx} {...props} handleAction={action} - handleApproval={() => approval(amountToRepay, poolAddress)} + handleApproval={() => approval({ amount: amountToRepay, underlyingAsset: poolAddress })} actionText={Repay {symbol}} actionInProgressText={Repaying {symbol}} + approvalFallback={ + tryPermit + ? () => + approval({ + amount: amountToRepay, + underlyingAsset: poolAddress, + forceApprovalTx: true, + }) + : undefined + } /> ); }; diff --git a/src/components/transactions/Supply/SupplyActions.tsx b/src/components/transactions/Supply/SupplyActions.tsx index 31c8b9a154..c1714b1ba3 100644 --- a/src/components/transactions/Supply/SupplyActions.tsx +++ b/src/components/transactions/Supply/SupplyActions.tsx @@ -31,13 +31,12 @@ export const SupplyActions = ({ const { currentChainId: chainId, currentMarketData } = useProtocolDataContext(); const supply = useRootStore((state) => state.supply); const supplyWithPermit = useRootStore((state) => state.supplyWithPermit); - + const tryPermit = + currentMarketData.v3 && + permitByChainAndToken[chainId]?.[utils.getAddress(poolAddress).toLowerCase()]; const { approval, action, requiresApproval, loadingTxns, approvalTxState, mainTxState } = useTransactionHandler({ - // TODO: move tryPermit - tryPermit: - currentMarketData.v3 && - permitByChainAndToken[chainId]?.[utils.getAddress(poolAddress).toLowerCase()], + tryPermit, handleGetTxns: async () => { return supply({ amountToSupply, @@ -71,9 +70,19 @@ export const SupplyActions = ({ preparingTransactions={loadingTxns} actionText={Supply {symbol}} actionInProgressText={Supplying {symbol}} - handleApproval={() => approval(amountToSupply, poolAddress)} + handleApproval={() => approval({ amount: amountToSupply, underlyingAsset: poolAddress })} handleAction={action} requiresApproval={requiresApproval} + approvalFallback={ + tryPermit + ? () => + approval({ + amount: amountToSupply, + underlyingAsset: poolAddress, + forceApprovalTx: true, + }) + : undefined + } sx={sx} {...props} /> diff --git a/src/components/transactions/Swap/SwapActions.tsx b/src/components/transactions/Swap/SwapActions.tsx index 9a9fab1913..9ebce3317a 100644 --- a/src/components/transactions/Swap/SwapActions.tsx +++ b/src/components/transactions/Swap/SwapActions.tsx @@ -74,7 +74,9 @@ export const SwapActions = ({ handleAction={action} requiresAmount amount={amountToSwap} - handleApproval={() => approval(amountToSwap, poolReserve.aTokenAddress)} + handleApproval={() => + approval({ amount: amountToSwap, underlyingAsset: poolReserve.aTokenAddress }) + } requiresApproval={requiresApproval} actionText={Swap} actionInProgressText={Swapping} diff --git a/src/components/transactions/TxActionsWrapper.tsx b/src/components/transactions/TxActionsWrapper.tsx index f5ad4da3ea..2a61c1d8ac 100644 --- a/src/components/transactions/TxActionsWrapper.tsx +++ b/src/components/transactions/TxActionsWrapper.tsx @@ -1,5 +1,5 @@ import { Trans } from '@lingui/macro'; -import { Box, BoxProps, Button, CircularProgress, Typography } from '@mui/material'; +import { Box, BoxProps, Button, CircularProgress, Typography, useTheme } from '@mui/material'; import isEmpty from 'lodash/isEmpty'; import { ReactNode } from 'react'; import { TxStateType, useModalContext } from 'src/hooks/useModal'; @@ -23,6 +23,7 @@ interface TxActionsWrapperProps extends BoxProps { requiresApproval: boolean; symbol?: string; blocked?: boolean; + approvalFallback?: () => Promise; } export const TxActionsWrapper = ({ @@ -40,9 +41,10 @@ export const TxActionsWrapper = ({ sx, symbol, blocked, + approvalFallback, ...rest }: TxActionsWrapperProps) => { - const { txError, retryWithApproval } = useModalContext(); + const { txError } = useModalContext(); const { watchModeOnlyAddress } = useWeb3Context(); const hasApprovalError = @@ -78,15 +80,14 @@ export const TxActionsWrapper = ({ return null; if (approvalTxState?.loading) return { loading: true, disabled: true, content: Approving {symbol}... }; - if (approvalTxState?.success) return { disabled: true, content: Approved }; - if (retryWithApproval) - return { content: Retry with approval, handleClick: handleApproval }; + if (approvalTxState?.success) + return { disabled: true, content: Approve Confirmed }; return { content: Approve {symbol} to continue, handleClick: handleApproval }; } const { content, disabled, loading, handleClick } = getMainParams(); const approvalParams = getApprovalParams(); - + const theme = useTheme(); return ( {requiresApproval && !watchModeOnlyAddress && ( @@ -128,6 +129,25 @@ export const TxActionsWrapper = ({ Watch-only mode. Connect to a wallet to perform transactions. )} + {approvalFallback && approvalParams && ( + + + + Approval doesn't work.{' '} + + approvalFallback()} + > + Submit a tx + + + to approve instead. + + + + )} ); }; diff --git a/src/components/transactions/Withdraw/WithdrawActions.tsx b/src/components/transactions/Withdraw/WithdrawActions.tsx index bfff8bd67c..9d30a2a1a9 100644 --- a/src/components/transactions/Withdraw/WithdrawActions.tsx +++ b/src/components/transactions/Withdraw/WithdrawActions.tsx @@ -51,7 +51,7 @@ export const WithdrawActions = ({ actionInProgressText={Withdrawing {symbol}} actionText={Withdraw {symbol}} handleAction={action} - handleApproval={() => approval(amountToWithdraw, poolAddress)} + handleApproval={() => approval({ amount: amountToWithdraw, underlyingAsset: poolAddress })} requiresApproval={requiresApproval} sx={sx} /> diff --git a/src/helpers/useTransactionHandler.tsx b/src/helpers/useTransactionHandler.tsx index b5c406f661..c0c63ddb86 100644 --- a/src/helpers/useTransactionHandler.tsx +++ b/src/helpers/useTransactionHandler.tsx @@ -21,6 +21,12 @@ interface UseTransactionHandlerProps { deps?: DependencyList; } +interface ApprovalProps { + amount?: string; + underlyingAsset?: string; + forceApprovalTx?: boolean; +} + export const useTransactionHandler = ({ handleGetTxns, handleGetPermitTxns, @@ -37,7 +43,6 @@ export const useTransactionHandler = ({ loadingTxns, setLoadingTxns, setTxError, - setRetryWithApproval, } = useModalContext(); const { signTxData, sendTx, getTxError } = useWeb3Context(); const { refetchWalletBalances, refetchPoolData, refetchIncentiveData } = @@ -102,9 +107,9 @@ export const useTransactionHandler = ({ } }; - const approval = async (amount?: string, underlyingAsset?: string) => { + const approval = async ({ amount, underlyingAsset, forceApprovalTx }: ApprovalProps) => { if (approvalTx) { - if (usePermit && amount && underlyingAsset) { + if (usePermit && amount && underlyingAsset && !forceApprovalTx) { setApprovalTxState({ ...approvalTxState, loading: true }); try { // deadline is an hour after signature @@ -134,18 +139,10 @@ export const useTransactionHandler = ({ txHash: undefined, loading: false, }); - - // set use permit to false to retry with normal approval - setUsePermit(false); - setRetryWithApproval(true); } } catch (error) { if (!mounted.current) return; - // set use permit to false to retry with normal approval - setUsePermit(false); - setRetryWithApproval(true); - const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false); setTxError(parsedError); setApprovalTxState({ diff --git a/src/hooks/useModal.tsx b/src/hooks/useModal.tsx index 1518c217aa..1076660b57 100644 --- a/src/hooks/useModal.tsx +++ b/src/hooks/useModal.tsx @@ -71,8 +71,6 @@ export interface ModalContextType { setLoadingTxns: (loading: boolean) => void; txError: TxErrorType | undefined; setTxError: (error: TxErrorType | undefined) => void; - retryWithApproval: boolean; - setRetryWithApproval: (permit: boolean) => void; } export const ModalContext = createContext>( @@ -86,7 +84,6 @@ export const ModalContextProvider: React.FC = ({ children }) => { // contains arbitrary key-value pairs as a modal context const [args, setArgs] = useState({}); const [approvalTxState, setApprovalTxState] = useState({}); - const [retryWithApproval, setRetryWithApproval] = useState(false); const [mainTxState, setMainTxState] = useState({}); const [gasLimit, setGasLimit] = useState(''); const [loadingTxns, setLoadingTxns] = useState(false); @@ -165,7 +162,6 @@ export const ModalContextProvider: React.FC = ({ children }) => { setGasLimit(''); setTxError(undefined); setSwitchNetworkError(undefined); - setRetryWithApproval(false); }, type, args, @@ -179,8 +175,6 @@ export const ModalContextProvider: React.FC = ({ children }) => { setLoadingTxns, txError, setTxError, - retryWithApproval, - setRetryWithApproval, }} > {children} From a5b60f6901d43227033ab011771a138b3b09faa0 Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Fri, 18 Nov 2022 15:34:08 -0600 Subject: [PATCH 08/31] fix: build errors on handleApproval --- src/components/transactions/Repay/CollateralRepayActions.tsx | 2 +- src/components/transactions/Stake/StakeActions.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/transactions/Repay/CollateralRepayActions.tsx b/src/components/transactions/Repay/CollateralRepayActions.tsx index 0abac98d17..3327f9c40e 100644 --- a/src/components/transactions/Repay/CollateralRepayActions.tsx +++ b/src/components/transactions/Repay/CollateralRepayActions.tsx @@ -86,7 +86,7 @@ export const CollateralRepayActions = ({ {...props} handleAction={action} handleApproval={() => - approval({ amount: repayAmount, underlyingAsset: poolReserve.aTokenAddress }) + approval({ amount: repayWithAmount, underlyingAsset: poolReserve.aTokenAddress }) } actionText={Repay {symbol}} actionInProgressText={Repaying {symbol}} diff --git a/src/components/transactions/Stake/StakeActions.tsx b/src/components/transactions/Stake/StakeActions.tsx index 2d73172885..d092bcdf10 100644 --- a/src/components/transactions/Stake/StakeActions.tsx +++ b/src/components/transactions/Stake/StakeActions.tsx @@ -47,7 +47,7 @@ export const StakeActions = ({ isWrongNetwork={isWrongNetwork} amount={amountToStake} handleAction={action} - handleApproval={approval} + handleApproval={() => approval({ amount: amountToStake, underlyingAsset: selectedToken })} symbol={symbol} requiresAmount actionText={Stake} From a504d1eff2b36769e6169cfa3dc144f95f9c44cf Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Fri, 18 Nov 2022 15:34:23 -0600 Subject: [PATCH 09/31] chore: run i18n --- src/locales/en/messages.js | 2 +- src/locales/en/messages.po | 34 +++++++--------------------------- 2 files changed, 8 insertions(+), 28 deletions(-) diff --git a/src/locales/en/messages.js b/src/locales/en/messages.js index 3bb6fcec4f..b310a6a4d0 100644 --- a/src/locales/en/messages.js +++ b/src/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:{"<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.","AAVE holders can stake their AAVE in the Safety Module (Ethereum Network only) 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 can stake their AAVE in the Safety Module (Ethereum Network only) 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.","ACTIVATE COOLDOWN":"ACTIVATE COOLDOWN","APR":"APR","APY":"APY","APY type":"APY type","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave 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 documentation":"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 documentation","Aave per month":"Aave per month","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","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 ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","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.","Already on cooldown":"Already on cooldown","Amount":"Amount","Amount must be greater than 0":"Amount must be greater than 0","An error has occurred fetching the proposal metadata from IPFS.":"An error has occurred fetching the proposal metadata from IPFS.","Approval":"Approval","Approve confirmed":"Approve confirmed","Approve {symbol} to continue":["Approve ",["symbol"]," to continue"],"Approved":"Approved","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 only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","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.","Asset to delegate":"Asset to delegate","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","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","Before supplying":"Before supplying","Before supplying, you need to approve its usage by the Aave protocol. You can learn more in our <0>FAQ":"Before supplying, you need to approve its usage by the Aave protocol. You can learn more in our <0>FAQ","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY rate":"Borrow APY rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow power used":"Borrow power used","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","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"]],"Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"CLAIM {symbol}":["CLAIM ",["symbol"]],"CLAIMING {symbol}":["CLAIMING ",["symbol"]],"Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Cap reached. Lower supply amount":"Cap reached. Lower supply amount","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim AAVE":"Claim AAVE","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Close":"Close","Collateral":"Collateral","Collateral amount to repay with":"Collateral amount to repay with","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","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. <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","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","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 amount to repay":"Debt amount to repay","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.","Define Retry with Approval text":"Define Retry with Approval text","Delegate":"Delegate","Delegating":"Delegating","Delegation":"Delegation","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":"Discord","Discord channel":"Discord channel","Due to a precision bug in the stETH contract, this asset can not be used in flashloan transactions":"Due to a precision bug in the stETH contract, this asset can not be used in flashloan transactions","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.","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","Enabled in isolation":"Enabled in isolation","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 address to track in watch-only mode":"Enter an address to track in watch-only mode","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Executed":"Executed","Expires":"Expires","FAQ":"FAQ","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Filter":"Filter","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","Funds in the Safety Module":"Funds in the Safety Module","Get ABP Token":"Get ABP Token","Github":"Github","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Governance":"Governance","Greek":"Greek","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","I acknowledge the risks involved.":"I acknowledge the risks involved.","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","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","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","Links":"Links","Liquidation <0/> threshold":"Liquidation <0/> 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","MAX":"MAX","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Max slippage rate":"Max slippage rate","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 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","Menu":"Menu","Minimum received":"Minimum received","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 rewards to claim":"No rewards to claim","No search results for":"No search results for","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 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.","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 your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","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","Price impact":"Price impact","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition power":"Proposition power","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","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","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","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"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","Retry What?":"Retry What?","Retry with Approval":"Retry with Approval","Retry with approval":"Retry with approval","Review approval tx details":"Review approval tx details","Review tx":"Review tx","Review tx details":"Review tx details","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.","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 language":"Select language","Select token to add":"Select token to add","Select token to view in block explorer":"Select token to view in block explorer","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","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","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","Started":"Started","State":"State","Supplied":"Supplied","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","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"]],"Swap":"Swap","Swapped":"Swapped","Swapping":"Swapping","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 rate":"Switch rate","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","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 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(10 days). You can only withdraw your assets from the Security Module after the cooldown period and within the active the unstake window.<0>Learn more":"The cooldown period is the time required prior to unstaking your tokens(10 days). You can only withdraw your assets from the Security Module after the cooldown period and within the active 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 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 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 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 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 community decision. <0>More details":"This asset is frozen due to an Aave community 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.","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, 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, 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 cateogry must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this cateogry 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","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 market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Transaction failed":"Transaction failed","Transaction overview":"Transaction overview","Type of delegation":"Type of delegation","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"UNSTAKING {symbol}":["UNSTAKING ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","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","Utilization Rate":"Utilization Rate","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 all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote":"Vote","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","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.","Watch-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Watch-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Watch-only mode.":"Watch-only mode.","Watch-only mode. Connect to a wallet to perform transactions.":"Watch-only mode. Connect to a wallet to perform transactions.","We couldn't find any asset matching your search. Try again with a different asset name, symbol, or address.":"We couldn't find any asset matching your search. Try again with a different asset name, symbol, or address.","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.","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.","Why do I need to approve?":"Why do I need to approve?","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 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 not borrow yet using this currency":"You have not borrow yet using this currency","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"]],"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 reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","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","ends":"ends","here.":"here.","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.","staking view":"staking view","starts":"starts","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","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"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{s}s":[["s"],"s"],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:{"<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>Approval doesn't work. <1>Submit a tx<2>to approve instead.":"<0>Approval doesn't work. <1>Submit a tx<2>to approve instead.","<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.","AAVE holders can stake their AAVE in the Safety Module (Ethereum Network only) 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 can stake their AAVE in the Safety Module (Ethereum Network only) 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.","ACTIVATE COOLDOWN":"ACTIVATE COOLDOWN","APR":"APR","APY":"APY","APY type":"APY type","APY, stable":"APY, stable","APY, variable":"APY, variable","AToken supply is not zero":"AToken supply is not zero","Aave Governance":"Aave 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 documentation":"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 documentation","Aave per month":"Aave per month","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","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 ({0})":["Addresses (",["0"],")"],"All Assets":"All Assets","All done!":"All done!","All proposals":"All proposals","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.","Already on cooldown":"Already on cooldown","Amount":"Amount","Amount must be greater than 0":"Amount must be greater than 0","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 confirmed":"Approve confirmed","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 only be used as collateral in isolation mode only.":"Asset can only be used as collateral in isolation mode only.","Asset cannot be used as collateral.":"Asset cannot be used as collateral.","Asset category":"Asset category","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.","Asset to delegate":"Asset to delegate","Assets":"Assets","Assets to borrow":"Assets to borrow","Assets to supply":"Assets to supply","Author":"Author","Available":"Available","Available assets":"Available assets","Available liquidity":"Available liquidity","Available rewards":"Available rewards","Available to borrow":"Available to borrow","Available to supply":"Available to supply","Back to Dashboard":"Back to Dashboard","Balance":"Balance","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","Before supplying":"Before supplying","Blocked Address":"Blocked Address","Borrow":"Borrow","Borrow APY rate":"Borrow APY rate","Borrow APY, stable":"Borrow APY, stable","Borrow APY, variable":"Borrow APY, variable","Borrow and repay in same block is not allowed":"Borrow and repay in same block is not allowed","Borrow cap":"Borrow cap","Borrow cap is exceeded":"Borrow cap is exceeded","Borrow power used":"Borrow power used","Borrow {symbol}":["Borrow ",["symbol"]],"Borrowed":"Borrowed","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"]],"Buy Crypto With Fiat":"Buy Crypto With Fiat","Buy Crypto with Fiat":"Buy Crypto with Fiat","Buy {cryptoSymbol} with Fiat":["Buy ",["cryptoSymbol"]," with Fiat"],"CLAIM {symbol}":["CLAIM ",["symbol"]],"CLAIMING {symbol}":["CLAIMING ",["symbol"]],"Can be collateral":"Can be collateral","Can be executed":"Can be executed","Cancel":"Cancel","Cannot disable E-Mode":"Cannot disable E-Mode","Cap reached. Lower supply amount":"Cap reached. Lower supply amount","Choose one of the on-ramp services":"Choose one of the on-ramp services","Claim":"Claim","Claim AAVE":"Claim AAVE","Claim all":"Claim all","Claim all rewards":"Claim all rewards","Claim {0}":["Claim ",["0"]],"Claimable AAVE":"Claimable AAVE","Claimed":"Claimed","Claiming":"Claiming","Close":"Close","Collateral":"Collateral","Collateral amount to repay with":"Collateral amount to repay with","Collateral is (mostly) the same currency that is being borrowed":"Collateral is (mostly) the same currency that is being borrowed","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. <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","Created":"Created","Current LTV":"Current LTV","Current differential":"Current differential","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 amount to repay":"Debt amount to repay","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.","Delegate":"Delegate","Delegating":"Delegating","Delegation":"Delegation","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":"Discord","Discord channel":"Discord channel","Due to a precision bug in the stETH contract, this asset can not be used in flashloan transactions":"Due to a precision bug in the stETH contract, this asset can not be used in flashloan transactions","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.","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","Enabled in isolation":"Enabled in isolation","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 address to track in watch-only mode":"Enter an address to track in watch-only mode","Enter an amount":"Enter an amount","Error connecting. Try refreshing the page.":"Error connecting. Try refreshing the page.","Executed":"Executed","Expires":"Expires","FAQ":"FAQ","Failed to load proposal voters. Please refresh the page.":"Failed to load proposal voters. Please refresh the page.","Faucet":"Faucet","Faucet {0}":["Faucet ",["0"]],"Filter":"Filter","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","Funds in the Safety Module":"Funds in the Safety Module","Get ABP Token":"Get ABP Token","Github":"Github","Global settings":"Global settings","Go Back":"Go Back","Go to Balancer Pool":"Go to Balancer Pool","Governance":"Governance","Greek":"Greek","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","I acknowledge the risks involved.":"I acknowledge the risks involved.","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","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","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","Links":"Links","Liquidation <0/> threshold":"Liquidation <0/> 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","MAX":"MAX","Market":"Market","Markets":"Markets","Max":"Max","Max LTV":"Max LTV","Max slashing":"Max slashing","Max slippage rate":"Max slippage rate","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 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","Menu":"Menu","Minimum received":"Minimum received","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 rewards to claim":"No rewards to claim","No search results for":"No search results for","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 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.","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 your supplies, borrowings, and open positions.":"Please connect your wallet to see your supplies, borrowings, and open positions.","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","Price impact":"Price impact","Proposal details":"Proposal details","Proposal overview":"Proposal overview","Proposals":"Proposals","Proposition power":"Proposition power","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","Raw-Ipfs":"Raw-Ipfs","Reached":"Reached","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","Repay":"Repay","Repay with":"Repay with","Repay {symbol}":["Repay ",["symbol"]],"Repaying {symbol}":["Repaying ",["symbol"]],"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","Review approval tx details":"Review approval tx details","Review tx":"Review tx","Review tx details":"Review tx details","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.","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 language":"Select language","Select token to add":"Select token to add","Select token to view in block explorer":"Select token to view in block explorer","Setup notifications about your Health Factor using the Hal app.":"Setup notifications about your Health Factor using the Hal app.","Share on twitter":"Share on twitter","Show":"Show","Show assets with 0 balance":"Show assets with 0 balance","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","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","Started":"Started","State":"State","Supplied":"Supplied","Supply":"Supply","Supply APY":"Supply APY","Supply apy":"Supply apy","Supply balance":"Supply balance","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"]],"Swap":"Swap","Swapped":"Swapped","Swapping":"Swapping","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 rate":"Switch rate","Switching E-Mode":"Switching E-Mode","Switching rate":"Switching rate","Test Assets":"Test Assets","Testnet mode":"Testnet mode","Testnet mode is ON":"Testnet mode is ON","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 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(10 days). You can only withdraw your assets from the Security Module after the cooldown period and within the active the unstake window.<0>Learn more":"The cooldown period is the time required prior to unstaking your tokens(10 days). You can only withdraw your assets from the Security Module after the cooldown period and within the active 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 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 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 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 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 community decision. <0>More details":"This asset is frozen due to an Aave community 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.","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, 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, 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 cateogry must be closed.":["To enable E-mode for the ",["0"]," category, all borrow positions outside of this cateogry 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","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 market size":"Total market size","Total supplied":"Total supplied","Total voting power":"Total voting power","Total worth":"Total worth","Transaction failed":"Transaction failed","Transaction overview":"Transaction overview","Type of delegation":"Type of delegation","UNSTAKE {symbol}":["UNSTAKE ",["symbol"]],"UNSTAKING {symbol}":["UNSTAKING ",["symbol"]],"Unavailable":"Unavailable","Unbacked":"Unbacked","Unbacked mint cap is exceeded":"Unbacked mint cap is exceeded","Unstake now":"Unstake now","Unstake window":"Unstake window","Unstaked":"Unstaked","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","Utilization Rate":"Utilization Rate","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 all votes":"View all votes","View contract":"View contract","View details":"View details","View on Explorer":"View on Explorer","Vote":"Vote","Vote NAY":"Vote NAY","Vote YAE":"Vote YAE","Voted NAY":"Voted NAY","Voted YAE":"Voted YAE","Votes":"Votes","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.","Watch-only mode allows to see address positions in Aave, but you won't be able to perform transactions.":"Watch-only mode allows to see address positions in Aave, but you won't be able to perform transactions.","Watch-only mode.":"Watch-only mode.","Watch-only mode. Connect to a wallet to perform transactions.":"Watch-only mode. Connect to a wallet to perform transactions.","We couldn't find any asset matching your search. Try again with a different asset name, symbol, or address.":"We couldn't find any asset matching your search. Try again with a different asset name, symbol, or address.","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.","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.","Why do I need to approve?":"Why do I need to approve?","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 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 not borrow yet using this currency":"You have not borrow yet using this currency","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"]],"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 reward balance is 0":"Your reward balance is 0","Your supplies":"Your supplies","Your voting info":"Your voting info","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","ends":"ends","here.":"here.","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.","staking view":"staking view","starts":"starts","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","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"]],"{d}d":[["d"],"d"],"{h}h":[["h"],"h"],"{m}m":[["m"],"m"],"{networkName} Faucet":[["networkName"]," Faucet"],"{s}s":[["s"],"s"],"{tooltipText}":[["tooltipText"]]}}; \ No newline at end of file diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index d9c04f128b..99e64a65d7 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -17,6 +17,10 @@ msgstr "" msgid "<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more." msgstr "<0>Ampleforth is a rebasing asset. Visit the <1>documentation to learn more." +#: src/components/transactions/TxActionsWrapper.tsx +msgid "<0>Approval doesn't work. <1>Submit a tx<2>to approve instead." +msgstr "<0>Approval doesn't work. <1>Submit a tx<2>to approve instead." + #: src/components/transactions/Borrow/BorrowModalContent.tsx msgid "<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates." msgstr "<0>Attention: Parameter changes via governance can alter your account health factor and risk of liquidation. Follow the <1>Aave governance forum for updates." @@ -156,9 +160,9 @@ msgstr "Amount must be greater than 0" msgid "An error has occurred fetching the proposal metadata from IPFS." msgstr "An error has occurred fetching the proposal metadata from IPFS." -#: src/components/infoModalContents/ApprovalInfoContent.tsx -msgid "Approval" -msgstr "Approval" +#: src/components/transactions/TxActionsWrapper.tsx +msgid "Approve Confirmed" +msgstr "Approve Confirmed" #: src/components/transactions/FlowCommons/LeftHelperText.tsx msgid "Approve confirmed" @@ -168,10 +172,6 @@ msgstr "Approve confirmed" msgid "Approve {symbol} to continue" msgstr "Approve {symbol} to continue" -#: src/components/transactions/TxActionsWrapper.tsx -msgid "Approved" -msgstr "Approved" - #: src/components/transactions/TxActionsWrapper.tsx msgid "Approving {symbol}..." msgstr "Approving {symbol}..." @@ -279,10 +279,6 @@ msgstr "Be careful - You are very close to liquidation. Consider depositing more msgid "Before supplying" msgstr "Before supplying" -#: src/components/infoModalContents/ApprovalInfoContent.tsx -msgid "Before supplying, you need to approve its usage by the Aave protocol. You can learn more in our <0>FAQ" -msgstr "Before supplying, you need to approve its usage by the Aave protocol. You can learn more in our <0>FAQ" - #: src/components/AddressBlockedModal.tsx msgid "Blocked Address" msgstr "Blocked Address" @@ -588,10 +584,6 @@ msgstr "Debt ceiling is not zero" msgid "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." msgstr "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." -#: src/components/infoModalContents/RetryWithApprovalInfoContent.tsx -msgid "Define Retry with Approval text" -msgstr "Define Retry with Approval text" - #: src/components/transactions/GovDelegation/GovDelegationActions.tsx #: src/modules/governance/VotingPowerInfoPanel.tsx msgid "Delegate" @@ -1368,18 +1360,6 @@ msgstr "Reserve factor is a percentage of interest which goes to a {0} that is c msgid "Reserve status & configuration" msgstr "Reserve status & configuration" -#: src/components/transactions/FlowCommons/LeftHelperText.tsx -msgid "Retry What?" -msgstr "Retry What?" - -#: src/components/infoModalContents/RetryWithApprovalInfoContent.tsx -msgid "Retry with Approval" -msgstr "Retry with Approval" - -#: src/components/transactions/TxActionsWrapper.tsx -msgid "Retry with approval" -msgstr "Retry with approval" - #: src/components/transactions/FlowCommons/RightHelperText.tsx msgid "Review approval tx details" msgstr "Review approval tx details" From 978a5b863cfd1a88bee838961c6722f797781715 Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Mon, 21 Nov 2022 22:04:50 -0600 Subject: [PATCH 10/31] chore: revert permit utility modification --- package.json | 4 ++-- src/store/poolSlice.ts | 21 +++++++-------------- yarn.lock | 16 ++++++++-------- 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 79a48d83da..168e999951 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,8 @@ "test:ci": "jest --ci" }, "dependencies": { - "@aave/contract-helpers": "1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0+9c2eb60", - "@aave/math-utils": "1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0+9c2eb60", + "@aave/contract-helpers": "1.9.0", + "@aave/math-utils": "1.9.0", "@emotion/cache": "11.10.3", "@emotion/react": "11.10.4", "@emotion/server": "latest", diff --git a/src/store/poolSlice.ts b/src/store/poolSlice.ts index e703e0fc6b..85320dc028 100644 --- a/src/store/poolSlice.ts +++ b/src/store/poolSlice.ts @@ -1,5 +1,4 @@ import { - ERC20_2612Service, EthereumTransactionTypeExtended, FaucetParamsType, FaucetService, @@ -11,7 +10,6 @@ import { Pool, PoolBaseCurrencyHumanized, ReserveDataHumanized, - SignERC20ApprovalType, UiPoolDataProvider, UserReserveDataHumanized, } from '@aave/contract-helpers'; @@ -21,7 +19,10 @@ import { LPSwapBorrowRateMode, LPWithdrawParamsType, } from '@aave/contract-helpers/dist/esm/lendingPool-contract/lendingPoolTypes'; -import { LPSupplyWithPermitType } from '@aave/contract-helpers/dist/esm/v3-pool-contract/lendingPoolTypes'; +import { + LPSignERC20ApprovalType, + LPSupplyWithPermitType, +} from '@aave/contract-helpers/dist/esm/v3-pool-contract/lendingPoolTypes'; import { normalize } from '@aave/math-utils'; import { SignatureLike } from '@ethersproject/bytes'; import dayjs from 'dayjs'; @@ -74,7 +75,7 @@ export interface PoolSlice { args: Omit ) => Promise; setUserEMode: (categoryId: number) => Promise; - signERC20Approval: (args: Omit) => Promise; + signERC20Approval: (args: Omit) => Promise; claimRewards: (args: ClaimRewardsActionsProps) => Promise; // TODO: optimize types to use only neccessary properties swapCollateral: (args: SwapActionProps) => Promise; @@ -116,10 +117,6 @@ export const createPoolSlice: StateCreator< }); } } - function getPermitService() { - const provider = get().jsonRpcProvider(); - return new ERC20_2612Service(provider); - } return { data: new Map(), refreshPoolData: async () => { @@ -381,13 +378,11 @@ export const createPoolSlice: StateCreator< }); }, signERC20Approval: async (args) => { - const permitService = getPermitService(); + const pool = getCorrectPool() as Pool; const user = get().account; - const spender = get().currentMarketData.addresses.LENDING_POOL; - return permitService.signERC20Approval({ + return pool.signERC20Approval({ ...args, user, - spender, }); }, claimRewards: async ({ selectedReward }) => { @@ -445,5 +440,3 @@ export const createPoolSlice: StateCreator< }, }; }; - -// TODO: move somewhere else diff --git a/yarn.lock b/yarn.lock index 9bdfb6a0b4..bcc18d190c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@aave/contract-helpers@1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0+9c2eb60": - version "1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0" - resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0.tgz#b9e987367975b1fd4c1cbf8f9e414ba66285f2d1" - integrity sha512-QTzw739lRe8p9y1p8gvFyeT1VbIgdaPBbW2QRRaVllHym7rewnWn6n+wB7Hw0chJUysWUwu8MryWbThkNmw75Q== +"@aave/contract-helpers@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@aave/contract-helpers/-/contract-helpers-1.9.0.tgz#29b32f41b1731608caf7aac710a0762aae0ff090" + integrity sha512-/MZfyeLjReD2dh32pzASWZQKGmi706/IJT+tS00Rx2o3iLRr058nvePDw/S6IgYuWWwltT/I3cUwBqcU7k6OwQ== dependencies: isomorphic-unfetch "^3.1.0" -"@aave/math-utils@1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0+9c2eb60": - version "1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0" - resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.9.1-adfa074321a897bbe6e354f351a09854dc744430.0.tgz#6d78bd14d7f630199e9f4193234191066a94a25f" - integrity sha512-qn5UeuFBjneS0SmLz0VYCtXtk1hRNnW8t+8pVrwZjoLCS3DrYq8DaOBakTkcGTOmCm3YcJU/WDeyhPCAxnIY3Q== +"@aave/math-utils@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@aave/math-utils/-/math-utils-1.9.0.tgz#873b6e4087559baa5ac5bfd3b0b8dbde85e054df" + integrity sha512-6E4SUI3JwSsfmEayClrG1ipgOopVqRjxym50LvwVQrlDa863JRTq656DuQmwprNUarWM2cKAuVL7qh58SnWsOw== dependencies: bignumber.js "^9.0.1" tslib "^2.4.0" From cbe19510c989898af0f5db71d5f219beac8c5742 Mon Sep 17 00:00:00 2001 From: Andrew Schmidt Date: Mon, 21 Nov 2022 22:05:04 -0600 Subject: [PATCH 11/31] chore rework approval fallback params --- src/components/transactions/Repay/RepayActions.tsx | 11 +---------- src/components/transactions/Supply/SupplyActions.tsx | 11 +---------- src/components/transactions/TxActionsWrapper.tsx | 12 ++++++------ 3 files changed, 8 insertions(+), 26 deletions(-) diff --git a/src/components/transactions/Repay/RepayActions.tsx b/src/components/transactions/Repay/RepayActions.tsx index 49adcb221e..dfcd8b09ea 100644 --- a/src/components/transactions/Repay/RepayActions.tsx +++ b/src/components/transactions/Repay/RepayActions.tsx @@ -89,16 +89,7 @@ export const RepayActions = ({ handleApproval={() => approval({ amount: amountToRepay, underlyingAsset: poolAddress })} actionText={Repay {symbol}} actionInProgressText={Repaying {symbol}} - approvalFallback={ - tryPermit - ? () => - approval({ - amount: amountToRepay, - underlyingAsset: poolAddress, - forceApprovalTx: true, - }) - : undefined - } + tryPermit={tryPermit} /> ); }; diff --git a/src/components/transactions/Supply/SupplyActions.tsx b/src/components/transactions/Supply/SupplyActions.tsx index c1714b1ba3..eae5b1e607 100644 --- a/src/components/transactions/Supply/SupplyActions.tsx +++ b/src/components/transactions/Supply/SupplyActions.tsx @@ -73,16 +73,7 @@ export const SupplyActions = ({ handleApproval={() => approval({ amount: amountToSupply, underlyingAsset: poolAddress })} handleAction={action} requiresApproval={requiresApproval} - approvalFallback={ - tryPermit - ? () => - approval({ - amount: amountToSupply, - underlyingAsset: poolAddress, - forceApprovalTx: true, - }) - : undefined - } + tryPermit={tryPermit} sx={sx} {...props} /> diff --git a/src/components/transactions/TxActionsWrapper.tsx b/src/components/transactions/TxActionsWrapper.tsx index 2a61c1d8ac..24dbf2d809 100644 --- a/src/components/transactions/TxActionsWrapper.tsx +++ b/src/components/transactions/TxActionsWrapper.tsx @@ -14,7 +14,7 @@ interface TxActionsWrapperProps extends BoxProps { actionText: ReactNode; amount?: string; approvalTxState?: TxStateType; - handleApproval?: () => Promise; + handleApproval?: (forceApproval?: boolean) => Promise; handleAction: () => Promise; isWrongNetwork: boolean; mainTxState: TxStateType; @@ -23,7 +23,7 @@ interface TxActionsWrapperProps extends BoxProps { requiresApproval: boolean; symbol?: string; blocked?: boolean; - approvalFallback?: () => Promise; + tryPermit?: boolean; } export const TxActionsWrapper = ({ @@ -41,7 +41,7 @@ export const TxActionsWrapper = ({ sx, symbol, blocked, - approvalFallback, + tryPermit, ...rest }: TxActionsWrapperProps) => { const { txError } = useModalContext(); @@ -101,7 +101,7 @@ export const TxActionsWrapper = ({