@eth-optimism/actions-sdk 0.2.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 -4
- package/dist/__mocks__/MockAssets.js.map +1 -1
- package/dist/__tests__/actions.test.js +1 -5
- package/dist/__tests__/actions.test.js.map +1 -1
- package/dist/actions.d.ts +23 -9
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +68 -36
- package/dist/actions.js.map +1 -1
- package/dist/constants/assets.d.ts +217 -2
- package/dist/constants/assets.d.ts.map +1 -1
- package/dist/constants/assets.js +744 -6
- package/dist/constants/assets.js.map +1 -1
- package/dist/constants/contracts.d.ts +4 -0
- package/dist/constants/contracts.d.ts.map +1 -0
- package/dist/constants/contracts.js +3 -0
- package/dist/constants/contracts.js.map +1 -0
- 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 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- 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 -14
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js +16 -31
- package/dist/lend/core/LendProvider.js.map +1 -1
- package/dist/lend/core/__tests__/LendProvider.test.js +2 -4
- package/dist/lend/core/__tests__/LendProvider.test.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 -41
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
- package/dist/lend/providers/morpho/api.d.ts +3 -3
- 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 -54
- 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 +50 -0
- package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
- package/dist/swap/__mocks__/MockSwapProvider.js +161 -0
- package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
- package/dist/swap/core/SwapProvider.d.ts +145 -0
- package/dist/swap/core/SwapProvider.d.ts.map +1 -0
- package/dist/swap/core/SwapProvider.js +359 -0
- package/dist/swap/core/SwapProvider.js.map +1 -0
- package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
- package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
- package/dist/swap/core/__tests__/SwapProvider.test.js +435 -0
- package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
- 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 +9 -0
- package/dist/swap/index.d.ts.map +1 -0
- package/dist/swap/index.js +9 -0
- package/dist/swap/index.js.map +1 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts +73 -0
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/BaseSwapNamespace.js +181 -0
- package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts +34 -0
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/WalletSwapNamespace.js +84 -0
- package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +245 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +209 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +35 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js +148 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +258 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
- package/dist/swap/providers/uniswap/abis.d.ts +227 -0
- package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/abis.js +138 -0
- package/dist/swap/providers/uniswap/abis.js.map +1 -0
- package/dist/swap/providers/uniswap/addresses.d.ts +26 -0
- package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/addresses.js +81 -0
- package/dist/swap/providers/uniswap/addresses.js.map +1 -0
- package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
- package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/encoding.js +233 -0
- package/dist/swap/providers/uniswap/encoding.js.map +1 -0
- 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 +21 -0
- package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/types.js +2 -0
- package/dist/swap/providers/uniswap/types.js.map +1 -0
- 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 +60 -11
- 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/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/lend/base.d.ts +9 -19
- 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 +338 -0
- package/dist/types/swap/base.d.ts.map +1 -0
- package/dist/types/swap/base.js +4 -0
- package/dist/types/swap/base.js.map +1 -0
- package/dist/types/swap/index.d.ts +2 -0
- package/dist/types/swap/index.d.ts.map +1 -0
- package/dist/types/swap/index.js +2 -0
- package/dist/types/swap/index.js.map +1 -0
- package/dist/types/transaction.d.ts +14 -0
- package/dist/types/transaction.d.ts.map +1 -0
- package/dist/types/transaction.js +2 -0
- package/dist/types/transaction.js.map +1 -0
- package/dist/utils/approve.d.ts +82 -0
- package/dist/utils/approve.d.ts.map +1 -0
- package/dist/utils/approve.js +134 -0
- 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/approve.test.js +203 -0
- package/dist/utils/approve.test.js.map +1 -0
- package/dist/utils/assets.d.ts +10 -5
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +14 -11
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/assets.test.js +13 -1
- package/dist/utils/assets.test.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/utils/validation.d.ts +12 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +44 -0
- package/dist/utils/validation.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 -10
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -7
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +5 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +2 -2
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +12 -12
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +9 -4
- 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 +5 -7
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
- 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 +4 -6
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -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 +8 -9
- 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 +3 -6
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +4 -6
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -6
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -6
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +7 -2
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +5 -6
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +6 -2
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -0
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -8
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -4
- 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 +7 -6
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -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 -6
- 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 -6
- 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 +4 -3
- package/src/__mocks__/MockAssets.ts +54 -4
- package/src/__tests__/actions.test.ts +1 -5
- package/src/actions.ts +106 -71
- package/src/constants/assets.ts +792 -5
- package/src/constants/contracts.ts +5 -0
- package/src/constants/providers.ts +5 -0
- package/src/constants/supportedChains.ts +22 -2
- package/src/index.ts +76 -6
- package/src/lend/__mocks__/MockLendProvider.ts +8 -3
- package/src/lend/core/LendProvider.ts +28 -41
- package/src/lend/core/__tests__/LendProvider.test.ts +2 -5
- 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 -42
- package/src/lend/providers/morpho/api.ts +7 -4
- package/src/lend/providers/morpho/contracts.ts +62 -13
- package/src/lend/providers/morpho/sdk.ts +85 -54
- 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 +251 -0
- package/src/swap/core/SwapProvider.ts +577 -0
- package/src/swap/core/__tests__/SwapProvider.test.ts +620 -0
- package/src/swap/core/markets.ts +104 -0
- package/src/swap/index.ts +19 -0
- package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
- package/src/swap/namespaces/BaseSwapNamespace.ts +258 -0
- package/src/swap/namespaces/WalletSwapNamespace.ts +121 -0
- package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +365 -0
- package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +257 -0
- package/src/swap/providers/uniswap/UniswapSwapProvider.ts +217 -0
- package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
- package/src/swap/providers/uniswap/__tests__/sdk.test.ts +369 -0
- package/src/swap/providers/uniswap/abis.ts +144 -0
- package/src/swap/providers/uniswap/addresses.ts +110 -0
- package/src/swap/providers/uniswap/encoding.ts +406 -0
- package/src/swap/providers/uniswap/markets.ts +84 -0
- package/src/swap/providers/uniswap/types.ts +25 -0
- 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 +68 -12
- package/src/types/asset.ts +12 -9
- package/src/types/chain.ts +2 -2
- package/src/types/index.ts +2 -0
- package/src/types/lend/base.ts +10 -20
- package/src/types/lend/contracts.ts +5 -1
- package/src/types/providers.ts +22 -0
- package/src/types/swap/base.ts +372 -0
- package/src/types/swap/index.ts +1 -0
- package/src/types/transaction.ts +14 -0
- package/src/utils/approve.test.ts +258 -0
- package/src/utils/approve.ts +197 -0
- package/src/utils/assets.test.ts +16 -1
- package/src/utils/assets.ts +27 -10
- package/src/utils/validateAddresses.test.ts +439 -0
- package/src/utils/validateAddresses.ts +153 -0
- package/src/utils/validation.ts +76 -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 +6 -10
- package/src/wallet/core/providers/hosted/types/index.ts +9 -7
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +10 -10
- package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +2 -0
- package/src/wallet/core/wallets/abstract/Wallet.ts +23 -14
- 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 +11 -14
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +11 -7
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +16 -8
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +6 -7
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +8 -11
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +7 -11
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +11 -7
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -0
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +10 -7
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -0
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +10 -9
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +38 -13
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +13 -11
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +11 -11
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +11 -11
- package/dist/supported/tokens.d.ts +0 -25
- package/dist/supported/tokens.d.ts.map +0 -1
- package/dist/supported/tokens.js +0 -37
- package/dist/supported/tokens.js.map +0 -1
- package/src/supported/tokens.ts +0 -52
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { unichain } from 'viem/chains';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import { createMockPrivyClient, getMockAuthorizationContext, } from '../__mocks__/MockPrivyClient.js';
|
|
4
|
+
import { Actions } from '../actions.js';
|
|
5
|
+
import { NATIVELY_SUPPORTED_ASSETS, OP_DEMO, USDC_DEMO, } from '../constants/assets.js';
|
|
6
|
+
import { POOL_ADDRESSES_MAINNET, POOL_ADDRESSES_TESTNET, WETH_GATEWAY_ADDRESSES_MAINNET, WETH_GATEWAY_ADDRESSES_TESTNET, } from '../lend/providers/aave/addresses.js';
|
|
7
|
+
import { MORPHO_CONTRACTS } from '../lend/providers/morpho/contracts.js';
|
|
8
|
+
import { UNISWAP_ADDRESSES } from '../swap/providers/uniswap/addresses.js';
|
|
9
|
+
import { VELODROME_CHAINS } from '../swap/providers/velodrome/addresses.js';
|
|
10
|
+
import { validateAddressMap, validateAssetAddresses, validateConfigAddresses, } from './validateAddresses.js';
|
|
11
|
+
import { HostedWalletProviderRegistry } from '../wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js';
|
|
12
|
+
import { PrivyHostedWalletProvider } from '../wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js';
|
|
13
|
+
const VALID_ADDRESS = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
|
|
14
|
+
const VALID_ADDRESS_2 = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
|
|
15
|
+
const INVALID_ADDRESS = '0xabc';
|
|
16
|
+
const INVALID_ADDRESS_2 = '0xdeadbeef';
|
|
17
|
+
describe('validateAddressMap', () => {
|
|
18
|
+
it('throws when any address in the map is malformed, listing the bad address, key name, and chain ID', () => {
|
|
19
|
+
const map = {
|
|
20
|
+
10: { poolAddress: INVALID_ADDRESS },
|
|
21
|
+
};
|
|
22
|
+
expect(() => validateAddressMap(map)).toThrow(/poolAddress\[10\]/);
|
|
23
|
+
expect(() => validateAddressMap(map)).toThrow(INVALID_ADDRESS);
|
|
24
|
+
});
|
|
25
|
+
it('collects multiple failures and throws once with all of them listed', () => {
|
|
26
|
+
const map = {
|
|
27
|
+
10: { poolAddress: INVALID_ADDRESS },
|
|
28
|
+
8453: { rewardAddress: INVALID_ADDRESS_2 },
|
|
29
|
+
};
|
|
30
|
+
let err;
|
|
31
|
+
try {
|
|
32
|
+
validateAddressMap(map);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
err = e;
|
|
36
|
+
}
|
|
37
|
+
expect(err).toBeDefined();
|
|
38
|
+
expect(err.message).toMatch(/poolAddress\[10\]/);
|
|
39
|
+
expect(err.message).toMatch(/rewardAddress\[8453\]/);
|
|
40
|
+
});
|
|
41
|
+
it('passes for valid checksummed addresses', () => {
|
|
42
|
+
const map = {
|
|
43
|
+
10: { poolAddress: VALID_ADDRESS },
|
|
44
|
+
8453: { rewardAddress: VALID_ADDRESS_2 },
|
|
45
|
+
};
|
|
46
|
+
expect(() => validateAddressMap(map)).not.toThrow();
|
|
47
|
+
});
|
|
48
|
+
it('passes for valid lowercase (non-checksummed) addresses', () => {
|
|
49
|
+
const map = {
|
|
50
|
+
10: { poolAddress: VALID_ADDRESS.toLowerCase() },
|
|
51
|
+
};
|
|
52
|
+
expect(() => validateAddressMap(map)).not.toThrow();
|
|
53
|
+
});
|
|
54
|
+
it('returns the original map reference on success', () => {
|
|
55
|
+
const map = { 10: { poolAddress: VALID_ADDRESS } };
|
|
56
|
+
expect(validateAddressMap(map)).toBe(map);
|
|
57
|
+
});
|
|
58
|
+
it('handles simple Record<number, Address> values', () => {
|
|
59
|
+
const map = { 10: INVALID_ADDRESS };
|
|
60
|
+
expect(() => validateAddressMap(map)).toThrow(/\[10\]/);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe('validateAssetAddresses', () => {
|
|
64
|
+
it("skips 'native' entries without throwing", () => {
|
|
65
|
+
const map = { 1: 'native', 10: 'native' };
|
|
66
|
+
expect(() => validateAssetAddresses(map)).not.toThrow();
|
|
67
|
+
});
|
|
68
|
+
it('throws with location info for invalid non-native addresses', () => {
|
|
69
|
+
const map = { 10: INVALID_ADDRESS };
|
|
70
|
+
expect(() => validateAssetAddresses(map)).toThrow(/\[10\]/);
|
|
71
|
+
expect(() => validateAssetAddresses(map)).toThrow(INVALID_ADDRESS);
|
|
72
|
+
});
|
|
73
|
+
it('collects multiple failures before throwing', () => {
|
|
74
|
+
const map = { 10: INVALID_ADDRESS, 8453: INVALID_ADDRESS_2 };
|
|
75
|
+
let err;
|
|
76
|
+
try {
|
|
77
|
+
validateAssetAddresses(map);
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
err = e;
|
|
81
|
+
}
|
|
82
|
+
expect(err).toBeDefined();
|
|
83
|
+
expect(err.message).toMatch(/\[10\]/);
|
|
84
|
+
expect(err.message).toMatch(/\[8453\]/);
|
|
85
|
+
});
|
|
86
|
+
it('passes for valid addresses and skips native', () => {
|
|
87
|
+
const map = { 1: 'native', 10: VALID_ADDRESS };
|
|
88
|
+
expect(() => validateAssetAddresses(map)).not.toThrow();
|
|
89
|
+
});
|
|
90
|
+
it('passes for valid addresses', () => {
|
|
91
|
+
const map = { 10: VALID_ADDRESS };
|
|
92
|
+
expect(() => validateAssetAddresses(map)).not.toThrow();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe('validateConfigAddresses', () => {
|
|
96
|
+
const validMarket = {
|
|
97
|
+
address: VALID_ADDRESS,
|
|
98
|
+
chainId: unichain.id,
|
|
99
|
+
name: 'Valid Market',
|
|
100
|
+
asset: {
|
|
101
|
+
address: { [unichain.id]: VALID_ADDRESS_2 },
|
|
102
|
+
metadata: { decimals: 18, name: 'WETH', symbol: 'WETH' },
|
|
103
|
+
type: 'erc20',
|
|
104
|
+
},
|
|
105
|
+
lendProvider: 'morpho',
|
|
106
|
+
};
|
|
107
|
+
const invalidMarketAddress = {
|
|
108
|
+
...validMarket,
|
|
109
|
+
address: INVALID_ADDRESS,
|
|
110
|
+
};
|
|
111
|
+
const invalidAssetAddress = {
|
|
112
|
+
...validMarket,
|
|
113
|
+
asset: {
|
|
114
|
+
...validMarket.asset,
|
|
115
|
+
address: { [unichain.id]: INVALID_ADDRESS },
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
const validAsset = {
|
|
119
|
+
address: { [unichain.id]: VALID_ADDRESS },
|
|
120
|
+
metadata: { decimals: 6, name: 'USDC', symbol: 'USDC' },
|
|
121
|
+
type: 'erc20',
|
|
122
|
+
};
|
|
123
|
+
const invalidAsset = {
|
|
124
|
+
address: { [unichain.id]: INVALID_ADDRESS },
|
|
125
|
+
metadata: { decimals: 6, name: 'USDC', symbol: 'USDC' },
|
|
126
|
+
type: 'erc20',
|
|
127
|
+
};
|
|
128
|
+
it('throws with a descriptive message when a bad address appears in marketAllowlist', () => {
|
|
129
|
+
expect(() => validateConfigAddresses({
|
|
130
|
+
lend: { morpho: { marketAllowlist: [invalidMarketAddress] } },
|
|
131
|
+
})).toThrow(/lend\.morpho\.marketAllowlist/);
|
|
132
|
+
});
|
|
133
|
+
it('throws with a descriptive message when a bad address appears in marketBlocklist', () => {
|
|
134
|
+
expect(() => validateConfigAddresses({
|
|
135
|
+
lend: { morpho: { marketBlocklist: [invalidMarketAddress] } },
|
|
136
|
+
})).toThrow(/lend\.morpho\.marketBlocklist/);
|
|
137
|
+
});
|
|
138
|
+
it('throws with a descriptive message when a bad address appears in assets.allow', () => {
|
|
139
|
+
expect(() => validateConfigAddresses({ assets: { allow: [invalidAsset] } })).toThrow(/assets\.allow/);
|
|
140
|
+
});
|
|
141
|
+
it('throws with a descriptive message when a bad address appears in assets.block', () => {
|
|
142
|
+
expect(() => validateConfigAddresses({ assets: { block: [invalidAsset] } })).toThrow(/assets\.block/);
|
|
143
|
+
});
|
|
144
|
+
it('throws with a descriptive message when a bad address appears in lend.aave.marketAllowlist', () => {
|
|
145
|
+
expect(() => validateConfigAddresses({
|
|
146
|
+
lend: {
|
|
147
|
+
aave: {
|
|
148
|
+
marketAllowlist: [
|
|
149
|
+
{ ...invalidMarketAddress, lendProvider: 'aave' },
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
})).toThrow(/lend\.aave\.marketAllowlist/);
|
|
154
|
+
});
|
|
155
|
+
it('throws with a descriptive message when a bad address appears in lend.aave.marketBlocklist', () => {
|
|
156
|
+
expect(() => validateConfigAddresses({
|
|
157
|
+
lend: {
|
|
158
|
+
aave: {
|
|
159
|
+
marketBlocklist: [
|
|
160
|
+
{ ...invalidMarketAddress, lendProvider: 'aave' },
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
})).toThrow(/lend\.aave\.marketBlocklist/);
|
|
165
|
+
});
|
|
166
|
+
it('throws with a descriptive message when a bad address appears in swap.uniswap.marketAllowlist', () => {
|
|
167
|
+
expect(() => validateConfigAddresses({
|
|
168
|
+
swap: {
|
|
169
|
+
uniswap: {
|
|
170
|
+
marketAllowlist: [{ assets: [invalidAsset, validAsset] }],
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
})).toThrow(/swap\.uniswap\.marketAllowlist/);
|
|
174
|
+
});
|
|
175
|
+
it('throws with a descriptive message when a bad address appears in swap.uniswap.marketBlocklist', () => {
|
|
176
|
+
expect(() => validateConfigAddresses({
|
|
177
|
+
swap: {
|
|
178
|
+
uniswap: {
|
|
179
|
+
marketBlocklist: [{ assets: [invalidAsset, validAsset] }],
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
})).toThrow(/swap\.uniswap\.marketBlocklist/);
|
|
183
|
+
});
|
|
184
|
+
it('collects failures across multiple config sections and throws once with all of them', () => {
|
|
185
|
+
let err;
|
|
186
|
+
try {
|
|
187
|
+
validateConfigAddresses({
|
|
188
|
+
lend: {
|
|
189
|
+
morpho: {
|
|
190
|
+
marketAllowlist: [invalidMarketAddress],
|
|
191
|
+
marketBlocklist: [invalidAssetAddress],
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
assets: { allow: [invalidAsset] },
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
catch (e) {
|
|
198
|
+
err = e;
|
|
199
|
+
}
|
|
200
|
+
expect(err).toBeDefined();
|
|
201
|
+
expect(err.message).toMatch(/lend\.morpho\.marketAllowlist/);
|
|
202
|
+
expect(err.message).toMatch(/lend\.morpho\.marketBlocklist/);
|
|
203
|
+
expect(err.message).toMatch(/assets\.allow/);
|
|
204
|
+
});
|
|
205
|
+
it('returns void (no throw) when all addresses are valid', () => {
|
|
206
|
+
expect(() => validateConfigAddresses({
|
|
207
|
+
lend: { morpho: { marketAllowlist: [validMarket] } },
|
|
208
|
+
assets: { allow: [validAsset] },
|
|
209
|
+
})).not.toThrow();
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
describe('hardcoded address maps contain valid EVM addresses', () => {
|
|
213
|
+
it('all hardcoded address maps contain valid EVM addresses', () => {
|
|
214
|
+
expect(() => validateAddressMap(POOL_ADDRESSES_MAINNET)).not.toThrow();
|
|
215
|
+
expect(() => validateAddressMap(POOL_ADDRESSES_TESTNET)).not.toThrow();
|
|
216
|
+
expect(() => validateAddressMap(WETH_GATEWAY_ADDRESSES_MAINNET)).not.toThrow();
|
|
217
|
+
expect(() => validateAddressMap(WETH_GATEWAY_ADDRESSES_TESTNET)).not.toThrow();
|
|
218
|
+
expect(() => validateAddressMap(MORPHO_CONTRACTS)).not.toThrow();
|
|
219
|
+
expect(() => validateAddressMap(UNISWAP_ADDRESSES)).not.toThrow();
|
|
220
|
+
// Velodrome: contracts are cleanly separated from metadata
|
|
221
|
+
const veloContracts = Object.fromEntries(Object.entries(VELODROME_CHAINS).map(([id, cfg]) => [id, cfg.contracts]));
|
|
222
|
+
expect(() => validateAddressMap(veloContracts)).not.toThrow();
|
|
223
|
+
});
|
|
224
|
+
it('all hardcoded asset address maps contain valid EVM addresses', () => {
|
|
225
|
+
for (const asset of NATIVELY_SUPPORTED_ASSETS) {
|
|
226
|
+
expect(() => validateAssetAddresses(asset.address)).not.toThrow();
|
|
227
|
+
}
|
|
228
|
+
expect(() => validateAssetAddresses(USDC_DEMO.address)).not.toThrow();
|
|
229
|
+
expect(() => validateAssetAddresses(OP_DEMO.address)).not.toThrow();
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
describe('Actions constructor address validation', () => {
|
|
233
|
+
class TestHostedWalletProviderRegistry extends HostedWalletProviderRegistry {
|
|
234
|
+
constructor() {
|
|
235
|
+
super();
|
|
236
|
+
this.register({
|
|
237
|
+
type: 'privy',
|
|
238
|
+
validateOptions(options) {
|
|
239
|
+
return Boolean(options?.privyClient);
|
|
240
|
+
},
|
|
241
|
+
create({ chainManager }, options) {
|
|
242
|
+
return new PrivyHostedWalletProvider({
|
|
243
|
+
privyClient: options.privyClient,
|
|
244
|
+
chainManager,
|
|
245
|
+
authorizationContext: options.authorizationContext,
|
|
246
|
+
});
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
const baseWalletConfig = {
|
|
252
|
+
hostedWalletConfig: {
|
|
253
|
+
provider: {
|
|
254
|
+
type: 'privy',
|
|
255
|
+
config: {
|
|
256
|
+
privyClient: createMockPrivyClient('test-id', 'test-secret'),
|
|
257
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
smartWalletConfig: { provider: { type: 'default' } },
|
|
262
|
+
};
|
|
263
|
+
it('throws on construction when ActionsConfig contains an invalid address', () => {
|
|
264
|
+
expect(() => new Actions({
|
|
265
|
+
chains: [{ chainId: unichain.id }],
|
|
266
|
+
lend: {
|
|
267
|
+
morpho: {
|
|
268
|
+
marketAllowlist: [
|
|
269
|
+
{
|
|
270
|
+
address: '0xbad',
|
|
271
|
+
chainId: unichain.id,
|
|
272
|
+
name: 'Bad Market',
|
|
273
|
+
asset: {
|
|
274
|
+
address: { [unichain.id]: VALID_ADDRESS },
|
|
275
|
+
metadata: { decimals: 18, name: 'WETH', symbol: 'WETH' },
|
|
276
|
+
type: 'erc20',
|
|
277
|
+
},
|
|
278
|
+
lendProvider: 'morpho',
|
|
279
|
+
},
|
|
280
|
+
],
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
wallet: baseWalletConfig,
|
|
284
|
+
}, {
|
|
285
|
+
hostedWalletProviderRegistry: new TestHostedWalletProviderRegistry(),
|
|
286
|
+
})).toThrow(/Invalid addresses found/);
|
|
287
|
+
});
|
|
288
|
+
it('constructs successfully when all addresses are valid', () => {
|
|
289
|
+
expect(() => new Actions({
|
|
290
|
+
chains: [{ chainId: unichain.id }],
|
|
291
|
+
lend: {
|
|
292
|
+
morpho: {
|
|
293
|
+
marketAllowlist: [
|
|
294
|
+
{
|
|
295
|
+
address: VALID_ADDRESS,
|
|
296
|
+
chainId: unichain.id,
|
|
297
|
+
name: 'Valid Market',
|
|
298
|
+
asset: {
|
|
299
|
+
address: { [unichain.id]: VALID_ADDRESS_2 },
|
|
300
|
+
metadata: { decimals: 18, name: 'WETH', symbol: 'WETH' },
|
|
301
|
+
type: 'erc20',
|
|
302
|
+
},
|
|
303
|
+
lendProvider: 'morpho',
|
|
304
|
+
},
|
|
305
|
+
],
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
wallet: baseWalletConfig,
|
|
309
|
+
}, {
|
|
310
|
+
hostedWalletProviderRegistry: new TestHostedWalletProviderRegistry(),
|
|
311
|
+
})).not.toThrow();
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
//# sourceMappingURL=validateAddresses.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateAddresses.test.js","sourceRoot":"","sources":["../../src/utils/validateAddresses.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
2
|
+
import type { SupportedChainId } from '../constants/supportedChains.js';
|
|
3
|
+
import type { Asset } from '../types/asset.js';
|
|
4
|
+
export declare function validateAmountProvided(amountIn?: number, amountOut?: number): void;
|
|
5
|
+
export declare function validateAmountPositiveIfExists(amount?: number): void;
|
|
6
|
+
export declare function validateNotBothAmounts(amountIn?: number, amountOut?: number): void;
|
|
7
|
+
export declare function validateNotSameAsset(assetIn: Asset, assetOut: Asset): void;
|
|
8
|
+
export declare function validateNotZeroAddress(address: Address, label: string): void;
|
|
9
|
+
export declare function validateSlippage(slippage: number, maxSlippage: number): void;
|
|
10
|
+
export declare function validateChainSupported(chainId: number, supportedChainIds: readonly number[]): void;
|
|
11
|
+
export declare function validateAssetOnChain(asset: Asset, chainId: SupportedChainId): void;
|
|
12
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAK7C,wBAAgB,sBAAsB,CACpC,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAIN;AAED,wBAAgB,8BAA8B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAIpE;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAIN;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI,CAO1E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAM5E;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,IAAI,CAMN;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAMN"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { isAssetSupportedOnChain } from './assets.js';
|
|
2
|
+
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
3
|
+
export function validateAmountProvided(amountIn, amountOut) {
|
|
4
|
+
if (amountIn === undefined && amountOut === undefined) {
|
|
5
|
+
throw new Error('Either amountIn or amountOut must be provided');
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export function validateAmountPositiveIfExists(amount) {
|
|
9
|
+
if (amount !== undefined && amount <= 0) {
|
|
10
|
+
throw new Error('Amount must be positive');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function validateNotBothAmounts(amountIn, amountOut) {
|
|
14
|
+
if (amountIn !== undefined && amountOut !== undefined) {
|
|
15
|
+
throw new Error('Provide either amountIn or amountOut, not both');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function validateNotSameAsset(assetIn, assetOut) {
|
|
19
|
+
if (assetIn.metadata.symbol.toLowerCase() ===
|
|
20
|
+
assetOut.metadata.symbol.toLowerCase()) {
|
|
21
|
+
throw new Error('Cannot swap an asset for itself');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function validateNotZeroAddress(address, label) {
|
|
25
|
+
if (address === ZERO_ADDRESS) {
|
|
26
|
+
throw new Error(`${label} cannot be the zero address`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function validateSlippage(slippage, maxSlippage) {
|
|
30
|
+
if (slippage < 0 || slippage > maxSlippage) {
|
|
31
|
+
throw new Error(`Slippage ${slippage} exceeds allowed range [0, ${maxSlippage * 100}%]`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function validateChainSupported(chainId, supportedChainIds) {
|
|
35
|
+
if (!supportedChainIds.includes(chainId)) {
|
|
36
|
+
throw new Error(`Chain ${chainId} is not supported. Supported chains: ${supportedChainIds.join(', ')}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function validateAssetOnChain(asset, chainId) {
|
|
40
|
+
if (!isAssetSupportedOnChain(asset, chainId)) {
|
|
41
|
+
throw new Error(`Asset ${asset.metadata.symbol} not supported on chain ${chainId}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,MAAM,YAAY,GAAG,4CAA4C,CAAA;AAEjE,MAAM,UAAU,sBAAsB,CACpC,QAAiB,EACjB,SAAkB;IAElB,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,MAAe;IAC5D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAiB,EACjB,SAAkB;IAElB,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAc,EAAE,QAAe;IAClE,IACE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;QACrC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EACtC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,KAAa;IACpE,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,6BAA6B,CAAC,CAAA;IACxD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,WAAmB;IACpE,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,YAAY,QAAQ,8BAA8B,WAAW,GAAG,GAAG,IAAI,CACxE,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,iBAAoC;IAEpC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,SAAS,OAAO,wCAAwC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvF,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAY,EACZ,OAAyB;IAEzB,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,SAAS,KAAK,CAAC,QAAQ,CAAC,MAAM,2BAA2B,OAAO,EAAE,CACnE,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -6,27 +6,38 @@ import type { SmartWalletCreationResult } from '../providers/smart/abstract/type
|
|
|
6
6
|
import type { WalletProvider } from '../providers/WalletProvider.js';
|
|
7
7
|
import type { Wallet } from '../wallets/abstract/Wallet.js';
|
|
8
8
|
import type { SmartWallet } from '../wallets/smart/abstract/SmartWallet.js';
|
|
9
|
+
/**
|
|
10
|
+
* Provider factory function for lazy initialization
|
|
11
|
+
*/
|
|
12
|
+
type WalletProviderFactory<THostedProviderType extends string, TToActionsMap extends Record<THostedProviderType, unknown>, H extends HostedWalletProvider<THostedProviderType, TToActionsMap>, S extends SmartWalletProvider> = () => Promise<WalletProvider<THostedProviderType, TToActionsMap, H, S>>;
|
|
9
13
|
/**
|
|
10
14
|
* Wallet namespace that provides unified wallet operations
|
|
11
|
-
* @description Provides access to wallet functionality through a single provider interface
|
|
15
|
+
* @description Provides access to wallet functionality through a single provider interface.
|
|
16
|
+
* Supports lazy initialization — the wallet provider is created on first method call,
|
|
17
|
+
* enabling tree-shaking of unused wallet provider dependencies.
|
|
12
18
|
*/
|
|
13
19
|
export declare class WalletNamespace<THostedProviderType extends string, TToActionsMap extends Record<THostedProviderType, unknown>, H extends HostedWalletProvider<THostedProviderType, TToActionsMap> = HostedWalletProvider<THostedProviderType, TToActionsMap>, S extends SmartWalletProvider = SmartWalletProvider> {
|
|
14
|
-
private
|
|
15
|
-
|
|
20
|
+
private _provider;
|
|
21
|
+
private _providerFactory;
|
|
22
|
+
private _initPromise;
|
|
23
|
+
constructor(providerOrFactory: WalletProvider<THostedProviderType, TToActionsMap, H, S> | WalletProviderFactory<THostedProviderType, TToActionsMap, H, S>);
|
|
24
|
+
private resolveProvider;
|
|
16
25
|
/**
|
|
17
26
|
* Get direct access to the hosted wallet provider
|
|
18
27
|
* @description Provides direct access to the underlying hosted wallet provider when
|
|
19
|
-
* advanced functionality beyond the unified interface is needed
|
|
20
|
-
*
|
|
28
|
+
* advanced functionality beyond the unified interface is needed.
|
|
29
|
+
* Lazily initializes the provider if not yet created.
|
|
30
|
+
* @returns Promise resolving to the configured hosted wallet provider instance
|
|
21
31
|
*/
|
|
22
|
-
|
|
32
|
+
hostedWalletProvider(): Promise<H>;
|
|
23
33
|
/**
|
|
24
34
|
* Get direct access to the smart wallet provider
|
|
25
35
|
* @description Provides direct access to the underlying smart wallet provider when
|
|
26
|
-
* advanced functionality beyond the unified interface is needed
|
|
27
|
-
*
|
|
36
|
+
* advanced functionality beyond the unified interface is needed.
|
|
37
|
+
* Lazily initializes the provider if not yet created.
|
|
38
|
+
* @returns Promise resolving to the configured smart wallet provider instance
|
|
28
39
|
*/
|
|
29
|
-
|
|
40
|
+
smartWalletProvider(): Promise<S>;
|
|
30
41
|
/**
|
|
31
42
|
* Create a new smart wallet
|
|
32
43
|
* @description Creates a smart wallet and attempts to deploy it across all supported chains.
|
|
@@ -81,4 +92,5 @@ export declare class WalletNamespace<THostedProviderType extends string, TToActi
|
|
|
81
92
|
*/
|
|
82
93
|
getSmartWallet(params: GetSmartWalletOptions): Promise<SmartWallet>;
|
|
83
94
|
}
|
|
95
|
+
export {};
|
|
84
96
|
//# sourceMappingURL=WalletNamespace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletNamespace.d.ts","sourceRoot":"","sources":["../../../../src/wallet/core/namespace/WalletNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAExC,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAA;AAC3G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+DAA+D,CAAA;AACxG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAA;AACtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAA;AAEtF
|
|
1
|
+
{"version":3,"file":"WalletNamespace.d.ts","sourceRoot":"","sources":["../../../../src/wallet/core/namespace/WalletNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAExC,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAA;AAC3G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+DAA+D,CAAA;AACxG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAA;AACtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAA;AAEtF;;GAEG;AACH,KAAK,qBAAqB,CACxB,mBAAmB,SAAS,MAAM,EAClC,aAAa,SAAS,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAC1D,CAAC,SAAS,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAClE,CAAC,SAAS,mBAAmB,IAC3B,MAAM,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAE3E;;;;;GAKG;AACH,qBAAa,eAAe,CAC1B,mBAAmB,SAAS,MAAM,EAClC,aAAa,SAAS,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAC1D,CAAC,SAAS,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,CAAC,GAChE,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAC1D,CAAC,SAAS,mBAAmB,GAAG,mBAAmB;IAEnD,OAAO,CAAC,SAAS,CAKF;IACf,OAAO,CAAC,gBAAgB,CAKvB;IACD,OAAO,CAAC,YAAY,CAEL;gBAGb,iBAAiB,EACb,cAAc,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,GACxD,qBAAqB,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;IAUrE,OAAO,CAAC,eAAe;IAavB;;;;;;OAMG;IACG,oBAAoB,IAAI,OAAO,CAAC,CAAC,CAAC;IAKxC;;;;;;OAMG;IACG,mBAAmB,IAAI,OAAO,CAAC,CAAC,CAAC;IAKvC;;;;;;;;;;;;;;;;OAgBG;IACG,iBAAiB,CACrB,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAKlD;;;;;;;;OAQG;IACG,YAAY,CAChB,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACzC,OAAO,CAAC,YAAY,CAAC;IAKxB;;;;;;;OAOG;IACG,eAAe,CACnB,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB;CAInD"}
|
|
@@ -1,28 +1,53 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Wallet namespace that provides unified wallet operations
|
|
3
|
-
* @description Provides access to wallet functionality through a single provider interface
|
|
3
|
+
* @description Provides access to wallet functionality through a single provider interface.
|
|
4
|
+
* Supports lazy initialization — the wallet provider is created on first method call,
|
|
5
|
+
* enabling tree-shaking of unused wallet provider dependencies.
|
|
4
6
|
*/
|
|
5
7
|
export class WalletNamespace {
|
|
6
|
-
constructor(
|
|
7
|
-
this.
|
|
8
|
+
constructor(providerOrFactory) {
|
|
9
|
+
this._provider = null;
|
|
10
|
+
this._initPromise = null;
|
|
11
|
+
if (typeof providerOrFactory === 'function') {
|
|
12
|
+
this._providerFactory = providerOrFactory;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
this._provider = providerOrFactory;
|
|
16
|
+
this._providerFactory = () => Promise.resolve(providerOrFactory);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
resolveProvider() {
|
|
20
|
+
if (this._provider)
|
|
21
|
+
return Promise.resolve(this._provider);
|
|
22
|
+
if (!this._initPromise) {
|
|
23
|
+
this._initPromise = this._providerFactory().then((provider) => {
|
|
24
|
+
this._provider = provider;
|
|
25
|
+
return provider;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return this._initPromise;
|
|
8
29
|
}
|
|
9
30
|
/**
|
|
10
31
|
* Get direct access to the hosted wallet provider
|
|
11
32
|
* @description Provides direct access to the underlying hosted wallet provider when
|
|
12
|
-
* advanced functionality beyond the unified interface is needed
|
|
13
|
-
*
|
|
33
|
+
* advanced functionality beyond the unified interface is needed.
|
|
34
|
+
* Lazily initializes the provider if not yet created.
|
|
35
|
+
* @returns Promise resolving to the configured hosted wallet provider instance
|
|
14
36
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
37
|
+
async hostedWalletProvider() {
|
|
38
|
+
const provider = await this.resolveProvider();
|
|
39
|
+
return provider.hostedWalletProvider;
|
|
17
40
|
}
|
|
18
41
|
/**
|
|
19
42
|
* Get direct access to the smart wallet provider
|
|
20
43
|
* @description Provides direct access to the underlying smart wallet provider when
|
|
21
|
-
* advanced functionality beyond the unified interface is needed
|
|
22
|
-
*
|
|
44
|
+
* advanced functionality beyond the unified interface is needed.
|
|
45
|
+
* Lazily initializes the provider if not yet created.
|
|
46
|
+
* @returns Promise resolving to the configured smart wallet provider instance
|
|
23
47
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
48
|
+
async smartWalletProvider() {
|
|
49
|
+
const provider = await this.resolveProvider();
|
|
50
|
+
return provider.smartWalletProvider;
|
|
26
51
|
}
|
|
27
52
|
/**
|
|
28
53
|
* Create a new smart wallet
|
|
@@ -42,7 +67,8 @@ export class WalletNamespace {
|
|
|
42
67
|
* @throws Error if signer is not included in the signers array
|
|
43
68
|
*/
|
|
44
69
|
async createSmartWallet(params) {
|
|
45
|
-
|
|
70
|
+
const provider = await this.resolveProvider();
|
|
71
|
+
return provider.createSmartWallet(params);
|
|
46
72
|
}
|
|
47
73
|
/**
|
|
48
74
|
* Create a viem LocalAccount signer from the hosted wallet
|
|
@@ -54,7 +80,8 @@ export class WalletNamespace {
|
|
|
54
80
|
* @returns Promise resolving to a viem `LocalAccount` with the hosted wallet as the signer backend
|
|
55
81
|
*/
|
|
56
82
|
async createSigner(params) {
|
|
57
|
-
|
|
83
|
+
const provider = await this.resolveProvider();
|
|
84
|
+
return provider.createSigner(params);
|
|
58
85
|
}
|
|
59
86
|
/**
|
|
60
87
|
* Convert a hosted wallet to an Actions wallet
|
|
@@ -65,7 +92,8 @@ export class WalletNamespace {
|
|
|
65
92
|
* @returns Promise resolving to the Actions wallet instance
|
|
66
93
|
*/
|
|
67
94
|
async toActionsWallet(params) {
|
|
68
|
-
|
|
95
|
+
const provider = await this.resolveProvider();
|
|
96
|
+
return provider.hostedWalletToActionsWallet(params);
|
|
69
97
|
}
|
|
70
98
|
/**
|
|
71
99
|
* Get an existing smart wallet with a provided signer
|
|
@@ -83,7 +111,8 @@ export class WalletNamespace {
|
|
|
83
111
|
* @throws Error if neither walletAddress nor deploymentSigners provided
|
|
84
112
|
*/
|
|
85
113
|
async getSmartWallet(params) {
|
|
86
|
-
|
|
114
|
+
const provider = await this.resolveProvider();
|
|
115
|
+
return provider.getSmartWallet(params);
|
|
87
116
|
}
|
|
88
117
|
}
|
|
89
118
|
//# sourceMappingURL=WalletNamespace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletNamespace.js","sourceRoot":"","sources":["../../../../src/wallet/core/namespace/WalletNamespace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WalletNamespace.js","sourceRoot":"","sources":["../../../../src/wallet/core/namespace/WalletNamespace.ts"],"names":[],"mappings":"AAuBA;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAuB1B,YACE,iBAEmE;QAnB7D,cAAS,GAKN,IAAI,CAAA;QAOP,iBAAY,GAET,IAAI,CAAA;QAOb,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAA;YAClC,IAAI,CAAC,gBAAgB,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;IAEO,eAAe;QAGrB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC5D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;gBACzB,OAAO,QAAQ,CAAA;YACjB,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,oBAAoB,CAAA;IACtC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,mBAAmB,CAAA;IACrC,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,iBAAiB,CACrB,MAAgC;QAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,CAChB,MAA0C;QAE1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,MAA0C;QAE1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IACrD,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,cAAc,CAAC,MAA6B;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;CACF"}
|
|
@@ -25,7 +25,7 @@ describe('WalletNamespace', () => {
|
|
|
25
25
|
vi.clearAllMocks();
|
|
26
26
|
});
|
|
27
27
|
describe('hostedWalletProvider', () => {
|
|
28
|
-
it('should provide access to hosted wallet provider', () => {
|
|
28
|
+
it('should provide access to hosted wallet provider', async () => {
|
|
29
29
|
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
30
30
|
privyClient: mockPrivyClient,
|
|
31
31
|
chainManager: mockChainManager,
|
|
@@ -34,11 +34,11 @@ describe('WalletNamespace', () => {
|
|
|
34
34
|
const smartWalletProvider = new DefaultSmartWalletProvider(mockChainManager, { morpho: mockLendProvider });
|
|
35
35
|
const walletProvider = new WalletProvider(hostedWalletProvider, smartWalletProvider);
|
|
36
36
|
const walletNamespace = new WalletNamespace(walletProvider);
|
|
37
|
-
expect(walletNamespace.hostedWalletProvider).toBe(hostedWalletProvider);
|
|
37
|
+
expect(await walletNamespace.hostedWalletProvider()).toBe(hostedWalletProvider);
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
40
|
describe('smartWalletProvider', () => {
|
|
41
|
-
it('should provide access to smart wallet provider', () => {
|
|
41
|
+
it('should provide access to smart wallet provider', async () => {
|
|
42
42
|
const mockPrivyClient = createMockPrivyClient('test-app-id', 'test-app-secret');
|
|
43
43
|
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
44
44
|
privyClient: mockPrivyClient,
|
|
@@ -48,7 +48,7 @@ describe('WalletNamespace', () => {
|
|
|
48
48
|
const smartWalletProvider = new DefaultSmartWalletProvider(mockChainManager, { morpho: mockLendProvider });
|
|
49
49
|
const walletProvider = new WalletProvider(hostedWalletProvider, smartWalletProvider);
|
|
50
50
|
const walletNamespace = new WalletNamespace(walletProvider);
|
|
51
|
-
expect(walletNamespace.smartWalletProvider).toBe(smartWalletProvider);
|
|
51
|
+
expect(await walletNamespace.smartWalletProvider()).toBe(smartWalletProvider);
|
|
52
52
|
});
|
|
53
53
|
});
|
|
54
54
|
describe('createSmartWallet', () => {
|