@eth-optimism/actions-sdk 0.0.0-main-20251009211102
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/LICENSE +22 -0
- package/README.md +106 -0
- package/dist/actions.d.ts +58 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +88 -0
- package/dist/actions.js.map +1 -0
- package/dist/actions.test.d.ts +2 -0
- package/dist/actions.test.d.ts.map +1 -0
- package/dist/actions.test.js +620 -0
- package/dist/actions.test.js.map +1 -0
- package/dist/constants/assets.d.ts +3 -0
- package/dist/constants/assets.d.ts.map +1 -0
- package/dist/constants/assets.js +16 -0
- package/dist/constants/assets.js.map +1 -0
- package/dist/constants/config.d.ts +10 -0
- package/dist/constants/config.d.ts.map +1 -0
- package/dist/constants/config.js +10 -0
- package/dist/constants/config.js.map +1 -0
- package/dist/constants/supportedChains.d.ts +3 -0
- package/dist/constants/supportedChains.d.ts.map +1 -0
- package/dist/constants/supportedChains.js +8 -0
- package/dist/constants/supportedChains.js.map +1 -0
- package/dist/core/asset/__mocks__/mockAsset.d.ts +6 -0
- package/dist/core/asset/__mocks__/mockAsset.d.ts.map +1 -0
- package/dist/core/asset/__mocks__/mockAsset.js +12 -0
- package/dist/core/asset/__mocks__/mockAsset.js.map +1 -0
- package/dist/core/error/errors.d.ts +19 -0
- package/dist/core/error/errors.d.ts.map +1 -0
- package/dist/core/error/errors.js +22 -0
- package/dist/core/error/errors.js.map +1 -0
- package/dist/core/utils/__tests__/retryOnStaleRead.spec.d.ts +2 -0
- package/dist/core/utils/__tests__/retryOnStaleRead.spec.d.ts.map +1 -0
- package/dist/core/utils/__tests__/retryOnStaleRead.spec.js +41 -0
- package/dist/core/utils/__tests__/retryOnStaleRead.spec.js.map +1 -0
- package/dist/core/utils/retryOnStaleRead.d.ts +14 -0
- package/dist/core/utils/retryOnStaleRead.d.ts.map +1 -0
- package/dist/core/utils/retryOnStaleRead.js +29 -0
- package/dist/core/utils/retryOnStaleRead.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/index.node.d.ts +5 -0
- package/dist/index.node.d.ts.map +1 -0
- package/dist/index.node.js +4 -0
- package/dist/index.node.js.map +1 -0
- package/dist/index.react.d.ts +5 -0
- package/dist/index.react.d.ts.map +1 -0
- package/dist/index.react.js +4 -0
- package/dist/index.react.js.map +1 -0
- package/dist/lend/__mocks__/mockLendTransaction.d.ts +22 -0
- package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +1 -0
- package/dist/lend/__mocks__/mockLendTransaction.js +32 -0
- package/dist/lend/__mocks__/mockLendTransaction.js.map +1 -0
- package/dist/lend/core/LendProvider.d.ts +122 -0
- package/dist/lend/core/LendProvider.d.ts.map +1 -0
- package/dist/lend/core/LendProvider.js +183 -0
- package/dist/lend/core/LendProvider.js.map +1 -0
- package/dist/lend/core/__tests__/LendProvider.test.d.ts +2 -0
- package/dist/lend/core/__tests__/LendProvider.test.d.ts.map +1 -0
- package/dist/lend/core/__tests__/LendProvider.test.js +247 -0
- package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -0
- package/dist/lend/index.d.ts +3 -0
- package/dist/lend/index.d.ts.map +1 -0
- package/dist/lend/index.js +3 -0
- package/dist/lend/index.js.map +1 -0
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts +15 -0
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -0
- package/dist/lend/namespaces/ActionsLendNamespace.js +17 -0
- package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -0
- package/dist/lend/namespaces/WalletLendNamespace.d.ts +36 -0
- package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -0
- package/dist/lend/namespaces/WalletLendNamespace.js +68 -0
- package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -0
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.d.ts +2 -0
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.d.ts.map +1 -0
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +41 -0
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -0
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.d.ts +2 -0
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.d.ts.map +1 -0
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +188 -0
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -0
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +55 -0
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -0
- package/dist/lend/providers/morpho/MorphoLendProvider.js +193 -0
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -0
- package/dist/lend/providers/morpho/__mocks__/mockVault.d.ts +21 -0
- package/dist/lend/providers/morpho/__mocks__/mockVault.d.ts.map +1 -0
- package/dist/lend/providers/morpho/__mocks__/mockVault.js +27 -0
- package/dist/lend/providers/morpho/__mocks__/mockVault.js.map +1 -0
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.d.ts +2 -0
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.d.ts.map +1 -0
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +259 -0
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -0
- package/dist/lend/providers/morpho/__tests__/api.test.d.ts +2 -0
- package/dist/lend/providers/morpho/__tests__/api.test.d.ts.map +1 -0
- package/dist/lend/providers/morpho/__tests__/api.test.js +66 -0
- package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -0
- package/dist/lend/providers/morpho/__tests__/sdk.test.d.ts +2 -0
- package/dist/lend/providers/morpho/__tests__/sdk.test.d.ts.map +1 -0
- package/dist/lend/providers/morpho/__tests__/sdk.test.js +332 -0
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -0
- package/dist/lend/providers/morpho/api.d.ts +14 -0
- package/dist/lend/providers/morpho/api.d.ts.map +1 -0
- package/dist/lend/providers/morpho/api.js +76 -0
- package/dist/lend/providers/morpho/api.js.map +1 -0
- package/dist/lend/providers/morpho/sdk.d.ts +61 -0
- package/dist/lend/providers/morpho/sdk.d.ts.map +1 -0
- package/dist/lend/providers/morpho/sdk.js +300 -0
- package/dist/lend/providers/morpho/sdk.js.map +1 -0
- package/dist/nodeActionsFactory.d.ts +19 -0
- package/dist/nodeActionsFactory.d.ts.map +1 -0
- package/dist/nodeActionsFactory.js +17 -0
- package/dist/nodeActionsFactory.js.map +1 -0
- package/dist/reactActionsFactory.d.ts +19 -0
- package/dist/reactActionsFactory.d.ts.map +1 -0
- package/dist/reactActionsFactory.js +17 -0
- package/dist/reactActionsFactory.js.map +1 -0
- package/dist/services/ChainManager.d.ts +90 -0
- package/dist/services/ChainManager.d.ts.map +1 -0
- package/dist/services/ChainManager.js +183 -0
- package/dist/services/ChainManager.js.map +1 -0
- package/dist/services/ChainManager.spec.d.ts +2 -0
- package/dist/services/ChainManager.spec.d.ts.map +1 -0
- package/dist/services/ChainManager.spec.js +260 -0
- package/dist/services/ChainManager.spec.js.map +1 -0
- package/dist/services/tokenBalance.d.ts +15 -0
- package/dist/services/tokenBalance.d.ts.map +1 -0
- package/dist/services/tokenBalance.js +82 -0
- package/dist/services/tokenBalance.js.map +1 -0
- package/dist/services/tokenBalance.spec.d.ts +2 -0
- package/dist/services/tokenBalance.spec.d.ts.map +1 -0
- package/dist/services/tokenBalance.spec.js +73 -0
- package/dist/services/tokenBalance.spec.js.map +1 -0
- package/dist/supported/tokens.d.ts +25 -0
- package/dist/supported/tokens.d.ts.map +1 -0
- package/dist/supported/tokens.js +88 -0
- package/dist/supported/tokens.js.map +1 -0
- package/dist/test/MockAssets.d.ts +10 -0
- package/dist/test/MockAssets.d.ts.map +1 -0
- package/dist/test/MockAssets.js +29 -0
- package/dist/test/MockAssets.js.map +1 -0
- package/dist/test/MockChainManager.d.ts +31 -0
- package/dist/test/MockChainManager.d.ts.map +1 -0
- package/dist/test/MockChainManager.js +92 -0
- package/dist/test/MockChainManager.js.map +1 -0
- package/dist/test/MockLendProvider.d.ts +68 -0
- package/dist/test/MockLendProvider.d.ts.map +1 -0
- package/dist/test/MockLendProvider.js +258 -0
- package/dist/test/MockLendProvider.js.map +1 -0
- package/dist/test/MockMarkets.d.ts +15 -0
- package/dist/test/MockMarkets.d.ts.map +1 -0
- package/dist/test/MockMarkets.js +26 -0
- package/dist/test/MockMarkets.js.map +1 -0
- package/dist/test/MockPrivyClient.d.ts +66 -0
- package/dist/test/MockPrivyClient.d.ts.map +1 -0
- package/dist/test/MockPrivyClient.js +93 -0
- package/dist/test/MockPrivyClient.js.map +1 -0
- package/dist/test/utils.d.ts +2 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +5 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/types/actions.d.ts +69 -0
- package/dist/types/actions.d.ts.map +1 -0
- package/dist/types/actions.js +2 -0
- package/dist/types/actions.js.map +1 -0
- package/dist/types/asset.d.ts +32 -0
- package/dist/types/asset.d.ts.map +1 -0
- package/dist/types/asset.js +2 -0
- package/dist/types/asset.js.map +1 -0
- package/dist/types/chain.d.ts +26 -0
- package/dist/types/chain.d.ts.map +1 -0
- package/dist/types/chain.js +2 -0
- package/dist/types/chain.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lend/base.d.ts +370 -0
- package/dist/types/lend/base.d.ts.map +1 -0
- package/dist/types/lend/base.js +4 -0
- package/dist/types/lend/base.js.map +1 -0
- package/dist/types/lend/index.d.ts +3 -0
- package/dist/types/lend/index.d.ts.map +1 -0
- package/dist/types/lend/index.js +3 -0
- package/dist/types/lend/index.js.map +1 -0
- package/dist/types/lend/morpho.d.ts +7 -0
- package/dist/types/lend/morpho.d.ts.map +1 -0
- package/dist/types/lend/morpho.js +6 -0
- package/dist/types/lend/morpho.js.map +1 -0
- package/dist/types/wallet.d.ts +26 -0
- package/dist/types/wallet.d.ts.map +1 -0
- package/dist/types/wallet.js +2 -0
- package/dist/types/wallet.js.map +1 -0
- package/dist/utils/assets.d.ts +33 -0
- package/dist/utils/assets.d.ts.map +1 -0
- package/dist/utils/assets.js +53 -0
- package/dist/utils/assets.js.map +1 -0
- package/dist/utils/assets.test.d.ts +2 -0
- package/dist/utils/assets.test.d.ts.map +1 -0
- package/dist/utils/assets.test.js +24 -0
- package/dist/utils/assets.test.js.map +1 -0
- package/dist/utils/markets.d.ts +17 -0
- package/dist/utils/markets.d.ts.map +1 -0
- package/dist/utils/markets.js +25 -0
- package/dist/utils/markets.js.map +1 -0
- package/dist/utils/test.d.ts +117 -0
- package/dist/utils/test.d.ts.map +1 -0
- package/dist/utils/test.js +265 -0
- package/dist/utils/test.js.map +1 -0
- package/dist/wallet/core/namespace/WalletNamespace.d.ts +84 -0
- package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -0
- package/dist/wallet/core/namespace/WalletNamespace.js +89 -0
- package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -0
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.d.ts +2 -0
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.d.ts.map +1 -0
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +249 -0
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -0
- package/dist/wallet/core/providers/WalletProvider.d.ts +63 -0
- package/dist/wallet/core/providers/WalletProvider.d.ts.map +1 -0
- package/dist/wallet/core/providers/WalletProvider.js +85 -0
- package/dist/wallet/core/providers/WalletProvider.js.map +1 -0
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.d.ts +2 -0
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.d.ts.map +1 -0
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +246 -0
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -0
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +33 -0
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -0
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +13 -0
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -0
- package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.d.ts +20 -0
- package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.d.ts.map +1 -0
- package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js +29 -0
- package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js.map +1 -0
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.d.ts +2 -0
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.d.ts.map +1 -0
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +52 -0
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -0
- package/dist/wallet/core/providers/hosted/types/index.d.ts +70 -0
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -0
- package/dist/wallet/core/providers/hosted/types/index.js +2 -0
- package/dist/wallet/core/providers/hosted/types/index.js.map +1 -0
- package/dist/wallet/core/providers/smart/abstract/SmartWalletProvider.d.ts +61 -0
- package/dist/wallet/core/providers/smart/abstract/SmartWalletProvider.d.ts.map +1 -0
- package/dist/wallet/core/providers/smart/abstract/SmartWalletProvider.js +7 -0
- package/dist/wallet/core/providers/smart/abstract/SmartWalletProvider.js.map +1 -0
- package/dist/wallet/core/providers/smart/abstract/types/index.d.ts +16 -0
- package/dist/wallet/core/providers/smart/abstract/types/index.d.ts.map +1 -0
- package/dist/wallet/core/providers/smart/abstract/types/index.js +2 -0
- package/dist/wallet/core/providers/smart/abstract/types/index.js.map +1 -0
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +77 -0
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -0
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +125 -0
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -0
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.d.ts +2 -0
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.d.ts.map +1 -0
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +325 -0
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -0
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +96 -0
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -0
- package/dist/wallet/core/wallets/abstract/Wallet.js +81 -0
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -0
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +15 -0
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -0
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +18 -0
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -0
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.d.ts +2 -0
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.d.ts.map +1 -0
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +44 -0
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -0
- package/dist/wallet/core/wallets/abstract/types/index.d.ts +30 -0
- package/dist/wallet/core/wallets/abstract/types/index.d.ts.map +1 -0
- package/dist/wallet/core/wallets/abstract/types/index.js +2 -0
- package/dist/wallet/core/wallets/abstract/types/index.js.map +1 -0
- package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts +44 -0
- package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts.map +1 -0
- package/dist/wallet/core/wallets/eoa/EOAWallet.js +67 -0
- package/dist/wallet/core/wallets/eoa/EOAWallet.js.map +1 -0
- package/dist/wallet/core/wallets/eoa/__mocks__/EOAWallet.d.ts +28 -0
- package/dist/wallet/core/wallets/eoa/__mocks__/EOAWallet.d.ts.map +1 -0
- package/dist/wallet/core/wallets/eoa/__mocks__/EOAWallet.js +51 -0
- package/dist/wallet/core/wallets/eoa/__mocks__/EOAWallet.js.map +1 -0
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.d.ts +2 -0
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.d.ts.map +1 -0
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +191 -0
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -0
- package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts +69 -0
- package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/abstract/SmartWallet.js +8 -0
- package/dist/wallet/core/wallets/smart/abstract/SmartWallet.js.map +1 -0
- package/dist/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.d.ts +43 -0
- package/dist/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.js +67 -0
- package/dist/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.js.map +1 -0
- package/dist/wallet/core/wallets/smart/abstract/types/index.d.ts +19 -0
- package/dist/wallet/core/wallets/smart/abstract/types/index.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/abstract/types/index.js +2 -0
- package/dist/wallet/core/wallets/smart/abstract/types/index.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +191 -0
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +436 -0
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.d.ts +40 -0
- package/dist/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.js +72 -0
- package/dist/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.d.ts +2 -0
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +561 -0
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/constants/index.d.ts +719 -0
- package/dist/wallet/core/wallets/smart/default/constants/index.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/constants/index.js +480 -0
- package/dist/wallet/core/wallets/smart/default/constants/index.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.d.ts +2 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js +52 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.d.ts +2 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.js +109 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.d.ts +2 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.js +22 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.d.ts +2 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js +44 -0
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/findSignerInArray.d.ts +12 -0
- package/dist/wallet/core/wallets/smart/default/utils/findSignerInArray.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/findSignerInArray.js +23 -0
- package/dist/wallet/core/wallets/smart/default/utils/findSignerInArray.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.d.ts +30 -0
- package/dist/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.js +40 -0
- package/dist/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/formatPublicKey.d.ts +8 -0
- package/dist/wallet/core/wallets/smart/default/utils/formatPublicKey.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/formatPublicKey.js +13 -0
- package/dist/wallet/core/wallets/smart/default/utils/formatPublicKey.js.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/getSignerPublicKey.d.ts +12 -0
- package/dist/wallet/core/wallets/smart/default/utils/getSignerPublicKey.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/default/utils/getSignerPublicKey.js +18 -0
- package/dist/wallet/core/wallets/smart/default/utils/getSignerPublicKey.js.map +1 -0
- package/dist/wallet/core/wallets/smart/error/errors.d.ts +8 -0
- package/dist/wallet/core/wallets/smart/error/errors.d.ts.map +1 -0
- package/dist/wallet/core/wallets/smart/error/errors.js +9 -0
- package/dist/wallet/core/wallets/smart/error/errors.js.map +1 -0
- package/dist/wallet/node/index.d.ts +4 -0
- package/dist/wallet/node/index.d.ts.map +1 -0
- package/dist/wallet/node/index.js +3 -0
- package/dist/wallet/node/index.js.map +1 -0
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +34 -0
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -0
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +43 -0
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -0
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.d.ts +2 -0
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.d.ts.map +1 -0
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +80 -0
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -0
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +15 -0
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -0
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +37 -0
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -0
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.d.ts +2 -0
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.d.ts.map +1 -0
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +62 -0
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -0
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +50 -0
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -0
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +60 -0
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -0
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.d.ts +2 -0
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.d.ts.map +1 -0
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +132 -0
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -0
- package/dist/wallet/node/providers/hosted/types/index.d.ts +90 -0
- package/dist/wallet/node/providers/hosted/types/index.d.ts.map +1 -0
- package/dist/wallet/node/providers/hosted/types/index.js +2 -0
- package/dist/wallet/node/providers/hosted/types/index.js.map +1 -0
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +43 -0
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -0
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +47 -0
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -0
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.d.ts +2 -0
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.d.ts.map +1 -0
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +105 -0
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -0
- package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.d.ts +2 -0
- package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.d.ts.map +1 -0
- package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +39 -0
- package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -0
- package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts +15 -0
- package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts.map +1 -0
- package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js +23 -0
- package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js.map +1 -0
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +46 -0
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -0
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +34 -0
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -0
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.d.ts +2 -0
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.d.ts.map +1 -0
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +82 -0
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -0
- package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.d.ts +2 -0
- package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.d.ts.map +1 -0
- package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +61 -0
- package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -0
- package/dist/wallet/node/wallets/hosted/turnkey/utils/createSigner.d.ts +17 -0
- package/dist/wallet/node/wallets/hosted/turnkey/utils/createSigner.d.ts.map +1 -0
- package/dist/wallet/node/wallets/hosted/turnkey/utils/createSigner.js +24 -0
- package/dist/wallet/node/wallets/hosted/turnkey/utils/createSigner.js.map +1 -0
- package/dist/wallet/react/index.d.ts +3 -0
- package/dist/wallet/react/index.d.ts.map +1 -0
- package/dist/wallet/react/index.js +2 -0
- package/dist/wallet/react/index.js.map +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +29 -0
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +36 -0
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts +33 -0
- package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts.map +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js +30 -0
- package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js.map +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.d.ts +2 -0
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.d.ts.map +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +79 -0
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -0
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +29 -0
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -0
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +38 -0
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -0
- package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts +33 -0
- package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts.map +1 -0
- package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js +29 -0
- package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js.map +1 -0
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.d.ts +2 -0
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.d.ts.map +1 -0
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +79 -0
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -0
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +49 -0
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -0
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +60 -0
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -0
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.d.ts +2 -0
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.d.ts.map +1 -0
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +110 -0
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -0
- package/dist/wallet/react/providers/hosted/types/index.d.ts +86 -0
- package/dist/wallet/react/providers/hosted/types/index.d.ts.map +1 -0
- package/dist/wallet/react/providers/hosted/types/index.js +2 -0
- package/dist/wallet/react/providers/hosted/types/index.js.map +1 -0
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +15 -0
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -0
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +46 -0
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -0
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.d.ts +2 -0
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.d.ts.map +1 -0
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +68 -0
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +39 -0
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +43 -0
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +16 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js +15 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.d.ts +2 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +117 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.d.ts +2 -0
- package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js +62 -0
- package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/utils/createSigner.d.ts +13 -0
- package/dist/wallet/react/wallets/hosted/dynamic/utils/createSigner.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/dynamic/utils/createSigner.js +32 -0
- package/dist/wallet/react/wallets/hosted/dynamic/utils/createSigner.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +34 -0
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +38 -0
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.d.ts +16 -0
- package/dist/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.js +15 -0
- package/dist/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.d.ts +2 -0
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +95 -0
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.d.ts +2 -0
- package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +55 -0
- package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/utils/createSigner.d.ts +13 -0
- package/dist/wallet/react/wallets/hosted/privy/utils/createSigner.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/privy/utils/createSigner.js +24 -0
- package/dist/wallet/react/wallets/hosted/privy/utils/createSigner.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +53 -0
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +43 -0
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.d.ts +2 -0
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +82 -0
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.d.ts +2 -0
- package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +61 -0
- package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -0
- package/dist/wallet/react/wallets/hosted/turnkey/utils/createSigner.d.ts +17 -0
- package/dist/wallet/react/wallets/hosted/turnkey/utils/createSigner.d.ts.map +1 -0
- package/dist/wallet/react/wallets/hosted/turnkey/utils/createSigner.js +24 -0
- package/dist/wallet/react/wallets/hosted/turnkey/utils/createSigner.js.map +1 -0
- package/package.json +86 -0
- package/src/actions.test.ts +885 -0
- package/src/actions.ts +190 -0
- package/src/constants/assets.ts +20 -0
- package/src/constants/config.ts +9 -0
- package/src/constants/supportedChains.ts +10 -0
- package/src/core/asset/__mocks__/mockAsset.ts +13 -0
- package/src/core/error/errors.ts +27 -0
- package/src/core/utils/__tests__/retryOnStaleRead.spec.ts +56 -0
- package/src/core/utils/retryOnStaleRead.ts +39 -0
- package/src/index.node.ts +4 -0
- package/src/index.react.ts +4 -0
- package/src/index.ts +35 -0
- package/src/lend/__mocks__/mockLendTransaction.ts +47 -0
- package/src/lend/core/LendProvider.ts +311 -0
- package/src/lend/core/__tests__/LendProvider.test.ts +305 -0
- package/src/lend/index.ts +2 -0
- package/src/lend/namespaces/ActionsLendNamespace.ts +26 -0
- package/src/lend/namespaces/WalletLendNamespace.ts +116 -0
- package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +58 -0
- package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +223 -0
- package/src/lend/providers/morpho/MorphoLendProvider.ts +258 -0
- package/src/lend/providers/morpho/__mocks__/mockVault.ts +28 -0
- package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +356 -0
- package/src/lend/providers/morpho/__tests__/api.test.ts +104 -0
- package/src/lend/providers/morpho/__tests__/sdk.test.ts +366 -0
- package/src/lend/providers/morpho/api.ts +86 -0
- package/src/lend/providers/morpho/sdk.ts +418 -0
- package/src/nodeActionsFactory.ts +37 -0
- package/src/reactActionsFactory.ts +37 -0
- package/src/services/ChainManager.spec.ts +332 -0
- package/src/services/ChainManager.ts +237 -0
- package/src/services/tokenBalance.spec.ts +93 -0
- package/src/services/tokenBalance.ts +122 -0
- package/src/supported/tokens.ts +103 -0
- package/src/test/MockAssets.ts +33 -0
- package/src/test/MockChainManager.ts +138 -0
- package/src/test/MockLendProvider.ts +397 -0
- package/src/test/MockMarkets.ts +32 -0
- package/src/test/MockPrivyClient.ts +118 -0
- package/src/test/utils.ts +5 -0
- package/src/types/actions.ts +80 -0
- package/src/types/asset.ts +34 -0
- package/src/types/chain.ts +30 -0
- package/src/types/index.ts +5 -0
- package/src/types/lend/base.ts +415 -0
- package/src/types/lend/index.ts +2 -0
- package/src/types/lend/morpho.ts +16 -0
- package/src/types/wallet.ts +28 -0
- package/src/utils/assets.test.ts +28 -0
- package/src/utils/assets.ts +71 -0
- package/src/utils/markets.ts +35 -0
- package/src/utils/test.ts +379 -0
- package/src/wallet/core/namespace/WalletNamespace.ts +125 -0
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +398 -0
- package/src/wallet/core/providers/WalletProvider.ts +123 -0
- package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +374 -0
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +45 -0
- package/src/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.ts +46 -0
- package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +77 -0
- package/src/wallet/core/providers/hosted/types/index.ts +76 -0
- package/src/wallet/core/providers/smart/abstract/SmartWalletProvider.ts +64 -0
- package/src/wallet/core/providers/smart/abstract/types/index.ts +17 -0
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +175 -0
- package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +467 -0
- package/src/wallet/core/wallets/abstract/Wallet.ts +149 -0
- package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +40 -0
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +61 -0
- package/src/wallet/core/wallets/abstract/types/index.ts +42 -0
- package/src/wallet/core/wallets/eoa/EOAWallet.ts +96 -0
- package/src/wallet/core/wallets/eoa/__mocks__/EOAWallet.ts +112 -0
- package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +299 -0
- package/src/wallet/core/wallets/smart/abstract/SmartWallet.ts +93 -0
- package/src/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.ts +161 -0
- package/src/wallet/core/wallets/smart/abstract/types/index.ts +19 -0
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +598 -0
- package/src/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.ts +172 -0
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +781 -0
- package/src/wallet/core/wallets/smart/default/constants/index.ts +482 -0
- package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.ts +68 -0
- package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.ts +147 -0
- package/src/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.ts +28 -0
- package/src/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.ts +60 -0
- package/src/wallet/core/wallets/smart/default/utils/findSignerInArray.ts +30 -0
- package/src/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.ts +66 -0
- package/src/wallet/core/wallets/smart/default/utils/formatPublicKey.ts +14 -0
- package/src/wallet/core/wallets/smart/default/utils/getSignerPublicKey.ts +18 -0
- package/src/wallet/core/wallets/smart/error/errors.ts +18 -0
- package/src/wallet/node/index.ts +7 -0
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +65 -0
- package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +112 -0
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +55 -0
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +89 -0
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +84 -0
- package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +182 -0
- package/src/wallet/node/providers/hosted/types/index.ts +102 -0
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +78 -0
- package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +142 -0
- package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +48 -0
- package/src/wallet/node/wallets/hosted/privy/utils/createSigner.ts +32 -0
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +90 -0
- package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +104 -0
- package/src/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +77 -0
- package/src/wallet/node/wallets/hosted/turnkey/utils/createSigner.ts +32 -0
- package/src/wallet/react/index.ts +5 -0
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +54 -0
- package/src/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.ts +57 -0
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +105 -0
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +56 -0
- package/src/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.ts +56 -0
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +103 -0
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +78 -0
- package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +142 -0
- package/src/wallet/react/providers/hosted/types/index.ts +100 -0
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +57 -0
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +117 -0
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +67 -0
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +22 -0
- package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +148 -0
- package/src/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.ts +82 -0
- package/src/wallet/react/wallets/hosted/dynamic/utils/createSigner.ts +38 -0
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +63 -0
- package/src/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.ts +22 -0
- package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +109 -0
- package/src/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +66 -0
- package/src/wallet/react/wallets/hosted/privy/utils/createSigner.ts +30 -0
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +94 -0
- package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +99 -0
- package/src/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +72 -0
- package/src/wallet/react/wallets/hosted/turnkey/utils/createSigner.ts +29 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
import type { WaitForUserOperationReceiptReturnType } from 'viem/account-abstraction'
|
|
2
|
+
import { unichain } from 'viem/chains'
|
|
3
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
4
|
+
|
|
5
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
6
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
+
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
8
|
+
import { createMockLendProvider } from '@/test/MockLendProvider.js'
|
|
9
|
+
import { createMockPrivyClient } from '@/test/MockPrivyClient.js'
|
|
10
|
+
import { getRandomAddress } from '@/test/utils.js'
|
|
11
|
+
import { DefaultSmartWalletProvider } from '@/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js'
|
|
12
|
+
import { WalletProvider } from '@/wallet/core/providers/WalletProvider.js'
|
|
13
|
+
import { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
14
|
+
import { DefaultSmartWallet } from '@/wallet/core/wallets/smart/default/DefaultSmartWallet.js'
|
|
15
|
+
import { SmartWalletDeploymentError } from '@/wallet/core/wallets/smart/error/errors.js'
|
|
16
|
+
import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
17
|
+
import type { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
|
|
18
|
+
|
|
19
|
+
const mockChainManager = new MockChainManager({
|
|
20
|
+
supportedChains: [unichain.id],
|
|
21
|
+
}) as unknown as ChainManager
|
|
22
|
+
const mockLendProvider = createMockLendProvider()
|
|
23
|
+
|
|
24
|
+
describe('WalletProvider', () => {
|
|
25
|
+
let mockPrivyClient: ReturnType<typeof createMockPrivyClient>
|
|
26
|
+
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
vi.clearAllMocks()
|
|
29
|
+
mockPrivyClient = createMockPrivyClient('test-app-id', 'test-app-secret')
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
describe('createSmartWallet', () => {
|
|
33
|
+
it('should create a smart wallet and return deployment result', async () => {
|
|
34
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
35
|
+
mockPrivyClient,
|
|
36
|
+
mockChainManager,
|
|
37
|
+
)
|
|
38
|
+
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
39
|
+
mockChainManager,
|
|
40
|
+
mockLendProvider,
|
|
41
|
+
)
|
|
42
|
+
const walletProvider = new WalletProvider(
|
|
43
|
+
hostedWalletProvider,
|
|
44
|
+
smartWalletProvider,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
// Create a hosted wallet to use as signer
|
|
48
|
+
const hostedWallet = (await hostedWalletProvider.toActionsWallet({
|
|
49
|
+
walletId: 'mock-wallet-1',
|
|
50
|
+
address: getRandomAddress(),
|
|
51
|
+
})) as PrivyWallet
|
|
52
|
+
const signer = hostedWallet.signer
|
|
53
|
+
const signers = [getRandomAddress(), hostedWallet.address]
|
|
54
|
+
const nonce = BigInt(123)
|
|
55
|
+
|
|
56
|
+
const mockWallet = {} as DefaultSmartWallet
|
|
57
|
+
const mockDeploymentResult = {
|
|
58
|
+
wallet: mockWallet,
|
|
59
|
+
deployments: [
|
|
60
|
+
{
|
|
61
|
+
chainId: unichain.id as SupportedChainId,
|
|
62
|
+
receipt: undefined,
|
|
63
|
+
success: true,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const createWalletSpy = vi
|
|
69
|
+
.spyOn(smartWalletProvider, 'createWallet')
|
|
70
|
+
.mockResolvedValue(mockDeploymentResult)
|
|
71
|
+
|
|
72
|
+
const result = await walletProvider.createSmartWallet({
|
|
73
|
+
signers,
|
|
74
|
+
signer,
|
|
75
|
+
nonce,
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
expect(createWalletSpy).toHaveBeenCalledWith({
|
|
79
|
+
signers,
|
|
80
|
+
signer,
|
|
81
|
+
nonce,
|
|
82
|
+
})
|
|
83
|
+
expect(result).toEqual(mockDeploymentResult)
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
it('should pass through deployment successes and failures', async () => {
|
|
87
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
88
|
+
mockPrivyClient,
|
|
89
|
+
mockChainManager,
|
|
90
|
+
)
|
|
91
|
+
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
92
|
+
mockChainManager,
|
|
93
|
+
mockLendProvider,
|
|
94
|
+
)
|
|
95
|
+
const walletProvider = new WalletProvider(
|
|
96
|
+
hostedWalletProvider,
|
|
97
|
+
smartWalletProvider,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
const hostedWallet = (await hostedWalletProvider.toActionsWallet({
|
|
101
|
+
walletId: 'mock-wallet-1',
|
|
102
|
+
address: getRandomAddress(),
|
|
103
|
+
})) as PrivyWallet
|
|
104
|
+
const signer = hostedWallet.signer
|
|
105
|
+
const signers = [getRandomAddress(), hostedWallet.address]
|
|
106
|
+
|
|
107
|
+
const mockWallet = {} as DefaultSmartWallet
|
|
108
|
+
const mockReceipt = {
|
|
109
|
+
success: true,
|
|
110
|
+
} as unknown as WaitForUserOperationReceiptReturnType
|
|
111
|
+
const mockDeploymentResult = {
|
|
112
|
+
wallet: mockWallet,
|
|
113
|
+
deployments: [
|
|
114
|
+
{
|
|
115
|
+
chainId: unichain.id as SupportedChainId,
|
|
116
|
+
receipt: mockReceipt,
|
|
117
|
+
success: true,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
chainId: 8453 as SupportedChainId,
|
|
121
|
+
receipt: mockReceipt,
|
|
122
|
+
success: false,
|
|
123
|
+
error: new SmartWalletDeploymentError('Deployment failed', 8453),
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
vi.spyOn(smartWalletProvider, 'createWallet').mockResolvedValue(
|
|
129
|
+
mockDeploymentResult,
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
const result = await walletProvider.createSmartWallet({
|
|
133
|
+
signers,
|
|
134
|
+
signer,
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
expect(result).toEqual(mockDeploymentResult)
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
it('should forward deploymentChainIds parameter', async () => {
|
|
141
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
142
|
+
mockPrivyClient,
|
|
143
|
+
mockChainManager,
|
|
144
|
+
)
|
|
145
|
+
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
146
|
+
mockChainManager,
|
|
147
|
+
mockLendProvider,
|
|
148
|
+
)
|
|
149
|
+
const walletProvider = new WalletProvider(
|
|
150
|
+
hostedWalletProvider,
|
|
151
|
+
smartWalletProvider,
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
const hostedWallet = (await hostedWalletProvider.toActionsWallet({
|
|
155
|
+
walletId: 'mock-wallet-1',
|
|
156
|
+
address: getRandomAddress(),
|
|
157
|
+
})) as PrivyWallet
|
|
158
|
+
const signer = hostedWallet.signer
|
|
159
|
+
const signers = [getRandomAddress(), hostedWallet.address]
|
|
160
|
+
const deploymentChainIds: SupportedChainId[] = [8453]
|
|
161
|
+
|
|
162
|
+
const mockWallet = {} as DefaultSmartWallet
|
|
163
|
+
const mockDeploymentResult = {
|
|
164
|
+
wallet: mockWallet,
|
|
165
|
+
deployments: [
|
|
166
|
+
{
|
|
167
|
+
chainId: 8453 as SupportedChainId,
|
|
168
|
+
receipt: undefined,
|
|
169
|
+
success: true,
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const createWalletSpy = vi
|
|
175
|
+
.spyOn(smartWalletProvider, 'createWallet')
|
|
176
|
+
.mockResolvedValue(mockDeploymentResult)
|
|
177
|
+
|
|
178
|
+
const result = await walletProvider.createSmartWallet({
|
|
179
|
+
signers,
|
|
180
|
+
signer,
|
|
181
|
+
deploymentChainIds,
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
expect(createWalletSpy).toHaveBeenCalledWith({
|
|
185
|
+
signers,
|
|
186
|
+
signer,
|
|
187
|
+
deploymentChainIds,
|
|
188
|
+
})
|
|
189
|
+
expect(result).toEqual(mockDeploymentResult)
|
|
190
|
+
})
|
|
191
|
+
|
|
192
|
+
it('should throw error if signer is not in signers array', async () => {
|
|
193
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
194
|
+
mockPrivyClient,
|
|
195
|
+
mockChainManager,
|
|
196
|
+
)
|
|
197
|
+
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
198
|
+
mockChainManager,
|
|
199
|
+
mockLendProvider,
|
|
200
|
+
)
|
|
201
|
+
const walletProvider = new WalletProvider(
|
|
202
|
+
hostedWalletProvider,
|
|
203
|
+
smartWalletProvider,
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
const hostedWallet = (await hostedWalletProvider.toActionsWallet({
|
|
207
|
+
walletId: 'mock-wallet-1',
|
|
208
|
+
address: getRandomAddress(),
|
|
209
|
+
})) as PrivyWallet
|
|
210
|
+
const signer = hostedWallet.signer
|
|
211
|
+
// Signer is NOT in the signers array
|
|
212
|
+
const signers = [getRandomAddress(), getRandomAddress()]
|
|
213
|
+
|
|
214
|
+
await expect(
|
|
215
|
+
walletProvider.createSmartWallet({
|
|
216
|
+
signers,
|
|
217
|
+
signer,
|
|
218
|
+
}),
|
|
219
|
+
).rejects.toThrow('Signer does not match any signer in the signers array')
|
|
220
|
+
})
|
|
221
|
+
})
|
|
222
|
+
|
|
223
|
+
describe('getSmartWallet', () => {
|
|
224
|
+
it('should get a smart wallet with provided signer', async () => {
|
|
225
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
226
|
+
mockPrivyClient,
|
|
227
|
+
mockChainManager,
|
|
228
|
+
)
|
|
229
|
+
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
230
|
+
mockChainManager,
|
|
231
|
+
mockLendProvider,
|
|
232
|
+
)
|
|
233
|
+
const mockWalletAddress = getRandomAddress()
|
|
234
|
+
const getWalletAddressSpy = vi
|
|
235
|
+
.spyOn(smartWalletProvider, 'getWalletAddress')
|
|
236
|
+
.mockResolvedValue(mockWalletAddress)
|
|
237
|
+
const getWalletSpy = vi.spyOn(smartWalletProvider, 'getWallet')
|
|
238
|
+
const walletProvider = new WalletProvider(
|
|
239
|
+
hostedWalletProvider,
|
|
240
|
+
smartWalletProvider,
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
const hostedWallet = (await hostedWalletProvider.toActionsWallet({
|
|
244
|
+
walletId: 'mock-wallet-1',
|
|
245
|
+
address: getRandomAddress(),
|
|
246
|
+
})) as PrivyWallet
|
|
247
|
+
const signer = hostedWallet.signer
|
|
248
|
+
const deploymentSigners = [hostedWallet.address, getRandomAddress()]
|
|
249
|
+
const nonce = BigInt(789)
|
|
250
|
+
|
|
251
|
+
const smartWallet = await walletProvider.getSmartWallet({
|
|
252
|
+
signer,
|
|
253
|
+
deploymentSigners,
|
|
254
|
+
signers: [signer.address],
|
|
255
|
+
nonce,
|
|
256
|
+
})
|
|
257
|
+
|
|
258
|
+
expect(smartWallet).toBeInstanceOf(DefaultSmartWallet)
|
|
259
|
+
expect(getWalletAddressSpy).toHaveBeenCalledWith({
|
|
260
|
+
signers: deploymentSigners,
|
|
261
|
+
nonce,
|
|
262
|
+
})
|
|
263
|
+
expect(getWalletSpy).toHaveBeenCalledWith({
|
|
264
|
+
walletAddress: mockWalletAddress,
|
|
265
|
+
signer,
|
|
266
|
+
signers: [signer.address],
|
|
267
|
+
})
|
|
268
|
+
})
|
|
269
|
+
|
|
270
|
+
it('should throw error when getting smart wallet without required parameters', async () => {
|
|
271
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
272
|
+
mockPrivyClient,
|
|
273
|
+
mockChainManager,
|
|
274
|
+
)
|
|
275
|
+
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
276
|
+
mockChainManager,
|
|
277
|
+
mockLendProvider,
|
|
278
|
+
)
|
|
279
|
+
const walletProvider = new WalletProvider(
|
|
280
|
+
hostedWalletProvider,
|
|
281
|
+
smartWalletProvider,
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
const hostedWallet = (await hostedWalletProvider.toActionsWallet({
|
|
285
|
+
walletId: 'mock-wallet-1',
|
|
286
|
+
address: getRandomAddress(),
|
|
287
|
+
})) as PrivyWallet
|
|
288
|
+
const signer = hostedWallet.signer
|
|
289
|
+
|
|
290
|
+
await expect(
|
|
291
|
+
walletProvider.getSmartWallet({
|
|
292
|
+
signer,
|
|
293
|
+
signers: [signer.address],
|
|
294
|
+
// Missing both walletAddress and deploymentSigners
|
|
295
|
+
}),
|
|
296
|
+
).rejects.toThrow(
|
|
297
|
+
'Either walletAddress or deploymentSigners array must be provided to locate the smart wallet',
|
|
298
|
+
)
|
|
299
|
+
})
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
describe('hostedWalletToActionsWallet', () => {
|
|
303
|
+
it('should convert a hosted wallet to an Actions wallet', async () => {
|
|
304
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
305
|
+
mockPrivyClient,
|
|
306
|
+
mockChainManager,
|
|
307
|
+
)
|
|
308
|
+
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
309
|
+
mockChainManager,
|
|
310
|
+
mockLendProvider,
|
|
311
|
+
)
|
|
312
|
+
const walletProvider = new WalletProvider(
|
|
313
|
+
hostedWalletProvider,
|
|
314
|
+
smartWalletProvider,
|
|
315
|
+
)
|
|
316
|
+
const toActionsWalletSpy = vi.spyOn(
|
|
317
|
+
hostedWalletProvider,
|
|
318
|
+
'toActionsWallet',
|
|
319
|
+
)
|
|
320
|
+
|
|
321
|
+
const privyWallet = await mockPrivyClient.walletApi.createWallet({
|
|
322
|
+
chainType: 'ethereum',
|
|
323
|
+
})
|
|
324
|
+
const hostedWallet = await walletProvider.hostedWalletToActionsWallet({
|
|
325
|
+
walletId: privyWallet.id,
|
|
326
|
+
address: privyWallet.address,
|
|
327
|
+
})
|
|
328
|
+
|
|
329
|
+
expect(toActionsWalletSpy).toHaveBeenCalledWith({
|
|
330
|
+
walletId: privyWallet.id,
|
|
331
|
+
address: privyWallet.address,
|
|
332
|
+
})
|
|
333
|
+
expect(hostedWallet).toBeInstanceOf(Wallet)
|
|
334
|
+
expect(hostedWallet.signer.address).toBe(privyWallet.address)
|
|
335
|
+
expect(hostedWallet.address).toBe(privyWallet.address)
|
|
336
|
+
})
|
|
337
|
+
})
|
|
338
|
+
|
|
339
|
+
describe('createSigner', () => {
|
|
340
|
+
it('should delegate to hosted wallet provider createSigner', async () => {
|
|
341
|
+
const mockPrivyClient = createMockPrivyClient(
|
|
342
|
+
'test-app-id',
|
|
343
|
+
'test-app-secret',
|
|
344
|
+
)
|
|
345
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
346
|
+
mockPrivyClient,
|
|
347
|
+
mockChainManager,
|
|
348
|
+
)
|
|
349
|
+
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
350
|
+
mockChainManager,
|
|
351
|
+
mockLendProvider,
|
|
352
|
+
)
|
|
353
|
+
const walletProvider = new WalletProvider(
|
|
354
|
+
hostedWalletProvider,
|
|
355
|
+
smartWalletProvider,
|
|
356
|
+
)
|
|
357
|
+
const createSignerSpy = vi.spyOn(hostedWalletProvider, 'createSigner')
|
|
358
|
+
|
|
359
|
+
const privyWallet = await mockPrivyClient.walletApi.createWallet({
|
|
360
|
+
chainType: 'ethereum',
|
|
361
|
+
})
|
|
362
|
+
const params = {
|
|
363
|
+
walletId: privyWallet.id,
|
|
364
|
+
address: privyWallet.address,
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
const signer = await walletProvider.createSigner(params)
|
|
368
|
+
|
|
369
|
+
expect(createSignerSpy).toHaveBeenCalledWith(params)
|
|
370
|
+
expect(signer.address).toBe(privyWallet.address)
|
|
371
|
+
expect(signer.type).toBe('local')
|
|
372
|
+
})
|
|
373
|
+
})
|
|
374
|
+
})
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { LocalAccount } from 'viem'
|
|
2
|
+
|
|
3
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
4
|
+
import type { LendConfig, LendProvider } from '@/types/lend/index.js'
|
|
5
|
+
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Base hosted wallet provider class
|
|
9
|
+
* @description Abstract base class for hosted wallet provider implementations (Privy, Dynamic, etc.).
|
|
10
|
+
* Provides a standard interface for creating and retrieving hosted wallets that can be used
|
|
11
|
+
* as signers for smart wallets or standalone wallet functionality.
|
|
12
|
+
*/
|
|
13
|
+
export abstract class HostedWalletProvider<
|
|
14
|
+
TType extends string,
|
|
15
|
+
TOptionsMap extends Record<TType, unknown>,
|
|
16
|
+
> {
|
|
17
|
+
protected chainManager: ChainManager
|
|
18
|
+
protected lendProvider?: LendProvider<LendConfig>
|
|
19
|
+
|
|
20
|
+
protected constructor(
|
|
21
|
+
chainManager: ChainManager,
|
|
22
|
+
lendProvider?: LendProvider<LendConfig>,
|
|
23
|
+
) {
|
|
24
|
+
this.chainManager = chainManager
|
|
25
|
+
this.lendProvider = lendProvider
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Convert a hosted wallet to an Actions wallet
|
|
29
|
+
* @description Converts a hosted wallet to an Actions wallet instance.
|
|
30
|
+
* @param params - Parameters for converting a hosted wallet to an Actions wallet
|
|
31
|
+
* @returns Promise resolving to the Actions wallet instance
|
|
32
|
+
*/
|
|
33
|
+
abstract toActionsWallet(params: TOptionsMap[TType]): Promise<Wallet>
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Create a viem LocalAccount signer from the hosted wallet
|
|
37
|
+
* @description Produces a signing account backed by the hosted wallet without wrapping
|
|
38
|
+
* it in a full Actions wallet. This is useful when you need to pass the signer
|
|
39
|
+
* into an Actions smart wallet as a signer, for lower-level viem operations, or
|
|
40
|
+
* for passing to other libraries that accept a viem `LocalAccount`.
|
|
41
|
+
* @param params - Configuration for the signer
|
|
42
|
+
* @returns Promise resolving to a viem `LocalAccount` with the hosted wallet as the signer backend
|
|
43
|
+
*/
|
|
44
|
+
abstract createSigner(params: TOptionsMap[TType]): Promise<LocalAccount>
|
|
45
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { HostedProviderFactory } from '@/wallet/core/providers/hosted/types/index.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Base registry for hosted wallet providers.
|
|
5
|
+
* Maintains a map of provider factories keyed by provider type.
|
|
6
|
+
* Environment-specific subclasses register available providers.
|
|
7
|
+
*/
|
|
8
|
+
export abstract class HostedWalletProviderRegistry<
|
|
9
|
+
TInstanceMap extends Record<TProviderType, unknown>,
|
|
10
|
+
TConfigMap extends Record<TProviderType, unknown>,
|
|
11
|
+
TProviderType extends keyof TInstanceMap & keyof TConfigMap & string,
|
|
12
|
+
> {
|
|
13
|
+
protected readonly registry = new Map<
|
|
14
|
+
TProviderType,
|
|
15
|
+
HostedProviderFactory<
|
|
16
|
+
TProviderType,
|
|
17
|
+
TInstanceMap[TProviderType],
|
|
18
|
+
TConfigMap[TProviderType]
|
|
19
|
+
>
|
|
20
|
+
>()
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Get a provider factory by type.
|
|
24
|
+
* Throws if the provider type is not registered.
|
|
25
|
+
*/
|
|
26
|
+
getFactory<TType extends TProviderType>(
|
|
27
|
+
type: TType,
|
|
28
|
+
): HostedProviderFactory<TType, TInstanceMap[TType], TConfigMap[TType]> {
|
|
29
|
+
const factory = this.registry.get(type) as
|
|
30
|
+
| HostedProviderFactory<TType, TInstanceMap[TType], TConfigMap[TType]>
|
|
31
|
+
| undefined
|
|
32
|
+
if (!factory) throw new Error(`Unknown hosted wallet provider: ${type}`)
|
|
33
|
+
return factory
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Register a provider factory if not already present.
|
|
38
|
+
* Intended for use by subclasses during construction.
|
|
39
|
+
*/
|
|
40
|
+
protected register<T extends TProviderType>(
|
|
41
|
+
factory: HostedProviderFactory<T, TInstanceMap[T], TConfigMap[T]>,
|
|
42
|
+
) {
|
|
43
|
+
if (!this.registry.has(factory.type))
|
|
44
|
+
this.registry.set(factory.type, factory)
|
|
45
|
+
}
|
|
46
|
+
}
|
package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { PrivyClient } from '@privy-io/server-auth'
|
|
2
|
+
import { unichain } from 'viem/chains'
|
|
3
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
4
|
+
|
|
5
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
|
+
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
7
|
+
import { createMockPrivyClient } from '@/test/MockPrivyClient.js'
|
|
8
|
+
import { HostedWalletProviderRegistry } from '@/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js'
|
|
9
|
+
import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
10
|
+
import type { NodeOptionsMap } from '@/wallet/node/providers/hosted/types/index.js'
|
|
11
|
+
|
|
12
|
+
type TestInstanceMap = { privy: PrivyHostedWalletProvider }
|
|
13
|
+
class TestHostedWalletProviderRegistry extends HostedWalletProviderRegistry<
|
|
14
|
+
TestInstanceMap,
|
|
15
|
+
Pick<NodeOptionsMap, 'privy'>,
|
|
16
|
+
'privy'
|
|
17
|
+
> {
|
|
18
|
+
constructor() {
|
|
19
|
+
super()
|
|
20
|
+
this.register<'privy'>({
|
|
21
|
+
type: 'privy',
|
|
22
|
+
validateOptions(options): options is NodeOptionsMap['privy'] {
|
|
23
|
+
return Boolean((options as NodeOptionsMap['privy'])?.privyClient)
|
|
24
|
+
},
|
|
25
|
+
create({ chainManager }, options) {
|
|
26
|
+
return new PrivyHostedWalletProvider(options.privyClient, chainManager)
|
|
27
|
+
},
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
describe('HostedWalletProviderRegistry', () => {
|
|
33
|
+
const mockChainManager = new MockChainManager({
|
|
34
|
+
supportedChains: [unichain.id],
|
|
35
|
+
}) as unknown as ChainManager
|
|
36
|
+
let mockPrivyClient: PrivyClient
|
|
37
|
+
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
mockPrivyClient = createMockPrivyClient('test-app-id', 'test-app-secret')
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
afterEach(() => {
|
|
43
|
+
vi.clearAllMocks()
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
it('returns privy factory and validates options', () => {
|
|
47
|
+
const registry = new TestHostedWalletProviderRegistry()
|
|
48
|
+
const factory = registry.getFactory('privy')
|
|
49
|
+
|
|
50
|
+
expect(factory.type).toBe('privy')
|
|
51
|
+
expect(factory.validateOptions?.({ privyClient: mockPrivyClient })).toBe(
|
|
52
|
+
true,
|
|
53
|
+
)
|
|
54
|
+
// Invalid shape should not pass validation
|
|
55
|
+
expect(factory.validateOptions?.({})).toBe(false)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('creates a PrivyHostedWalletProvider instance', () => {
|
|
59
|
+
const registry = new TestHostedWalletProviderRegistry()
|
|
60
|
+
const factory = registry.getFactory('privy')
|
|
61
|
+
|
|
62
|
+
const provider = factory.create(
|
|
63
|
+
{ chainManager: mockChainManager },
|
|
64
|
+
{ privyClient: mockPrivyClient },
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
expect(provider).toBeInstanceOf(PrivyHostedWalletProvider)
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
it('throws for unknown provider type', () => {
|
|
71
|
+
const registry = new TestHostedWalletProviderRegistry()
|
|
72
|
+
// @ts-expect-error: testing runtime error for unknown type
|
|
73
|
+
expect(() => registry.getFactory('unknown')).toThrow(
|
|
74
|
+
'Unknown hosted wallet provider: unknown',
|
|
75
|
+
)
|
|
76
|
+
})
|
|
77
|
+
})
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
2
|
+
import type { LendConfig, LendProvider } from '@/types/lend/index.js'
|
|
3
|
+
import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Common dependencies provided to hosted provider factories
|
|
7
|
+
* @description
|
|
8
|
+
* Environment-agnostic services that providers require at creation time.
|
|
9
|
+
* Currently limited to `ChainManager`, but can be extended as needed.
|
|
10
|
+
*/
|
|
11
|
+
export interface HostedProviderDeps {
|
|
12
|
+
chainManager: ChainManager
|
|
13
|
+
lendProvider?: LendProvider<LendConfig>
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Provider registration specification
|
|
18
|
+
* @description
|
|
19
|
+
* Declarative description of a hosted wallet provider used when registering
|
|
20
|
+
* a provider factory in a registry.
|
|
21
|
+
* @template TType Unique provider key (e.g. 'privy', 'turnkey')
|
|
22
|
+
* @template TConfig Configuration object type for the provider
|
|
23
|
+
*/
|
|
24
|
+
export type ProviderSpec<
|
|
25
|
+
TType extends string,
|
|
26
|
+
TConfigMap extends { [K in TType]: unknown | undefined },
|
|
27
|
+
> = {
|
|
28
|
+
[K in TType]: undefined extends TConfigMap[K]
|
|
29
|
+
? { type: K }
|
|
30
|
+
: { type: K; config: TConfigMap[K] }
|
|
31
|
+
}[TType]
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Hosted wallet provider factory
|
|
35
|
+
* @description
|
|
36
|
+
* Factory contract used by registries to validate configuration and create
|
|
37
|
+
* concrete hosted wallet provider instances.
|
|
38
|
+
* @template TType Unique provider key
|
|
39
|
+
* @template TInstance Concrete provider instance produced by this factory
|
|
40
|
+
* @template TOptions Options type accepted by `validateOptions` and `create`
|
|
41
|
+
*/
|
|
42
|
+
export interface HostedProviderFactory<
|
|
43
|
+
TType extends string,
|
|
44
|
+
TInstance,
|
|
45
|
+
TOptions = unknown,
|
|
46
|
+
> {
|
|
47
|
+
type: TType
|
|
48
|
+
validateOptions(options: unknown): options is TOptions
|
|
49
|
+
create(deps: HostedProviderDeps, options: TOptions): TInstance
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Complete hosted wallet providers schema (environment-agnostic)
|
|
54
|
+
* @description
|
|
55
|
+
* Bundles provider type keys, concrete provider instances, creation configs,
|
|
56
|
+
* and `toActionsWallet` parameter types for a given environment (Node or React).
|
|
57
|
+
* This schema enables precise typing in `Actions` and registries without widening
|
|
58
|
+
* keys to generic `string`.
|
|
59
|
+
* @template ProviderTypes Union of provider keys for the environment
|
|
60
|
+
* @template ProviderInstanceMap Map of provider key to concrete instance
|
|
61
|
+
* @template ProviderConfigMap Map of provider key to factory config type
|
|
62
|
+
* @template ToActionsOptionsMap Map of provider key to `toActionsWallet` params
|
|
63
|
+
*/
|
|
64
|
+
export type HostedWalletProvidersSchema<
|
|
65
|
+
ProviderTypes extends string,
|
|
66
|
+
ProviderInstanceMap extends {
|
|
67
|
+
[K in ProviderTypes]: HostedWalletProvider<K, ToActionsOptionsMap>
|
|
68
|
+
},
|
|
69
|
+
ProviderConfigMap extends { [K in ProviderTypes]: unknown },
|
|
70
|
+
ToActionsOptionsMap extends { [K in ProviderTypes]: unknown },
|
|
71
|
+
> = {
|
|
72
|
+
providerTypes: ProviderTypes
|
|
73
|
+
providerInstances: ProviderInstanceMap
|
|
74
|
+
providerConfigs: ProviderConfigMap
|
|
75
|
+
providerToActionsOptions: ToActionsOptionsMap
|
|
76
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Address, LocalAccount } from 'viem'
|
|
2
|
+
|
|
3
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
+
import type { SmartWalletCreationResult } from '@/wallet/core/providers/smart/abstract/types/index.js'
|
|
5
|
+
import type { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWallet.js'
|
|
6
|
+
import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Base smart wallet provider interface
|
|
10
|
+
* @description Abstract interface for smart wallet providers.
|
|
11
|
+
*/
|
|
12
|
+
export abstract class SmartWalletProvider {
|
|
13
|
+
/**
|
|
14
|
+
* Create a new smart wallet instance
|
|
15
|
+
* @description Creates a new smart wallet and attempts to deploy it across all supported chains.
|
|
16
|
+
* The wallet address is deterministically calculated from signers and nonce. Deployment failures
|
|
17
|
+
* on individual chains do not prevent wallet creation - they are reported in the result.
|
|
18
|
+
* @param params - Wallet creation parameters
|
|
19
|
+
* @param params.signers - Array of wallet signers
|
|
20
|
+
* @param params.signer - Local account used for signing transactions
|
|
21
|
+
* @param params.nonce - Optional nonce for address generation (defaults to 0)
|
|
22
|
+
* @param params.deploymentChainIds - Optional chain IDs to deploy the wallet to.
|
|
23
|
+
* If not provided, the wallet will be deployed to all supported chains.
|
|
24
|
+
* @returns Promise resolving to deployment result containing:
|
|
25
|
+
* - `wallet`: The created SmartWallet instance
|
|
26
|
+
* - `deployments`: Array of deployment results with chainId, receipt, success flag, and error
|
|
27
|
+
*/
|
|
28
|
+
abstract createWallet(params: {
|
|
29
|
+
signer: LocalAccount
|
|
30
|
+
signers?: Signer[]
|
|
31
|
+
nonce?: bigint
|
|
32
|
+
deploymentChainIds?: SupportedChainId[]
|
|
33
|
+
}): Promise<SmartWalletCreationResult<SmartWallet>>
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get an existing smart wallet instance
|
|
37
|
+
* @description Creates a SmartWallet instance for an already deployed wallet.
|
|
38
|
+
* Use this when you know the wallet address and want to interact with it.
|
|
39
|
+
* @param params - Wallet retrieval parameters
|
|
40
|
+
* @param params.walletAddress - Address of the deployed smart wallet
|
|
41
|
+
* @param params.signer - Local account used for signing transactions
|
|
42
|
+
* @param params.signers - Array of wallet signers
|
|
43
|
+
* @returns SmartWallet instance for the existing wallet
|
|
44
|
+
*/
|
|
45
|
+
abstract getWallet(params: {
|
|
46
|
+
walletAddress: Address
|
|
47
|
+
signer: LocalAccount
|
|
48
|
+
signers?: Signer[]
|
|
49
|
+
}): Promise<SmartWallet>
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Get the predicted smart wallet address
|
|
53
|
+
* @description Calculates the deterministic address where a smart wallet would be deployed
|
|
54
|
+
* given the specified signers and nonce. Uses CREATE2 for address prediction.
|
|
55
|
+
* @param params - Address prediction parameters
|
|
56
|
+
* @param params.signers - Array of wallet signers
|
|
57
|
+
* @param params.nonce - Nonce for address generation (defaults to 0)
|
|
58
|
+
* @returns Promise resolving to the predicted wallet address
|
|
59
|
+
*/
|
|
60
|
+
abstract getWalletAddress(params: {
|
|
61
|
+
signers: Signer[]
|
|
62
|
+
nonce?: bigint
|
|
63
|
+
}): Promise<Address>
|
|
64
|
+
}
|