@eth-optimism/actions-sdk 0.0.2
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,28 @@
|
|
|
1
|
+
import type { Address, Hex } from 'viem'
|
|
2
|
+
import { pad } from 'viem'
|
|
3
|
+
import type { WebAuthnAccount } from 'viem/account-abstraction'
|
|
4
|
+
import { describe, expect, it } from 'vitest'
|
|
5
|
+
|
|
6
|
+
import { formatPublicKey } from '@/wallet/core/wallets/smart/default/utils/formatPublicKey.js'
|
|
7
|
+
|
|
8
|
+
describe('formatPublicKey', () => {
|
|
9
|
+
it('pads EOA address to 32 bytes', () => {
|
|
10
|
+
const eoa: Address = '0x7838d2724FC686813CAf81d4429beff1110c739a'
|
|
11
|
+
const result = formatPublicKey(eoa)
|
|
12
|
+
expect(result).toBe(pad(eoa))
|
|
13
|
+
// 32 bytes = 64 hex chars after 0x
|
|
14
|
+
expect((result as string).length).toBe(66)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
it('returns WebAuthn publicKey as-is', () => {
|
|
18
|
+
const publicKey64Bytes: Hex =
|
|
19
|
+
'0xe7575170745fe55d7a26190c6d5504743496c49498b129d2b3660da3697e81d4daebb2496f89aa4a05f1705e1d5d316153211c198f80d3100b51489bf4963f47'
|
|
20
|
+
const webAuthn: WebAuthnAccount = {
|
|
21
|
+
type: 'webAuthn',
|
|
22
|
+
publicKey: publicKey64Bytes,
|
|
23
|
+
} as unknown as WebAuthnAccount
|
|
24
|
+
|
|
25
|
+
const result = formatPublicKey(webAuthn.publicKey)
|
|
26
|
+
expect(result).toBe(publicKey64Bytes)
|
|
27
|
+
})
|
|
28
|
+
})
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Address, Hex, LocalAccount } from 'viem'
|
|
2
|
+
import type { WebAuthnAccount } from 'viem/account-abstraction'
|
|
3
|
+
import { describe, expect, it } from 'vitest'
|
|
4
|
+
|
|
5
|
+
import { getRandomAddress } from '@/test/utils.js'
|
|
6
|
+
import { getSignerPublicKey } from '@/wallet/core/wallets/smart/default/utils/getSignerPublicKey.js'
|
|
7
|
+
|
|
8
|
+
describe('getSignerPublicKey', () => {
|
|
9
|
+
it('returns the address itself when signer is a plain address string', () => {
|
|
10
|
+
const address = getRandomAddress()
|
|
11
|
+
const result = getSignerPublicKey(address)
|
|
12
|
+
expect(result).toBe(address)
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
it('returns the address when signer is a LocalAccount', () => {
|
|
16
|
+
const address = getRandomAddress()
|
|
17
|
+
const localAccount: LocalAccount = {
|
|
18
|
+
address,
|
|
19
|
+
type: 'local',
|
|
20
|
+
publicKey: '0xaabbccdd' as Hex,
|
|
21
|
+
} as unknown as LocalAccount
|
|
22
|
+
|
|
23
|
+
const result = getSignerPublicKey(localAccount)
|
|
24
|
+
expect(result).toBe(address)
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
it('returns the publicKey when signer is a WebAuthnAccount', () => {
|
|
28
|
+
const publicKey: Hex =
|
|
29
|
+
'0xe7575170745fe55d7a26190c6d5504743496c49498b129d2b3660da3697e81d4daebb2496f89aa4a05f1705e1d5d316153211c198f80d3100b51489bf4963f47'
|
|
30
|
+
const webAuthnAccount: WebAuthnAccount = {
|
|
31
|
+
type: 'webAuthn',
|
|
32
|
+
publicKey,
|
|
33
|
+
id: 'test-id',
|
|
34
|
+
} as unknown as WebAuthnAccount
|
|
35
|
+
|
|
36
|
+
const result = getSignerPublicKey(webAuthnAccount)
|
|
37
|
+
expect(result).toBe(publicKey)
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
it('throws error for invalid signer type', () => {
|
|
41
|
+
const invalidSigner = {
|
|
42
|
+
type: 'unknown',
|
|
43
|
+
address: '0x1234567890123456789012345678901234567890' as Address,
|
|
44
|
+
} as unknown as LocalAccount
|
|
45
|
+
|
|
46
|
+
expect(() => getSignerPublicKey(invalidSigner)).toThrow(
|
|
47
|
+
'invalid signer type',
|
|
48
|
+
)
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
it('handles different address formats correctly', () => {
|
|
52
|
+
const checksummedAddress: Address =
|
|
53
|
+
'0x7838d2724FC686813CAf81d4429beff1110c739a'
|
|
54
|
+
const lowercaseAddress: Address =
|
|
55
|
+
'0x7838d2724fc686813caf81d4429beff1110c739a'
|
|
56
|
+
|
|
57
|
+
expect(getSignerPublicKey(checksummedAddress)).toBe(checksummedAddress)
|
|
58
|
+
expect(getSignerPublicKey(lowercaseAddress)).toBe(lowercaseAddress)
|
|
59
|
+
})
|
|
60
|
+
})
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getAddress, type LocalAccount } from 'viem'
|
|
2
|
+
|
|
3
|
+
import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Find the index of a signer in the signers array
|
|
7
|
+
* @description Searches through the signers array to find the index where the signer matches.
|
|
8
|
+
* We only support signer type of LocalAccount for now.
|
|
9
|
+
* @param signers - Array of wallet signers (addresses, LocalAccounts, or WebAuthn accounts)
|
|
10
|
+
* @param signer - The signer to find in the signers array
|
|
11
|
+
* @returns The index of the signer in the signers array
|
|
12
|
+
*/
|
|
13
|
+
export function findSignerInArray(
|
|
14
|
+
signers: Signer[],
|
|
15
|
+
signer: LocalAccount,
|
|
16
|
+
): number {
|
|
17
|
+
return signers.findIndex((signerEntry) => {
|
|
18
|
+
// we only support signer type of LocalAccount for now
|
|
19
|
+
if (typeof signerEntry === 'string') {
|
|
20
|
+
// EOA address comparison
|
|
21
|
+
return getAddress(signerEntry) === getAddress(signer.address)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (signerEntry.type === 'local') {
|
|
25
|
+
return getAddress(signerEntry.address) === getAddress(signer.address)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return false
|
|
29
|
+
})
|
|
30
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { Client, Hex } from 'viem'
|
|
2
|
+
import { readContract } from 'viem/actions'
|
|
3
|
+
|
|
4
|
+
import { smartWalletAbi } from '@/wallet/core/wallets/smart/default/constants/index.js'
|
|
5
|
+
import { formatPublicKey } from '@/wallet/core/wallets/smart/default/utils/formatPublicKey.js'
|
|
6
|
+
|
|
7
|
+
type FindSignerIndexOnChainParams = {
|
|
8
|
+
/**
|
|
9
|
+
* The address of the account to get the owner index for
|
|
10
|
+
*/
|
|
11
|
+
address: `0x${string}`
|
|
12
|
+
/**
|
|
13
|
+
* The client to use to get the code and read the contract
|
|
14
|
+
*/
|
|
15
|
+
client: Client
|
|
16
|
+
/**
|
|
17
|
+
* The public key of the owner
|
|
18
|
+
*/
|
|
19
|
+
signerPublicKey: Hex
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Find the index of a signer in a smart wallet
|
|
24
|
+
* @description Iterates over the wallet's owner slots from highest to lowest index
|
|
25
|
+
* (using the contract's `nextOwnerIndex` and `ownerAtIndex`) to locate the provided signer.
|
|
26
|
+
* The signer may be an EOA address or a WebAuthn account; in both cases it is normalized via
|
|
27
|
+
* {@link formatPublicKey} to the 32-byte form used by the contract for comparisons.
|
|
28
|
+
* Returns the owner's index if found, otherwise -1.
|
|
29
|
+
* @param address - Address of the smart wallet contract to inspect
|
|
30
|
+
* @param client - Public client used to perform contract reads
|
|
31
|
+
* @param signerPublicKey - Signer public key to search for (EOA `Address` or `WebAuthnAccount`)
|
|
32
|
+
* @returns Promise that resolves to the 0-based signer index, or -1 if not found
|
|
33
|
+
*/
|
|
34
|
+
export async function findSignerIndexOnChain({
|
|
35
|
+
address,
|
|
36
|
+
client,
|
|
37
|
+
signerPublicKey,
|
|
38
|
+
}: FindSignerIndexOnChainParams): Promise<number> {
|
|
39
|
+
const nextOwnerIndex = await readContract(client, {
|
|
40
|
+
address,
|
|
41
|
+
abi: smartWalletAbi,
|
|
42
|
+
functionName: 'nextOwnerIndex',
|
|
43
|
+
})
|
|
44
|
+
const formattedSignerPublicKey = formatPublicKey(signerPublicKey)
|
|
45
|
+
|
|
46
|
+
// Iterate from highest index down and return early when found
|
|
47
|
+
for (let i = Number(nextOwnerIndex) - 1; i >= 0; i--) {
|
|
48
|
+
const signerAtIndex = await readContract(client, {
|
|
49
|
+
address,
|
|
50
|
+
abi: smartWalletAbi,
|
|
51
|
+
functionName: 'ownerAtIndex',
|
|
52
|
+
args: [BigInt(i)],
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
// Skip empty slots (deleted owners)
|
|
56
|
+
if (!signerAtIndex || signerAtIndex === '0x') continue
|
|
57
|
+
|
|
58
|
+
if (
|
|
59
|
+
signerAtIndex.toLowerCase() === formattedSignerPublicKey.toLowerCase()
|
|
60
|
+
) {
|
|
61
|
+
return i
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return -1
|
|
66
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Address, Hex } from 'viem'
|
|
2
|
+
import { isAddress, pad } from 'viem'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Formats 20 byte addresses to 32 byte public keys. Contract uses 32 byte keys for owners.
|
|
6
|
+
* @param publicKey - The public key to format
|
|
7
|
+
* @returns The formatted public key
|
|
8
|
+
*/
|
|
9
|
+
export function formatPublicKey(publicKey: Hex | Address): Hex {
|
|
10
|
+
if (isAddress(publicKey)) {
|
|
11
|
+
return pad(publicKey)
|
|
12
|
+
}
|
|
13
|
+
return publicKey
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Hex } from 'viem'
|
|
2
|
+
|
|
3
|
+
import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Extracts the public key or identifier from a smart wallet signer.
|
|
7
|
+
*
|
|
8
|
+
* Returns the appropriate public identifier for each signer type:
|
|
9
|
+
* - Address: returns the address itself
|
|
10
|
+
* - LocalAccount: returns the account's address
|
|
11
|
+
* - WebAuthnAccount: returns the P256 public key
|
|
12
|
+
*/
|
|
13
|
+
export function getSignerPublicKey(signer: Signer): Hex {
|
|
14
|
+
if (typeof signer === 'string') return signer
|
|
15
|
+
if (signer.type === 'webAuthn') return signer.publicKey
|
|
16
|
+
if (signer.type === 'local') return signer.address
|
|
17
|
+
throw new Error('invalid signer type')
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WaitForUserOperationReceiptReturnType } from 'viem/account-abstraction'
|
|
2
|
+
|
|
3
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
+
|
|
5
|
+
export class SmartWalletDeploymentError extends Error {
|
|
6
|
+
chainId: SupportedChainId
|
|
7
|
+
receipt?: WaitForUserOperationReceiptReturnType
|
|
8
|
+
constructor(
|
|
9
|
+
message: string,
|
|
10
|
+
chainId: SupportedChainId,
|
|
11
|
+
receipt?: WaitForUserOperationReceiptReturnType,
|
|
12
|
+
) {
|
|
13
|
+
super(message)
|
|
14
|
+
this.name = 'SmartWalletDeploymentError'
|
|
15
|
+
this.chainId = chainId
|
|
16
|
+
this.receipt = receipt
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
2
|
+
export type {
|
|
3
|
+
NodeHostedWalletProvidersSchema,
|
|
4
|
+
NodeOptionsMap,
|
|
5
|
+
NodeProviderTypes,
|
|
6
|
+
} from '@/wallet/node/providers/hosted/types/index.js'
|
|
7
|
+
export { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { PrivyClient } from '@privy-io/server-auth'
|
|
2
|
+
import type { LocalAccount } from 'viem'
|
|
3
|
+
import { getAddress } from 'viem'
|
|
4
|
+
|
|
5
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
|
+
import type { LendConfig, LendProvider } from '@/types/lend/index.js'
|
|
7
|
+
import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
8
|
+
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
9
|
+
import type {
|
|
10
|
+
NodeToActionsOptionsMap,
|
|
11
|
+
PrivyHostedWalletToActionsWalletOptions,
|
|
12
|
+
} from '@/wallet/node/providers/hosted/types/index.js'
|
|
13
|
+
import { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
|
|
14
|
+
import { createSigner } from '@/wallet/node/wallets/hosted/privy/utils/createSigner.js'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Privy wallet provider implementation
|
|
18
|
+
* @description Wallet provider implementation using Privy service
|
|
19
|
+
*/
|
|
20
|
+
export class PrivyHostedWalletProvider extends HostedWalletProvider<
|
|
21
|
+
'privy',
|
|
22
|
+
NodeToActionsOptionsMap
|
|
23
|
+
> {
|
|
24
|
+
/**
|
|
25
|
+
* Create a new Privy wallet provider
|
|
26
|
+
* @param privyClient - Privy client instance
|
|
27
|
+
*/
|
|
28
|
+
constructor(
|
|
29
|
+
private readonly privyClient: PrivyClient,
|
|
30
|
+
chainManager: ChainManager,
|
|
31
|
+
lendProvider?: LendProvider<LendConfig>,
|
|
32
|
+
) {
|
|
33
|
+
super(chainManager, lendProvider)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async toActionsWallet(
|
|
37
|
+
params: PrivyHostedWalletToActionsWalletOptions,
|
|
38
|
+
): Promise<Wallet> {
|
|
39
|
+
return PrivyWallet.create({
|
|
40
|
+
privyClient: this.privyClient,
|
|
41
|
+
walletId: params.walletId,
|
|
42
|
+
address: getAddress(params.address),
|
|
43
|
+
chainManager: this.chainManager,
|
|
44
|
+
lendProvider: this.lendProvider,
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Create a LocalAccount from this Privy wallet
|
|
50
|
+
* @description Converts the Privy wallet into a viem-compatible LocalAccount that can sign
|
|
51
|
+
* messages and transactions. The returned account uses Privy's signing infrastructure
|
|
52
|
+
* under the hood while providing a standard viem interface.
|
|
53
|
+
* @param params - Privy configuration for the signer
|
|
54
|
+
* @param params.privyClient - Privy client instance
|
|
55
|
+
* @param params.walletId - Privy wallet identifier
|
|
56
|
+
* @param params.address - Ethereum address of the wallet
|
|
57
|
+
* @returns Promise resolving to a LocalAccount configured for signing operations
|
|
58
|
+
* @throws Error if wallet retrieval fails or signing operations are not supported
|
|
59
|
+
*/
|
|
60
|
+
async createSigner(
|
|
61
|
+
params: NodeToActionsOptionsMap['privy'],
|
|
62
|
+
): Promise<LocalAccount> {
|
|
63
|
+
return createSigner({ ...params, privyClient: this.privyClient })
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { Address } from 'viem'
|
|
2
|
+
import { getAddress } from 'viem'
|
|
3
|
+
import { unichain } from 'viem/chains'
|
|
4
|
+
import { describe, expect, it, vi } from 'vitest'
|
|
5
|
+
|
|
6
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
+
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
8
|
+
import { createMockPrivyClient } from '@/test/MockPrivyClient.js'
|
|
9
|
+
import { getRandomAddress } from '@/test/utils.js'
|
|
10
|
+
import type { LendConfig, LendProvider } from '@/types/lend/index.js'
|
|
11
|
+
import { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
12
|
+
import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
13
|
+
import { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
|
|
14
|
+
|
|
15
|
+
describe('PrivyHostedWalletProvider', () => {
|
|
16
|
+
const mockChainManager = new MockChainManager({
|
|
17
|
+
supportedChains: [unichain.id],
|
|
18
|
+
}) as unknown as ChainManager
|
|
19
|
+
|
|
20
|
+
describe('toActionsWallet', () => {
|
|
21
|
+
it('toActionsWallet creates an ActionsWallet with correct address and signer', async () => {
|
|
22
|
+
const privy = createMockPrivyClient('app', 'secret')
|
|
23
|
+
const provider = new PrivyHostedWalletProvider(privy, mockChainManager)
|
|
24
|
+
|
|
25
|
+
const hostedWallet = await privy.walletApi.createWallet({
|
|
26
|
+
chainType: 'ethereum',
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
const actionsWallet = await provider.toActionsWallet({
|
|
30
|
+
walletId: hostedWallet.id,
|
|
31
|
+
address: hostedWallet.address as Address,
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
expect(actionsWallet).toBeInstanceOf(Wallet)
|
|
35
|
+
expect(actionsWallet.address).toBe(hostedWallet.address)
|
|
36
|
+
expect(actionsWallet.signer.address).toBe(hostedWallet.address)
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('forwards params to PrivyWallet.create', async () => {
|
|
40
|
+
const privy = createMockPrivyClient('app', 'secret')
|
|
41
|
+
const provider = new PrivyHostedWalletProvider(privy, mockChainManager)
|
|
42
|
+
const spy = vi.spyOn(PrivyWallet, 'create')
|
|
43
|
+
|
|
44
|
+
const id = 'mock-wallet-123'
|
|
45
|
+
const addr = getRandomAddress().toLowerCase()
|
|
46
|
+
|
|
47
|
+
await provider.toActionsWallet({ walletId: id, address: addr as Address })
|
|
48
|
+
|
|
49
|
+
expect(spy).toHaveBeenCalledWith(
|
|
50
|
+
expect.objectContaining({
|
|
51
|
+
privyClient: privy,
|
|
52
|
+
walletId: id,
|
|
53
|
+
address: getAddress(addr),
|
|
54
|
+
chainManager: mockChainManager,
|
|
55
|
+
}),
|
|
56
|
+
)
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
it('throws on invalid address', async () => {
|
|
60
|
+
const privy = createMockPrivyClient('app', 'secret')
|
|
61
|
+
const provider = new PrivyHostedWalletProvider(privy, mockChainManager)
|
|
62
|
+
|
|
63
|
+
await expect(
|
|
64
|
+
provider.toActionsWallet({ walletId: 'id', address: '0x123' }),
|
|
65
|
+
).rejects.toBeTruthy()
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('forwards lendProvider when provided to constructor', async () => {
|
|
69
|
+
const privy = createMockPrivyClient('app', 'secret')
|
|
70
|
+
const mockLendProvider = {} as LendProvider<LendConfig>
|
|
71
|
+
const provider = new PrivyHostedWalletProvider(
|
|
72
|
+
privy,
|
|
73
|
+
mockChainManager,
|
|
74
|
+
mockLendProvider,
|
|
75
|
+
)
|
|
76
|
+
const spy = vi.spyOn(PrivyWallet, 'create')
|
|
77
|
+
|
|
78
|
+
const id = 'mock-wallet-123'
|
|
79
|
+
const addr = getRandomAddress().toLowerCase()
|
|
80
|
+
|
|
81
|
+
await provider.toActionsWallet({
|
|
82
|
+
walletId: id,
|
|
83
|
+
address: addr as Address,
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
expect(spy).toHaveBeenCalledWith(
|
|
87
|
+
expect.objectContaining({
|
|
88
|
+
lendProvider: mockLendProvider,
|
|
89
|
+
}),
|
|
90
|
+
)
|
|
91
|
+
})
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
describe('createSigner', () => {
|
|
95
|
+
it('should create a LocalAccount with correct address', async () => {
|
|
96
|
+
const privy = createMockPrivyClient('app', 'secret')
|
|
97
|
+
const provider = new PrivyHostedWalletProvider(privy, mockChainManager)
|
|
98
|
+
|
|
99
|
+
const hostedWallet = await privy.walletApi.createWallet({
|
|
100
|
+
chainType: 'ethereum',
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
const signer = await provider.createSigner({
|
|
104
|
+
walletId: hostedWallet.id,
|
|
105
|
+
address: hostedWallet.address as Address,
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
expect(signer.address).toBe(hostedWallet.address)
|
|
109
|
+
expect(signer.type).toBe('local')
|
|
110
|
+
})
|
|
111
|
+
})
|
|
112
|
+
})
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { HostedWalletProviderRegistry } from '@/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js'
|
|
2
|
+
import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
3
|
+
import { TurnkeyHostedWalletProvider } from '@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
|
|
4
|
+
import type {
|
|
5
|
+
NodeHostedProviderInstanceMap,
|
|
6
|
+
NodeOptionsMap,
|
|
7
|
+
NodeProviderTypes,
|
|
8
|
+
} from '@/wallet/node/providers/hosted/types/index.js'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Node hosted wallet provider registry
|
|
12
|
+
* @description
|
|
13
|
+
* Environment-scoped registry that binds Node/server provider keys to their
|
|
14
|
+
* factory implementations. This ensures browser-only hosted providers are
|
|
15
|
+
* discoverable at runtime without importing Node-only code. The registry
|
|
16
|
+
* pre-registers 'privy' and 'turnkey' providers and can be extended with
|
|
17
|
+
* additional providers via `register`.
|
|
18
|
+
*/
|
|
19
|
+
export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegistry<
|
|
20
|
+
NodeHostedProviderInstanceMap,
|
|
21
|
+
NodeOptionsMap,
|
|
22
|
+
NodeProviderTypes
|
|
23
|
+
> {
|
|
24
|
+
public constructor() {
|
|
25
|
+
super()
|
|
26
|
+
this.register<'privy'>({
|
|
27
|
+
type: 'privy',
|
|
28
|
+
validateOptions(options): options is NodeOptionsMap['privy'] {
|
|
29
|
+
return Boolean((options as NodeOptionsMap['privy'])?.privyClient)
|
|
30
|
+
},
|
|
31
|
+
create({ chainManager, lendProvider }, options) {
|
|
32
|
+
return new PrivyHostedWalletProvider(
|
|
33
|
+
options.privyClient,
|
|
34
|
+
chainManager,
|
|
35
|
+
lendProvider,
|
|
36
|
+
)
|
|
37
|
+
},
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
this.register<'turnkey'>({
|
|
41
|
+
type: 'turnkey',
|
|
42
|
+
validateOptions(options): options is NodeOptionsMap['turnkey'] {
|
|
43
|
+
const o = options as NodeOptionsMap['turnkey']
|
|
44
|
+
return Boolean(o?.client)
|
|
45
|
+
},
|
|
46
|
+
create({ chainManager, lendProvider }, options) {
|
|
47
|
+
return new TurnkeyHostedWalletProvider(
|
|
48
|
+
options.client,
|
|
49
|
+
chainManager,
|
|
50
|
+
lendProvider,
|
|
51
|
+
)
|
|
52
|
+
},
|
|
53
|
+
})
|
|
54
|
+
}
|
|
55
|
+
}
|
package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { PrivyClient } from '@privy-io/server-auth'
|
|
2
|
+
import type { TurnkeyClient } from '@turnkey/http'
|
|
3
|
+
import { unichain } from 'viem/chains'
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
5
|
+
|
|
6
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
+
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
8
|
+
import { createMockPrivyClient } from '@/test/MockPrivyClient.js'
|
|
9
|
+
import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
10
|
+
import { NodeHostedWalletProviderRegistry } from '@/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js'
|
|
11
|
+
import { TurnkeyHostedWalletProvider } from '@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
|
|
12
|
+
import type { NodeOptionsMap } from '@/wallet/node/providers/hosted/types/index.js'
|
|
13
|
+
|
|
14
|
+
describe('NodeHostedWalletProviderRegistry', () => {
|
|
15
|
+
const mockChainManager = new MockChainManager({
|
|
16
|
+
supportedChains: [unichain.id],
|
|
17
|
+
}) as unknown as ChainManager
|
|
18
|
+
let mockPrivyClient: PrivyClient
|
|
19
|
+
const mockTurnkeyClient = {} as unknown as TurnkeyClient
|
|
20
|
+
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
mockPrivyClient = createMockPrivyClient('test-app-id', 'test-app-secret')
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
vi.clearAllMocks()
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('returns privy factory and validates options', () => {
|
|
30
|
+
const registry = new NodeHostedWalletProviderRegistry()
|
|
31
|
+
const factory = registry.getFactory('privy')
|
|
32
|
+
|
|
33
|
+
expect(factory.type).toBe('privy')
|
|
34
|
+
expect(
|
|
35
|
+
factory.validateOptions?.({
|
|
36
|
+
privyClient: mockPrivyClient,
|
|
37
|
+
} as NodeOptionsMap['privy']),
|
|
38
|
+
).toBe(true)
|
|
39
|
+
// Invalid shape should not pass validation
|
|
40
|
+
expect(factory.validateOptions?.({})).toBe(false)
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('creates a PrivyHostedWalletProvider instance', () => {
|
|
44
|
+
const registry = new NodeHostedWalletProviderRegistry()
|
|
45
|
+
const factory = registry.getFactory('privy')
|
|
46
|
+
|
|
47
|
+
const provider = factory.create({ chainManager: mockChainManager }, {
|
|
48
|
+
privyClient: mockPrivyClient,
|
|
49
|
+
} as NodeOptionsMap['privy'])
|
|
50
|
+
|
|
51
|
+
expect(provider).toBeInstanceOf(PrivyHostedWalletProvider)
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
it('returns turnkey factory and validates options', () => {
|
|
55
|
+
const registry = new NodeHostedWalletProviderRegistry()
|
|
56
|
+
const factory = registry.getFactory('turnkey')
|
|
57
|
+
|
|
58
|
+
expect(factory.type).toBe('turnkey')
|
|
59
|
+
expect(
|
|
60
|
+
factory.validateOptions?.({
|
|
61
|
+
client: mockTurnkeyClient,
|
|
62
|
+
} as NodeOptionsMap['turnkey']),
|
|
63
|
+
).toBe(true)
|
|
64
|
+
// Invalid shape should not pass validation
|
|
65
|
+
expect(factory.validateOptions?.({})).toBe(false)
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('creates a TurnkeyHostedWalletProvider instance', () => {
|
|
69
|
+
const registry = new NodeHostedWalletProviderRegistry()
|
|
70
|
+
const factory = registry.getFactory('turnkey')
|
|
71
|
+
|
|
72
|
+
const provider = factory.create(
|
|
73
|
+
{ chainManager: mockChainManager },
|
|
74
|
+
{
|
|
75
|
+
client: mockTurnkeyClient,
|
|
76
|
+
},
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
expect(provider).toBeInstanceOf(TurnkeyHostedWalletProvider)
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
it('throws for unknown provider type', () => {
|
|
83
|
+
const registry = new NodeHostedWalletProviderRegistry()
|
|
84
|
+
// @ts-expect-error: testing runtime error for unknown type
|
|
85
|
+
expect(() => registry.getFactory('unknown')).toThrow(
|
|
86
|
+
'Unknown hosted wallet provider: unknown',
|
|
87
|
+
)
|
|
88
|
+
})
|
|
89
|
+
})
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { TurnkeySDKClientBase } from '@turnkey/core'
|
|
2
|
+
import type { TurnkeyClient as TurnkeyHttpClient } from '@turnkey/http'
|
|
3
|
+
import type { TurnkeyServerClient } from '@turnkey/sdk-server'
|
|
4
|
+
import type { LocalAccount } from 'viem'
|
|
5
|
+
|
|
6
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
+
import type { LendConfig, LendProvider } from '@/types/lend/index.js'
|
|
8
|
+
import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
9
|
+
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
10
|
+
import type { NodeToActionsOptionsMap } from '@/wallet/node/providers/hosted/types/index.js'
|
|
11
|
+
import { TurnkeyWallet } from '@/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js'
|
|
12
|
+
import { createSigner } from '@/wallet/node/wallets/hosted/turnkey/utils/createSigner.js'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Turnkey wallet provider implementation
|
|
16
|
+
* @description Hosted wallet provider that wraps Turnkey's signing infrastructure
|
|
17
|
+
* and exposes an Actions-compatible wallet. This provider is intended for Node
|
|
18
|
+
* environments where the Turnkey client (HTTP, server, or core SDK) and
|
|
19
|
+
* organization context are provided at construction time.
|
|
20
|
+
*/
|
|
21
|
+
export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
|
|
22
|
+
'turnkey',
|
|
23
|
+
NodeToActionsOptionsMap
|
|
24
|
+
> {
|
|
25
|
+
/**
|
|
26
|
+
* Create a new Turnkey wallet provider
|
|
27
|
+
* @param client - Turnkey client instance (HTTP, server, or core SDK base)
|
|
28
|
+
* @param chainManager - Chain manager used to resolve chains and RPC transports
|
|
29
|
+
*/
|
|
30
|
+
constructor(
|
|
31
|
+
private readonly client:
|
|
32
|
+
| TurnkeyHttpClient
|
|
33
|
+
| TurnkeyServerClient
|
|
34
|
+
| TurnkeySDKClientBase,
|
|
35
|
+
chainManager: ChainManager,
|
|
36
|
+
lendProvider?: LendProvider<LendConfig>,
|
|
37
|
+
) {
|
|
38
|
+
super(chainManager, lendProvider)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Convert a Turnkey hosted wallet context into an Actions wallet
|
|
43
|
+
* @description Creates a `TurnkeyWallet` configured with the provider's Turnkey
|
|
44
|
+
* client and organization.
|
|
45
|
+
* @param params - Options for creating the Actions wallet from Turnkey context
|
|
46
|
+
* @param params.signWith - Wallet account address, private key address, or private key ID
|
|
47
|
+
* @param params.ethereumAddress - Ethereum address to use for this account, in the case that a private key ID is used to sign.
|
|
48
|
+
* @returns Promise resolving to an Actions-compatible wallet instance
|
|
49
|
+
*/
|
|
50
|
+
async toActionsWallet(
|
|
51
|
+
params: NodeToActionsOptionsMap['turnkey'],
|
|
52
|
+
): Promise<Wallet> {
|
|
53
|
+
return TurnkeyWallet.create({
|
|
54
|
+
client: this.client,
|
|
55
|
+
organizationId: params.organizationId,
|
|
56
|
+
signWith: params.signWith,
|
|
57
|
+
ethereumAddress: params.ethereumAddress,
|
|
58
|
+
chainManager: this.chainManager,
|
|
59
|
+
lendProvider: this.lendProvider,
|
|
60
|
+
})
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Create a viem LocalAccount signer from Turnkey credentials
|
|
65
|
+
* @description Produces a signing account backed by Turnkey without wrapping
|
|
66
|
+
* it in a full Actions wallet. This is useful when you need to pass the signer
|
|
67
|
+
* into an Actions smart wallet as a signer, for lower-level viem operations, or
|
|
68
|
+
* for passing to other libraries that accept a viem `LocalAccount`.
|
|
69
|
+
* @param params - Turnkey configuration for the signer
|
|
70
|
+
* @param params.client - Turnkey client instance
|
|
71
|
+
* @param params.organizationId - Turnkey organization ID that owns the signing key
|
|
72
|
+
* @param params.signWith - Wallet account address, private key address, or private key ID
|
|
73
|
+
* @param params.ethereumAddress - Optional Ethereum address (recommended for passkey clients to avoid extra prompts)
|
|
74
|
+
* @returns Promise resolving to a viem `LocalAccount` with Turnkey as the signer backend
|
|
75
|
+
*/
|
|
76
|
+
async createSigner(
|
|
77
|
+
params: NodeToActionsOptionsMap['turnkey'],
|
|
78
|
+
): Promise<LocalAccount> {
|
|
79
|
+
return createSigner({
|
|
80
|
+
...params,
|
|
81
|
+
client: this.client,
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
}
|