@eth-optimism/actions-sdk 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__mocks__/MockAssets.d.ts +17 -2
- package/dist/__mocks__/MockAssets.d.ts.map +1 -1
- package/dist/__mocks__/MockAssets.js +49 -6
- package/dist/__mocks__/MockAssets.js.map +1 -1
- package/dist/__tests__/actions.test.js +1 -1
- package/dist/__tests__/actions.test.js.map +1 -1
- package/dist/actions.d.ts +17 -13
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +46 -27
- package/dist/actions.js.map +1 -1
- package/dist/constants/assets.d.ts +215 -4
- package/dist/constants/assets.d.ts.map +1 -1
- package/dist/constants/assets.js +734 -11
- package/dist/constants/assets.js.map +1 -1
- package/dist/constants/providers.d.ts +6 -0
- package/dist/constants/providers.d.ts.map +1 -0
- package/dist/constants/providers.js +6 -0
- package/dist/constants/providers.js.map +1 -0
- package/dist/constants/supportedChains.d.ts +2 -2
- package/dist/constants/supportedChains.d.ts.map +1 -1
- package/dist/constants/supportedChains.js +12 -2
- package/dist/constants/supportedChains.js.map +1 -1
- package/dist/ens/EnsNamespace.d.ts +57 -0
- package/dist/ens/EnsNamespace.d.ts.map +1 -0
- package/dist/ens/EnsNamespace.js +158 -0
- package/dist/ens/EnsNamespace.js.map +1 -0
- package/dist/ens/EnsNamespace.spec.d.ts +2 -0
- package/dist/ens/EnsNamespace.spec.d.ts.map +1 -0
- package/dist/ens/EnsNamespace.spec.js +144 -0
- package/dist/ens/EnsNamespace.spec.js.map +1 -0
- package/dist/ens/errors.d.ts +24 -0
- package/dist/ens/errors.d.ts.map +1 -0
- package/dist/ens/errors.js +35 -0
- package/dist/ens/errors.js.map +1 -0
- package/dist/ens/index.d.ts +4 -0
- package/dist/ens/index.d.ts.map +1 -0
- package/dist/ens/index.js +4 -0
- package/dist/ens/index.js.map +1 -0
- package/dist/ens/types.d.ts +63 -0
- package/dist/ens/types.d.ts.map +1 -0
- package/dist/ens/types.js +14 -0
- package/dist/ens/types.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
- package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
- package/dist/lend/__mocks__/MockLendProvider.js +7 -2
- package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
- package/dist/lend/core/LendProvider.d.ts +12 -8
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js +15 -21
- package/dist/lend/core/LendProvider.js.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
- package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
- package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
- package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
- package/dist/lend/providers/aave/addresses.d.ts +13 -39
- package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
- package/dist/lend/providers/aave/addresses.js +65 -60
- package/dist/lend/providers/aave/addresses.js.map +1 -1
- package/dist/lend/providers/aave/sdk.d.ts +2 -2
- package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
- package/dist/lend/providers/aave/sdk.js +6 -28
- package/dist/lend/providers/aave/sdk.js.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
- package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -42
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
- package/dist/lend/providers/morpho/api.d.ts +3 -7
- package/dist/lend/providers/morpho/api.d.ts.map +1 -1
- package/dist/lend/providers/morpho/api.js +2 -2
- package/dist/lend/providers/morpho/api.js.map +1 -1
- package/dist/lend/providers/morpho/contracts.d.ts +11 -10
- package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
- package/dist/lend/providers/morpho/contracts.js +43 -10
- package/dist/lend/providers/morpho/contracts.js.map +1 -1
- package/dist/lend/providers/morpho/sdk.d.ts +7 -2
- package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
- package/dist/lend/providers/morpho/sdk.js +67 -63
- package/dist/lend/providers/morpho/sdk.js.map +1 -1
- package/dist/nodeActionsFactory.d.ts +1 -1
- package/dist/reactActionsFactory.d.ts +1 -1
- package/dist/services/ChainManager.d.ts +15 -8
- package/dist/services/ChainManager.d.ts.map +1 -1
- package/dist/services/ChainManager.js +9 -0
- package/dist/services/ChainManager.js.map +1 -1
- package/dist/services/__mocks__/MockChainManager.d.ts +5 -4
- package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
- package/dist/services/__mocks__/MockChainManager.js +5 -0
- package/dist/services/__mocks__/MockChainManager.js.map +1 -1
- package/dist/services/tokenBalance.d.ts +1 -1
- package/dist/services/tokenBalance.d.ts.map +1 -1
- package/dist/services/tokenBalance.js +31 -30
- package/dist/services/tokenBalance.js.map +1 -1
- package/dist/services/tokenBalance.spec.js +20 -24
- package/dist/services/tokenBalance.spec.js.map +1 -1
- package/dist/swap/__mocks__/MockSwapProvider.d.ts +20 -8
- package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -1
- package/dist/swap/__mocks__/MockSwapProvider.js +52 -29
- package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -1
- package/dist/swap/core/SwapProvider.d.ts +105 -16
- package/dist/swap/core/SwapProvider.d.ts.map +1 -1
- package/dist/swap/core/SwapProvider.js +215 -37
- package/dist/swap/core/SwapProvider.js.map +1 -1
- package/dist/swap/core/__tests__/SwapProvider.test.js +115 -9
- package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -1
- package/dist/swap/core/markets.d.ts +47 -0
- package/dist/swap/core/markets.d.ts.map +1 -0
- package/dist/swap/core/markets.js +65 -0
- package/dist/swap/core/markets.js.map +1 -0
- package/dist/swap/index.d.ts +2 -0
- package/dist/swap/index.d.ts.map +1 -1
- package/dist/swap/index.js +1 -0
- package/dist/swap/index.js.map +1 -1
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +2 -2
- package/dist/swap/namespaces/ActionsSwapNamespace.js +2 -2
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts +50 -8
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -1
- package/dist/swap/namespaces/BaseSwapNamespace.js +144 -16
- package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -1
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts +20 -7
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
- package/dist/swap/namespaces/WalletSwapNamespace.js +44 -15
- package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -1
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +150 -11
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -1
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +85 -8
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -1
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +10 -42
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -1
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js +81 -139
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -1
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +10 -9
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -1
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js +17 -17
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -1
- package/dist/swap/providers/uniswap/addresses.d.ts +5 -0
- package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -1
- package/dist/swap/providers/uniswap/addresses.js +1 -1
- package/dist/swap/providers/uniswap/addresses.js.map +1 -1
- package/dist/swap/providers/uniswap/encoding.d.ts +4 -4
- package/dist/swap/providers/uniswap/encoding.js +17 -17
- package/dist/swap/providers/uniswap/markets.d.ts +19 -0
- package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/markets.js +48 -0
- package/dist/swap/providers/uniswap/markets.js.map +1 -0
- package/dist/swap/providers/uniswap/types.d.ts +4 -3
- package/dist/swap/providers/uniswap/types.d.ts.map +1 -1
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +50 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +420 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
- package/dist/swap/providers/velodrome/abis.d.ts +396 -0
- package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/abis.js +257 -0
- package/dist/swap/providers/velodrome/abis.js.map +1 -0
- package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
- package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/addresses.js +57 -0
- package/dist/swap/providers/velodrome/addresses.js.map +1 -0
- package/dist/swap/providers/velodrome/config.d.ts +22 -0
- package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/config.js +29 -0
- package/dist/swap/providers/velodrome/config.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
- package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
- package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
- package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/index.js +5 -0
- package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
- package/dist/swap/providers/velodrome/markets.d.ts +21 -0
- package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/markets.js +69 -0
- package/dist/swap/providers/velodrome/markets.js.map +1 -0
- package/dist/swap/providers/velodrome/types.d.ts +31 -0
- package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/types.js +2 -0
- package/dist/swap/providers/velodrome/types.js.map +1 -0
- package/dist/types/actions.d.ts +44 -9
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/asset.d.ts +7 -9
- package/dist/types/asset.d.ts.map +1 -1
- package/dist/types/chain.d.ts +2 -2
- package/dist/types/chain.d.ts.map +1 -1
- package/dist/types/lend/base.d.ts +6 -6
- package/dist/types/lend/base.d.ts.map +1 -1
- package/dist/types/lend/base.js.map +1 -1
- package/dist/types/lend/contracts.d.ts +2 -1
- package/dist/types/lend/contracts.d.ts.map +1 -1
- package/dist/types/providers.d.ts +21 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +2 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/swap/base.d.ts +136 -35
- package/dist/types/swap/base.d.ts.map +1 -1
- package/dist/types/swap/base.js.map +1 -1
- package/dist/utils/approve.d.ts +82 -0
- package/dist/utils/approve.d.ts.map +1 -0
- package/dist/utils/{permit2.js → approve.js} +48 -14
- package/dist/utils/approve.js.map +1 -0
- package/dist/utils/approve.test.d.ts +2 -0
- package/dist/utils/approve.test.d.ts.map +1 -0
- package/dist/utils/{permit2.test.js → approve.test.js} +95 -2
- package/dist/utils/approve.test.js.map +1 -0
- package/dist/utils/assets.d.ts +6 -0
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +10 -0
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/ens.d.ts +25 -0
- package/dist/utils/ens.d.ts.map +1 -0
- package/dist/utils/ens.js +53 -0
- package/dist/utils/ens.js.map +1 -0
- package/dist/utils/ens.test.d.ts +2 -0
- package/dist/utils/ens.test.d.ts.map +1 -0
- package/dist/utils/ens.test.js +75 -0
- package/dist/utils/ens.test.js.map +1 -0
- package/dist/utils/validateAddresses.d.ts +32 -0
- package/dist/utils/validateAddresses.d.ts.map +1 -0
- package/dist/utils/validateAddresses.js +103 -0
- package/dist/utils/validateAddresses.js.map +1 -0
- package/dist/utils/validateAddresses.test.d.ts +2 -0
- package/dist/utils/validateAddresses.test.d.ts.map +1 -0
- package/dist/utils/validateAddresses.test.js +314 -0
- package/dist/utils/validateAddresses.test.js.map +1 -0
- package/dist/utils/validation.d.ts +5 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +10 -0
- package/dist/utils/validation.js.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
- package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
- package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -16
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -11
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +2 -9
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +6 -17
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +7 -6
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +3 -10
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -10
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +6 -8
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +2 -9
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +3 -10
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -10
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +3 -9
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -2
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -9
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -2
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -9
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -2
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +5 -10
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -10
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -10
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/package.json +3 -2
- package/src/__mocks__/MockAssets.ts +54 -6
- package/src/__tests__/actions.test.ts +1 -1
- package/src/actions.ts +73 -61
- package/src/constants/assets.ts +781 -10
- package/src/constants/providers.ts +5 -0
- package/src/constants/supportedChains.ts +22 -2
- package/src/ens/EnsNamespace.spec.ts +171 -0
- package/src/ens/EnsNamespace.ts +210 -0
- package/src/ens/errors.ts +45 -0
- package/src/ens/index.ts +12 -0
- package/src/ens/types.ts +76 -0
- package/src/index.ts +59 -8
- package/src/lend/__mocks__/MockLendProvider.ts +8 -3
- package/src/lend/core/LendProvider.ts +27 -28
- package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
- package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
- package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
- package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
- package/src/lend/providers/aave/addresses.ts +82 -64
- package/src/lend/providers/aave/sdk.ts +11 -36
- package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
- package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
- package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -43
- package/src/lend/providers/morpho/api.ts +7 -8
- package/src/lend/providers/morpho/contracts.ts +62 -13
- package/src/lend/providers/morpho/sdk.ts +85 -63
- package/src/services/ChainManager.ts +22 -21
- package/src/services/__mocks__/MockChainManager.ts +12 -7
- package/src/services/tokenBalance.spec.ts +20 -24
- package/src/services/tokenBalance.ts +39 -33
- package/src/swap/__mocks__/MockSwapProvider.ts +77 -42
- package/src/swap/core/SwapProvider.ts +309 -50
- package/src/swap/core/__tests__/SwapProvider.test.ts +151 -9
- package/src/swap/core/markets.ts +104 -0
- package/src/swap/index.ts +5 -0
- package/src/swap/namespaces/ActionsSwapNamespace.ts +2 -2
- package/src/swap/namespaces/BaseSwapNamespace.ts +215 -18
- package/src/swap/namespaces/WalletSwapNamespace.ts +61 -14
- package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +245 -14
- package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +103 -8
- package/src/swap/providers/uniswap/UniswapSwapProvider.ts +110 -195
- package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +12 -12
- package/src/swap/providers/uniswap/__tests__/sdk.test.ts +19 -20
- package/src/swap/providers/uniswap/addresses.ts +3 -1
- package/src/swap/providers/uniswap/encoding.ts +22 -22
- package/src/swap/providers/uniswap/markets.ts +84 -0
- package/src/swap/providers/uniswap/types.ts +4 -3
- package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +226 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +507 -0
- package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
- package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
- package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
- package/src/swap/providers/velodrome/abis.ts +264 -0
- package/src/swap/providers/velodrome/addresses.ts +107 -0
- package/src/swap/providers/velodrome/config.ts +46 -0
- package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
- package/src/swap/providers/velodrome/encoding/index.ts +7 -0
- package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
- package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
- package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
- package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
- package/src/swap/providers/velodrome/markets.ts +100 -0
- package/src/swap/providers/velodrome/types.ts +30 -0
- package/src/types/actions.ts +49 -9
- package/src/types/asset.ts +12 -9
- package/src/types/chain.ts +2 -2
- package/src/types/lend/base.ts +6 -6
- package/src/types/lend/contracts.ts +5 -1
- package/src/types/providers.ts +22 -0
- package/src/types/swap/base.ts +150 -36
- package/src/utils/{permit2.test.ts → approve.test.ts} +117 -1
- package/src/utils/{permit2.ts → approve.ts} +67 -14
- package/src/utils/assets.ts +14 -0
- package/src/utils/ens.test.ts +104 -0
- package/src/utils/ens.ts +85 -0
- package/src/utils/validateAddresses.test.ts +439 -0
- package/src/utils/validateAddresses.ts +153 -0
- package/src/utils/validation.ts +11 -0
- package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +5 -17
- package/src/wallet/core/providers/hosted/types/index.ts +9 -11
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +5 -17
- package/src/wallet/core/wallets/abstract/Wallet.ts +18 -22
- package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +5 -17
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +3 -10
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +8 -8
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +3 -10
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +5 -17
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +5 -17
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +7 -11
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +7 -11
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +7 -11
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +23 -10
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +10 -18
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +10 -18
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -18
- package/dist/supported/tokens.d.ts +0 -25
- package/dist/supported/tokens.d.ts.map +0 -1
- package/dist/supported/tokens.js +0 -44
- package/dist/supported/tokens.js.map +0 -1
- package/dist/utils/permit2.d.ts +0 -46
- package/dist/utils/permit2.d.ts.map +0 -1
- package/dist/utils/permit2.js.map +0 -1
- package/dist/utils/permit2.test.d.ts +0 -2
- package/dist/utils/permit2.test.d.ts.map +0 -1
- package/dist/utils/permit2.test.js.map +0 -1
- package/src/supported/tokens.ts +0 -66
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
|
-
import {
|
|
2
|
+
import { parseUnits } from 'viem'
|
|
3
3
|
|
|
4
4
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
|
+
import { ACTIONS_SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
|
|
5
6
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
7
|
import type { LendProviderConfig } from '@/types/actions.js'
|
|
7
8
|
import type { Asset } from '@/types/asset.js'
|
|
@@ -20,6 +21,7 @@ import type {
|
|
|
20
21
|
LendTransaction,
|
|
21
22
|
TransactionData,
|
|
22
23
|
} from '@/types/lend/index.js'
|
|
24
|
+
import { buildErc20ApprovalTx } from '@/utils/approve.js'
|
|
23
25
|
import { validateMarketAsset } from '@/utils/markets.js'
|
|
24
26
|
import { validateChainSupported } from '@/utils/validation.js'
|
|
25
27
|
|
|
@@ -36,12 +38,6 @@ export abstract class LendProvider<
|
|
|
36
38
|
/** Chain manager for blockchain interactions */
|
|
37
39
|
protected readonly chainManager: ChainManager
|
|
38
40
|
|
|
39
|
-
/**
|
|
40
|
-
* Supported chain IDs
|
|
41
|
-
* @description Array of chain IDs that this provider supports
|
|
42
|
-
*/
|
|
43
|
-
protected abstract readonly SUPPORTED_CHAIN_IDS: readonly number[]
|
|
44
|
-
|
|
45
41
|
/**
|
|
46
42
|
* Create a new lending provider
|
|
47
43
|
* @param config - Provider-specific lending configuration
|
|
@@ -57,12 +53,27 @@ export abstract class LendProvider<
|
|
|
57
53
|
}
|
|
58
54
|
|
|
59
55
|
/**
|
|
60
|
-
*
|
|
61
|
-
* @description
|
|
62
|
-
*
|
|
56
|
+
* Chain IDs supported by the underlying protocol.
|
|
57
|
+
* @description Each provider implements this to declare the chains its protocol
|
|
58
|
+
* is deployed on, without any SDK-level or developer-config filtering.
|
|
59
|
+
* @returns Array of chain IDs the protocol natively supports
|
|
60
|
+
*/
|
|
61
|
+
abstract protocolSupportedChainIds(): number[]
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Effective supported chain IDs.
|
|
65
|
+
* @description Intersection of the protocol's supported chains,
|
|
66
|
+
* the Actions SDK's known chains, and the developer's ActionsConfig.chains.
|
|
67
|
+
* All validation in public methods uses this set.
|
|
68
|
+
* @returns Array of chain IDs usable through this provider instance
|
|
63
69
|
*/
|
|
64
70
|
supportedChainIds(): number[] {
|
|
65
|
-
|
|
71
|
+
const configuredChains = this.chainManager.getSupportedChains()
|
|
72
|
+
return this.protocolSupportedChainIds().filter(
|
|
73
|
+
(id) =>
|
|
74
|
+
(ACTIONS_SUPPORTED_CHAIN_IDS as readonly number[]).includes(id) &&
|
|
75
|
+
(configuredChains as number[]).includes(id),
|
|
76
|
+
)
|
|
66
77
|
}
|
|
67
78
|
|
|
68
79
|
/**
|
|
@@ -78,7 +89,6 @@ export abstract class LendProvider<
|
|
|
78
89
|
throw new Error('walletAddress is required')
|
|
79
90
|
}
|
|
80
91
|
|
|
81
|
-
validateChainSupported(params.marketId.chainId, this.SUPPORTED_CHAIN_IDS)
|
|
82
92
|
this.validateConfigSupported(params.marketId)
|
|
83
93
|
|
|
84
94
|
// Convert human-readable amount to wei using the asset's decimals
|
|
@@ -106,7 +116,6 @@ export abstract class LendProvider<
|
|
|
106
116
|
chainId: params.chainId,
|
|
107
117
|
}
|
|
108
118
|
|
|
109
|
-
validateChainSupported(params.chainId, this.SUPPORTED_CHAIN_IDS)
|
|
110
119
|
this.validateConfigSupported(marketId)
|
|
111
120
|
return this._getMarket(marketId)
|
|
112
121
|
}
|
|
@@ -118,7 +127,7 @@ export abstract class LendProvider<
|
|
|
118
127
|
*/
|
|
119
128
|
async getMarkets(params: GetLendMarketsParams = {}): Promise<LendMarket[]> {
|
|
120
129
|
if (params.chainId !== undefined)
|
|
121
|
-
validateChainSupported(params.chainId, this.
|
|
130
|
+
validateChainSupported(params.chainId, this.supportedChainIds())
|
|
122
131
|
|
|
123
132
|
const filteredMarkets = this.filterMarketConfigs(
|
|
124
133
|
params.chainId,
|
|
@@ -157,7 +166,6 @@ export abstract class LendProvider<
|
|
|
157
166
|
)
|
|
158
167
|
}
|
|
159
168
|
|
|
160
|
-
validateChainSupported(marketId.chainId, this.SUPPORTED_CHAIN_IDS)
|
|
161
169
|
this.validateConfigSupported(marketId)
|
|
162
170
|
|
|
163
171
|
return this._getPosition({ marketId, walletAddress })
|
|
@@ -177,7 +185,6 @@ export abstract class LendProvider<
|
|
|
177
185
|
throw new Error('walletAddress is required')
|
|
178
186
|
}
|
|
179
187
|
|
|
180
|
-
validateChainSupported(params.marketId.chainId, this.SUPPORTED_CHAIN_IDS)
|
|
181
188
|
this.validateConfigSupported(params.marketId)
|
|
182
189
|
|
|
183
190
|
const market = await this.getMarket({
|
|
@@ -215,7 +222,7 @@ export abstract class LendProvider<
|
|
|
215
222
|
* @returns true if chain is supported, false otherwise
|
|
216
223
|
*/
|
|
217
224
|
protected isChainSupported(chainId: number): boolean {
|
|
218
|
-
return this.
|
|
225
|
+
return this.supportedChainIds().includes(chainId)
|
|
219
226
|
}
|
|
220
227
|
|
|
221
228
|
/**
|
|
@@ -224,6 +231,8 @@ export abstract class LendProvider<
|
|
|
224
231
|
* @throws Error if market allowlist is configured but market is not in it
|
|
225
232
|
*/
|
|
226
233
|
protected validateConfigSupported(marketId: LendMarketId): void {
|
|
234
|
+
validateChainSupported(marketId.chainId, this.supportedChainIds())
|
|
235
|
+
|
|
227
236
|
if (
|
|
228
237
|
!this._config.marketAllowlist ||
|
|
229
238
|
this._config.marketAllowlist.length === 0
|
|
@@ -275,17 +284,7 @@ export abstract class LendProvider<
|
|
|
275
284
|
spender: Address,
|
|
276
285
|
amount: bigint,
|
|
277
286
|
): TransactionData {
|
|
278
|
-
|
|
279
|
-
abi: erc20Abi,
|
|
280
|
-
functionName: 'approve',
|
|
281
|
-
args: [spender, amount],
|
|
282
|
-
})
|
|
283
|
-
|
|
284
|
-
return {
|
|
285
|
-
to: tokenAddress,
|
|
286
|
-
data: approvalCallData,
|
|
287
|
-
value: 0n,
|
|
288
|
-
}
|
|
287
|
+
return buildErc20ApprovalTx(tokenAddress, spender, amount)
|
|
289
288
|
}
|
|
290
289
|
|
|
291
290
|
/**
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
2
1
|
import type { AaveLendProvider } from '@/lend/providers/aave/AaveLendProvider.js'
|
|
3
2
|
import type { MorphoLendProvider } from '@/lend/providers/morpho/MorphoLendProvider.js'
|
|
4
|
-
import type { LendProviderConfig } from '@/types/actions.js'
|
|
5
3
|
import type {
|
|
6
4
|
GetLendMarketParams,
|
|
7
5
|
GetLendMarketsParams,
|
|
8
6
|
LendMarket,
|
|
9
7
|
LendMarketId,
|
|
10
8
|
} from '@/types/lend/index.js'
|
|
9
|
+
import type { LendProviders } from '@/types/providers.js'
|
|
11
10
|
|
|
12
|
-
export type LendProviders
|
|
13
|
-
morpho?: LendProvider<LendProviderConfig>
|
|
14
|
-
aave?: LendProvider<LendProviderConfig>
|
|
15
|
-
}
|
|
11
|
+
export type { LendProviders } from '@/types/providers.js'
|
|
16
12
|
|
|
17
13
|
/**
|
|
18
14
|
* Base Lend Namespace
|
|
@@ -3,8 +3,13 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
|
3
3
|
|
|
4
4
|
import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
5
5
|
import type { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
createMockLendProvider,
|
|
8
|
+
MockLendProvider as MockLendProviderClass,
|
|
9
|
+
} from '@/lend/__mocks__/MockLendProvider.js'
|
|
7
10
|
import { BaseLendNamespace } from '@/lend/namespaces/BaseLendNamespace.js'
|
|
11
|
+
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
12
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
8
13
|
|
|
9
14
|
// Concrete implementation for testing
|
|
10
15
|
class TestLendNamespace extends BaseLendNamespace {}
|
|
@@ -109,10 +114,12 @@ describe('BaseLendNamespace', () => {
|
|
|
109
114
|
|
|
110
115
|
describe('supportedChainIds', () => {
|
|
111
116
|
it('should return unique chain IDs from all providers', () => {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
})
|
|
117
|
+
const chainManager = new MockChainManager({
|
|
118
|
+
supportedChains: [1, 130, 8453, 84532],
|
|
119
|
+
}) as unknown as ChainManager
|
|
120
|
+
const morpho = new MockLendProviderClass({}, undefined, chainManager)
|
|
121
|
+
const aave = new MockLendProviderClass({}, undefined, chainManager)
|
|
122
|
+
const namespace = new TestLendNamespace({ morpho, aave })
|
|
116
123
|
|
|
117
124
|
const chainIds = namespace.supportedChainIds()
|
|
118
125
|
|
|
@@ -25,18 +25,14 @@ import {
|
|
|
25
25
|
} from './addresses.js'
|
|
26
26
|
import { getATokenAddress, getReserve, getReserves } from './sdk.js'
|
|
27
27
|
|
|
28
|
-
/**
|
|
29
|
-
* Supported chain IDs for Aave lending
|
|
30
|
-
* @description Array of chain IDs where Aave V3 is available on Optimism Superchain
|
|
31
|
-
*/
|
|
32
|
-
export const SUPPORTED_CHAIN_IDS = getSupportedChainIds() as readonly number[]
|
|
33
|
-
|
|
34
28
|
/**
|
|
35
29
|
* Aave lending provider implementation
|
|
36
30
|
* @description Lending provider implementation using Aave V3 protocol
|
|
37
31
|
*/
|
|
38
32
|
export class AaveLendProvider extends LendProvider<LendProviderConfig> {
|
|
39
|
-
|
|
33
|
+
protocolSupportedChainIds(): number[] {
|
|
34
|
+
return getSupportedChainIds()
|
|
35
|
+
}
|
|
40
36
|
|
|
41
37
|
/**
|
|
42
38
|
* Create a new Aave lending provider
|
|
@@ -88,22 +88,31 @@ describe('AaveLendProvider', () => {
|
|
|
88
88
|
})
|
|
89
89
|
})
|
|
90
90
|
|
|
91
|
-
describe('
|
|
92
|
-
it('should return
|
|
93
|
-
const chainIds = provider.
|
|
91
|
+
describe('protocolSupportedChainIds', () => {
|
|
92
|
+
it('should return all Aave V3 deployment chains', () => {
|
|
93
|
+
const chainIds = provider.protocolSupportedChainIds()
|
|
94
94
|
|
|
95
|
-
expect(chainIds).toHaveLength(
|
|
95
|
+
expect(chainIds).toHaveLength(6)
|
|
96
96
|
expect(chainIds).toContain(10) // Optimism
|
|
97
97
|
expect(chainIds).toContain(8453) // Base
|
|
98
|
+
expect(chainIds).toContain(1868) // Soneium
|
|
99
|
+
expect(chainIds).toContain(57073) // Ink
|
|
98
100
|
expect(chainIds).toContain(11155420) // Optimism Sepolia
|
|
99
101
|
expect(chainIds).toContain(84532) // Base Sepolia
|
|
100
102
|
})
|
|
103
|
+
})
|
|
101
104
|
|
|
102
|
-
|
|
105
|
+
describe('supportedChainIds', () => {
|
|
106
|
+
it('should return only chains present in ActionsConfig', () => {
|
|
107
|
+
// mockChainManager is configured with supportedChains: [8453]
|
|
103
108
|
const chainIds = provider.supportedChainIds()
|
|
104
|
-
const uniqueIds = [...new Set(chainIds)]
|
|
105
109
|
|
|
106
|
-
expect(chainIds
|
|
110
|
+
expect(chainIds).toEqual([8453])
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
it('should return unique chain IDs', () => {
|
|
114
|
+
const chainIds = provider.supportedChainIds()
|
|
115
|
+
expect(chainIds.length).toBe(new Set(chainIds).size)
|
|
107
116
|
})
|
|
108
117
|
})
|
|
109
118
|
|
|
@@ -1,95 +1,113 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
base,
|
|
4
|
+
baseSepolia,
|
|
5
|
+
ink,
|
|
6
|
+
optimism,
|
|
7
|
+
optimismSepolia,
|
|
8
|
+
soneium,
|
|
9
|
+
} from 'viem/chains'
|
|
3
10
|
|
|
4
|
-
|
|
5
|
-
* Aave V3 Pool addresses for Optimism Superchain networks
|
|
6
|
-
* @description Hardcoded Pool contract addresses for each supported chain
|
|
7
|
-
*/
|
|
11
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
8
12
|
|
|
9
13
|
/**
|
|
10
|
-
*
|
|
14
|
+
* Aave V3 contract addresses per chain
|
|
11
15
|
*/
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
export interface AaveAddresses {
|
|
17
|
+
pool: Address
|
|
18
|
+
wethGateway: Address
|
|
19
|
+
uiPoolDataProvider: Address
|
|
20
|
+
poolAddressesProvider: Address
|
|
21
|
+
}
|
|
16
22
|
|
|
17
23
|
/**
|
|
18
|
-
*
|
|
24
|
+
* Aave V3 contract addresses for OP Stack chains
|
|
25
|
+
* @see https://github.com/bgd-labs/aave-address-book
|
|
19
26
|
*/
|
|
20
|
-
|
|
21
|
-
[
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
const AAVE_ADDRESSES: Partial<Record<SupportedChainId, AaveAddresses>> = {
|
|
28
|
+
[optimism.id]: {
|
|
29
|
+
pool: '0x794a61358D6845594F94dc1DB02A252b5b4814aD',
|
|
30
|
+
wethGateway: '0x5f2508cAE9923b02316254026CD43d7902866725',
|
|
31
|
+
uiPoolDataProvider: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654',
|
|
32
|
+
poolAddressesProvider: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
|
|
33
|
+
},
|
|
34
|
+
[base.id]: {
|
|
35
|
+
pool: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5',
|
|
36
|
+
wethGateway: '0xa0d9C1E9E48Ca30c8d8C3B5D69FF5dc1f6DFfC24',
|
|
37
|
+
uiPoolDataProvider: '0xd82a47fdebB5bf5329b09441C3DaB4b5df2153Ad',
|
|
38
|
+
poolAddressesProvider: '0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D',
|
|
39
|
+
},
|
|
40
|
+
[soneium.id]: {
|
|
41
|
+
pool: '0xDd3d7A7d03D9fD9ef45f3E587287922eF65CA38B',
|
|
42
|
+
wethGateway: '0x6376D4df995f32f308f2d5049a7a320943023232',
|
|
43
|
+
uiPoolDataProvider: '0xc69299Ddd3a704F6954c8Ae1AD00e0892d77Aee4',
|
|
44
|
+
poolAddressesProvider: '0x82405D1a189bd6cE4667809C35B37fBE136A4c5B',
|
|
45
|
+
},
|
|
46
|
+
[ink.id]: {
|
|
47
|
+
pool: '0x2816cf15F6d2A220E789aA011D5EE4eB6c47FEbA',
|
|
48
|
+
wethGateway: '0xDe090EfCD6ef4b86792e2D84E55a5fa8d49D25D2',
|
|
49
|
+
uiPoolDataProvider: '0xF1485fb7DBFa5db0B368FeA808FD6ff945c36064',
|
|
50
|
+
poolAddressesProvider: '0x4172E6aAEC070ACB31aaCE343A58c93E4C70f44D',
|
|
51
|
+
},
|
|
52
|
+
[optimismSepolia.id]: {
|
|
53
|
+
pool: '0xb50201558b00496a145fe76f7424749556e326d8',
|
|
54
|
+
wethGateway: '0x589750BA8aF186cE5B55391B0b7148cAD43a1619',
|
|
55
|
+
uiPoolDataProvider: '0x86E2938daE289763D4e09a7e42c5cCcA62Cf9809',
|
|
56
|
+
poolAddressesProvider: '0x36616cf17557639614c1cdDb356b1B83fc0B2132',
|
|
57
|
+
},
|
|
58
|
+
[baseSepolia.id]: {
|
|
59
|
+
pool: '0x8bAB6d1b75f19e9eD9fCe8b9BD338844fF79aE27',
|
|
60
|
+
wethGateway: '0x0568130e794429D2eEBC4dafE18f25Ff1a1ed8b6',
|
|
61
|
+
uiPoolDataProvider: '0xBc9f5b7E248451CdD7cA54e717a2BFe1F32b566b',
|
|
62
|
+
poolAddressesProvider: '0xE4C23309117Aa30342BFaae6c95c6478e0A4Ad00',
|
|
63
|
+
},
|
|
64
|
+
}
|
|
24
65
|
|
|
25
66
|
/**
|
|
26
|
-
*
|
|
67
|
+
* Get all Aave addresses for a chain
|
|
27
68
|
*/
|
|
28
|
-
export
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
} as const
|
|
69
|
+
export function getAaveAddresses(chainId: number): AaveAddresses | undefined {
|
|
70
|
+
return AAVE_ADDRESSES[chainId as SupportedChainId]
|
|
71
|
+
}
|
|
32
72
|
|
|
33
73
|
/**
|
|
34
74
|
* Get Pool address for a given chain ID
|
|
35
|
-
* @param chainId - Chain ID
|
|
36
|
-
* @returns Pool address if supported, undefined otherwise
|
|
37
75
|
*/
|
|
38
76
|
export function getPoolAddress(chainId: number): Address | undefined {
|
|
39
|
-
return
|
|
77
|
+
return getAaveAddresses(chainId)?.pool
|
|
40
78
|
}
|
|
41
79
|
|
|
42
80
|
/**
|
|
43
|
-
*
|
|
44
|
-
* @param chainId - Chain ID to check
|
|
45
|
-
* @returns true if Aave V3 is deployed on this chain
|
|
81
|
+
* Get WETHGateway address for a given chain ID
|
|
46
82
|
*/
|
|
47
|
-
export function
|
|
48
|
-
return chainId
|
|
83
|
+
export function getWETHGatewayAddress(chainId: number): Address | undefined {
|
|
84
|
+
return getAaveAddresses(chainId)?.wethGateway
|
|
49
85
|
}
|
|
50
86
|
|
|
51
87
|
/**
|
|
52
88
|
* Get all supported chain IDs
|
|
53
|
-
* @returns Array of chain IDs with Aave V3 deployed
|
|
54
89
|
*/
|
|
55
90
|
export function getSupportedChainIds(): number[] {
|
|
56
|
-
return Object.keys(
|
|
91
|
+
return Object.keys(AAVE_ADDRESSES).map(Number)
|
|
57
92
|
}
|
|
58
93
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
94
|
+
export const POOL_ADDRESSES_MAINNET: Record<number, Address> = {
|
|
95
|
+
[optimism.id]: AAVE_ADDRESSES[optimism.id]!.pool,
|
|
96
|
+
[base.id]: AAVE_ADDRESSES[base.id]!.pool,
|
|
97
|
+
[soneium.id]: AAVE_ADDRESSES[soneium.id]!.pool,
|
|
98
|
+
[ink.id]: AAVE_ADDRESSES[ink.id]!.pool,
|
|
99
|
+
}
|
|
100
|
+
export const POOL_ADDRESSES_TESTNET: Record<number, Address> = {
|
|
101
|
+
[optimismSepolia.id]: AAVE_ADDRESSES[optimismSepolia.id]!.pool,
|
|
102
|
+
[baseSepolia.id]: AAVE_ADDRESSES[baseSepolia.id]!.pool,
|
|
103
|
+
}
|
|
67
104
|
export const WETH_GATEWAY_ADDRESSES_MAINNET: Record<number, Address> = {
|
|
68
|
-
[optimism.id]:
|
|
69
|
-
[base.id]:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
* Testnet WETHGateway addresses
|
|
74
|
-
*/
|
|
105
|
+
[optimism.id]: AAVE_ADDRESSES[optimism.id]!.wethGateway,
|
|
106
|
+
[base.id]: AAVE_ADDRESSES[base.id]!.wethGateway,
|
|
107
|
+
[soneium.id]: AAVE_ADDRESSES[soneium.id]!.wethGateway,
|
|
108
|
+
[ink.id]: AAVE_ADDRESSES[ink.id]!.wethGateway,
|
|
109
|
+
}
|
|
75
110
|
export const WETH_GATEWAY_ADDRESSES_TESTNET: Record<number, Address> = {
|
|
76
|
-
[optimismSepolia.id]:
|
|
77
|
-
[baseSepolia.id]:
|
|
78
|
-
} as const
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* All WETHGateway addresses (mainnet + testnet)
|
|
82
|
-
*/
|
|
83
|
-
export const WETH_GATEWAY_ADDRESSES: Record<number, Address> = {
|
|
84
|
-
...WETH_GATEWAY_ADDRESSES_MAINNET,
|
|
85
|
-
...WETH_GATEWAY_ADDRESSES_TESTNET,
|
|
86
|
-
} as const
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Get WETHGateway address for a given chain ID
|
|
90
|
-
* @param chainId - Chain ID
|
|
91
|
-
* @returns WETHGateway address if supported, undefined otherwise
|
|
92
|
-
*/
|
|
93
|
-
export function getWETHGatewayAddress(chainId: number): Address | undefined {
|
|
94
|
-
return WETH_GATEWAY_ADDRESSES[chainId]
|
|
111
|
+
[optimismSepolia.id]: AAVE_ADDRESSES[optimismSepolia.id]!.wethGateway,
|
|
112
|
+
[baseSepolia.id]: AAVE_ADDRESSES[baseSepolia.id]!.wethGateway,
|
|
95
113
|
}
|
|
@@ -2,12 +2,14 @@ import { UiPoolDataProvider } from '@aave/contract-helpers'
|
|
|
2
2
|
import { formatReserves } from '@aave/math-utils'
|
|
3
3
|
import { providers } from 'ethers'
|
|
4
4
|
import type { Address } from 'viem'
|
|
5
|
-
import { base, baseSepolia, optimism, optimismSepolia } from 'viem/chains'
|
|
6
5
|
|
|
7
6
|
import { WETH } from '@/constants/assets.js'
|
|
8
|
-
import type {
|
|
7
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
9
8
|
import { POOL_GET_RESERVE_DATA_ABI } from '@/lend/providers/aave/abis/pool.js'
|
|
10
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
getAaveAddresses,
|
|
11
|
+
getPoolAddress,
|
|
12
|
+
} from '@/lend/providers/aave/addresses.js'
|
|
11
13
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
12
14
|
import type { LendProviderConfig } from '@/types/actions.js'
|
|
13
15
|
import type {
|
|
@@ -18,27 +20,6 @@ import type {
|
|
|
18
20
|
} from '@/types/lend/index.js'
|
|
19
21
|
import { getAssetAddress } from '@/utils/assets.js'
|
|
20
22
|
|
|
21
|
-
/**
|
|
22
|
-
* UI Pool Data Provider addresses for each chain
|
|
23
|
-
* @description Contract addresses for UiPoolDataProvider on each supported chain
|
|
24
|
-
*/
|
|
25
|
-
const UI_POOL_DATA_PROVIDER_ADDRESSES: Record<number, Address> = {
|
|
26
|
-
[optimism.id]: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654',
|
|
27
|
-
[base.id]: '0xd82a47fdebB5bf5329b09441C3DaB4b5df2153Ad',
|
|
28
|
-
[optimismSepolia.id]: '0x86E2938daE289763D4e09a7e42c5cCcA62Cf9809',
|
|
29
|
-
[baseSepolia.id]: '0xBc9f5b7E248451CdD7cA54e717a2BFe1F32b566b',
|
|
30
|
-
} as const
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Pool Addresses Provider addresses for each chain
|
|
34
|
-
*/
|
|
35
|
-
const POOL_ADDRESSES_PROVIDER: Record<number, Address> = {
|
|
36
|
-
[optimism.id]: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
|
|
37
|
-
[base.id]: '0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D',
|
|
38
|
-
[optimismSepolia.id]: '0x36616cf17557639614c1cdDb356b1B83fc0B2132',
|
|
39
|
-
[baseSepolia.id]: '0xE4C23309117Aa30342BFaae6c95c6478e0A4Ad00',
|
|
40
|
-
} as const
|
|
41
|
-
|
|
42
23
|
/**
|
|
43
24
|
* Parameters for getReserve function
|
|
44
25
|
*/
|
|
@@ -119,20 +100,14 @@ export async function getReserve(
|
|
|
119
100
|
)
|
|
120
101
|
}
|
|
121
102
|
|
|
122
|
-
const
|
|
123
|
-
if (!
|
|
103
|
+
const addresses = getAaveAddresses(params.marketId.chainId)
|
|
104
|
+
if (!addresses) {
|
|
124
105
|
throw new Error(`Aave V3 not deployed on chain ${params.marketId.chainId}`)
|
|
125
106
|
}
|
|
126
107
|
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
const poolAddressesProvider =
|
|
130
|
-
|
|
131
|
-
if (!uiPoolDataProviderAddress || !poolAddressesProvider) {
|
|
132
|
-
throw new Error(
|
|
133
|
-
`UiPoolDataProvider not configured for chain ${params.marketId.chainId}`,
|
|
134
|
-
)
|
|
135
|
-
}
|
|
108
|
+
const poolAddress = addresses.pool
|
|
109
|
+
const uiPoolDataProviderAddress = addresses.uiPoolDataProvider
|
|
110
|
+
const poolAddressesProvider = addresses.poolAddressesProvider
|
|
136
111
|
|
|
137
112
|
try {
|
|
138
113
|
// Get viem public client for this chain
|
|
@@ -264,7 +239,7 @@ export async function getReserves(
|
|
|
264
239
|
*/
|
|
265
240
|
export async function getATokenAddress(params: {
|
|
266
241
|
underlyingAsset: Address
|
|
267
|
-
chainId:
|
|
242
|
+
chainId: SupportedChainId
|
|
268
243
|
chainManager: ChainManager
|
|
269
244
|
}): Promise<Address> {
|
|
270
245
|
const poolAddress = getPoolAddress(params.chainId)
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ChainId } from '@morpho-org/blue-sdk'
|
|
2
1
|
import { MetaMorphoAction } from '@morpho-org/blue-sdk-viem'
|
|
3
2
|
import { erc20Abi, formatUnits } from 'viem'
|
|
4
3
|
|
|
5
|
-
import { SUPPORTED_CHAIN_IDS as ACTIONS_SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
|
|
6
4
|
import { LendProvider } from '@/lend/core/LendProvider.js'
|
|
5
|
+
import { getSupportedChainIds as getMorphoSupportedChainIds } from '@/lend/providers/morpho/contracts.js'
|
|
7
6
|
import { getVault, getVaults } from '@/lend/providers/morpho/sdk.js'
|
|
8
7
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
9
8
|
import type { LendProviderConfig } from '@/types/actions.js'
|
|
@@ -19,25 +18,14 @@ import type {
|
|
|
19
18
|
} from '@/types/lend/index.js'
|
|
20
19
|
import { getAssetAddress } from '@/utils/assets.js'
|
|
21
20
|
|
|
22
|
-
/**
|
|
23
|
-
* Supported chain IDs for Morpho lending
|
|
24
|
-
* @description Array of chain IDs where Morpho is available
|
|
25
|
-
*/
|
|
26
|
-
export const SUPPORTED_CHAIN_IDS = [
|
|
27
|
-
...new Set([
|
|
28
|
-
...Object.values(ChainId).filter(
|
|
29
|
-
(value): value is number => typeof value === 'number',
|
|
30
|
-
),
|
|
31
|
-
...ACTIONS_SUPPORTED_CHAIN_IDS,
|
|
32
|
-
]),
|
|
33
|
-
] as readonly number[]
|
|
34
|
-
|
|
35
21
|
/**
|
|
36
22
|
* Morpho lending provider implementation
|
|
37
23
|
* @description Lending provider implementation using Morpho protocol
|
|
38
24
|
*/
|
|
39
25
|
export class MorphoLendProvider extends LendProvider<LendProviderConfig> {
|
|
40
|
-
|
|
26
|
+
protocolSupportedChainIds(): number[] {
|
|
27
|
+
return getMorphoSupportedChainIds()
|
|
28
|
+
}
|
|
41
29
|
|
|
42
30
|
/**
|
|
43
31
|
* Create a new Morpho lending provider
|