@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.
Files changed (648) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +106 -0
  3. package/dist/actions.d.ts +58 -0
  4. package/dist/actions.d.ts.map +1 -0
  5. package/dist/actions.js +88 -0
  6. package/dist/actions.js.map +1 -0
  7. package/dist/actions.test.d.ts +2 -0
  8. package/dist/actions.test.d.ts.map +1 -0
  9. package/dist/actions.test.js +620 -0
  10. package/dist/actions.test.js.map +1 -0
  11. package/dist/constants/assets.d.ts +3 -0
  12. package/dist/constants/assets.d.ts.map +1 -0
  13. package/dist/constants/assets.js +16 -0
  14. package/dist/constants/assets.js.map +1 -0
  15. package/dist/constants/config.d.ts +10 -0
  16. package/dist/constants/config.d.ts.map +1 -0
  17. package/dist/constants/config.js +10 -0
  18. package/dist/constants/config.js.map +1 -0
  19. package/dist/constants/supportedChains.d.ts +3 -0
  20. package/dist/constants/supportedChains.d.ts.map +1 -0
  21. package/dist/constants/supportedChains.js +8 -0
  22. package/dist/constants/supportedChains.js.map +1 -0
  23. package/dist/core/asset/__mocks__/mockAsset.d.ts +6 -0
  24. package/dist/core/asset/__mocks__/mockAsset.d.ts.map +1 -0
  25. package/dist/core/asset/__mocks__/mockAsset.js +12 -0
  26. package/dist/core/asset/__mocks__/mockAsset.js.map +1 -0
  27. package/dist/core/error/errors.d.ts +19 -0
  28. package/dist/core/error/errors.d.ts.map +1 -0
  29. package/dist/core/error/errors.js +22 -0
  30. package/dist/core/error/errors.js.map +1 -0
  31. package/dist/core/utils/__tests__/retryOnStaleRead.spec.d.ts +2 -0
  32. package/dist/core/utils/__tests__/retryOnStaleRead.spec.d.ts.map +1 -0
  33. package/dist/core/utils/__tests__/retryOnStaleRead.spec.js +41 -0
  34. package/dist/core/utils/__tests__/retryOnStaleRead.spec.js.map +1 -0
  35. package/dist/core/utils/retryOnStaleRead.d.ts +14 -0
  36. package/dist/core/utils/retryOnStaleRead.d.ts.map +1 -0
  37. package/dist/core/utils/retryOnStaleRead.js +29 -0
  38. package/dist/core/utils/retryOnStaleRead.js.map +1 -0
  39. package/dist/index.d.ts +11 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +8 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/index.node.d.ts +5 -0
  44. package/dist/index.node.d.ts.map +1 -0
  45. package/dist/index.node.js +4 -0
  46. package/dist/index.node.js.map +1 -0
  47. package/dist/index.react.d.ts +5 -0
  48. package/dist/index.react.d.ts.map +1 -0
  49. package/dist/index.react.js +4 -0
  50. package/dist/index.react.js.map +1 -0
  51. package/dist/lend/__mocks__/mockLendTransaction.d.ts +22 -0
  52. package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +1 -0
  53. package/dist/lend/__mocks__/mockLendTransaction.js +32 -0
  54. package/dist/lend/__mocks__/mockLendTransaction.js.map +1 -0
  55. package/dist/lend/core/LendProvider.d.ts +122 -0
  56. package/dist/lend/core/LendProvider.d.ts.map +1 -0
  57. package/dist/lend/core/LendProvider.js +183 -0
  58. package/dist/lend/core/LendProvider.js.map +1 -0
  59. package/dist/lend/core/__tests__/LendProvider.test.d.ts +2 -0
  60. package/dist/lend/core/__tests__/LendProvider.test.d.ts.map +1 -0
  61. package/dist/lend/core/__tests__/LendProvider.test.js +247 -0
  62. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -0
  63. package/dist/lend/index.d.ts +3 -0
  64. package/dist/lend/index.d.ts.map +1 -0
  65. package/dist/lend/index.js +3 -0
  66. package/dist/lend/index.js.map +1 -0
  67. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +15 -0
  68. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -0
  69. package/dist/lend/namespaces/ActionsLendNamespace.js +17 -0
  70. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -0
  71. package/dist/lend/namespaces/WalletLendNamespace.d.ts +36 -0
  72. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -0
  73. package/dist/lend/namespaces/WalletLendNamespace.js +68 -0
  74. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -0
  75. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.d.ts +2 -0
  76. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.d.ts.map +1 -0
  77. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +41 -0
  78. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -0
  79. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.d.ts +2 -0
  80. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.d.ts.map +1 -0
  81. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +188 -0
  82. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -0
  83. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +55 -0
  84. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -0
  85. package/dist/lend/providers/morpho/MorphoLendProvider.js +193 -0
  86. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -0
  87. package/dist/lend/providers/morpho/__mocks__/mockVault.d.ts +21 -0
  88. package/dist/lend/providers/morpho/__mocks__/mockVault.d.ts.map +1 -0
  89. package/dist/lend/providers/morpho/__mocks__/mockVault.js +27 -0
  90. package/dist/lend/providers/morpho/__mocks__/mockVault.js.map +1 -0
  91. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.d.ts +2 -0
  92. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.d.ts.map +1 -0
  93. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +259 -0
  94. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -0
  95. package/dist/lend/providers/morpho/__tests__/api.test.d.ts +2 -0
  96. package/dist/lend/providers/morpho/__tests__/api.test.d.ts.map +1 -0
  97. package/dist/lend/providers/morpho/__tests__/api.test.js +66 -0
  98. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -0
  99. package/dist/lend/providers/morpho/__tests__/sdk.test.d.ts +2 -0
  100. package/dist/lend/providers/morpho/__tests__/sdk.test.d.ts.map +1 -0
  101. package/dist/lend/providers/morpho/__tests__/sdk.test.js +332 -0
  102. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -0
  103. package/dist/lend/providers/morpho/api.d.ts +14 -0
  104. package/dist/lend/providers/morpho/api.d.ts.map +1 -0
  105. package/dist/lend/providers/morpho/api.js +76 -0
  106. package/dist/lend/providers/morpho/api.js.map +1 -0
  107. package/dist/lend/providers/morpho/sdk.d.ts +61 -0
  108. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -0
  109. package/dist/lend/providers/morpho/sdk.js +300 -0
  110. package/dist/lend/providers/morpho/sdk.js.map +1 -0
  111. package/dist/nodeActionsFactory.d.ts +19 -0
  112. package/dist/nodeActionsFactory.d.ts.map +1 -0
  113. package/dist/nodeActionsFactory.js +17 -0
  114. package/dist/nodeActionsFactory.js.map +1 -0
  115. package/dist/reactActionsFactory.d.ts +19 -0
  116. package/dist/reactActionsFactory.d.ts.map +1 -0
  117. package/dist/reactActionsFactory.js +17 -0
  118. package/dist/reactActionsFactory.js.map +1 -0
  119. package/dist/services/ChainManager.d.ts +90 -0
  120. package/dist/services/ChainManager.d.ts.map +1 -0
  121. package/dist/services/ChainManager.js +183 -0
  122. package/dist/services/ChainManager.js.map +1 -0
  123. package/dist/services/ChainManager.spec.d.ts +2 -0
  124. package/dist/services/ChainManager.spec.d.ts.map +1 -0
  125. package/dist/services/ChainManager.spec.js +260 -0
  126. package/dist/services/ChainManager.spec.js.map +1 -0
  127. package/dist/services/tokenBalance.d.ts +15 -0
  128. package/dist/services/tokenBalance.d.ts.map +1 -0
  129. package/dist/services/tokenBalance.js +82 -0
  130. package/dist/services/tokenBalance.js.map +1 -0
  131. package/dist/services/tokenBalance.spec.d.ts +2 -0
  132. package/dist/services/tokenBalance.spec.d.ts.map +1 -0
  133. package/dist/services/tokenBalance.spec.js +73 -0
  134. package/dist/services/tokenBalance.spec.js.map +1 -0
  135. package/dist/supported/tokens.d.ts +25 -0
  136. package/dist/supported/tokens.d.ts.map +1 -0
  137. package/dist/supported/tokens.js +88 -0
  138. package/dist/supported/tokens.js.map +1 -0
  139. package/dist/test/MockAssets.d.ts +10 -0
  140. package/dist/test/MockAssets.d.ts.map +1 -0
  141. package/dist/test/MockAssets.js +29 -0
  142. package/dist/test/MockAssets.js.map +1 -0
  143. package/dist/test/MockChainManager.d.ts +31 -0
  144. package/dist/test/MockChainManager.d.ts.map +1 -0
  145. package/dist/test/MockChainManager.js +92 -0
  146. package/dist/test/MockChainManager.js.map +1 -0
  147. package/dist/test/MockLendProvider.d.ts +68 -0
  148. package/dist/test/MockLendProvider.d.ts.map +1 -0
  149. package/dist/test/MockLendProvider.js +258 -0
  150. package/dist/test/MockLendProvider.js.map +1 -0
  151. package/dist/test/MockMarkets.d.ts +15 -0
  152. package/dist/test/MockMarkets.d.ts.map +1 -0
  153. package/dist/test/MockMarkets.js +26 -0
  154. package/dist/test/MockMarkets.js.map +1 -0
  155. package/dist/test/MockPrivyClient.d.ts +66 -0
  156. package/dist/test/MockPrivyClient.d.ts.map +1 -0
  157. package/dist/test/MockPrivyClient.js +93 -0
  158. package/dist/test/MockPrivyClient.js.map +1 -0
  159. package/dist/test/utils.d.ts +2 -0
  160. package/dist/test/utils.d.ts.map +1 -0
  161. package/dist/test/utils.js +5 -0
  162. package/dist/test/utils.js.map +1 -0
  163. package/dist/types/actions.d.ts +69 -0
  164. package/dist/types/actions.d.ts.map +1 -0
  165. package/dist/types/actions.js +2 -0
  166. package/dist/types/actions.js.map +1 -0
  167. package/dist/types/asset.d.ts +32 -0
  168. package/dist/types/asset.d.ts.map +1 -0
  169. package/dist/types/asset.js +2 -0
  170. package/dist/types/asset.js.map +1 -0
  171. package/dist/types/chain.d.ts +26 -0
  172. package/dist/types/chain.d.ts.map +1 -0
  173. package/dist/types/chain.js +2 -0
  174. package/dist/types/chain.js.map +1 -0
  175. package/dist/types/index.d.ts +6 -0
  176. package/dist/types/index.d.ts.map +1 -0
  177. package/dist/types/index.js +6 -0
  178. package/dist/types/index.js.map +1 -0
  179. package/dist/types/lend/base.d.ts +370 -0
  180. package/dist/types/lend/base.d.ts.map +1 -0
  181. package/dist/types/lend/base.js +4 -0
  182. package/dist/types/lend/base.js.map +1 -0
  183. package/dist/types/lend/index.d.ts +3 -0
  184. package/dist/types/lend/index.d.ts.map +1 -0
  185. package/dist/types/lend/index.js +3 -0
  186. package/dist/types/lend/index.js.map +1 -0
  187. package/dist/types/lend/morpho.d.ts +7 -0
  188. package/dist/types/lend/morpho.d.ts.map +1 -0
  189. package/dist/types/lend/morpho.js +6 -0
  190. package/dist/types/lend/morpho.js.map +1 -0
  191. package/dist/types/wallet.d.ts +26 -0
  192. package/dist/types/wallet.d.ts.map +1 -0
  193. package/dist/types/wallet.js +2 -0
  194. package/dist/types/wallet.js.map +1 -0
  195. package/dist/utils/assets.d.ts +33 -0
  196. package/dist/utils/assets.d.ts.map +1 -0
  197. package/dist/utils/assets.js +53 -0
  198. package/dist/utils/assets.js.map +1 -0
  199. package/dist/utils/assets.test.d.ts +2 -0
  200. package/dist/utils/assets.test.d.ts.map +1 -0
  201. package/dist/utils/assets.test.js +24 -0
  202. package/dist/utils/assets.test.js.map +1 -0
  203. package/dist/utils/markets.d.ts +17 -0
  204. package/dist/utils/markets.d.ts.map +1 -0
  205. package/dist/utils/markets.js +25 -0
  206. package/dist/utils/markets.js.map +1 -0
  207. package/dist/utils/test.d.ts +117 -0
  208. package/dist/utils/test.d.ts.map +1 -0
  209. package/dist/utils/test.js +265 -0
  210. package/dist/utils/test.js.map +1 -0
  211. package/dist/wallet/core/namespace/WalletNamespace.d.ts +84 -0
  212. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -0
  213. package/dist/wallet/core/namespace/WalletNamespace.js +89 -0
  214. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -0
  215. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.d.ts +2 -0
  216. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.d.ts.map +1 -0
  217. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +249 -0
  218. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -0
  219. package/dist/wallet/core/providers/WalletProvider.d.ts +63 -0
  220. package/dist/wallet/core/providers/WalletProvider.d.ts.map +1 -0
  221. package/dist/wallet/core/providers/WalletProvider.js +85 -0
  222. package/dist/wallet/core/providers/WalletProvider.js.map +1 -0
  223. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.d.ts +2 -0
  224. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.d.ts.map +1 -0
  225. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +246 -0
  226. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -0
  227. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +33 -0
  228. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -0
  229. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +13 -0
  230. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -0
  231. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.d.ts +20 -0
  232. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.d.ts.map +1 -0
  233. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js +29 -0
  234. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js.map +1 -0
  235. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.d.ts +2 -0
  236. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.d.ts.map +1 -0
  237. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +52 -0
  238. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -0
  239. package/dist/wallet/core/providers/hosted/types/index.d.ts +70 -0
  240. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -0
  241. package/dist/wallet/core/providers/hosted/types/index.js +2 -0
  242. package/dist/wallet/core/providers/hosted/types/index.js.map +1 -0
  243. package/dist/wallet/core/providers/smart/abstract/SmartWalletProvider.d.ts +61 -0
  244. package/dist/wallet/core/providers/smart/abstract/SmartWalletProvider.d.ts.map +1 -0
  245. package/dist/wallet/core/providers/smart/abstract/SmartWalletProvider.js +7 -0
  246. package/dist/wallet/core/providers/smart/abstract/SmartWalletProvider.js.map +1 -0
  247. package/dist/wallet/core/providers/smart/abstract/types/index.d.ts +16 -0
  248. package/dist/wallet/core/providers/smart/abstract/types/index.d.ts.map +1 -0
  249. package/dist/wallet/core/providers/smart/abstract/types/index.js +2 -0
  250. package/dist/wallet/core/providers/smart/abstract/types/index.js.map +1 -0
  251. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +77 -0
  252. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -0
  253. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +125 -0
  254. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -0
  255. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.d.ts +2 -0
  256. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.d.ts.map +1 -0
  257. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +325 -0
  258. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -0
  259. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +96 -0
  260. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -0
  261. package/dist/wallet/core/wallets/abstract/Wallet.js +81 -0
  262. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -0
  263. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +15 -0
  264. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -0
  265. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +18 -0
  266. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -0
  267. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.d.ts +2 -0
  268. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.d.ts.map +1 -0
  269. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +44 -0
  270. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -0
  271. package/dist/wallet/core/wallets/abstract/types/index.d.ts +30 -0
  272. package/dist/wallet/core/wallets/abstract/types/index.d.ts.map +1 -0
  273. package/dist/wallet/core/wallets/abstract/types/index.js +2 -0
  274. package/dist/wallet/core/wallets/abstract/types/index.js.map +1 -0
  275. package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts +44 -0
  276. package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts.map +1 -0
  277. package/dist/wallet/core/wallets/eoa/EOAWallet.js +67 -0
  278. package/dist/wallet/core/wallets/eoa/EOAWallet.js.map +1 -0
  279. package/dist/wallet/core/wallets/eoa/__mocks__/EOAWallet.d.ts +28 -0
  280. package/dist/wallet/core/wallets/eoa/__mocks__/EOAWallet.d.ts.map +1 -0
  281. package/dist/wallet/core/wallets/eoa/__mocks__/EOAWallet.js +51 -0
  282. package/dist/wallet/core/wallets/eoa/__mocks__/EOAWallet.js.map +1 -0
  283. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.d.ts +2 -0
  284. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.d.ts.map +1 -0
  285. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +191 -0
  286. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -0
  287. package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts +69 -0
  288. package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts.map +1 -0
  289. package/dist/wallet/core/wallets/smart/abstract/SmartWallet.js +8 -0
  290. package/dist/wallet/core/wallets/smart/abstract/SmartWallet.js.map +1 -0
  291. package/dist/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.d.ts +43 -0
  292. package/dist/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.d.ts.map +1 -0
  293. package/dist/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.js +67 -0
  294. package/dist/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.js.map +1 -0
  295. package/dist/wallet/core/wallets/smart/abstract/types/index.d.ts +19 -0
  296. package/dist/wallet/core/wallets/smart/abstract/types/index.d.ts.map +1 -0
  297. package/dist/wallet/core/wallets/smart/abstract/types/index.js +2 -0
  298. package/dist/wallet/core/wallets/smart/abstract/types/index.js.map +1 -0
  299. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +191 -0
  300. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -0
  301. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +436 -0
  302. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -0
  303. package/dist/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.d.ts +40 -0
  304. package/dist/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.d.ts.map +1 -0
  305. package/dist/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.js +72 -0
  306. package/dist/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.js.map +1 -0
  307. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.d.ts +2 -0
  308. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.d.ts.map +1 -0
  309. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +561 -0
  310. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -0
  311. package/dist/wallet/core/wallets/smart/default/constants/index.d.ts +719 -0
  312. package/dist/wallet/core/wallets/smart/default/constants/index.d.ts.map +1 -0
  313. package/dist/wallet/core/wallets/smart/default/constants/index.js +480 -0
  314. package/dist/wallet/core/wallets/smart/default/constants/index.js.map +1 -0
  315. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.d.ts +2 -0
  316. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.d.ts.map +1 -0
  317. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js +52 -0
  318. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js.map +1 -0
  319. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.d.ts +2 -0
  320. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.d.ts.map +1 -0
  321. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.js +109 -0
  322. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.js.map +1 -0
  323. package/dist/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.d.ts +2 -0
  324. package/dist/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.d.ts.map +1 -0
  325. package/dist/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.js +22 -0
  326. package/dist/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.js.map +1 -0
  327. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.d.ts +2 -0
  328. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.d.ts.map +1 -0
  329. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js +44 -0
  330. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js.map +1 -0
  331. package/dist/wallet/core/wallets/smart/default/utils/findSignerInArray.d.ts +12 -0
  332. package/dist/wallet/core/wallets/smart/default/utils/findSignerInArray.d.ts.map +1 -0
  333. package/dist/wallet/core/wallets/smart/default/utils/findSignerInArray.js +23 -0
  334. package/dist/wallet/core/wallets/smart/default/utils/findSignerInArray.js.map +1 -0
  335. package/dist/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.d.ts +30 -0
  336. package/dist/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.d.ts.map +1 -0
  337. package/dist/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.js +40 -0
  338. package/dist/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.js.map +1 -0
  339. package/dist/wallet/core/wallets/smart/default/utils/formatPublicKey.d.ts +8 -0
  340. package/dist/wallet/core/wallets/smart/default/utils/formatPublicKey.d.ts.map +1 -0
  341. package/dist/wallet/core/wallets/smart/default/utils/formatPublicKey.js +13 -0
  342. package/dist/wallet/core/wallets/smart/default/utils/formatPublicKey.js.map +1 -0
  343. package/dist/wallet/core/wallets/smart/default/utils/getSignerPublicKey.d.ts +12 -0
  344. package/dist/wallet/core/wallets/smart/default/utils/getSignerPublicKey.d.ts.map +1 -0
  345. package/dist/wallet/core/wallets/smart/default/utils/getSignerPublicKey.js +18 -0
  346. package/dist/wallet/core/wallets/smart/default/utils/getSignerPublicKey.js.map +1 -0
  347. package/dist/wallet/core/wallets/smart/error/errors.d.ts +8 -0
  348. package/dist/wallet/core/wallets/smart/error/errors.d.ts.map +1 -0
  349. package/dist/wallet/core/wallets/smart/error/errors.js +9 -0
  350. package/dist/wallet/core/wallets/smart/error/errors.js.map +1 -0
  351. package/dist/wallet/node/index.d.ts +4 -0
  352. package/dist/wallet/node/index.d.ts.map +1 -0
  353. package/dist/wallet/node/index.js +3 -0
  354. package/dist/wallet/node/index.js.map +1 -0
  355. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +34 -0
  356. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -0
  357. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +43 -0
  358. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -0
  359. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.d.ts +2 -0
  360. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.d.ts.map +1 -0
  361. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +80 -0
  362. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -0
  363. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +15 -0
  364. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -0
  365. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +37 -0
  366. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -0
  367. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.d.ts +2 -0
  368. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.d.ts.map +1 -0
  369. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +62 -0
  370. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -0
  371. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +50 -0
  372. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -0
  373. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +60 -0
  374. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -0
  375. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.d.ts +2 -0
  376. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.d.ts.map +1 -0
  377. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +132 -0
  378. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -0
  379. package/dist/wallet/node/providers/hosted/types/index.d.ts +90 -0
  380. package/dist/wallet/node/providers/hosted/types/index.d.ts.map +1 -0
  381. package/dist/wallet/node/providers/hosted/types/index.js +2 -0
  382. package/dist/wallet/node/providers/hosted/types/index.js.map +1 -0
  383. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +43 -0
  384. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -0
  385. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +47 -0
  386. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -0
  387. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.d.ts +2 -0
  388. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.d.ts.map +1 -0
  389. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +105 -0
  390. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -0
  391. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.d.ts +2 -0
  392. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.d.ts.map +1 -0
  393. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +39 -0
  394. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -0
  395. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts +15 -0
  396. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts.map +1 -0
  397. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js +23 -0
  398. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js.map +1 -0
  399. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +46 -0
  400. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -0
  401. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +34 -0
  402. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -0
  403. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.d.ts +2 -0
  404. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.d.ts.map +1 -0
  405. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +82 -0
  406. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -0
  407. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.d.ts +2 -0
  408. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.d.ts.map +1 -0
  409. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +61 -0
  410. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -0
  411. package/dist/wallet/node/wallets/hosted/turnkey/utils/createSigner.d.ts +17 -0
  412. package/dist/wallet/node/wallets/hosted/turnkey/utils/createSigner.d.ts.map +1 -0
  413. package/dist/wallet/node/wallets/hosted/turnkey/utils/createSigner.js +24 -0
  414. package/dist/wallet/node/wallets/hosted/turnkey/utils/createSigner.js.map +1 -0
  415. package/dist/wallet/react/index.d.ts +3 -0
  416. package/dist/wallet/react/index.d.ts.map +1 -0
  417. package/dist/wallet/react/index.js +2 -0
  418. package/dist/wallet/react/index.js.map +1 -0
  419. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +29 -0
  420. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -0
  421. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +36 -0
  422. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -0
  423. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts +33 -0
  424. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts.map +1 -0
  425. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js +30 -0
  426. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js.map +1 -0
  427. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.d.ts +2 -0
  428. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.d.ts.map +1 -0
  429. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +79 -0
  430. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -0
  431. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +29 -0
  432. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -0
  433. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +38 -0
  434. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -0
  435. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts +33 -0
  436. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts.map +1 -0
  437. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js +29 -0
  438. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js.map +1 -0
  439. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.d.ts +2 -0
  440. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.d.ts.map +1 -0
  441. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +79 -0
  442. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -0
  443. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +49 -0
  444. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -0
  445. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +60 -0
  446. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -0
  447. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.d.ts +2 -0
  448. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.d.ts.map +1 -0
  449. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +110 -0
  450. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -0
  451. package/dist/wallet/react/providers/hosted/types/index.d.ts +86 -0
  452. package/dist/wallet/react/providers/hosted/types/index.d.ts.map +1 -0
  453. package/dist/wallet/react/providers/hosted/types/index.js +2 -0
  454. package/dist/wallet/react/providers/hosted/types/index.js.map +1 -0
  455. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +15 -0
  456. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -0
  457. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +46 -0
  458. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -0
  459. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.d.ts +2 -0
  460. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.d.ts.map +1 -0
  461. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +68 -0
  462. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -0
  463. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +39 -0
  464. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -0
  465. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +43 -0
  466. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -0
  467. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +16 -0
  468. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -0
  469. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js +15 -0
  470. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -0
  471. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.d.ts +2 -0
  472. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.d.ts.map +1 -0
  473. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +117 -0
  474. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -0
  475. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.d.ts +2 -0
  476. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.d.ts.map +1 -0
  477. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js +62 -0
  478. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js.map +1 -0
  479. package/dist/wallet/react/wallets/hosted/dynamic/utils/createSigner.d.ts +13 -0
  480. package/dist/wallet/react/wallets/hosted/dynamic/utils/createSigner.d.ts.map +1 -0
  481. package/dist/wallet/react/wallets/hosted/dynamic/utils/createSigner.js +32 -0
  482. package/dist/wallet/react/wallets/hosted/dynamic/utils/createSigner.js.map +1 -0
  483. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +34 -0
  484. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -0
  485. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +38 -0
  486. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -0
  487. package/dist/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.d.ts +16 -0
  488. package/dist/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.d.ts.map +1 -0
  489. package/dist/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.js +15 -0
  490. package/dist/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.js.map +1 -0
  491. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.d.ts +2 -0
  492. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.d.ts.map +1 -0
  493. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +95 -0
  494. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -0
  495. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.d.ts +2 -0
  496. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.d.ts.map +1 -0
  497. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +55 -0
  498. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -0
  499. package/dist/wallet/react/wallets/hosted/privy/utils/createSigner.d.ts +13 -0
  500. package/dist/wallet/react/wallets/hosted/privy/utils/createSigner.d.ts.map +1 -0
  501. package/dist/wallet/react/wallets/hosted/privy/utils/createSigner.js +24 -0
  502. package/dist/wallet/react/wallets/hosted/privy/utils/createSigner.js.map +1 -0
  503. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +53 -0
  504. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -0
  505. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +43 -0
  506. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -0
  507. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.d.ts +2 -0
  508. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.d.ts.map +1 -0
  509. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +82 -0
  510. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -0
  511. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.d.ts +2 -0
  512. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.d.ts.map +1 -0
  513. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +61 -0
  514. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -0
  515. package/dist/wallet/react/wallets/hosted/turnkey/utils/createSigner.d.ts +17 -0
  516. package/dist/wallet/react/wallets/hosted/turnkey/utils/createSigner.d.ts.map +1 -0
  517. package/dist/wallet/react/wallets/hosted/turnkey/utils/createSigner.js +24 -0
  518. package/dist/wallet/react/wallets/hosted/turnkey/utils/createSigner.js.map +1 -0
  519. package/package.json +86 -0
  520. package/src/actions.test.ts +885 -0
  521. package/src/actions.ts +190 -0
  522. package/src/constants/assets.ts +20 -0
  523. package/src/constants/config.ts +9 -0
  524. package/src/constants/supportedChains.ts +10 -0
  525. package/src/core/asset/__mocks__/mockAsset.ts +13 -0
  526. package/src/core/error/errors.ts +27 -0
  527. package/src/core/utils/__tests__/retryOnStaleRead.spec.ts +56 -0
  528. package/src/core/utils/retryOnStaleRead.ts +39 -0
  529. package/src/index.node.ts +4 -0
  530. package/src/index.react.ts +4 -0
  531. package/src/index.ts +35 -0
  532. package/src/lend/__mocks__/mockLendTransaction.ts +47 -0
  533. package/src/lend/core/LendProvider.ts +311 -0
  534. package/src/lend/core/__tests__/LendProvider.test.ts +305 -0
  535. package/src/lend/index.ts +2 -0
  536. package/src/lend/namespaces/ActionsLendNamespace.ts +26 -0
  537. package/src/lend/namespaces/WalletLendNamespace.ts +116 -0
  538. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +58 -0
  539. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +223 -0
  540. package/src/lend/providers/morpho/MorphoLendProvider.ts +258 -0
  541. package/src/lend/providers/morpho/__mocks__/mockVault.ts +28 -0
  542. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +356 -0
  543. package/src/lend/providers/morpho/__tests__/api.test.ts +104 -0
  544. package/src/lend/providers/morpho/__tests__/sdk.test.ts +366 -0
  545. package/src/lend/providers/morpho/api.ts +86 -0
  546. package/src/lend/providers/morpho/sdk.ts +418 -0
  547. package/src/nodeActionsFactory.ts +37 -0
  548. package/src/reactActionsFactory.ts +37 -0
  549. package/src/services/ChainManager.spec.ts +332 -0
  550. package/src/services/ChainManager.ts +237 -0
  551. package/src/services/tokenBalance.spec.ts +93 -0
  552. package/src/services/tokenBalance.ts +122 -0
  553. package/src/supported/tokens.ts +103 -0
  554. package/src/test/MockAssets.ts +33 -0
  555. package/src/test/MockChainManager.ts +138 -0
  556. package/src/test/MockLendProvider.ts +397 -0
  557. package/src/test/MockMarkets.ts +32 -0
  558. package/src/test/MockPrivyClient.ts +118 -0
  559. package/src/test/utils.ts +5 -0
  560. package/src/types/actions.ts +80 -0
  561. package/src/types/asset.ts +34 -0
  562. package/src/types/chain.ts +30 -0
  563. package/src/types/index.ts +5 -0
  564. package/src/types/lend/base.ts +415 -0
  565. package/src/types/lend/index.ts +2 -0
  566. package/src/types/lend/morpho.ts +16 -0
  567. package/src/types/wallet.ts +28 -0
  568. package/src/utils/assets.test.ts +28 -0
  569. package/src/utils/assets.ts +71 -0
  570. package/src/utils/markets.ts +35 -0
  571. package/src/utils/test.ts +379 -0
  572. package/src/wallet/core/namespace/WalletNamespace.ts +125 -0
  573. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +398 -0
  574. package/src/wallet/core/providers/WalletProvider.ts +123 -0
  575. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +374 -0
  576. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +45 -0
  577. package/src/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.ts +46 -0
  578. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +77 -0
  579. package/src/wallet/core/providers/hosted/types/index.ts +76 -0
  580. package/src/wallet/core/providers/smart/abstract/SmartWalletProvider.ts +64 -0
  581. package/src/wallet/core/providers/smart/abstract/types/index.ts +17 -0
  582. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +175 -0
  583. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +467 -0
  584. package/src/wallet/core/wallets/abstract/Wallet.ts +149 -0
  585. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +40 -0
  586. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +61 -0
  587. package/src/wallet/core/wallets/abstract/types/index.ts +42 -0
  588. package/src/wallet/core/wallets/eoa/EOAWallet.ts +96 -0
  589. package/src/wallet/core/wallets/eoa/__mocks__/EOAWallet.ts +112 -0
  590. package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +299 -0
  591. package/src/wallet/core/wallets/smart/abstract/SmartWallet.ts +93 -0
  592. package/src/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.ts +161 -0
  593. package/src/wallet/core/wallets/smart/abstract/types/index.ts +19 -0
  594. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +598 -0
  595. package/src/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.ts +172 -0
  596. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +781 -0
  597. package/src/wallet/core/wallets/smart/default/constants/index.ts +482 -0
  598. package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.ts +68 -0
  599. package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerIndexOnChain.spec.ts +147 -0
  600. package/src/wallet/core/wallets/smart/default/utils/__tests__/formatPublicKey.spec.ts +28 -0
  601. package/src/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.ts +60 -0
  602. package/src/wallet/core/wallets/smart/default/utils/findSignerInArray.ts +30 -0
  603. package/src/wallet/core/wallets/smart/default/utils/findSignerIndexOnChain.ts +66 -0
  604. package/src/wallet/core/wallets/smart/default/utils/formatPublicKey.ts +14 -0
  605. package/src/wallet/core/wallets/smart/default/utils/getSignerPublicKey.ts +18 -0
  606. package/src/wallet/core/wallets/smart/error/errors.ts +18 -0
  607. package/src/wallet/node/index.ts +7 -0
  608. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +65 -0
  609. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +112 -0
  610. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +55 -0
  611. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +89 -0
  612. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +84 -0
  613. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +182 -0
  614. package/src/wallet/node/providers/hosted/types/index.ts +102 -0
  615. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +78 -0
  616. package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +142 -0
  617. package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +48 -0
  618. package/src/wallet/node/wallets/hosted/privy/utils/createSigner.ts +32 -0
  619. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +90 -0
  620. package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +104 -0
  621. package/src/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +77 -0
  622. package/src/wallet/node/wallets/hosted/turnkey/utils/createSigner.ts +32 -0
  623. package/src/wallet/react/index.ts +5 -0
  624. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +54 -0
  625. package/src/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.ts +57 -0
  626. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +105 -0
  627. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +56 -0
  628. package/src/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.ts +56 -0
  629. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +103 -0
  630. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +78 -0
  631. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +142 -0
  632. package/src/wallet/react/providers/hosted/types/index.ts +100 -0
  633. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +57 -0
  634. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +117 -0
  635. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +67 -0
  636. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +22 -0
  637. package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +148 -0
  638. package/src/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.ts +82 -0
  639. package/src/wallet/react/wallets/hosted/dynamic/utils/createSigner.ts +38 -0
  640. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +63 -0
  641. package/src/wallet/react/wallets/hosted/privy/__mocks__/PrivyWalletMock.ts +22 -0
  642. package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +109 -0
  643. package/src/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +66 -0
  644. package/src/wallet/react/wallets/hosted/privy/utils/createSigner.ts +30 -0
  645. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +94 -0
  646. package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +99 -0
  647. package/src/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +72 -0
  648. 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
+ }
@@ -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
+ }