@eth-optimism/actions-sdk 0.3.0 → 0.4.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 +8 -13
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +35 -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/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -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 +8 -8
- package/dist/services/ChainManager.d.ts.map +1 -1
- package/dist/services/ChainManager.js.map +1 -1
- package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
- package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
- 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 +218 -36
- 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 +48 -8
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -1
- package/dist/swap/namespaces/BaseSwapNamespace.js +139 -16
- package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -1
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts +19 -7
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
- package/dist/swap/namespaces/WalletSwapNamespace.js +39 -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 +9 -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 +49 -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 +419 -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 +133 -33
- package/dist/types/swap/base.d.ts.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/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/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 +5 -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 +58 -61
- package/src/constants/assets.ts +781 -10
- package/src/constants/providers.ts +5 -0
- package/src/constants/supportedChains.ts +22 -2
- package/src/index.ts +50 -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 +12 -21
- package/src/services/__mocks__/MockChainManager.ts +4 -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 +307 -49
- 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 +199 -18
- package/src/swap/namespaces/WalletSwapNamespace.ts +53 -14
- package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +241 -14
- package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +103 -8
- package/src/swap/providers/uniswap/UniswapSwapProvider.ts +108 -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 +224 -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 +506 -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 +147 -34
- 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/validateAddresses.test.ts +439 -0
- package/src/utils/validateAddresses.ts +153 -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 +15 -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
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import type { Address } from 'viem'
|
|
2
|
+
import { getAddress } from 'viem'
|
|
3
|
+
|
|
4
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
|
+
import type { AssetsConfig, LendConfig, SwapConfig } from '@/types/actions.js'
|
|
6
|
+
import type { Asset } from '@/types/asset.js'
|
|
7
|
+
import type { LendProviderConfig } from '@/types/lend/index.js'
|
|
8
|
+
import type { SwapProviderConfig } from '@/types/swap/index.js'
|
|
9
|
+
|
|
10
|
+
type NamedAddresses = Record<string, Address>
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Validates all values in an address map.
|
|
14
|
+
* Values may be a single Address or a record of named addresses.
|
|
15
|
+
* Collects all failures before throwing a single Error listing every invalid entry.
|
|
16
|
+
* @returns The original map reference if all addresses are valid.
|
|
17
|
+
* @throws Error listing all invalid addresses with their chain IDs and key names.
|
|
18
|
+
*/
|
|
19
|
+
export function validateAddressMap<
|
|
20
|
+
M extends Partial<Record<number, Address | NamedAddresses>>,
|
|
21
|
+
>(map: M): M {
|
|
22
|
+
const errors: string[] = []
|
|
23
|
+
|
|
24
|
+
for (const [chainId, value] of Object.entries(map)) {
|
|
25
|
+
if (value === undefined) continue
|
|
26
|
+
if (typeof value === 'string') {
|
|
27
|
+
try {
|
|
28
|
+
getAddress(value)
|
|
29
|
+
} catch {
|
|
30
|
+
errors.push(` - [${chainId}]: ${value} (not a valid EVM address)`)
|
|
31
|
+
}
|
|
32
|
+
} else {
|
|
33
|
+
for (const [key, addr] of Object.entries(value as NamedAddresses)) {
|
|
34
|
+
try {
|
|
35
|
+
getAddress(addr)
|
|
36
|
+
} catch {
|
|
37
|
+
errors.push(
|
|
38
|
+
` - ${key}[${chainId}]: ${addr} (not a valid EVM address)`,
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (errors.length > 0) {
|
|
46
|
+
throw new Error(`Invalid addresses found:\n${errors.join('\n')}`)
|
|
47
|
+
}
|
|
48
|
+
return map
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Validates a Partial<Record<SupportedChainId, Address | 'native'>> asset address map.
|
|
53
|
+
* Skips entries where the value is 'native'.
|
|
54
|
+
* Collects all failures before throwing a single Error.
|
|
55
|
+
* @throws Error listing all invalid addresses with their chain IDs.
|
|
56
|
+
*/
|
|
57
|
+
export function validateAssetAddresses(
|
|
58
|
+
map: Partial<Record<SupportedChainId, Address | 'native'>>,
|
|
59
|
+
): void {
|
|
60
|
+
const errors: string[] = []
|
|
61
|
+
|
|
62
|
+
for (const [chainId, value] of Object.entries(map)) {
|
|
63
|
+
if (value === undefined || value === 'native') continue
|
|
64
|
+
try {
|
|
65
|
+
getAddress(value)
|
|
66
|
+
} catch {
|
|
67
|
+
errors.push(` - [${chainId}]: ${value} (not a valid EVM address)`)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (errors.length > 0) {
|
|
72
|
+
throw new Error(`Invalid addresses found:\n${errors.join('\n')}`)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
interface AddressEntry {
|
|
77
|
+
path: string
|
|
78
|
+
value: string
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function assetAddresses(asset: Asset, path: string): AddressEntry[] {
|
|
82
|
+
return Object.entries(asset.address)
|
|
83
|
+
.filter(([, addr]) => addr !== 'native')
|
|
84
|
+
.map(([chainId, addr]) => ({
|
|
85
|
+
path: `${path}.address[${chainId}]`,
|
|
86
|
+
value: addr as string,
|
|
87
|
+
}))
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function lendProviderAddresses(
|
|
91
|
+
config: LendProviderConfig,
|
|
92
|
+
providerPath: string,
|
|
93
|
+
): AddressEntry[] {
|
|
94
|
+
return (['marketAllowlist', 'marketBlocklist'] as const).flatMap((key) =>
|
|
95
|
+
(config[key] ?? []).flatMap((m, i) => [
|
|
96
|
+
{ path: `${providerPath}.${key}[${i}].address`, value: m.address },
|
|
97
|
+
...assetAddresses(m.asset, `${providerPath}.${key}[${i}].asset`),
|
|
98
|
+
]),
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function swapProviderAddresses(
|
|
103
|
+
config: SwapProviderConfig,
|
|
104
|
+
providerPath: string,
|
|
105
|
+
): AddressEntry[] {
|
|
106
|
+
return (['marketAllowlist', 'marketBlocklist'] as const).flatMap((key) =>
|
|
107
|
+
(config[key] ?? []).flatMap((m, i) =>
|
|
108
|
+
m.assets.flatMap((asset, j) =>
|
|
109
|
+
assetAddresses(asset, `${providerPath}.${key}[${i}].assets[${j}]`),
|
|
110
|
+
),
|
|
111
|
+
),
|
|
112
|
+
)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Validates all developer-supplied addresses in an ActionsConfig.
|
|
117
|
+
* Iterates all lend and swap providers generically, so new providers are covered automatically.
|
|
118
|
+
* Collects all failures before throwing a single Error.
|
|
119
|
+
* @throws Error listing all invalid addresses with their locations and chain IDs.
|
|
120
|
+
*/
|
|
121
|
+
export function validateConfigAddresses(config: {
|
|
122
|
+
lend?: LendConfig
|
|
123
|
+
swap?: SwapConfig
|
|
124
|
+
assets?: AssetsConfig
|
|
125
|
+
}): void {
|
|
126
|
+
const addresses: AddressEntry[] = [
|
|
127
|
+
...Object.entries(config.lend ?? {}).flatMap(([name, cfg]) =>
|
|
128
|
+
lendProviderAddresses(cfg as LendProviderConfig, `lend.${name}`),
|
|
129
|
+
),
|
|
130
|
+
...Object.entries(config.swap ?? {}).flatMap(([name, cfg]) =>
|
|
131
|
+
swapProviderAddresses(cfg as SwapProviderConfig, `swap.${name}`),
|
|
132
|
+
),
|
|
133
|
+
...(config.assets?.allow ?? []).flatMap((a, i) =>
|
|
134
|
+
assetAddresses(a, `assets.allow[${i}]`),
|
|
135
|
+
),
|
|
136
|
+
...(config.assets?.block ?? []).flatMap((a, i) =>
|
|
137
|
+
assetAddresses(a, `assets.block[${i}]`),
|
|
138
|
+
),
|
|
139
|
+
]
|
|
140
|
+
|
|
141
|
+
const errors = addresses.flatMap(({ path, value }) => {
|
|
142
|
+
try {
|
|
143
|
+
getAddress(value)
|
|
144
|
+
return []
|
|
145
|
+
} catch {
|
|
146
|
+
return [` - ${path}: ${value} (not a valid EVM address)`]
|
|
147
|
+
}
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
if (errors.length > 0) {
|
|
151
|
+
throw new Error(`Invalid addresses found:\n${errors.join('\n')}`)
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -11,9 +11,21 @@ import type { WalletProvider } from '@/wallet/core/providers/WalletProvider.js'
|
|
|
11
11
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
12
12
|
import type { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWallet.js'
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Provider factory function for lazy initialization
|
|
16
|
+
*/
|
|
17
|
+
type WalletProviderFactory<
|
|
18
|
+
THostedProviderType extends string,
|
|
19
|
+
TToActionsMap extends Record<THostedProviderType, unknown>,
|
|
20
|
+
H extends HostedWalletProvider<THostedProviderType, TToActionsMap>,
|
|
21
|
+
S extends SmartWalletProvider,
|
|
22
|
+
> = () => Promise<WalletProvider<THostedProviderType, TToActionsMap, H, S>>
|
|
23
|
+
|
|
14
24
|
/**
|
|
15
25
|
* Wallet namespace that provides unified wallet operations
|
|
16
|
-
* @description Provides access to wallet functionality through a single provider interface
|
|
26
|
+
* @description Provides access to wallet functionality through a single provider interface.
|
|
27
|
+
* Supports lazy initialization — the wallet provider is created on first method call,
|
|
28
|
+
* enabling tree-shaking of unused wallet provider dependencies.
|
|
17
29
|
*/
|
|
18
30
|
export class WalletNamespace<
|
|
19
31
|
THostedProviderType extends string,
|
|
@@ -22,32 +34,70 @@ export class WalletNamespace<
|
|
|
22
34
|
HostedWalletProvider<THostedProviderType, TToActionsMap>,
|
|
23
35
|
S extends SmartWalletProvider = SmartWalletProvider,
|
|
24
36
|
> {
|
|
25
|
-
private
|
|
37
|
+
private _provider: WalletProvider<
|
|
38
|
+
THostedProviderType,
|
|
39
|
+
TToActionsMap,
|
|
40
|
+
H,
|
|
41
|
+
S
|
|
42
|
+
> | null = null
|
|
43
|
+
private _providerFactory: WalletProviderFactory<
|
|
44
|
+
THostedProviderType,
|
|
45
|
+
TToActionsMap,
|
|
46
|
+
H,
|
|
47
|
+
S
|
|
48
|
+
>
|
|
49
|
+
private _initPromise: Promise<
|
|
50
|
+
WalletProvider<THostedProviderType, TToActionsMap, H, S>
|
|
51
|
+
> | null = null
|
|
26
52
|
|
|
27
53
|
constructor(
|
|
28
|
-
|
|
54
|
+
providerOrFactory:
|
|
55
|
+
| WalletProvider<THostedProviderType, TToActionsMap, H, S>
|
|
56
|
+
| WalletProviderFactory<THostedProviderType, TToActionsMap, H, S>,
|
|
29
57
|
) {
|
|
30
|
-
|
|
58
|
+
if (typeof providerOrFactory === 'function') {
|
|
59
|
+
this._providerFactory = providerOrFactory
|
|
60
|
+
} else {
|
|
61
|
+
this._provider = providerOrFactory
|
|
62
|
+
this._providerFactory = () => Promise.resolve(providerOrFactory)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private resolveProvider(): Promise<
|
|
67
|
+
WalletProvider<THostedProviderType, TToActionsMap, H, S>
|
|
68
|
+
> {
|
|
69
|
+
if (this._provider) return Promise.resolve(this._provider)
|
|
70
|
+
if (!this._initPromise) {
|
|
71
|
+
this._initPromise = this._providerFactory().then((provider) => {
|
|
72
|
+
this._provider = provider
|
|
73
|
+
return provider
|
|
74
|
+
})
|
|
75
|
+
}
|
|
76
|
+
return this._initPromise
|
|
31
77
|
}
|
|
32
78
|
|
|
33
79
|
/**
|
|
34
80
|
* Get direct access to the hosted wallet provider
|
|
35
81
|
* @description Provides direct access to the underlying hosted wallet provider when
|
|
36
|
-
* advanced functionality beyond the unified interface is needed
|
|
37
|
-
*
|
|
82
|
+
* advanced functionality beyond the unified interface is needed.
|
|
83
|
+
* Lazily initializes the provider if not yet created.
|
|
84
|
+
* @returns Promise resolving to the configured hosted wallet provider instance
|
|
38
85
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
86
|
+
async hostedWalletProvider(): Promise<H> {
|
|
87
|
+
const provider = await this.resolveProvider()
|
|
88
|
+
return provider.hostedWalletProvider
|
|
41
89
|
}
|
|
42
90
|
|
|
43
91
|
/**
|
|
44
92
|
* Get direct access to the smart wallet provider
|
|
45
93
|
* @description Provides direct access to the underlying smart wallet provider when
|
|
46
|
-
* advanced functionality beyond the unified interface is needed
|
|
47
|
-
*
|
|
94
|
+
* advanced functionality beyond the unified interface is needed.
|
|
95
|
+
* Lazily initializes the provider if not yet created.
|
|
96
|
+
* @returns Promise resolving to the configured smart wallet provider instance
|
|
48
97
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
98
|
+
async smartWalletProvider(): Promise<S> {
|
|
99
|
+
const provider = await this.resolveProvider()
|
|
100
|
+
return provider.smartWalletProvider
|
|
51
101
|
}
|
|
52
102
|
|
|
53
103
|
/**
|
|
@@ -70,7 +120,8 @@ export class WalletNamespace<
|
|
|
70
120
|
async createSmartWallet(
|
|
71
121
|
params: CreateSmartWalletOptions,
|
|
72
122
|
): Promise<SmartWalletCreationResult<SmartWallet>> {
|
|
73
|
-
|
|
123
|
+
const provider = await this.resolveProvider()
|
|
124
|
+
return provider.createSmartWallet(params)
|
|
74
125
|
}
|
|
75
126
|
|
|
76
127
|
/**
|
|
@@ -85,7 +136,8 @@ export class WalletNamespace<
|
|
|
85
136
|
async createSigner(
|
|
86
137
|
params: TToActionsMap[THostedProviderType],
|
|
87
138
|
): Promise<LocalAccount> {
|
|
88
|
-
|
|
139
|
+
const provider = await this.resolveProvider()
|
|
140
|
+
return provider.createSigner(params)
|
|
89
141
|
}
|
|
90
142
|
|
|
91
143
|
/**
|
|
@@ -99,7 +151,8 @@ export class WalletNamespace<
|
|
|
99
151
|
async toActionsWallet(
|
|
100
152
|
params: TToActionsMap[THostedProviderType],
|
|
101
153
|
): Promise<Wallet> {
|
|
102
|
-
|
|
154
|
+
const provider = await this.resolveProvider()
|
|
155
|
+
return provider.hostedWalletToActionsWallet(params)
|
|
103
156
|
}
|
|
104
157
|
|
|
105
158
|
/**
|
|
@@ -118,6 +171,7 @@ export class WalletNamespace<
|
|
|
118
171
|
* @throws Error if neither walletAddress nor deploymentSigners provided
|
|
119
172
|
*/
|
|
120
173
|
async getSmartWallet(params: GetSmartWalletOptions) {
|
|
121
|
-
|
|
174
|
+
const provider = await this.resolveProvider()
|
|
175
|
+
return provider.getSmartWallet(params)
|
|
122
176
|
}
|
|
123
177
|
}
|
|
@@ -38,7 +38,7 @@ describe('WalletNamespace', () => {
|
|
|
38
38
|
})
|
|
39
39
|
|
|
40
40
|
describe('hostedWalletProvider', () => {
|
|
41
|
-
it('should provide access to hosted wallet provider', () => {
|
|
41
|
+
it('should provide access to hosted wallet provider', async () => {
|
|
42
42
|
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
43
43
|
privyClient: mockPrivyClient,
|
|
44
44
|
chainManager: mockChainManager,
|
|
@@ -54,12 +54,14 @@ describe('WalletNamespace', () => {
|
|
|
54
54
|
)
|
|
55
55
|
const walletNamespace = new WalletNamespace(walletProvider)
|
|
56
56
|
|
|
57
|
-
expect(walletNamespace.hostedWalletProvider).toBe(
|
|
57
|
+
expect(await walletNamespace.hostedWalletProvider()).toBe(
|
|
58
|
+
hostedWalletProvider,
|
|
59
|
+
)
|
|
58
60
|
})
|
|
59
61
|
})
|
|
60
62
|
|
|
61
63
|
describe('smartWalletProvider', () => {
|
|
62
|
-
it('should provide access to smart wallet provider', () => {
|
|
64
|
+
it('should provide access to smart wallet provider', async () => {
|
|
63
65
|
const mockPrivyClient = createMockPrivyClient(
|
|
64
66
|
'test-app-id',
|
|
65
67
|
'test-app-secret',
|
|
@@ -79,7 +81,9 @@ describe('WalletNamespace', () => {
|
|
|
79
81
|
)
|
|
80
82
|
const walletNamespace = new WalletNamespace(walletProvider)
|
|
81
83
|
|
|
82
|
-
expect(walletNamespace.smartWalletProvider).toBe(
|
|
84
|
+
expect(await walletNamespace.smartWalletProvider()).toBe(
|
|
85
|
+
smartWalletProvider,
|
|
86
|
+
)
|
|
83
87
|
})
|
|
84
88
|
})
|
|
85
89
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import type { LocalAccount } from 'viem'
|
|
2
2
|
|
|
3
|
-
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
4
3
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
5
|
-
import type { SwapProvider } from '@/swap/core/SwapProvider.js'
|
|
6
|
-
import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
|
|
7
4
|
import type { Asset } from '@/types/asset.js'
|
|
5
|
+
import type { LendProviders, SwapProviders } from '@/types/providers.js'
|
|
8
6
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
9
7
|
|
|
10
8
|
/**
|
|
@@ -18,24 +16,14 @@ export abstract class HostedWalletProvider<
|
|
|
18
16
|
TOptionsMap extends Record<TType, unknown>,
|
|
19
17
|
> {
|
|
20
18
|
protected chainManager: ChainManager
|
|
21
|
-
protected lendProviders:
|
|
22
|
-
|
|
23
|
-
aave?: LendProvider<LendProviderConfig>
|
|
24
|
-
}
|
|
25
|
-
protected swapProviders: {
|
|
26
|
-
uniswap?: SwapProvider<SwapProviderConfig>
|
|
27
|
-
}
|
|
19
|
+
protected lendProviders: LendProviders
|
|
20
|
+
protected swapProviders: SwapProviders
|
|
28
21
|
protected supportedAssets?: Asset[]
|
|
29
22
|
|
|
30
23
|
protected constructor(
|
|
31
24
|
chainManager: ChainManager,
|
|
32
|
-
lendProviders?:
|
|
33
|
-
|
|
34
|
-
aave?: LendProvider<LendProviderConfig>
|
|
35
|
-
},
|
|
36
|
-
swapProviders?: {
|
|
37
|
-
uniswap?: SwapProvider<SwapProviderConfig>
|
|
38
|
-
},
|
|
25
|
+
lendProviders?: LendProviders,
|
|
26
|
+
swapProviders?: SwapProviders,
|
|
39
27
|
supportedAssets?: Asset[],
|
|
40
28
|
) {
|
|
41
29
|
this.chainManager = chainManager
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
2
1
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
3
|
-
import type {
|
|
4
|
-
import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
|
|
2
|
+
import type { SwapSettings } from '@/types/actions.js'
|
|
5
3
|
import type { Asset } from '@/types/asset.js'
|
|
4
|
+
import type { LendProviders, SwapProviders } from '@/types/providers.js'
|
|
6
5
|
import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
7
6
|
|
|
8
7
|
/**
|
|
@@ -13,14 +12,10 @@ import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstra
|
|
|
13
12
|
*/
|
|
14
13
|
export interface HostedProviderDeps {
|
|
15
14
|
chainManager: ChainManager
|
|
16
|
-
lendProviders?:
|
|
17
|
-
|
|
18
|
-
aave?: LendProvider<LendProviderConfig>
|
|
19
|
-
}
|
|
20
|
-
swapProviders?: {
|
|
21
|
-
uniswap?: SwapProvider<SwapProviderConfig>
|
|
22
|
-
}
|
|
15
|
+
lendProviders?: LendProviders
|
|
16
|
+
swapProviders?: SwapProviders
|
|
23
17
|
supportedAssets?: Asset[]
|
|
18
|
+
swapSettings?: SwapSettings
|
|
24
19
|
}
|
|
25
20
|
|
|
26
21
|
/**
|
|
@@ -56,7 +51,10 @@ export interface HostedProviderFactory<
|
|
|
56
51
|
> {
|
|
57
52
|
type: TType
|
|
58
53
|
validateOptions(options: unknown): options is TOptions
|
|
59
|
-
create(
|
|
54
|
+
create(
|
|
55
|
+
deps: HostedProviderDeps,
|
|
56
|
+
options: TOptions,
|
|
57
|
+
): TInstance | Promise<TInstance>
|
|
60
58
|
}
|
|
61
59
|
|
|
62
60
|
/**
|
|
@@ -2,11 +2,9 @@ import type { Address, Hex, LocalAccount } from 'viem'
|
|
|
2
2
|
import { keccak256, slice, toHex } from 'viem'
|
|
3
3
|
|
|
4
4
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
|
-
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
6
5
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
-
import type { SwapProvider } from '@/swap/core/SwapProvider.js'
|
|
8
|
-
import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
|
|
9
6
|
import type { Asset } from '@/types/asset.js'
|
|
7
|
+
import type { LendProviders, SwapProviders } from '@/types/providers.js'
|
|
10
8
|
import { SmartWalletProvider } from '@/wallet/core/providers/smart/abstract/SmartWalletProvider.js'
|
|
11
9
|
import type { SmartWalletCreationResult } from '@/wallet/core/providers/smart/abstract/types/index.js'
|
|
12
10
|
import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
|
|
@@ -28,14 +26,9 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
|
|
|
28
26
|
/** Manages supported blockchain networks */
|
|
29
27
|
private chainManager: ChainManager
|
|
30
28
|
/** Providers for lending market operations */
|
|
31
|
-
private lendProviders:
|
|
32
|
-
morpho?: LendProvider<LendProviderConfig>
|
|
33
|
-
aave?: LendProvider<LendProviderConfig>
|
|
34
|
-
}
|
|
29
|
+
private lendProviders: LendProviders
|
|
35
30
|
/** Providers for swap operations */
|
|
36
|
-
private swapProviders:
|
|
37
|
-
uniswap?: SwapProvider<SwapProviderConfig>
|
|
38
|
-
}
|
|
31
|
+
private swapProviders: SwapProviders
|
|
39
32
|
/** Supported assets for this wallet provider */
|
|
40
33
|
private supportedAssets?: Asset[]
|
|
41
34
|
/** Optional 16-byte attribution suffix appended to callData */
|
|
@@ -51,13 +44,8 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
|
|
|
51
44
|
*/
|
|
52
45
|
constructor(
|
|
53
46
|
chainManager: ChainManager,
|
|
54
|
-
lendProviders?:
|
|
55
|
-
|
|
56
|
-
aave?: LendProvider<LendProviderConfig>
|
|
57
|
-
},
|
|
58
|
-
swapProviders?: {
|
|
59
|
-
uniswap?: SwapProvider<SwapProviderConfig>
|
|
60
|
-
},
|
|
47
|
+
lendProviders?: LendProviders,
|
|
48
|
+
swapProviders?: SwapProviders,
|
|
61
49
|
supportedAssets?: Asset[],
|
|
62
50
|
attributionSuffix?: string,
|
|
63
51
|
) {
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import type { Address, LocalAccount } from 'viem'
|
|
2
2
|
|
|
3
3
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
-
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
5
4
|
import { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
|
|
6
5
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
6
|
import { fetchERC20Balance, fetchETHBalance } from '@/services/tokenBalance.js'
|
|
8
|
-
import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
|
|
9
|
-
import type { SwapProvider } from '@/swap/core/SwapProvider.js'
|
|
10
7
|
import { WalletSwapNamespace } from '@/swap/namespaces/WalletSwapNamespace.js'
|
|
11
|
-
import type {
|
|
8
|
+
import type { SwapSettings } from '@/types/actions.js'
|
|
12
9
|
import type { Asset, TokenBalance } from '@/types/asset.js'
|
|
10
|
+
import type { LendProviders, SwapProviders } from '@/types/providers.js'
|
|
13
11
|
import type { TransactionData } from '@/types/transaction.js'
|
|
14
12
|
import type {
|
|
15
13
|
BatchTransactionReturnType,
|
|
@@ -25,16 +23,11 @@ export abstract class Wallet {
|
|
|
25
23
|
/** Lend namespace with all lending operations */
|
|
26
24
|
lend?: WalletLendNamespace
|
|
27
25
|
/** Providers for lending market operations */
|
|
28
|
-
protected lendProviders:
|
|
29
|
-
morpho?: LendProvider<LendProviderConfig>
|
|
30
|
-
aave?: LendProvider<LendProviderConfig>
|
|
31
|
-
}
|
|
26
|
+
protected lendProviders: LendProviders
|
|
32
27
|
/** Swap namespace with all swap operations */
|
|
33
28
|
swap?: WalletSwapNamespace
|
|
34
29
|
/** Providers for swap operations */
|
|
35
|
-
protected swapProviders:
|
|
36
|
-
uniswap?: SwapProvider<SwapProviderConfig>
|
|
37
|
-
}
|
|
30
|
+
protected swapProviders: SwapProviders
|
|
38
31
|
/** Manages supported blockchain networks and RPC clients */
|
|
39
32
|
protected chainManager: ChainManager
|
|
40
33
|
/** List of supported assets for this wallet */
|
|
@@ -62,28 +55,28 @@ export abstract class Wallet {
|
|
|
62
55
|
* @param chainManager - Chain manager for the wallet
|
|
63
56
|
* @param lendProviders - Lend providers for the wallet
|
|
64
57
|
* @param swapProviders - Swap providers for the wallet
|
|
65
|
-
* @param supportedAssets - List of supported assets (defaults to
|
|
58
|
+
* @param supportedAssets - List of supported assets (defaults to empty)
|
|
66
59
|
*/
|
|
67
60
|
protected constructor(
|
|
68
61
|
chainManager: ChainManager,
|
|
69
|
-
lendProviders?:
|
|
70
|
-
|
|
71
|
-
aave?: LendProvider<LendProviderConfig>
|
|
72
|
-
},
|
|
73
|
-
swapProviders?: {
|
|
74
|
-
uniswap?: SwapProvider<SwapProviderConfig>
|
|
75
|
-
},
|
|
62
|
+
lendProviders?: LendProviders,
|
|
63
|
+
swapProviders?: SwapProviders,
|
|
76
64
|
supportedAssets?: Asset[],
|
|
65
|
+
swapSettings?: SwapSettings,
|
|
77
66
|
) {
|
|
78
67
|
this.chainManager = chainManager
|
|
79
68
|
this.lendProviders = lendProviders || {}
|
|
80
69
|
this.swapProviders = swapProviders || {}
|
|
81
|
-
this.supportedAssets = supportedAssets ||
|
|
70
|
+
this.supportedAssets = supportedAssets || []
|
|
82
71
|
if (this.lendProviders.morpho || this.lendProviders.aave) {
|
|
83
72
|
this.lend = new WalletLendNamespace(this.lendProviders, this)
|
|
84
73
|
}
|
|
85
|
-
if (this.swapProviders.
|
|
86
|
-
this.swap = new WalletSwapNamespace(
|
|
74
|
+
if (Object.values(this.swapProviders).some(Boolean)) {
|
|
75
|
+
this.swap = new WalletSwapNamespace(
|
|
76
|
+
this.swapProviders,
|
|
77
|
+
this,
|
|
78
|
+
swapSettings,
|
|
79
|
+
)
|
|
87
80
|
}
|
|
88
81
|
}
|
|
89
82
|
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { Address, LocalAccount, WalletClient } from 'viem'
|
|
2
2
|
|
|
3
3
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
4
5
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
|
+
import type { SwapProvider } from '@/swap/core/SwapProvider.js'
|
|
7
|
+
import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
|
|
8
|
+
import type { Asset } from '@/types/asset.js'
|
|
5
9
|
import type { TransactionData } from '@/types/lend/index.js'
|
|
6
10
|
import type { EOATransactionReceipt } from '@/wallet/core/wallets/abstract/types/index.js'
|
|
7
11
|
import { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
@@ -14,8 +18,16 @@ export class TestWallet extends Wallet {
|
|
|
14
18
|
chainManager: ChainManager,
|
|
15
19
|
address: Address,
|
|
16
20
|
signer: LocalAccount,
|
|
21
|
+
lendProviders?: {
|
|
22
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
23
|
+
aave?: LendProvider<LendProviderConfig>
|
|
24
|
+
},
|
|
25
|
+
swapProviders?: {
|
|
26
|
+
uniswap?: SwapProvider<SwapProviderConfig>
|
|
27
|
+
},
|
|
28
|
+
supportedAssets?: Asset[],
|
|
17
29
|
) {
|
|
18
|
-
super(chainManager)
|
|
30
|
+
super(chainManager, lendProviders, swapProviders, supportedAssets)
|
|
19
31
|
this.address = address
|
|
20
32
|
this.signer = signer
|
|
21
33
|
}
|
|
@@ -3,11 +3,11 @@ import { unichain } from 'viem/chains'
|
|
|
3
3
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
4
4
|
|
|
5
5
|
import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
6
|
+
import { ETH, USDC } from '@/constants/assets.js'
|
|
6
7
|
import type { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
|
|
7
8
|
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
8
9
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
9
10
|
import { fetchERC20Balance, fetchETHBalance } from '@/services/tokenBalance.js'
|
|
10
|
-
import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
|
|
11
11
|
import { TestWallet } from '@/wallet/core/wallets/abstract/__mocks__/TestWallet.js'
|
|
12
12
|
|
|
13
13
|
vi.mock('@/services/tokenBalance.js', async () => {
|
|
@@ -29,7 +29,7 @@ describe('Wallet (base)', () => {
|
|
|
29
29
|
vi.clearAllMocks()
|
|
30
30
|
})
|
|
31
31
|
|
|
32
|
-
it('getBalance
|
|
32
|
+
it('getBalance returns only ETH when no supportedAssets configured', async () => {
|
|
33
33
|
const wallet = new TestWallet(chainManager, address, signer)
|
|
34
34
|
|
|
35
35
|
const result = await wallet.getBalance()
|
|
@@ -37,10 +37,26 @@ describe('Wallet (base)', () => {
|
|
|
37
37
|
expect(result).toBeTruthy()
|
|
38
38
|
expect(fetchETHBalance).toHaveBeenCalledTimes(1)
|
|
39
39
|
expect(fetchETHBalance).toHaveBeenCalledWith(chainManager, address)
|
|
40
|
-
//
|
|
41
|
-
expect(fetchERC20Balance).toHaveBeenCalledTimes(
|
|
42
|
-
|
|
40
|
+
// No supportedAssets configured, so no ERC20 balance fetches
|
|
41
|
+
expect(fetchERC20Balance).toHaveBeenCalledTimes(0)
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
it('getBalance fetches ERC20 balances for explicitly configured assets', async () => {
|
|
45
|
+
const wallet = new TestWallet(
|
|
46
|
+
chainManager,
|
|
47
|
+
address,
|
|
48
|
+
signer,
|
|
49
|
+
undefined,
|
|
50
|
+
undefined,
|
|
51
|
+
[ETH, USDC],
|
|
43
52
|
)
|
|
53
|
+
|
|
54
|
+
const result = await wallet.getBalance()
|
|
55
|
+
|
|
56
|
+
expect(result).toBeTruthy()
|
|
57
|
+
expect(fetchETHBalance).toHaveBeenCalledTimes(1)
|
|
58
|
+
// Should call fetchERC20Balance for each configured asset
|
|
59
|
+
expect(fetchERC20Balance).toHaveBeenCalledTimes(2)
|
|
44
60
|
})
|
|
45
61
|
|
|
46
62
|
it('getBalance propagates errors from underlying fetchers', async () => {
|
|
@@ -13,11 +13,9 @@ import { toCoinbaseSmartAccount } from 'viem/account-abstraction'
|
|
|
13
13
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
14
14
|
import { TransactionConfirmedButRevertedError } from '@/core/error/errors.js'
|
|
15
15
|
import { retryOnStaleRead } from '@/core/utils/retryOnStaleRead.js'
|
|
16
|
-
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
17
16
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
18
|
-
import type { SwapProvider } from '@/swap/core/SwapProvider.js'
|
|
19
|
-
import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
|
|
20
17
|
import type { Asset } from '@/types/asset.js'
|
|
18
|
+
import type { LendProviders, SwapProviders } from '@/types/providers.js'
|
|
21
19
|
import type { TransactionData } from '@/types/transaction.js'
|
|
22
20
|
import { parseAssetAmount } from '@/utils/assets.js'
|
|
23
21
|
import { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWallet.js'
|
|
@@ -69,13 +67,8 @@ export class DefaultSmartWallet extends SmartWallet {
|
|
|
69
67
|
signers: Signer[],
|
|
70
68
|
signer: LocalAccount,
|
|
71
69
|
chainManager: ChainManager,
|
|
72
|
-
lendProviders?:
|
|
73
|
-
|
|
74
|
-
aave?: LendProvider<LendProviderConfig>
|
|
75
|
-
},
|
|
76
|
-
swapProviders?: {
|
|
77
|
-
uniswap?: SwapProvider<SwapProviderConfig>
|
|
78
|
-
},
|
|
70
|
+
lendProviders?: LendProviders,
|
|
71
|
+
swapProviders?: SwapProviders,
|
|
79
72
|
supportedAssets?: Asset[],
|
|
80
73
|
deploymentAddress?: Address,
|
|
81
74
|
nonce?: bigint,
|
|
@@ -122,13 +115,8 @@ export class DefaultSmartWallet extends SmartWallet {
|
|
|
122
115
|
signer: LocalAccount
|
|
123
116
|
chainManager: ChainManager
|
|
124
117
|
signers?: Signer[]
|
|
125
|
-
lendProviders?:
|
|
126
|
-
|
|
127
|
-
aave?: LendProvider<LendProviderConfig>
|
|
128
|
-
}
|
|
129
|
-
swapProviders?: {
|
|
130
|
-
uniswap?: SwapProvider<SwapProviderConfig>
|
|
131
|
-
}
|
|
118
|
+
lendProviders?: LendProviders
|
|
119
|
+
swapProviders?: SwapProviders
|
|
132
120
|
supportedAssets?: Asset[]
|
|
133
121
|
deploymentAddress?: Address
|
|
134
122
|
nonce?: bigint
|
|
@@ -12,7 +12,6 @@ import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
|
12
12
|
import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
|
|
13
13
|
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
14
14
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
15
|
-
import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
|
|
16
15
|
import type { LendProviderConfig } from '@/types/actions.js'
|
|
17
16
|
import type { LendProvider, TransactionData } from '@/types/lend/index.js'
|
|
18
17
|
import {
|