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,783 @@
1
+ /**
2
+ * Actions for Porto Relay.
3
+ *
4
+ * @see https://porto.sh/relay
5
+ */
6
+ import * as AbiError from 'ox/AbiError';
7
+ import * as AbiFunction from 'ox/AbiFunction';
8
+ import * as Errors from 'ox/Errors';
9
+ import * as Hash from 'ox/Hash';
10
+ import * as Hex from 'ox/Hex';
11
+ import * as Secp256k1 from 'ox/Secp256k1';
12
+ import * as Signature from 'ox/Signature';
13
+ import { BaseError, withCache, } from 'viem';
14
+ import { verifyHash } from 'viem/actions';
15
+ import { getExecuteError, } from 'viem/experimental/erc7821';
16
+ import * as z from 'zod/mini';
17
+ import * as RpcSchema from "../../core/internal/relay/rpcSchema.js";
18
+ import * as u from "../../core/internal/schema/utils.js";
19
+ import * as U from "../../core/internal/utils.js";
20
+ /**
21
+ * Gets the authorization for a given address.
22
+ *
23
+ * @example
24
+ * TODO
25
+ *
26
+ * @param client - The client to use.
27
+ * @param parameters - Parameters.
28
+ * @returns Result.
29
+ */
30
+ export async function getAuthorization(client, parameters) {
31
+ try {
32
+ const method = 'wallet_getAuthorization';
33
+ const result = await withCache(() => client.request({
34
+ method,
35
+ params: [
36
+ z.encode(RpcSchema.wallet_getAuthorization.Parameters, parameters),
37
+ ],
38
+ }), { cacheKey: `${client.uid}.${method}.${parameters.address}` });
39
+ return z.decode(RpcSchema.wallet_getAuthorization.Response, result);
40
+ }
41
+ catch (error) {
42
+ parseSchemaError(error);
43
+ throw error;
44
+ }
45
+ }
46
+ /**
47
+ * Gets the capabilities for a given chain ID.
48
+ *
49
+ * @example
50
+ * TODO
51
+ *
52
+ * @param client - The client to use.
53
+ * @param options - Options.
54
+ * @returns Result.
55
+ */
56
+ export async function getCapabilities(client, options = {}) {
57
+ const chainIds = (() => {
58
+ if (options.chainId)
59
+ return [options.chainId];
60
+ if (options.chainIds === 'all')
61
+ return undefined;
62
+ if (options.chainIds)
63
+ return options.chainIds;
64
+ return [client.chain.id];
65
+ })();
66
+ try {
67
+ const method = 'wallet_getCapabilities';
68
+ const result = await withCache(() => client.request({
69
+ method,
70
+ params: chainIds ? [chainIds] : undefined,
71
+ }, {
72
+ retryCount: 0,
73
+ }), {
74
+ cacheKey: `${client.uid}.${method}.${chainIds?.join(',')}`,
75
+ });
76
+ const parsed = (() => {
77
+ if (options.raw)
78
+ return result;
79
+ return z.decode(RpcSchema.wallet_getCapabilities.Response, result);
80
+ })();
81
+ if (options.chainIds)
82
+ return parsed;
83
+ return Object.values(parsed)[0];
84
+ }
85
+ catch (error) {
86
+ parseSchemaError(error);
87
+ throw error;
88
+ }
89
+ }
90
+ /**
91
+ * Get assets owned by user in given chain IDs.
92
+ */
93
+ export async function getAssets(client, parameters) {
94
+ const { account, assetFilter, assetTypeFilter, chainFilter } = parameters;
95
+ try {
96
+ const method = 'wallet_getAssets';
97
+ const result = await client.request({
98
+ method,
99
+ params: [
100
+ z.encode(RpcSchema.wallet_getAssets.Parameters, {
101
+ account,
102
+ assetFilter,
103
+ assetTypeFilter,
104
+ chainFilter,
105
+ }),
106
+ ],
107
+ });
108
+ const value = z.decode(RpcSchema.wallet_getAssets.Response, result);
109
+ const decoded = Object.entries(value).reduce((acc, [key, value]) => {
110
+ acc[Hex.toNumber(key)] = value;
111
+ return acc;
112
+ }, {});
113
+ const aggregated = {};
114
+ for (const value of Object.values(decoded)) {
115
+ for (const item of value) {
116
+ const key = JSON.stringify(item.metadata);
117
+ aggregated[key] = {
118
+ ...item,
119
+ balance: item.balance + (aggregated[key]?.balance ?? 0n),
120
+ };
121
+ }
122
+ }
123
+ return {
124
+ ...decoded,
125
+ '0': Object.values(aggregated),
126
+ };
127
+ }
128
+ catch (error) {
129
+ parseSchemaError(error);
130
+ throw error;
131
+ }
132
+ }
133
+ /**
134
+ * Requests faucet funds to be sent to an address on the Relay.
135
+ */
136
+ export async function addFaucetFunds(client, parameters) {
137
+ const { address, chain = client.chain, tokenAddress, value } = parameters;
138
+ try {
139
+ const method = 'wallet_addFaucetFunds';
140
+ const result = await client.request({
141
+ method,
142
+ params: [
143
+ z.encode(RpcSchema.wallet_addFaucetFunds.Parameters, {
144
+ address,
145
+ chainId: chain?.id,
146
+ tokenAddress,
147
+ value,
148
+ }),
149
+ ],
150
+ }, {
151
+ retryCount: 0,
152
+ });
153
+ // relay state can be behind node state. wait to ensure sync.
154
+ // TODO: figure out how to resolve.
155
+ await new Promise((resolve) => setTimeout(resolve, 2_000));
156
+ return result;
157
+ }
158
+ catch (error) {
159
+ parseSchemaError(error);
160
+ throw error;
161
+ }
162
+ }
163
+ /**
164
+ * Gets the status of a call bundle.
165
+ *
166
+ * @example
167
+ * TODO
168
+ *
169
+ * @param client - The client to use.
170
+ * @param parameters - Parameters.
171
+ * @returns Result.
172
+ */
173
+ export async function getCallsStatus(client, parameters) {
174
+ const { id } = parameters;
175
+ try {
176
+ const method = 'wallet_getCallsStatus';
177
+ const result = await client.request({
178
+ method,
179
+ params: [id],
180
+ });
181
+ return z.decode(RpcSchema.wallet_getCallsStatus.Response, result);
182
+ }
183
+ catch (error) {
184
+ parseSchemaError(error);
185
+ throw error;
186
+ }
187
+ }
188
+ /**
189
+ * Gets the keys for a given account.
190
+ *
191
+ * @example
192
+ * TODO
193
+ *
194
+ * @param client - The client to use.
195
+ * @param parameters - Parameters.
196
+ * @returns Result.
197
+ */
198
+ export async function getKeys(client, parameters) {
199
+ const { address, chainIds } = parameters;
200
+ try {
201
+ const method = 'wallet_getKeys';
202
+ const result = await client.request({
203
+ method,
204
+ params: [
205
+ z.encode(RpcSchema.wallet_getKeys.Parameters, {
206
+ address,
207
+ chainIds,
208
+ }),
209
+ ],
210
+ });
211
+ return z.decode(RpcSchema.wallet_getKeys.Response, result);
212
+ }
213
+ catch (error) {
214
+ parseSchemaError(error);
215
+ throw error;
216
+ }
217
+ }
218
+ /**
219
+ * Gets the health of the RPC.
220
+ *
221
+ * @example
222
+ * TODO
223
+ *
224
+ * @param client - The client to use.
225
+ * @returns Result.
226
+ */
227
+ export async function health(client) {
228
+ const method = 'health';
229
+ const result = await withCache(() => client.request({
230
+ method,
231
+ }), { cacheKey: `${client.uid}.${method}` });
232
+ return z.decode(RpcSchema.health.Response, result);
233
+ }
234
+ /**
235
+ * Prepares a call bundle.
236
+ *
237
+ * @example
238
+ * TODO
239
+ *
240
+ * @param client - The client to use.
241
+ * @param parameters - Parameters.
242
+ * @returns Result.
243
+ */
244
+ export async function prepareCalls(client, parameters) {
245
+ const { address, capabilities, chain = client.chain, key } = parameters;
246
+ const calls = parameters.calls.map((call) => {
247
+ return {
248
+ data: call.abi
249
+ ? AbiFunction.encodeData(AbiFunction.fromAbi(call.abi, call.functionName), call.args)
250
+ : (call.data ?? '0x'),
251
+ to: call.to,
252
+ value: call.value ?? 0n,
253
+ };
254
+ });
255
+ try {
256
+ const method = 'wallet_prepareCalls';
257
+ const result = await client.request({
258
+ method,
259
+ params: [
260
+ z.encode(RpcSchema.wallet_prepareCalls.Parameters, {
261
+ calls,
262
+ capabilities: {
263
+ ...capabilities,
264
+ meta: {
265
+ ...capabilities?.meta,
266
+ },
267
+ },
268
+ chainId: chain?.id,
269
+ from: address,
270
+ key: key
271
+ ? {
272
+ prehash: key.prehash,
273
+ publicKey: key.publicKey,
274
+ type: key.type,
275
+ }
276
+ : undefined,
277
+ }),
278
+ ],
279
+ }, {
280
+ retryCount: 0,
281
+ });
282
+ return Object.assign(z.decode(RpcSchema.wallet_prepareCalls.Response, result), { _raw: result });
283
+ }
284
+ catch (error) {
285
+ parseSchemaError(error);
286
+ parseExecutionError(error, { calls: parameters.calls });
287
+ throw error;
288
+ }
289
+ }
290
+ /**
291
+ * Prepares an account upgrade.
292
+ *
293
+ * @example
294
+ * TODO
295
+ *
296
+ * @param client - Client to use.
297
+ * @param parameters - Parameters.
298
+ * @returns Result.
299
+ */
300
+ export async function prepareUpgradeAccount(client, parameters) {
301
+ const { address, chain = client.chain, delegation, ...capabilities } = parameters;
302
+ try {
303
+ const method = 'wallet_prepareUpgradeAccount';
304
+ const result = await client.request({
305
+ method,
306
+ params: [
307
+ z.encode(RpcSchema.wallet_prepareUpgradeAccount.Parameters, U.normalizeValue({
308
+ address,
309
+ capabilities,
310
+ chainId: chain?.id,
311
+ delegation,
312
+ })),
313
+ ],
314
+ }, {
315
+ retryCount: 0,
316
+ });
317
+ return z.decode(RpcSchema.wallet_prepareUpgradeAccount.Response, result);
318
+ }
319
+ catch (error) {
320
+ parseSchemaError(error);
321
+ parseExecutionError(error);
322
+ throw error;
323
+ }
324
+ }
325
+ /**
326
+ * Broadcasts a signed call bundle.
327
+ *
328
+ * @example
329
+ * TODO
330
+ *
331
+ * @param client - The client to use.
332
+ * @param parameters - Parameters.
333
+ * @returns Result.
334
+ */
335
+ export async function sendPreparedCalls(client, parameters) {
336
+ const { capabilities, context, key, signature } = parameters;
337
+ try {
338
+ const method = 'wallet_sendPreparedCalls';
339
+ const result = await client.request({
340
+ method,
341
+ params: [
342
+ z.encode(RpcSchema.wallet_sendPreparedCalls.Parameters, {
343
+ capabilities,
344
+ context: {
345
+ preCall: context.preCall,
346
+ quote: context.quote,
347
+ },
348
+ key: key
349
+ ? {
350
+ prehash: key.prehash,
351
+ publicKey: key.publicKey,
352
+ type: key.type,
353
+ }
354
+ : undefined,
355
+ signature,
356
+ }),
357
+ ],
358
+ }, {
359
+ retryCount: 0,
360
+ });
361
+ return z.decode(RpcSchema.wallet_sendPreparedCalls.Response, result);
362
+ }
363
+ catch (error) {
364
+ parseSchemaError(error);
365
+ parseExecutionError(error);
366
+ throw error;
367
+ }
368
+ }
369
+ /**
370
+ * NOTE: SHOULD ONLY BE USED ON SERVER.
371
+ *
372
+ * Gets onramp contact info for address.
373
+ *
374
+ * @example
375
+ * TODO
376
+ *
377
+ * @param client - Client to use.
378
+ * @param parameters - Parameters.
379
+ * @returns Result.
380
+ */
381
+ export async function getOnrampContactInfo(client, parameters) {
382
+ const { address, secret } = parameters;
383
+ try {
384
+ const method = 'account_getOnrampContactInfo';
385
+ const result = await client.request({
386
+ method,
387
+ params: [
388
+ z.encode(RpcSchema.account_getOnrampContactInfo.Parameters, {
389
+ address,
390
+ secret,
391
+ }),
392
+ ],
393
+ }, {
394
+ retryCount: 0,
395
+ });
396
+ return z.decode(RpcSchema.account_getOnrampContactInfo.Response, result);
397
+ }
398
+ catch (error) {
399
+ parseSchemaError(error);
400
+ parseExecutionError(error);
401
+ throw error;
402
+ }
403
+ }
404
+ /**
405
+ * Gets onramp status for address
406
+ *
407
+ * @example
408
+ * TODO
409
+ *
410
+ * @param client - Client to use.
411
+ * @param parameters - Parameters.
412
+ * @returns Result.
413
+ */
414
+ export async function onrampStatus(client, parameters) {
415
+ const { address } = parameters;
416
+ try {
417
+ const method = 'account_onrampStatus';
418
+ const result = await client.request({
419
+ method,
420
+ params: [
421
+ z.encode(RpcSchema.account_onrampStatus.Parameters, {
422
+ address,
423
+ }),
424
+ ],
425
+ }, {
426
+ retryCount: 0,
427
+ });
428
+ return z.decode(RpcSchema.account_onrampStatus.Response, result);
429
+ }
430
+ catch (error) {
431
+ parseSchemaError(error);
432
+ parseExecutionError(error);
433
+ throw error;
434
+ }
435
+ }
436
+ /**
437
+ * Resends phone verification for address
438
+ *
439
+ * @example
440
+ * TODO
441
+ *
442
+ * @param client - Client to use.
443
+ * @param parameters - Parameters.
444
+ * @returns Result.
445
+ */
446
+ export async function resendVerifyPhone(client, parameters) {
447
+ const { phone, walletAddress } = parameters;
448
+ try {
449
+ const method = 'account_resendVerifyPhone';
450
+ const result = await client.request({
451
+ method,
452
+ params: [
453
+ z.encode(RpcSchema.account_resendVerifyPhone.Parameters, {
454
+ phone,
455
+ walletAddress,
456
+ }),
457
+ ],
458
+ }, {
459
+ retryCount: 0,
460
+ });
461
+ return z.decode(RpcSchema.account_resendVerifyPhone.Response, result);
462
+ }
463
+ catch (error) {
464
+ parseSchemaError(error);
465
+ parseExecutionError(error);
466
+ throw error;
467
+ }
468
+ }
469
+ /**
470
+ * Sets email for address
471
+ *
472
+ * @example
473
+ * TODO
474
+ *
475
+ * @param client - Client to use.
476
+ * @param parameters - Parameters.
477
+ * @returns Result.
478
+ */
479
+ export async function setEmail(client, parameters) {
480
+ const { email, walletAddress } = parameters;
481
+ try {
482
+ const method = 'account_setEmail';
483
+ const result = await client.request({
484
+ method,
485
+ params: [
486
+ z.encode(RpcSchema.account_setEmail.Parameters, {
487
+ email,
488
+ walletAddress,
489
+ }),
490
+ ],
491
+ }, {
492
+ retryCount: 0,
493
+ });
494
+ return z.decode(RpcSchema.account_setEmail.Response, result);
495
+ }
496
+ catch (error) {
497
+ parseSchemaError(error);
498
+ parseExecutionError(error);
499
+ throw error;
500
+ }
501
+ }
502
+ /**
503
+ * Sets phone for address
504
+ *
505
+ * @example
506
+ * TODO
507
+ *
508
+ * @param client - Client to use.
509
+ * @param parameters - Parameters.
510
+ * @returns Result.
511
+ */
512
+ export async function setPhone(client, parameters) {
513
+ const { phone, walletAddress } = parameters;
514
+ try {
515
+ const method = 'account_setPhone';
516
+ const result = await client.request({
517
+ method,
518
+ params: [
519
+ z.encode(RpcSchema.account_setPhone.Parameters, {
520
+ phone,
521
+ walletAddress,
522
+ }),
523
+ ],
524
+ }, {
525
+ retryCount: 0,
526
+ });
527
+ return z.decode(RpcSchema.account_setPhone.Response, result);
528
+ }
529
+ catch (error) {
530
+ parseSchemaError(error);
531
+ parseExecutionError(error);
532
+ throw error;
533
+ }
534
+ }
535
+ /**
536
+ * Submits an account upgrade to the Relay.
537
+ *
538
+ * @example
539
+ * TODO
540
+ *
541
+ * @param client - Client to use.
542
+ * @param parameters - Parameters.
543
+ * @returns Result.
544
+ */
545
+ export async function upgradeAccount(client, parameters) {
546
+ const { context, signatures } = parameters;
547
+ try {
548
+ const method = 'wallet_upgradeAccount';
549
+ await client.request({
550
+ method,
551
+ params: [
552
+ z.encode(RpcSchema.wallet_upgradeAccount.Parameters, {
553
+ context,
554
+ signatures,
555
+ }),
556
+ ],
557
+ }, {
558
+ retryCount: 0,
559
+ });
560
+ }
561
+ catch (error) {
562
+ parseSchemaError(error);
563
+ parseExecutionError(error);
564
+ throw error;
565
+ }
566
+ }
567
+ /**
568
+ * Verifies email for address
569
+ *
570
+ * @example
571
+ * TODO
572
+ *
573
+ * @param client - Client to use.
574
+ * @param parameters - Parameters.
575
+ * @returns Result.
576
+ */
577
+ export async function verifyEmail(client, parameters) {
578
+ const { chainId, email, signature, token, walletAddress } = parameters;
579
+ try {
580
+ const method = 'account_verifyEmail';
581
+ const result = await client.request({
582
+ method,
583
+ params: [
584
+ z.encode(RpcSchema.account_verifyEmail.Parameters, {
585
+ chainId,
586
+ email,
587
+ signature,
588
+ token,
589
+ walletAddress,
590
+ }),
591
+ ],
592
+ }, {
593
+ retryCount: 0,
594
+ });
595
+ return z.decode(RpcSchema.account_verifyEmail.Response, result);
596
+ }
597
+ catch (error) {
598
+ parseSchemaError(error);
599
+ parseExecutionError(error);
600
+ throw error;
601
+ }
602
+ }
603
+ /**
604
+ * Verifies email for address
605
+ *
606
+ * @example
607
+ * TODO
608
+ *
609
+ * @param client - Client to use.
610
+ * @param parameters - Parameters.
611
+ * @returns Result.
612
+ */
613
+ export async function verifyPhone(client, parameters) {
614
+ const { code, phone, walletAddress } = parameters;
615
+ try {
616
+ const method = 'account_verifyPhone';
617
+ const result = await client.request({
618
+ method,
619
+ params: [
620
+ z.encode(RpcSchema.account_verifyPhone.Parameters, {
621
+ code,
622
+ phone,
623
+ walletAddress,
624
+ }),
625
+ ],
626
+ }, {
627
+ retryCount: 0,
628
+ });
629
+ return z.decode(RpcSchema.account_verifyPhone.Response, result);
630
+ }
631
+ catch (error) {
632
+ parseSchemaError(error);
633
+ parseExecutionError(error);
634
+ throw error;
635
+ }
636
+ }
637
+ /**
638
+ * Verifies a prepare calls response.
639
+ *
640
+ * @param client - Client to use.
641
+ * @param parameters - Parameters.
642
+ * @returns Whether or not the response is valid.
643
+ */
644
+ export async function verifyPrepareCallsResponse(client, parameters) {
645
+ const { signature } = parameters;
646
+ const { signature: _, capabilities: { feeSignature: __, ...capabilities }, ...response } = parameters.response;
647
+ const sorted = sortKeys({ capabilities, ...response });
648
+ const payload = Hash.keccak256(Hex.fromString(JSON.stringify(sorted)));
649
+ const address = Secp256k1.recoverAddress({
650
+ payload,
651
+ signature: Signature.fromHex(signature),
652
+ });
653
+ const { quoteSigner } = await health(client);
654
+ return address === quoteSigner;
655
+ }
656
+ /**
657
+ * Verifies a signature.
658
+ *
659
+ * @example
660
+ * TODO
661
+ *
662
+ * @param client - The client to use.
663
+ * @param parameters - Parameters.
664
+ * @returns Result.
665
+ */
666
+ export async function verifySignature(client, parameters) {
667
+ const { address, chain = client.chain, digest, signature } = parameters;
668
+ try {
669
+ async function fallback() {
670
+ const valid = await verifyHash(client, {
671
+ address,
672
+ hash: digest,
673
+ signature,
674
+ });
675
+ return {
676
+ proof: null,
677
+ valid,
678
+ };
679
+ }
680
+ const method = 'wallet_verifySignature';
681
+ const result = await (async () => {
682
+ const result = await client
683
+ .request({
684
+ method,
685
+ params: [
686
+ z.encode(RpcSchema.wallet_verifySignature.Parameters, {
687
+ address,
688
+ chainId: chain?.id,
689
+ digest,
690
+ signature,
691
+ }),
692
+ ],
693
+ }, {
694
+ retryCount: 0,
695
+ })
696
+ .catch(fallback);
697
+ if (result.valid)
698
+ return result;
699
+ return fallback();
700
+ })();
701
+ return z.decode(RpcSchema.wallet_verifySignature.Response, result);
702
+ }
703
+ catch (error) {
704
+ parseSchemaError(error);
705
+ throw error;
706
+ }
707
+ }
708
+ export function parseExecutionError(e, { calls } = {}) {
709
+ if (!(e instanceof BaseError))
710
+ return;
711
+ const getAbiError = (error) => {
712
+ try {
713
+ if (error.name === 'ContractFunctionExecutionError') {
714
+ const data = error.cause.name === 'ContractFunctionRevertedError'
715
+ ? error.cause.data
716
+ : undefined;
717
+ if (data)
718
+ return AbiError.fromAbi([data.abiItem], data.errorName);
719
+ }
720
+ const cause = error.walk((e) => !(e instanceof Error) &&
721
+ e.code === 3);
722
+ if (!cause)
723
+ return undefined;
724
+ const { data, message } = cause;
725
+ if (data === '0xd0d5039b')
726
+ return AbiError.from('error Unauthorized()');
727
+ return {
728
+ inputs: [],
729
+ name: (message ?? data).split('(')[0],
730
+ type: 'error',
731
+ };
732
+ }
733
+ catch {
734
+ return undefined;
735
+ }
736
+ };
737
+ const error = getExecuteError(e, {
738
+ calls: (calls ?? []),
739
+ });
740
+ const abiError = getAbiError(error);
741
+ if (error === e && !abiError)
742
+ return;
743
+ throw new ExecutionError(Object.assign(error, { abiError }));
744
+ }
745
+ export function sortKeys(value) {
746
+ if (typeof value === 'object' && value !== null) {
747
+ if (Array.isArray(value))
748
+ return value.map(sortKeys);
749
+ const result = {};
750
+ for (const key of Object.keys(value).sort())
751
+ result[key] = sortKeys(value[key]);
752
+ return result;
753
+ }
754
+ return value;
755
+ }
756
+ /** Thrown when schema validation fails. */
757
+ export function parseSchemaError(e) {
758
+ if (e.name === '$ZodError')
759
+ throw u.toValidationError(e);
760
+ }
761
+ /** Thrown when the execution fails. */
762
+ export class ExecutionError extends Errors.BaseError {
763
+ constructor(cause) {
764
+ super('An error occurred while executing calls.', {
765
+ cause,
766
+ metaMessages: [cause.abiError && 'Reason: ' + cause.abiError.name].filter(Boolean),
767
+ });
768
+ Object.defineProperty(this, "name", {
769
+ enumerable: true,
770
+ configurable: true,
771
+ writable: true,
772
+ value: 'Rpc.ExecutionError'
773
+ });
774
+ Object.defineProperty(this, "abiError", {
775
+ enumerable: true,
776
+ configurable: true,
777
+ writable: true,
778
+ value: void 0
779
+ });
780
+ this.abiError = cause.abiError;
781
+ }
782
+ }
783
+ //# sourceMappingURL=relayActions.js.map