rise-wallet 0.1.4-beta.1 → 0.2.28

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 (486) hide show
  1. package/README.md +64 -34
  2. package/dist/cli/Dialog.d.ts +34 -0
  3. package/dist/cli/Dialog.js +60 -0
  4. package/dist/cli/Dialog.js.map +1 -0
  5. package/dist/cli/Messenger.d.ts +7 -0
  6. package/dist/cli/Messenger.js +123 -0
  7. package/dist/cli/Messenger.js.map +1 -0
  8. package/dist/cli/bin/commands-D7N5ucUu.js +50 -0
  9. package/dist/cli/bin/index.js +9 -0
  10. package/dist/cli/index.d.ts +2 -0
  11. package/dist/cli/index.js +3 -0
  12. package/dist/cli/index.js.map +1 -0
  13. package/dist/cli/internal/http.d.ts +6 -0
  14. package/dist/cli/internal/http.js +17 -0
  15. package/dist/cli/internal/http.js.map +1 -0
  16. package/dist/cli/tsdown.config.d.ts +2 -0
  17. package/dist/cli/tsdown.config.js +28 -0
  18. package/dist/cli/tsdown.config.js.map +1 -0
  19. package/dist/core/Chains.d.ts +210 -0
  20. package/dist/core/Chains.js +20 -0
  21. package/dist/core/Chains.js.map +1 -0
  22. package/dist/core/Dialog.d.ts +307 -0
  23. package/dist/core/Dialog.js +809 -0
  24. package/dist/core/Dialog.js.map +1 -0
  25. package/dist/core/Messenger.d.ts +164 -0
  26. package/dist/core/Messenger.js +207 -0
  27. package/dist/core/Messenger.js.map +1 -0
  28. package/dist/core/Mode.d.ts +4 -0
  29. package/dist/core/Mode.js +5 -0
  30. package/dist/core/Mode.js.map +1 -0
  31. package/dist/core/Porto.d.ts +1608 -0
  32. package/dist/core/Porto.js +105 -0
  33. package/dist/core/Porto.js.map +1 -0
  34. package/dist/core/RpcSchema.d.ts +81 -0
  35. package/dist/core/RpcSchema.js +2 -0
  36. package/dist/core/RpcSchema.js.map +1 -0
  37. package/dist/core/Storage.d.ts +14 -0
  38. package/dist/core/Storage.js +109 -0
  39. package/dist/core/Storage.js.map +1 -0
  40. package/dist/core/Transport.d.ts +22 -0
  41. package/dist/core/Transport.js +37 -0
  42. package/dist/core/Transport.js.map +1 -0
  43. package/dist/core/internal/_generated/chains.d.ts +1 -0
  44. package/dist/core/internal/_generated/chains.js +3 -0
  45. package/dist/core/internal/_generated/chains.js.map +1 -0
  46. package/dist/core/internal/_generated/contracts/IthacaAccount.d.ts +1120 -0
  47. package/dist/core/internal/_generated/contracts/IthacaAccount.js +1453 -0
  48. package/dist/core/internal/_generated/contracts/IthacaAccount.js.map +1 -0
  49. package/dist/core/internal/call.d.ts +163 -0
  50. package/dist/core/internal/call.js +115 -0
  51. package/dist/core/internal/call.js.map +1 -0
  52. package/dist/core/internal/erc8010.d.ts +17 -0
  53. package/dist/core/internal/erc8010.js +29 -0
  54. package/dist/core/internal/erc8010.js.map +1 -0
  55. package/dist/core/internal/intersectionObserver.d.ts +1 -0
  56. package/dist/core/internal/intersectionObserver.js +5 -0
  57. package/dist/core/internal/intersectionObserver.js.map +1 -0
  58. package/dist/core/internal/logger.d.ts +21 -0
  59. package/dist/core/internal/logger.js +24 -0
  60. package/dist/core/internal/logger.js.map +1 -0
  61. package/dist/core/internal/mode.d.ts +344 -0
  62. package/dist/core/internal/mode.js +110 -0
  63. package/dist/core/internal/mode.js.map +1 -0
  64. package/dist/core/internal/modes/dialog.d.ts +799 -0
  65. package/dist/core/internal/modes/dialog.js +760 -0
  66. package/dist/core/internal/modes/dialog.js.map +1 -0
  67. package/dist/core/internal/modes/reactNative.d.ts +1401 -0
  68. package/dist/core/internal/modes/reactNative.js +19 -0
  69. package/dist/core/internal/modes/reactNative.js.map +1 -0
  70. package/dist/core/internal/modes/relay.d.ts +684 -0
  71. package/dist/core/internal/modes/relay.js +708 -0
  72. package/dist/core/internal/modes/relay.js.map +1 -0
  73. package/dist/core/internal/permissions.d.ts +59 -0
  74. package/dist/core/internal/permissions.js +30 -0
  75. package/dist/core/internal/permissions.js.map +1 -0
  76. package/dist/core/internal/permissionsRequest.d.ts +71 -0
  77. package/dist/core/internal/permissionsRequest.js +58 -0
  78. package/dist/core/internal/permissionsRequest.js.map +1 -0
  79. package/dist/core/internal/porto.d.ts +13 -0
  80. package/dist/core/internal/porto.js +2 -0
  81. package/dist/core/internal/porto.js.map +1 -0
  82. package/dist/core/internal/promise.d.ts +8 -0
  83. package/dist/core/internal/promise.js +11 -0
  84. package/dist/core/internal/promise.js.map +1 -0
  85. package/dist/core/internal/provider.d.ts +29 -0
  86. package/dist/core/internal/provider.js +941 -0
  87. package/dist/core/internal/provider.js.map +1 -0
  88. package/dist/core/internal/relay/rpcSchema.d.ts +75 -0
  89. package/dist/core/internal/relay/rpcSchema.js +7 -0
  90. package/dist/core/internal/relay/rpcSchema.js.map +1 -0
  91. package/dist/core/internal/relay/schema/capabilities.d.ts +164 -0
  92. package/dist/core/internal/relay/schema/capabilities.js +112 -0
  93. package/dist/core/internal/relay/schema/capabilities.js.map +1 -0
  94. package/dist/core/internal/relay/schema/intent.d.ts +167 -0
  95. package/dist/core/internal/relay/schema/intent.js +170 -0
  96. package/dist/core/internal/relay/schema/intent.js.map +1 -0
  97. package/dist/core/internal/relay/schema/key.d.ts +43 -0
  98. package/dist/core/internal/relay/schema/key.js +30 -0
  99. package/dist/core/internal/relay/schema/key.js.map +1 -0
  100. package/dist/core/internal/relay/schema/permission.d.ts +39 -0
  101. package/dist/core/internal/relay/schema/permission.js +29 -0
  102. package/dist/core/internal/relay/schema/permission.js.map +1 -0
  103. package/dist/core/internal/relay/schema/preCall.d.ts +62 -0
  104. package/dist/core/internal/relay/schema/preCall.js +36 -0
  105. package/dist/core/internal/relay/schema/preCall.js.map +1 -0
  106. package/dist/core/internal/relay/schema/quotes.d.ts +369 -0
  107. package/dist/core/internal/relay/schema/quotes.js +89 -0
  108. package/dist/core/internal/relay/schema/quotes.js.map +1 -0
  109. package/dist/core/internal/relay/schema/rpc.d.ts +1528 -0
  110. package/dist/core/internal/relay/schema/rpc.js +638 -0
  111. package/dist/core/internal/relay/schema/rpc.js.map +1 -0
  112. package/dist/core/internal/relay/schema/token.d.ts +13 -0
  113. package/dist/core/internal/relay/schema/token.js +13 -0
  114. package/dist/core/internal/relay/schema/token.js.map +1 -0
  115. package/dist/core/internal/requiredFunds.d.ts +18 -0
  116. package/dist/core/internal/requiredFunds.js +25 -0
  117. package/dist/core/internal/requiredFunds.js.map +1 -0
  118. package/dist/core/internal/schema/capabilities.d.ts +313 -0
  119. package/dist/core/internal/schema/capabilities.js +133 -0
  120. package/dist/core/internal/schema/capabilities.js.map +1 -0
  121. package/dist/core/internal/schema/key.d.ts +164 -0
  122. package/dist/core/internal/schema/key.js +75 -0
  123. package/dist/core/internal/schema/key.js.map +1 -0
  124. package/dist/core/internal/schema/permissions.d.ts +102 -0
  125. package/dist/core/internal/schema/permissions.js +28 -0
  126. package/dist/core/internal/schema/permissions.js.map +1 -0
  127. package/dist/core/internal/schema/request.d.ts +937 -0
  128. package/dist/core/internal/schema/request.js +57 -0
  129. package/dist/core/internal/schema/request.js.map +1 -0
  130. package/dist/core/internal/schema/rpc.d.ts +3314 -0
  131. package/dist/core/internal/schema/rpc.js +599 -0
  132. package/dist/core/internal/schema/rpc.js.map +1 -0
  133. package/dist/core/internal/schema/token.d.ts +1 -0
  134. package/dist/core/internal/schema/token.js +2 -0
  135. package/dist/core/internal/schema/token.js.map +1 -0
  136. package/dist/core/internal/schema/utils.d.ts +18 -0
  137. package/dist/core/internal/schema/utils.js +213 -0
  138. package/dist/core/internal/schema/utils.js.map +1 -0
  139. package/dist/core/internal/siwe.d.ts +32 -0
  140. package/dist/core/internal/siwe.js +92 -0
  141. package/dist/core/internal/siwe.js.map +1 -0
  142. package/dist/core/internal/store.d.ts +2 -0
  143. package/dist/core/internal/store.js +9 -0
  144. package/dist/core/internal/store.js.map +1 -0
  145. package/dist/core/internal/tokens.d.ts +57 -0
  146. package/dist/core/internal/tokens.js +69 -0
  147. package/dist/core/internal/tokens.js.map +1 -0
  148. package/dist/core/internal/types.d.ts +298 -0
  149. package/dist/core/internal/types.js +2 -0
  150. package/dist/core/internal/types.js.map +1 -0
  151. package/dist/core/internal/urlString.d.ts +1 -0
  152. package/dist/core/internal/urlString.js +8 -0
  153. package/dist/core/internal/urlString.js.map +1 -0
  154. package/dist/core/internal/userAgent.d.ts +10 -0
  155. package/dist/core/internal/userAgent.js +19 -0
  156. package/dist/core/internal/userAgent.js.map +1 -0
  157. package/dist/core/internal/utils.d.ts +24 -0
  158. package/dist/core/internal/utils.js +62 -0
  159. package/dist/core/internal/utils.js.map +1 -0
  160. package/dist/core/react-native/Porto.d.ts +1480 -0
  161. package/dist/core/react-native/Porto.js +17 -0
  162. package/dist/core/react-native/Porto.js.map +1 -0
  163. package/dist/core/react-native/configure.d.ts +9 -0
  164. package/dist/core/react-native/configure.js +24 -0
  165. package/dist/core/react-native/configure.js.map +1 -0
  166. package/dist/core/react-native/environment.d.ts +26 -0
  167. package/dist/core/react-native/environment.js +13 -0
  168. package/dist/core/react-native/environment.js.map +1 -0
  169. package/dist/core/react-native/index.d.ts +4 -0
  170. package/dist/core/react-native/index.js +5 -0
  171. package/dist/core/react-native/index.js.map +1 -0
  172. package/dist/core/react-native/utils.d.ts +1 -0
  173. package/dist/core/react-native/utils.js +12 -0
  174. package/dist/core/react-native/utils.js.map +1 -0
  175. package/dist/index.d.ts +16 -2
  176. package/dist/index.js +15 -2
  177. package/dist/index.js.map +1 -0
  178. package/dist/internal/index.d.ts +3 -0
  179. package/dist/internal/index.js +4 -0
  180. package/dist/internal/index.js.map +1 -0
  181. package/dist/react-native/crypto.d.ts +1 -0
  182. package/dist/react-native/crypto.js +12 -0
  183. package/dist/react-native/crypto.js.map +1 -0
  184. package/dist/react-native/index.d.ts +7 -0
  185. package/dist/react-native/index.js +12 -0
  186. package/dist/react-native/index.js.map +1 -0
  187. package/dist/react-native/register.d.ts +2 -0
  188. package/dist/react-native/register.js +15 -0
  189. package/dist/react-native/register.js.map +1 -0
  190. package/dist/register/index.d.ts +14 -0
  191. package/dist/register/index.js +2 -0
  192. package/dist/register/index.js.map +1 -0
  193. package/dist/remote/Actions.d.ts +33 -0
  194. package/dist/remote/Actions.js +76 -0
  195. package/dist/remote/Actions.js.map +1 -0
  196. package/dist/remote/Events.d.ts +46 -0
  197. package/dist/remote/Events.js +132 -0
  198. package/dist/remote/Events.js.map +1 -0
  199. package/dist/remote/Hooks.d.ts +3800 -0
  200. package/dist/remote/Hooks.js +106 -0
  201. package/dist/remote/Hooks.js.map +1 -0
  202. package/dist/remote/Porto.d.ts +857 -0
  203. package/dist/remote/Porto.js +66 -0
  204. package/dist/remote/Porto.js.map +1 -0
  205. package/dist/remote/index.d.ts +4 -0
  206. package/dist/remote/index.js +5 -0
  207. package/dist/remote/index.js.map +1 -0
  208. package/dist/remote/internal/methodPolicies.d.ts +96 -0
  209. package/dist/remote/internal/methodPolicies.js +102 -0
  210. package/dist/remote/internal/methodPolicies.js.map +1 -0
  211. package/dist/server/Route.d.ts +87 -0
  212. package/dist/server/Route.js +189 -0
  213. package/dist/server/Route.js.map +1 -0
  214. package/dist/server/Router.d.ts +23 -0
  215. package/dist/server/Router.js +29 -0
  216. package/dist/server/Router.js.map +1 -0
  217. package/dist/server/index.d.ts +2 -0
  218. package/dist/server/index.js +3 -0
  219. package/dist/server/index.js.map +1 -0
  220. package/dist/server/internal/merchantSchema.d.ts +64 -0
  221. package/dist/server/internal/merchantSchema.js +7 -0
  222. package/dist/server/internal/merchantSchema.js.map +1 -0
  223. package/dist/server/internal/requestListener.d.ts +123 -0
  224. package/dist/server/internal/requestListener.js +172 -0
  225. package/dist/server/internal/requestListener.js.map +1 -0
  226. package/dist/theme/Theme.d.ts +121 -0
  227. package/dist/theme/Theme.js +18 -0
  228. package/dist/theme/Theme.js.map +1 -0
  229. package/dist/theme/index.d.ts +2 -0
  230. package/dist/theme/index.js +2 -0
  231. package/dist/theme/index.js.map +1 -0
  232. package/dist/trusted-hosts.d.ts +1 -0
  233. package/dist/trusted-hosts.js +41 -0
  234. package/dist/trusted-hosts.js.map +1 -0
  235. package/dist/viem/Account.d.ts +110 -0
  236. package/dist/viem/Account.js +132 -0
  237. package/dist/viem/Account.js.map +1 -0
  238. package/dist/viem/AccountActions.d.ts +10 -0
  239. package/dist/viem/AccountActions.js +14 -0
  240. package/dist/viem/AccountActions.js.map +1 -0
  241. package/dist/viem/CapabilitiesSchema.d.ts +14 -0
  242. package/dist/viem/CapabilitiesSchema.js +2 -0
  243. package/dist/viem/CapabilitiesSchema.js.map +1 -0
  244. package/dist/viem/ContractActions.d.ts +208 -0
  245. package/dist/viem/ContractActions.js +350 -0
  246. package/dist/viem/ContractActions.js.map +1 -0
  247. package/dist/viem/Key.d.ts +1155 -0
  248. package/dist/viem/Key.js +924 -0
  249. package/dist/viem/Key.js.map +1 -0
  250. package/dist/viem/RelayActions.d.ts +435 -0
  251. package/dist/viem/RelayActions.js +385 -0
  252. package/dist/viem/RelayActions.js.map +1 -0
  253. package/dist/viem/RelayClient.d.ts +26 -0
  254. package/dist/viem/RelayClient.js +44 -0
  255. package/dist/viem/RelayClient.js.map +1 -0
  256. package/dist/viem/RpcSchema.d.ts +22 -0
  257. package/dist/viem/RpcSchema.js +2 -0
  258. package/dist/viem/RpcSchema.js.map +1 -0
  259. package/dist/viem/WalletActions.d.ts +86 -0
  260. package/dist/viem/WalletActions.js +220 -0
  261. package/dist/viem/WalletActions.js.map +1 -0
  262. package/dist/viem/WalletClient.d.ts +20 -0
  263. package/dist/viem/WalletClient.js +23 -0
  264. package/dist/viem/WalletClient.js.map +1 -0
  265. package/dist/viem/index.d.ts +13 -0
  266. package/dist/viem/index.js +12 -0
  267. package/dist/viem/index.js.map +1 -0
  268. package/dist/viem/internal/relayActions.d.ts +364 -0
  269. package/dist/viem/internal/relayActions.js +783 -0
  270. package/dist/viem/internal/relayActions.js.map +1 -0
  271. package/dist/viem/internal/utils.d.ts +15 -0
  272. package/dist/viem/internal/utils.js +2 -0
  273. package/dist/viem/internal/utils.js.map +1 -0
  274. package/dist/wagmi/Actions.d.ts +1 -0
  275. package/dist/wagmi/Actions.js +2 -0
  276. package/dist/wagmi/Actions.js.map +1 -0
  277. package/dist/wagmi/Connector.d.ts +26 -0
  278. package/dist/wagmi/Connector.js +238 -0
  279. package/dist/wagmi/Connector.js.map +1 -0
  280. package/dist/wagmi/Hooks.d.ts +1 -0
  281. package/dist/wagmi/Hooks.js +2 -0
  282. package/dist/wagmi/Hooks.js.map +1 -0
  283. package/dist/wagmi/Query.d.ts +1 -0
  284. package/dist/wagmi/Query.js +2 -0
  285. package/dist/wagmi/Query.js.map +1 -0
  286. package/dist/wagmi/index.d.ts +4 -0
  287. package/dist/wagmi/index.js +5 -0
  288. package/dist/wagmi/index.js.map +1 -0
  289. package/dist/wagmi/internal/core.d.ts +83 -0
  290. package/dist/wagmi/internal/core.js +229 -0
  291. package/dist/wagmi/internal/core.js.map +1 -0
  292. package/dist/wagmi/internal/query.d.ts +32 -0
  293. package/dist/wagmi/internal/query.js +23 -0
  294. package/dist/wagmi/internal/query.js.map +1 -0
  295. package/dist/wagmi/internal/react.d.ts +90 -0
  296. package/dist/wagmi/internal/react.js +256 -0
  297. package/dist/wagmi/internal/react.js.map +1 -0
  298. package/dist/wagmi/internal/types.d.ts +10 -0
  299. package/dist/wagmi/internal/types.js +2 -0
  300. package/dist/wagmi/internal/types.js.map +1 -0
  301. package/dist/wagmi/internal/utils.d.ts +1 -0
  302. package/dist/wagmi/internal/utils.js +18 -0
  303. package/dist/wagmi/internal/utils.js.map +1 -0
  304. package/package.json +286 -34
  305. package/src/cli/Dialog.ts +75 -0
  306. package/src/cli/Messenger.ts +148 -0
  307. package/src/cli/bin/index.ts +37 -0
  308. package/src/cli/bin/tsconfig.json +8 -0
  309. package/src/cli/index.ts +2 -0
  310. package/src/cli/internal/commands.ts +212 -0
  311. package/src/cli/internal/context.ts +56 -0
  312. package/src/cli/internal/http.ts +28 -0
  313. package/src/cli/internal/utils.ts +28 -0
  314. package/src/cli/tsdown.config.ts +37 -0
  315. package/src/core/Chains.ts +25 -0
  316. package/src/core/Dialog.ts +1059 -0
  317. package/src/core/Messenger.ts +394 -0
  318. package/src/core/Mode.ts +4 -0
  319. package/src/core/Porto.ts +287 -0
  320. package/src/core/RpcSchema.ts +124 -0
  321. package/src/core/Storage.ts +122 -0
  322. package/src/core/Transport.ts +45 -0
  323. package/src/core/internal/_generated/chains.ts +2 -0
  324. package/src/core/internal/_generated/contracts/EIP7702Proxy.ts +25 -0
  325. package/src/core/internal/_generated/contracts/Escrow.ts +330 -0
  326. package/src/core/internal/_generated/contracts/ExperimentERC20.ts +569 -0
  327. package/src/core/internal/_generated/contracts/ExperimentERC721.ts +588 -0
  328. package/src/core/internal/_generated/contracts/GuardedExecutor.ts +623 -0
  329. package/src/core/internal/_generated/contracts/ICallChecker.ts +34 -0
  330. package/src/core/internal/_generated/contracts/ICommon.ts +4 -0
  331. package/src/core/internal/_generated/contracts/IEscrow.ts +114 -0
  332. package/src/core/internal/_generated/contracts/IFunder.ts +80 -0
  333. package/src/core/internal/_generated/contracts/IFunderV4.ts +45 -0
  334. package/src/core/internal/_generated/contracts/IIthacaAccount.ts +107 -0
  335. package/src/core/internal/_generated/contracts/IOAppCore.ts +142 -0
  336. package/src/core/internal/_generated/contracts/IOAppMsgInspector.ts +45 -0
  337. package/src/core/internal/_generated/contracts/IOAppReceiver.ts +161 -0
  338. package/src/core/internal/_generated/contracts/IOrchestrator.ts +95 -0
  339. package/src/core/internal/_generated/contracts/ISettler.ts +52 -0
  340. package/src/core/internal/_generated/contracts/ISigner.ts +34 -0
  341. package/src/core/internal/_generated/contracts/IthacaAccount.ts +1454 -0
  342. package/src/core/internal/_generated/contracts/IthacaAccountNew.ts +1454 -0
  343. package/src/core/internal/_generated/contracts/IthacaAccountOld.ts +1454 -0
  344. package/src/core/internal/_generated/contracts/LayerZeroSettler.ts +811 -0
  345. package/src/core/internal/_generated/contracts/LibNonce.ts +15 -0
  346. package/src/core/internal/_generated/contracts/LibTStack.ts +4 -0
  347. package/src/core/internal/_generated/contracts/MultiSigSigner.ts +203 -0
  348. package/src/core/internal/_generated/contracts/OApp.ts +412 -0
  349. package/src/core/internal/_generated/contracts/OAppCore.ts +229 -0
  350. package/src/core/internal/_generated/contracts/OAppReceiver.ts +396 -0
  351. package/src/core/internal/_generated/contracts/OAppSender.ts +245 -0
  352. package/src/core/internal/_generated/contracts/Orchestrator.ts +390 -0
  353. package/src/core/internal/_generated/contracts/SimpleFunder.ts +534 -0
  354. package/src/core/internal/_generated/contracts/SimpleSettler.ts +360 -0
  355. package/src/core/internal/_generated/contracts/Simulator.ts +170 -0
  356. package/src/core/internal/_generated/contracts/TokenTransferLib.ts +4 -0
  357. package/src/core/internal/_snapshots/provider.browser.test.ts.snap +119 -0
  358. package/src/core/internal/_snapshots/provider.test.ts.snap +1103 -0
  359. package/src/core/internal/call.test.ts +116 -0
  360. package/src/core/internal/call.ts +245 -0
  361. package/src/core/internal/erc8010.test.ts +74 -0
  362. package/src/core/internal/erc8010.ts +44 -0
  363. package/src/core/internal/intersectionObserver.ts +5 -0
  364. package/src/core/internal/logger.ts +42 -0
  365. package/src/core/internal/mode.ts +498 -0
  366. package/src/core/internal/modes/dialog.ts +1051 -0
  367. package/src/core/internal/modes/reactNative.ts +29 -0
  368. package/src/core/internal/modes/relay.ts +893 -0
  369. package/src/core/internal/permissions.ts +43 -0
  370. package/src/core/internal/permissionsRequest.ts +88 -0
  371. package/src/core/internal/porto.ts +16 -0
  372. package/src/core/internal/promise.ts +19 -0
  373. package/src/core/internal/provider.browser.test.ts +311 -0
  374. package/src/core/internal/provider.test.ts +3552 -0
  375. package/src/core/internal/provider.ts +1277 -0
  376. package/src/core/internal/relay/rpcSchema.ts +101 -0
  377. package/src/core/internal/relay/schema/capabilities.test.ts +663 -0
  378. package/src/core/internal/relay/schema/capabilities.ts +156 -0
  379. package/src/core/internal/relay/schema/intent.test.ts +433 -0
  380. package/src/core/internal/relay/schema/intent.ts +174 -0
  381. package/src/core/internal/relay/schema/key.test.ts +424 -0
  382. package/src/core/internal/relay/schema/key.ts +34 -0
  383. package/src/core/internal/relay/schema/permission.test.ts +499 -0
  384. package/src/core/internal/relay/schema/permission.ts +34 -0
  385. package/src/core/internal/relay/schema/preCall.ts +39 -0
  386. package/src/core/internal/relay/schema/quotes.test.ts +901 -0
  387. package/src/core/internal/relay/schema/quotes.ts +98 -0
  388. package/src/core/internal/relay/schema/rpc.ts +822 -0
  389. package/src/core/internal/relay/schema/token.ts +16 -0
  390. package/src/core/internal/requiredFunds.test.ts +141 -0
  391. package/src/core/internal/requiredFunds.ts +45 -0
  392. package/src/core/internal/schema/capabilities.test.ts +1334 -0
  393. package/src/core/internal/schema/capabilities.ts +162 -0
  394. package/src/core/internal/schema/key.test.ts +570 -0
  395. package/src/core/internal/schema/key.ts +98 -0
  396. package/src/core/internal/schema/permissions.test.ts +948 -0
  397. package/src/core/internal/schema/permissions.ts +31 -0
  398. package/src/core/internal/schema/request.bench.ts +35 -0
  399. package/src/core/internal/schema/request.ts +90 -0
  400. package/src/core/internal/schema/rpc.ts +821 -0
  401. package/src/core/internal/schema/token.ts +1 -0
  402. package/src/core/internal/schema/utils.test.ts +572 -0
  403. package/src/core/internal/schema/utils.ts +236 -0
  404. package/src/core/internal/siwe.test.ts +473 -0
  405. package/src/core/internal/siwe.ts +144 -0
  406. package/src/core/internal/store.ts +9 -0
  407. package/src/core/internal/tokens.test.ts +317 -0
  408. package/src/core/internal/tokens.ts +125 -0
  409. package/src/core/internal/types.ts +448 -0
  410. package/src/core/internal/urlString.ts +5 -0
  411. package/src/core/internal/userAgent.ts +35 -0
  412. package/src/core/internal/utils.test.ts +35 -0
  413. package/src/core/internal/utils.ts +67 -0
  414. package/src/core/react-native/Porto.ts +22 -0
  415. package/src/core/react-native/configure.ts +31 -0
  416. package/src/core/react-native/environment.ts +43 -0
  417. package/src/core/react-native/index.ts +4 -0
  418. package/src/core/react-native/utils.ts +18 -0
  419. package/src/index.ts +17 -0
  420. package/src/internal/index.ts +3 -0
  421. package/src/react-native/crypto.ts +19 -0
  422. package/src/react-native/index.ts +15 -0
  423. package/src/react-native/register.ts +24 -0
  424. package/src/register/index.ts +17 -0
  425. package/src/remote/Actions.ts +115 -0
  426. package/src/remote/Events.ts +193 -0
  427. package/src/remote/Hooks.ts +194 -0
  428. package/src/remote/Porto.ts +144 -0
  429. package/src/remote/index.ts +4 -0
  430. package/src/remote/internal/methodPolicies.ts +124 -0
  431. package/src/server/Route.test.ts +347 -0
  432. package/src/server/Route.ts +259 -0
  433. package/src/server/Router.test.ts +32 -0
  434. package/src/server/Router.ts +59 -0
  435. package/src/server/index.ts +2 -0
  436. package/src/server/internal/merchantSchema.ts +11 -0
  437. package/src/server/internal/requestListener.ts +284 -0
  438. package/src/theme/Theme.ts +163 -0
  439. package/src/theme/index.ts +2 -0
  440. package/src/trusted-hosts.ts +40 -0
  441. package/src/tsconfig.build.tsbuildinfo +1 -0
  442. package/src/tsconfig.json +15 -0
  443. package/src/viem/Account.test.ts +270 -0
  444. package/src/viem/Account.ts +278 -0
  445. package/src/viem/AccountActions.test.ts +3 -0
  446. package/src/viem/AccountActions.ts +30 -0
  447. package/src/viem/CapabilitiesSchema.ts +18 -0
  448. package/src/viem/ContractActions.test.ts +980 -0
  449. package/src/viem/ContractActions.ts +624 -0
  450. package/src/viem/Key.test.ts +1420 -0
  451. package/src/viem/Key.ts +1318 -0
  452. package/src/viem/RelayActions.test.ts +1730 -0
  453. package/src/viem/RelayActions.ts +1082 -0
  454. package/src/viem/RelayClient.test.ts +127 -0
  455. package/src/viem/RelayClient.ts +87 -0
  456. package/src/viem/RpcSchema.ts +27 -0
  457. package/src/viem/WalletActions.test.ts +646 -0
  458. package/src/viem/WalletActions.ts +476 -0
  459. package/src/viem/WalletClient.test.ts +36 -0
  460. package/src/viem/WalletClient.ts +74 -0
  461. package/src/viem/index.ts +13 -0
  462. package/src/viem/internal/relayActions.test.ts +1296 -0
  463. package/src/viem/internal/relayActions.ts +1222 -0
  464. package/src/viem/internal/utils.ts +27 -0
  465. package/src/wagmi/Actions.ts +13 -0
  466. package/src/wagmi/Connector.ts +304 -0
  467. package/src/wagmi/Hooks.ts +14 -0
  468. package/src/wagmi/Query.ts +5 -0
  469. package/src/wagmi/index.ts +4 -0
  470. package/src/wagmi/internal/core.test.ts +12 -0
  471. package/src/wagmi/internal/core.ts +468 -0
  472. package/src/wagmi/internal/query.ts +52 -0
  473. package/src/wagmi/internal/react.test.ts +12 -0
  474. package/src/wagmi/internal/react.ts +705 -0
  475. package/src/wagmi/internal/types.ts +21 -0
  476. package/src/wagmi/internal/utils.ts +25 -0
  477. package/dist/chain.cjs +0 -17
  478. package/dist/chain.d.cts +0 -41
  479. package/dist/chain.d.ts +0 -41
  480. package/dist/chain.js +0 -13
  481. package/dist/config.cjs +0 -19
  482. package/dist/config.d.cts +0 -3
  483. package/dist/config.d.ts +0 -3
  484. package/dist/config.js +0 -16
  485. package/dist/index.cjs +0 -18
  486. package/dist/index.d.cts +0 -2
@@ -0,0 +1,476 @@
1
+ /**
2
+ * Porto Wallet Actions.
3
+ *
4
+ * Note: These Actions will eventually be upstreamed into `viem` once an
5
+ * API is solidified & stable.
6
+ */
7
+
8
+ import * as Hex from 'ox/Hex'
9
+ import {
10
+ type Call,
11
+ type Calls,
12
+ type Chain,
13
+ type Client,
14
+ encodeFunctionData,
15
+ type Narrow,
16
+ type PrivateKeyAccount,
17
+ type Transport,
18
+ type ValueOf,
19
+ type WalletActions as viem_WalletActions,
20
+ } from 'viem'
21
+ import {
22
+ getAddresses,
23
+ getCallsStatus,
24
+ getCapabilities,
25
+ getChainId,
26
+ requestAddresses,
27
+ sendCalls,
28
+ showCallsStatus,
29
+ signMessage,
30
+ signTypedData,
31
+ waitForCallsStatus,
32
+ writeContract,
33
+ } from 'viem/actions'
34
+ import * as z from 'zod/mini'
35
+ import * as RpcSchema from '../core/RpcSchema.js'
36
+ import * as Account from './Account.js'
37
+ import type { GetAccountParameter } from './internal/utils.js'
38
+ import type * as RpcSchema_viem from './RpcSchema.js'
39
+
40
+ const supportedWalletActions = [
41
+ 'getAddresses',
42
+ 'getCallsStatus',
43
+ 'getCapabilities',
44
+ 'getChainId',
45
+ 'requestAddresses',
46
+ 'sendCalls',
47
+ 'showCallsStatus',
48
+ 'signMessage',
49
+ 'signTypedData',
50
+ 'showCallsStatus',
51
+ 'waitForCallsStatus',
52
+ 'writeContract',
53
+ ] as const satisfies (keyof viem_WalletActions)[]
54
+
55
+ export async function addFunds(
56
+ client: Client,
57
+ parameters: addFunds.Parameters,
58
+ ): Promise<addFunds.ReturnType> {
59
+ const method = 'wallet_addFunds' as const
60
+ type Method = typeof method
61
+ const response = await client.request<
62
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
63
+ >({
64
+ method,
65
+ params: [z.encode(RpcSchema.wallet_addFunds.Parameters, parameters)],
66
+ })
67
+
68
+ return z.decode(RpcSchema.wallet_addFunds.Response, response)
69
+ }
70
+
71
+ export declare namespace addFunds {
72
+ type Parameters = RpcSchema.wallet_addFunds.Parameters
73
+
74
+ type ReturnType = RpcSchema.wallet_addFunds.Response
75
+ }
76
+
77
+ export async function getAssets<
78
+ chain extends Chain | undefined,
79
+ account extends Account.Account | undefined,
80
+ >(
81
+ client: Client<Transport, chain, account>,
82
+ ...parameters: account extends undefined
83
+ ? [getAssets.Parameters<account>]
84
+ : [getAssets.Parameters<account>] | []
85
+ ): Promise<getAssets.ReturnType> {
86
+ const { account = client.account, ...rest } = parameters[0] ?? {}
87
+
88
+ const account_ = account ? Account.from(account) : undefined
89
+ if (!account_) throw new Error('account is required')
90
+
91
+ const method = 'wallet_getAssets' as const
92
+ type Method = typeof method
93
+ const response = await client.request<
94
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
95
+ >({
96
+ method,
97
+ params: [
98
+ z.encode(RpcSchema.wallet_getAssets.Parameters, {
99
+ ...rest,
100
+ account: account_.address,
101
+ }),
102
+ ],
103
+ })
104
+
105
+ const value = z.decode(RpcSchema.wallet_getAssets.Response, response)
106
+ const decoded = Object.entries(value).reduce(
107
+ (acc, [key, value]) => {
108
+ acc[Hex.toNumber(key as `0x${string}`)] = value
109
+ return acc
110
+ },
111
+ {} as Record<number, ValueOf<typeof value>>,
112
+ )
113
+
114
+ return decoded
115
+ }
116
+
117
+ export declare namespace getAssets {
118
+ type Parameters<account extends Account.Account | undefined = undefined> =
119
+ Omit<RpcSchema.wallet_getAssets.Parameters, 'account'> &
120
+ GetAccountParameter<account>
121
+
122
+ type ReturnType = RpcSchema.wallet_getAssets.Response
123
+ }
124
+
125
+ export async function connect(
126
+ client: Client,
127
+ parameters: connect.Parameters = {},
128
+ ): Promise<connect.ReturnType> {
129
+ const { chainIds, ...capabilities } = parameters
130
+ const method = 'wallet_connect' as const
131
+ type Method = typeof method
132
+ const response = await client.request<
133
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
134
+ >({
135
+ method,
136
+ params: [
137
+ z.encode(RpcSchema.wallet_connect.Parameters, {
138
+ capabilities,
139
+ chainIds,
140
+ }),
141
+ ],
142
+ })
143
+
144
+ return z.decode(RpcSchema.wallet_connect.Response, response)
145
+ }
146
+
147
+ export declare namespace connect {
148
+ type Parameters = RpcSchema.wallet_connect.Capabilities &
149
+ Omit<RpcSchema.wallet_connect.Parameters, 'capabilities'>
150
+
151
+ type ReturnType = RpcSchema.wallet_connect.Response
152
+ }
153
+
154
+ export async function disconnect(client: Client) {
155
+ const method = 'wallet_disconnect' as const
156
+ type Method = typeof method
157
+ await client.request<
158
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
159
+ >({
160
+ method,
161
+ } as never)
162
+ }
163
+
164
+ export async function getAdmins(
165
+ client: Client,
166
+ parameters: getAdmins.Parameters = {},
167
+ ): Promise<getAdmins.ReturnType> {
168
+ const method = 'wallet_getAdmins' as const
169
+ type Method = typeof method
170
+ const response = await client.request<
171
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
172
+ >({
173
+ method,
174
+ params: [z.encode(RpcSchema.wallet_getAdmins.Parameters, parameters)],
175
+ })
176
+
177
+ return z.decode(RpcSchema.wallet_getAdmins.Response, response)
178
+ }
179
+
180
+ export declare namespace getAdmins {
181
+ type Parameters = RpcSchema.wallet_getAdmins.Parameters
182
+
183
+ type ReturnType = RpcSchema.wallet_getAdmins.Response
184
+ }
185
+
186
+ export async function getPermissions(
187
+ client: Client,
188
+ parameters: getPermissions.Parameters = {},
189
+ ): Promise<getPermissions.ReturnType> {
190
+ const method = 'wallet_getPermissions' as const
191
+ type Method = typeof method
192
+ const response = await client.request<
193
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
194
+ >({
195
+ method,
196
+ params: [z.encode(RpcSchema.wallet_getPermissions.Parameters, parameters)],
197
+ })
198
+
199
+ return z.decode(RpcSchema.wallet_getPermissions.Response, response)
200
+ }
201
+
202
+ export declare namespace getPermissions {
203
+ type Parameters = RpcSchema.wallet_getPermissions.Parameters
204
+
205
+ type ReturnType = RpcSchema.wallet_getPermissions.Response
206
+ }
207
+
208
+ export async function grantAdmin(
209
+ client: Client,
210
+ parameters: grantAdmin.Parameters,
211
+ ): Promise<grantAdmin.ReturnType> {
212
+ const method = 'wallet_grantAdmin' as const
213
+ type Method = typeof method
214
+ const response = await client.request<
215
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
216
+ >({
217
+ method,
218
+ params: [z.encode(RpcSchema.wallet_grantAdmin.Parameters, parameters)],
219
+ })
220
+
221
+ return z.decode(RpcSchema.wallet_grantAdmin.Response, response)
222
+ }
223
+
224
+ export declare namespace grantAdmin {
225
+ type Parameters = RpcSchema.wallet_grantAdmin.Capabilities &
226
+ Omit<RpcSchema.wallet_grantAdmin.Parameters, 'capabilities'>
227
+
228
+ type ReturnType = RpcSchema.wallet_grantAdmin.Response
229
+ }
230
+
231
+ export async function grantPermissions(
232
+ client: Client,
233
+ parameters: grantPermissions.Parameters,
234
+ ): Promise<grantPermissions.ReturnType> {
235
+ const method = 'wallet_grantPermissions' as const
236
+ type Method = typeof method
237
+ const response = await client.request<
238
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
239
+ >({
240
+ method,
241
+ params: [
242
+ z.encode(RpcSchema.wallet_grantPermissions.Parameters, parameters),
243
+ ],
244
+ })
245
+
246
+ return z.decode(RpcSchema.wallet_grantPermissions.Response, response)
247
+ }
248
+
249
+ export declare namespace grantPermissions {
250
+ type Parameters = RpcSchema.wallet_grantPermissions.Parameters
251
+
252
+ type ReturnType = RpcSchema.wallet_grantPermissions.Response
253
+ }
254
+
255
+ export async function prepareCalls<
256
+ const calls extends readonly unknown[] = readonly unknown[],
257
+ >(
258
+ client: Client,
259
+ parameters: prepareCalls.Parameters<calls>,
260
+ ): Promise<prepareCalls.ReturnType> {
261
+ const method = 'wallet_prepareCalls' as const
262
+ type Method = typeof method
263
+ const response = await client.request<
264
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
265
+ >({
266
+ method,
267
+ params: [
268
+ z.encode(RpcSchema.wallet_prepareCalls.Parameters, {
269
+ ...parameters,
270
+ calls: (parameters.calls ?? []).map((c) => {
271
+ const call = c as Call
272
+ const data = (() => {
273
+ if (!call.abi) return call.data
274
+ return encodeFunctionData(call)
275
+ })()
276
+ return {
277
+ ...call,
278
+ data,
279
+ }
280
+ }),
281
+ }),
282
+ ],
283
+ })
284
+
285
+ return z.decode(RpcSchema.wallet_prepareCalls.Response, response)
286
+ }
287
+
288
+ export declare namespace prepareCalls {
289
+ type Parameters<calls extends readonly unknown[] = readonly unknown[]> = Omit<
290
+ RpcSchema.wallet_prepareCalls.Parameters,
291
+ 'calls'
292
+ > & {
293
+ calls?: Calls<Narrow<calls>> | undefined
294
+ }
295
+
296
+ type ReturnType = RpcSchema.wallet_prepareCalls.Response
297
+ }
298
+
299
+ export async function revokeAdmin(
300
+ client: Client,
301
+ parameters: revokeAdmin.Parameters,
302
+ ) {
303
+ const method = 'wallet_revokeAdmin' as const
304
+ type Method = typeof method
305
+ await client.request<
306
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
307
+ >({
308
+ method,
309
+ params: [z.encode(RpcSchema.wallet_revokeAdmin.Parameters, parameters)],
310
+ })
311
+ return undefined
312
+ }
313
+
314
+ export declare namespace revokeAdmin {
315
+ type Parameters = RpcSchema.wallet_revokeAdmin.Parameters
316
+ }
317
+
318
+ export async function revokePermissions(
319
+ client: Client,
320
+ parameters: revokePermissions.Parameters,
321
+ ) {
322
+ const { address, id, ...capabilities } = parameters
323
+ const method = 'wallet_revokePermissions' as const
324
+ type Method = typeof method
325
+ await client.request<
326
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
327
+ >({
328
+ method,
329
+ params: [
330
+ z.encode(RpcSchema.wallet_revokePermissions.Parameters, {
331
+ address,
332
+ capabilities,
333
+ id,
334
+ }),
335
+ ],
336
+ })
337
+ return undefined
338
+ }
339
+
340
+ export declare namespace revokePermissions {
341
+ type Parameters = RpcSchema.wallet_revokePermissions.Capabilities &
342
+ Omit<RpcSchema.wallet_revokePermissions.Parameters, 'capabilities'>
343
+ }
344
+
345
+ export async function sendPreparedCalls(
346
+ client: Client,
347
+ parameters: sendPreparedCalls.Parameters,
348
+ ): Promise<sendPreparedCalls.ReturnType> {
349
+ const method = 'wallet_sendPreparedCalls' as const
350
+ type Method = typeof method
351
+ const response = await client.request<
352
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
353
+ >({
354
+ method,
355
+ params: [
356
+ z.encode(RpcSchema.wallet_sendPreparedCalls.Parameters, parameters),
357
+ ],
358
+ })
359
+
360
+ return z.decode(RpcSchema.wallet_sendPreparedCalls.Response, response)
361
+ }
362
+
363
+ export declare namespace sendPreparedCalls {
364
+ type Parameters = RpcSchema.wallet_sendPreparedCalls.Parameters
365
+
366
+ type ReturnType = RpcSchema.wallet_sendPreparedCalls.Response
367
+ }
368
+
369
+ export async function upgradeAccount(
370
+ client: Client,
371
+ parameters: upgradeAccount.Parameters,
372
+ ): Promise<upgradeAccount.ReturnType> {
373
+ const { account, chainId, ...capabilities } = parameters
374
+
375
+ const method = 'wallet_prepareUpgradeAccount' as const
376
+ type Method = typeof method
377
+ const { context, digests } = await client.request<
378
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method }>
379
+ >({
380
+ method,
381
+ params: [
382
+ z.encode(RpcSchema.wallet_prepareUpgradeAccount.Parameters, {
383
+ address: account.address,
384
+ capabilities,
385
+ chainId,
386
+ }),
387
+ ],
388
+ })
389
+
390
+ const signatures = {
391
+ auth: await account.sign({ hash: digests.auth }),
392
+ exec: await account.sign({ hash: digests.exec }),
393
+ }
394
+
395
+ const method_upgrade = 'wallet_upgradeAccount' as const
396
+ type Method_upgrade = typeof method_upgrade
397
+ const response = await client.request<
398
+ Extract<RpcSchema_viem.Wallet[number], { Method: Method_upgrade }>
399
+ >({
400
+ method: method_upgrade,
401
+ params: [
402
+ z.encode(RpcSchema.wallet_upgradeAccount.Parameters, {
403
+ context,
404
+ signatures,
405
+ }),
406
+ ],
407
+ })
408
+
409
+ return z.decode(RpcSchema.wallet_upgradeAccount.Response, response)
410
+ }
411
+
412
+ export declare namespace upgradeAccount {
413
+ type Parameters = RpcSchema.wallet_prepareUpgradeAccount.Capabilities &
414
+ Omit<
415
+ RpcSchema.wallet_prepareUpgradeAccount.Parameters,
416
+ 'address' | 'capabilities'
417
+ > & {
418
+ account: PrivateKeyAccount | Account.Account
419
+ }
420
+
421
+ type ReturnType = RpcSchema.wallet_upgradeAccount.Response
422
+ }
423
+
424
+ export type Decorator<
425
+ chain extends Chain | undefined = Chain | undefined,
426
+ account extends Account.Account | undefined = Account.Account | undefined,
427
+ > = Pick<
428
+ viem_WalletActions<chain, account>,
429
+ (typeof supportedWalletActions)[number]
430
+ > & {
431
+ connect: (parameters: connect.Parameters) => Promise<connect.ReturnType>
432
+ disconnect: () => Promise<void>
433
+ getPermissions: (
434
+ parameters: getPermissions.Parameters,
435
+ ) => Promise<getPermissions.ReturnType>
436
+ grantPermissions: (
437
+ parameters: grantPermissions.Parameters,
438
+ ) => Promise<grantPermissions.ReturnType>
439
+ prepareCalls: (
440
+ parameters: prepareCalls.Parameters,
441
+ ) => Promise<prepareCalls.ReturnType>
442
+ revokePermissions: (parameters: revokePermissions.Parameters) => Promise<void>
443
+ sendPreparedCalls: (
444
+ parameters: sendPreparedCalls.Parameters,
445
+ ) => Promise<sendPreparedCalls.ReturnType>
446
+ upgradeAccount: (
447
+ parameters: upgradeAccount.Parameters,
448
+ ) => Promise<upgradeAccount.ReturnType>
449
+ }
450
+
451
+ export function decorator<
452
+ chain extends Chain | undefined,
453
+ account extends Account.Account | undefined,
454
+ >(client: Client<Transport, chain, account>): Decorator<chain, account> {
455
+ return {
456
+ connect: (parameters) => connect(client, parameters),
457
+ disconnect: () => disconnect(client),
458
+ getAddresses: () => getAddresses(client),
459
+ getCallsStatus: (parameters) => getCallsStatus(client, parameters),
460
+ getCapabilities: () => getCapabilities(client),
461
+ getChainId: () => getChainId(client),
462
+ getPermissions: (parameters) => getPermissions(client, parameters),
463
+ grantPermissions: (parameters) => grantPermissions(client, parameters),
464
+ prepareCalls: (parameters) => prepareCalls(client, parameters),
465
+ requestAddresses: () => requestAddresses(client),
466
+ revokePermissions: (parameters) => revokePermissions(client, parameters),
467
+ sendCalls: (parameters) => sendCalls(client, parameters),
468
+ sendPreparedCalls: (parameters) => sendPreparedCalls(client, parameters),
469
+ showCallsStatus: (parameters) => showCallsStatus(client, parameters),
470
+ signMessage: (parameters) => signMessage(client, parameters),
471
+ signTypedData: (parameters) => signTypedData(client, parameters),
472
+ upgradeAccount: (parameters) => upgradeAccount(client, parameters),
473
+ waitForCallsStatus: (parameters) => waitForCallsStatus(client, parameters),
474
+ writeContract: (parameters) => writeContract(client, parameters),
475
+ }
476
+ }
@@ -0,0 +1,36 @@
1
+ import { Porto } from 'porto'
2
+ import { WalletClient } from 'porto/viem'
3
+ import { describe, expect, test } from 'vitest'
4
+
5
+ describe('fromPorto', () => {
6
+ test('default', async () => {
7
+ const porto = Porto.create()
8
+ const client = WalletClient.fromPorto(porto)
9
+ expect({ ...client, uid: null }).toMatchInlineSnapshot(`
10
+ {
11
+ "account": undefined,
12
+ "batch": undefined,
13
+ "cacheTime": 1000,
14
+ "ccipRead": undefined,
15
+ "chain": undefined,
16
+ "extend": [Function],
17
+ "key": "base",
18
+ "name": "Base Client",
19
+ "pollingInterval": 1000,
20
+ "request": [Function],
21
+ "transport": {
22
+ "key": "custom",
23
+ "methods": undefined,
24
+ "name": "Custom Provider",
25
+ "request": [Function],
26
+ "retryCount": 3,
27
+ "retryDelay": 150,
28
+ "timeout": undefined,
29
+ "type": "custom",
30
+ },
31
+ "type": "base",
32
+ "uid": null,
33
+ }
34
+ `)
35
+ })
36
+ })
@@ -0,0 +1,74 @@
1
+ import {
2
+ type Address,
3
+ type ClientConfig,
4
+ createClient,
5
+ custom,
6
+ type JsonRpcAccount,
7
+ type Transport,
8
+ type Client as viem_Client,
9
+ } from 'viem'
10
+ import type * as Chains from '../core/Chains.js'
11
+ import type { Internal } from '../core/internal/porto.js'
12
+ import type * as Provider from '../core/internal/provider.js'
13
+ import type * as Account from './Account.js'
14
+ import type * as RpcSchema from './RpcSchema.js'
15
+
16
+ export type WalletClient<
17
+ transport extends Transport = Transport,
18
+ chain extends Chains.Chain | undefined = Chains.Chain | undefined,
19
+ account extends Account.Account | Address | undefined =
20
+ | Account.Account
21
+ | Address
22
+ | undefined,
23
+ > = viem_Client<
24
+ transport,
25
+ chain,
26
+ account extends Address ? JsonRpcAccount<account> : account,
27
+ RpcSchema.Wallet
28
+ >
29
+
30
+ const clientCache = new Map<string, any>()
31
+
32
+ /**
33
+ * Extracts a Viem Client from a Porto instance.
34
+ *
35
+ * @param porto - Porto instance.
36
+ * @returns Client.
37
+ */
38
+ export function fromPorto<
39
+ chains extends readonly [Chains.Chain, ...Chains.Chain[]],
40
+ chain extends Chains.Chain | undefined = undefined,
41
+ account extends Account.Account | Address | undefined = undefined,
42
+ >(
43
+ porto: {
44
+ _internal: Internal<chains>
45
+ provider: Provider.Provider
46
+ },
47
+ config: fromPorto.Config<chain, account> = {},
48
+ ): WalletClient<Transport, chain, account> {
49
+ const { provider } = porto
50
+ const { id } = porto._internal
51
+
52
+ const key = ['provider', id].filter(Boolean).join(':')
53
+ if (clientCache.has(key)) return clientCache.get(key)!
54
+ const client = createClient({
55
+ ...config,
56
+ pollingInterval: 1_000,
57
+ transport: custom(provider),
58
+ })
59
+ clientCache.set(key, client)
60
+ return client as never
61
+ }
62
+
63
+ export declare namespace fromPorto {
64
+ type Config<
65
+ chain extends Chains.Chain | undefined = Chains.Chain | undefined,
66
+ account extends Account.Account | Address | undefined =
67
+ | Account.Account
68
+ | Address
69
+ | undefined,
70
+ > = Pick<
71
+ ClientConfig<Transport, chain, account>,
72
+ 'account' | 'cacheTime' | 'chain' | 'key' | 'name' | 'pollingInterval'
73
+ >
74
+ }
@@ -0,0 +1,13 @@
1
+ export * as Account from './Account.js'
2
+ export * as AccountActions from './AccountActions.js'
3
+ export type { CapabilitiesSchema } from './CapabilitiesSchema.js'
4
+ export * as ContractActions from './ContractActions.js'
5
+ export { decorator as contractActions } from './ContractActions.js'
6
+ export * as Key from './Key.js'
7
+ export * as RelayActions from './RelayActions.js'
8
+ export { decorator as relayActions } from './RelayActions.js'
9
+ export * as RelayClient from './RelayClient.js'
10
+ export type * as RpcSchema from './RpcSchema.js'
11
+ export * as WalletActions from './WalletActions.js'
12
+ export { decorator as walletActions } from './WalletActions.js'
13
+ export * as WalletClient from './WalletClient.js'