0xtrails 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +42 -0
  3. package/dist/abi.d.ts +37 -0
  4. package/dist/abi.d.ts.map +1 -0
  5. package/dist/abi.js +36 -0
  6. package/dist/apiClient.d.ts +9 -0
  7. package/dist/apiClient.d.ts.map +1 -0
  8. package/dist/apiClient.js +18 -0
  9. package/dist/buffer.d.ts +3 -0
  10. package/dist/buffer.d.ts.map +1 -0
  11. package/dist/buffer.js +8 -0
  12. package/dist/cctp.d.ts +84 -0
  13. package/dist/cctp.d.ts.map +1 -0
  14. package/dist/cctp.js +401 -0
  15. package/dist/chainSwitch.d.ts +7 -0
  16. package/dist/chainSwitch.d.ts.map +1 -0
  17. package/dist/chainSwitch.js +33 -0
  18. package/dist/chains.d.ts +13 -0
  19. package/dist/chains.d.ts.map +1 -0
  20. package/dist/chains.js +95 -0
  21. package/dist/constants.d.ts +11 -0
  22. package/dist/constants.d.ts.map +1 -0
  23. package/dist/constants.js +16 -0
  24. package/dist/encoders.d.ts +7 -0
  25. package/dist/encoders.d.ts.map +1 -0
  26. package/dist/encoders.js +8 -0
  27. package/dist/error.d.ts +2 -0
  28. package/dist/error.d.ts.map +1 -0
  29. package/dist/error.js +12 -0
  30. package/dist/explorer.d.ts +12 -0
  31. package/dist/explorer.d.ts.map +1 -0
  32. package/dist/explorer.js +18 -0
  33. package/dist/gasless.d.ts +116 -0
  34. package/dist/gasless.d.ts.map +1 -0
  35. package/dist/gasless.js +297 -0
  36. package/dist/index.d.ts +13 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +9 -0
  39. package/dist/indexerClient.d.ts +9 -0
  40. package/dist/indexerClient.d.ts.map +1 -0
  41. package/dist/indexerClient.js +18 -0
  42. package/dist/intents.d.ts +83 -0
  43. package/dist/intents.d.ts.map +1 -0
  44. package/dist/intents.js +288 -0
  45. package/dist/metaTxnMonitor.d.ts +14 -0
  46. package/dist/metaTxnMonitor.d.ts.map +1 -0
  47. package/dist/metaTxnMonitor.js +121 -0
  48. package/dist/metaTxns.d.ts +6 -0
  49. package/dist/metaTxns.d.ts.map +1 -0
  50. package/dist/metaTxns.js +4 -0
  51. package/dist/paymasterSend.d.ts +90 -0
  52. package/dist/paymasterSend.d.ts.map +1 -0
  53. package/dist/paymasterSend.js +329 -0
  54. package/dist/preconditions.d.ts +11 -0
  55. package/dist/preconditions.d.ts.map +1 -0
  56. package/dist/preconditions.js +29 -0
  57. package/dist/prepareSend.d.ts +102 -0
  58. package/dist/prepareSend.d.ts.map +1 -0
  59. package/dist/prepareSend.js +1080 -0
  60. package/dist/prices.d.ts +18 -0
  61. package/dist/prices.d.ts.map +1 -0
  62. package/dist/prices.js +142 -0
  63. package/dist/queryParams.d.ts +9 -0
  64. package/dist/queryParams.d.ts.map +1 -0
  65. package/dist/queryParams.js +66 -0
  66. package/dist/relaySdk.d.ts +65 -0
  67. package/dist/relaySdk.d.ts.map +1 -0
  68. package/dist/relaySdk.js +314 -0
  69. package/dist/relayer.d.ts +23 -0
  70. package/dist/relayer.d.ts.map +1 -0
  71. package/dist/relayer.js +230 -0
  72. package/dist/sendUserOp.d.ts +140 -0
  73. package/dist/sendUserOp.d.ts.map +1 -0
  74. package/dist/sendUserOp.js +388 -0
  75. package/dist/sequenceWallet.d.ts +79 -0
  76. package/dist/sequenceWallet.d.ts.map +1 -0
  77. package/dist/sequenceWallet.js +374 -0
  78. package/dist/theme.d.ts +3 -0
  79. package/dist/theme.d.ts.map +1 -0
  80. package/dist/theme.js +1 -0
  81. package/dist/toSimpleSmartAccount.d.ts +95 -0
  82. package/dist/toSimpleSmartAccount.d.ts.map +1 -0
  83. package/dist/toSimpleSmartAccount.js +373 -0
  84. package/dist/tokenBalances.d.ts +118 -0
  85. package/dist/tokenBalances.d.ts.map +1 -0
  86. package/dist/tokenBalances.js +492 -0
  87. package/dist/tokens.d.ts +50 -0
  88. package/dist/tokens.d.ts.map +1 -0
  89. package/dist/tokens.js +356 -0
  90. package/dist/trails.d.ts +128 -0
  91. package/dist/trails.d.ts.map +1 -0
  92. package/dist/trails.js +1031 -0
  93. package/dist/umd/trails.min.js +12610 -0
  94. package/dist/umd/trails.min.js.map +1 -0
  95. package/dist/umd.d.ts +24 -0
  96. package/dist/umd.d.ts.map +1 -0
  97. package/dist/utils.d.ts +5 -0
  98. package/dist/utils.d.ts.map +1 -0
  99. package/dist/utils.js +9 -0
  100. package/dist/widget/ConstantsUtil-B-_-u8aQ.js +6 -0
  101. package/dist/widget/add-hVLs3ldJ.js +20 -0
  102. package/dist/widget/all-wallets-Cwxnx4BT.js +11 -0
  103. package/dist/widget/app-store-CAAVQjW0.js +22 -0
  104. package/dist/widget/apple-C3BSbglw.js +23 -0
  105. package/dist/widget/arrow-bottom-circle-BGU9MmsZ.js +16 -0
  106. package/dist/widget/arrow-bottom-hS_SA8Gp.js +13 -0
  107. package/dist/widget/arrow-left-CJZanWz7.js +13 -0
  108. package/dist/widget/arrow-right-C1qL8EMd.js +13 -0
  109. package/dist/widget/arrow-top-CbuCmbQs.js +13 -0
  110. package/dist/widget/bank-CXBEEGbb.js +19 -0
  111. package/dist/widget/bin-Dqzv3zCZ.js +9 -0
  112. package/dist/widget/bitcoin-4y3sovZp.js +18 -0
  113. package/dist/widget/browser-DyOl4_8m.js +1413 -0
  114. package/dist/widget/browser-t7Fh0sEU.js +19 -0
  115. package/dist/widget/card-Bo4CZkTs.js +19 -0
  116. package/dist/widget/ccip-BynehMIN.js +232 -0
  117. package/dist/widget/checkmark-DV6OKvnY.js +16 -0
  118. package/dist/widget/checkmark-bold-CAp1-IQ2.js +13 -0
  119. package/dist/widget/chevron-bottom-BjzsVzk9.js +13 -0
  120. package/dist/widget/chevron-left-CQZBDCiR.js +13 -0
  121. package/dist/widget/chevron-right-Dhg4zeZM.js +13 -0
  122. package/dist/widget/chevron-top-CDQmfJef.js +13 -0
  123. package/dist/widget/chrome-store-BNaC_b6w.js +66 -0
  124. package/dist/widget/circle-BC_GBj91.js +9 -0
  125. package/dist/widget/clock-BmF8-4a0.js +13 -0
  126. package/dist/widget/close-Bf61nZ8o.js +13 -0
  127. package/dist/widget/coinPlaceholder-7cZW2058.js +13 -0
  128. package/dist/widget/compass-CFC3yhnW.js +13 -0
  129. package/dist/widget/components/ChainImage.d.ts +8 -0
  130. package/dist/widget/components/ChainImage.d.ts.map +1 -0
  131. package/dist/widget/components/ChainImage.js +6 -0
  132. package/dist/widget/components/ConnectWallet.d.ts +18 -0
  133. package/dist/widget/components/ConnectWallet.d.ts.map +1 -0
  134. package/dist/widget/components/ConnectWallet.js +66 -0
  135. package/dist/widget/components/DebugScreensDropdown.d.ts +9 -0
  136. package/dist/widget/components/DebugScreensDropdown.d.ts.map +1 -0
  137. package/dist/widget/components/DebugScreensDropdown.js +40 -0
  138. package/dist/widget/components/FeeOptions.d.ts +17 -0
  139. package/dist/widget/components/FeeOptions.d.ts.map +1 -0
  140. package/dist/widget/components/FeeOptions.js +65 -0
  141. package/dist/widget/components/Footer.d.ts +9 -0
  142. package/dist/widget/components/Footer.d.ts.map +1 -0
  143. package/dist/widget/components/Footer.js +13 -0
  144. package/dist/widget/components/GreenCheckAnimation.d.ts +2 -0
  145. package/dist/widget/components/GreenCheckAnimation.d.ts.map +1 -0
  146. package/dist/widget/components/GreenCheckAnimation.js +74 -0
  147. package/dist/widget/components/Modal.d.ts +11 -0
  148. package/dist/widget/components/Modal.d.ts.map +1 -0
  149. package/dist/widget/components/Modal.js +36 -0
  150. package/dist/widget/components/Receipt.d.ts +13 -0
  151. package/dist/widget/components/Receipt.d.ts.map +1 -0
  152. package/dist/widget/components/Receipt.js +36 -0
  153. package/dist/widget/components/SendForm.d.ts +44 -0
  154. package/dist/widget/components/SendForm.d.ts.map +1 -0
  155. package/dist/widget/components/SendForm.js +177 -0
  156. package/dist/widget/components/TokenImage.d.ts +10 -0
  157. package/dist/widget/components/TokenImage.d.ts.map +1 -0
  158. package/dist/widget/components/TokenImage.js +8 -0
  159. package/dist/widget/components/TokenList.d.ts +16 -0
  160. package/dist/widget/components/TokenList.d.ts.map +1 -0
  161. package/dist/widget/components/TokenList.js +39 -0
  162. package/dist/widget/components/TransferPending.d.ts +11 -0
  163. package/dist/widget/components/TransferPending.d.ts.map +1 -0
  164. package/dist/widget/components/TransferPending.js +77 -0
  165. package/dist/widget/components/TransferPendingVertical.d.ts +18 -0
  166. package/dist/widget/components/TransferPendingVertical.d.ts.map +1 -0
  167. package/dist/widget/components/TransferPendingVertical.js +183 -0
  168. package/dist/widget/components/WalletConfirmation.d.ts +18 -0
  169. package/dist/widget/components/WalletConfirmation.d.ts.map +1 -0
  170. package/dist/widget/components/WalletConfirmation.js +22 -0
  171. package/dist/widget/config.d.ts +4 -0
  172. package/dist/widget/config.d.ts.map +1 -0
  173. package/dist/widget/config.js +3 -0
  174. package/dist/widget/copy-e0xXvKN0.js +20 -0
  175. package/dist/widget/cursor-CqM3v0xJ.js +8 -0
  176. package/dist/widget/cursor-transparent-CUQpdsCG.js +17 -0
  177. package/dist/widget/desktop-DUDGIRpM.js +14 -0
  178. package/dist/widget/disconnect-DUFST9QQ.js +13 -0
  179. package/dist/widget/discord-C1cj365Z.js +22 -0
  180. package/dist/widget/email-BHhmb_lX.js +703 -0
  181. package/dist/widget/embedded-wallet-CuuC4eah.js +467 -0
  182. package/dist/widget/ethereum-CfmBVfeB.js +15 -0
  183. package/dist/widget/etherscan-BSiynDhW.js +11 -0
  184. package/dist/widget/exclamation-triangle-DEiFNpHw.js +9 -0
  185. package/dist/widget/extension-mRmfCDxo.js +13 -0
  186. package/dist/widget/external-link-B4xMIVnW.js +13 -0
  187. package/dist/widget/facebook-CBAZStBR.js +31 -0
  188. package/dist/widget/farcaster-LHDEDf5S.js +17 -0
  189. package/dist/widget/filters-CBijuvFv.js +13 -0
  190. package/dist/widget/github-C3ILD420.js +23 -0
  191. package/dist/widget/google-CSj73POX.js +23 -0
  192. package/dist/widget/help-circle-2hdG5IdB.js +17 -0
  193. package/dist/widget/hooks/useAmountUsd.d.ts +13 -0
  194. package/dist/widget/hooks/useAmountUsd.d.ts.map +1 -0
  195. package/dist/widget/hooks/useAmountUsd.js +35 -0
  196. package/dist/widget/hooks/useSendForm.d.ts +125 -0
  197. package/dist/widget/hooks/useSendForm.d.ts.map +1 -0
  198. package/dist/widget/hooks/useSendForm.js +450 -0
  199. package/dist/widget/hooks/useTokenList.d.ts +52 -0
  200. package/dist/widget/hooks/useTokenList.d.ts.map +1 -0
  201. package/dist/widget/hooks/useTokenList.js +252 -0
  202. package/dist/widget/id-ByYSrwsd.js +17 -0
  203. package/dist/widget/if-defined-DRXJEhv7.js +752 -0
  204. package/dist/widget/image-C90L4Rf6.js +9 -0
  205. package/dist/widget/index-B3SlQ9v3.js +46 -0
  206. package/dist/widget/index-B8LPuLXQ.js +78 -0
  207. package/dist/widget/index-BDbworWA.js +171 -0
  208. package/dist/widget/index-BTlDgFSK.js +98 -0
  209. package/dist/widget/index-BUCcjXbd.js +306 -0
  210. package/dist/widget/index-BZ34edi2.js +1055 -0
  211. package/dist/widget/index-BiCU29wK.js +147 -0
  212. package/dist/widget/index-BlmqIKsY.js +266 -0
  213. package/dist/widget/index-BlviH5nG.js +55 -0
  214. package/dist/widget/index-Bwd5X3fS.js +8306 -0
  215. package/dist/widget/index-C5gmknHK.js +78 -0
  216. package/dist/widget/index-CD6dBcRj.js +76 -0
  217. package/dist/widget/index-CDlhy529.js +63 -0
  218. package/dist/widget/index-CHXa5ke-.js +59 -0
  219. package/dist/widget/index-CK94R-H7.js +22498 -0
  220. package/dist/widget/index-CQzo3m3x.js +182 -0
  221. package/dist/widget/index-CRT8cAwG.js +325 -0
  222. package/dist/widget/index-CY7Lt2Yu.js +310 -0
  223. package/dist/widget/index-CiKfAu1E.js +79 -0
  224. package/dist/widget/index-CkCu6rMi.js +258 -0
  225. package/dist/widget/index-CngLTu_R.js +517 -0
  226. package/dist/widget/index-CsMV8-em.js +2577 -0
  227. package/dist/widget/index-Cu2Wva8v.js +200 -0
  228. package/dist/widget/index-DKBxLTEF.js +240 -0
  229. package/dist/widget/index-DQEVT3dx.js +511 -0
  230. package/dist/widget/index-DU2HcCis.js +200 -0
  231. package/dist/widget/index-DutZGWNW.js +321 -0
  232. package/dist/widget/index-O0glArmc.js +182 -0
  233. package/dist/widget/index-O8FmRjKe.js +63719 -0
  234. package/dist/widget/index-RtKXrB6I.js +576 -0
  235. package/dist/widget/index-TIYtS0gE.js +88 -0
  236. package/dist/widget/index-dQNJvWHs.js +66 -0
  237. package/dist/widget/index-wmEwdsq7.js +909 -0
  238. package/dist/widget/index.d.ts +3 -0
  239. package/dist/widget/index.d.ts.map +1 -0
  240. package/dist/widget/index.js +2 -0
  241. package/dist/widget/info-DMPChDjV.js +8 -0
  242. package/dist/widget/info-circle-DAvS_7nY.js +17 -0
  243. package/dist/widget/lightbulb-DnZ9mNEs.js +8 -0
  244. package/dist/widget/lit-html-BRjl1r6K.js +243 -0
  245. package/dist/widget/mail-DpaVSOP8.js +13 -0
  246. package/dist/widget/mobile-CRvdyu7I.js +14 -0
  247. package/dist/widget/more-C5VqW9PR.js +16 -0
  248. package/dist/widget/network-placeholder-CZ0vApma.js +19 -0
  249. package/dist/widget/nftPlaceholder-7jjIK2bT.js +13 -0
  250. package/dist/widget/off-4mHjJLLX.js +9 -0
  251. package/dist/widget/onramp-Bc0ozVsw.js +929 -0
  252. package/dist/widget/play-store-Uocul8nC.js +37 -0
  253. package/dist/widget/plus-DrYF7siO.js +18 -0
  254. package/dist/widget/prepareSend-BQJmzM5B.js +54987 -0
  255. package/dist/widget/qr-code-DcnGMUB3.js +11 -0
  256. package/dist/widget/receive-fvIVd7R_.js +184 -0
  257. package/dist/widget/recycle-horizontal-DrDwXC4D.js +14 -0
  258. package/dist/widget/ref-CXNmEjML.js +41 -0
  259. package/dist/widget/refresh-OK9lIPLS.js +13 -0
  260. package/dist/widget/reown-logo-C-Qn7mS3.js +17 -0
  261. package/dist/widget/search-DZqv1oKg.js +13 -0
  262. package/dist/widget/send-CJlmI-xe.js +1039 -0
  263. package/dist/widget/send-otoEC8uU.js +20 -0
  264. package/dist/widget/socials-BJciurWF.js +599 -0
  265. package/dist/widget/solana-Bv5Hs_0T.js +18 -0
  266. package/dist/widget/swapHorizontal-BzOPGV37.js +13 -0
  267. package/dist/widget/swapHorizontalBold-axyHnSmj.js +13 -0
  268. package/dist/widget/swapHorizontalMedium-C6YOPfPz.js +21 -0
  269. package/dist/widget/swapHorizontalRoundedBold-yVcLbWNT.js +13 -0
  270. package/dist/widget/swapVertical-BDjxt9pE.js +13 -0
  271. package/dist/widget/swaps-DEWNj4kd.js +1637 -0
  272. package/dist/widget/telegram-BQJD7dlP.js +21 -0
  273. package/dist/widget/three-dots-DW9jmSMG.js +10 -0
  274. package/dist/widget/transactions-uCseGQQt.js +38 -0
  275. package/dist/widget/twitch-XugxDfOE.js +23 -0
  276. package/dist/widget/twitterIcon-DQVObQUL.js +11 -0
  277. package/dist/widget/types.d.ts +51 -0
  278. package/dist/widget/types.d.ts.map +1 -0
  279. package/dist/widget/types.js +1 -0
  280. package/dist/widget/verify-DpMYHxLf.js +13 -0
  281. package/dist/widget/verify-filled-KpEL6ZJ_.js +13 -0
  282. package/dist/widget/w3m-modal-C8e-6Kba.js +1047 -0
  283. package/dist/widget/wallet-D8ssEB0o.js +13 -0
  284. package/dist/widget/wallet-placeholder-HtAy21Wc.js +19 -0
  285. package/dist/widget/walletconnect-Bp_4XfrY.js +37 -0
  286. package/dist/widget/warning-circle-FgYS7P7n.js +17 -0
  287. package/dist/widget/widget/index.js +7 -0
  288. package/dist/widget/widget.d.ts +47 -0
  289. package/dist/widget/widget.d.ts.map +1 -0
  290. package/dist/widget/widget.js +932 -0
  291. package/dist/widget/x-DlZBoP9k.js +17 -0
  292. package/dist/widget/x-mark-Ba9pt-_h.js +8 -0
  293. package/package.json +102 -8
  294. package/src/abi.ts +38 -0
  295. package/src/apiClient.ts +32 -0
  296. package/src/buffer.ts +10 -0
  297. package/src/cctp.ts +579 -0
  298. package/src/chainSwitch.ts +55 -0
  299. package/src/chains.ts +124 -0
  300. package/src/constants.ts +26 -0
  301. package/src/encoders.ts +20 -0
  302. package/src/error.ts +15 -0
  303. package/src/explorer.ts +37 -0
  304. package/src/gasless.ts +545 -0
  305. package/src/index.ts +48 -0
  306. package/src/indexerClient.ts +36 -0
  307. package/src/intents.ts +537 -0
  308. package/src/metaTxnMonitor.ts +163 -0
  309. package/src/metaTxns.ts +21 -0
  310. package/src/paymasterSend.ts +503 -0
  311. package/src/preconditions.ts +52 -0
  312. package/src/prepareSend.ts +1849 -0
  313. package/src/prices.ts +186 -0
  314. package/src/queryParams.ts +80 -0
  315. package/src/relaySdk.ts +481 -0
  316. package/src/relayer.ts +255 -0
  317. package/src/sendUserOp.ts +570 -0
  318. package/src/sequenceWallet.ts +579 -0
  319. package/src/theme.ts +2 -0
  320. package/src/toSimpleSmartAccount.ts +567 -0
  321. package/src/tokenBalances.ts +760 -0
  322. package/src/tokens.ts +471 -0
  323. package/src/trails.ts +1591 -0
  324. package/src/types.d.ts +11 -0
  325. package/src/umd.tsx +49 -0
  326. package/src/utils.ts +16 -0
  327. package/src/vite-env.d.ts +4 -0
  328. package/src/widget/assets/MetaMask-icon-fox-with-margins.svg +31 -0
  329. package/src/widget/assets/MetaMask-icon-fox.svg +26 -0
  330. package/src/widget/assets/MetaMask-logo-black.svg +3 -0
  331. package/src/widget/assets/MetaMask-logo-white.svg +16 -0
  332. package/src/widget/assets/Privy_Brandmark_Black.svg +9 -0
  333. package/src/widget/assets/Privy_Brandmark_White.svg +9 -0
  334. package/src/widget/assets/Trails-logo-black.svg +11 -0
  335. package/src/widget/assets/Trails-logo-white.svg +11 -0
  336. package/src/widget/components/ChainImage.tsx +28 -0
  337. package/src/widget/components/ConnectWallet.tsx +206 -0
  338. package/src/widget/components/DebugScreensDropdown.tsx +88 -0
  339. package/src/widget/components/FeeOptions.tsx +199 -0
  340. package/src/widget/components/Footer.tsx +51 -0
  341. package/src/widget/components/GreenCheckAnimation.tsx +119 -0
  342. package/src/widget/components/Modal.tsx +97 -0
  343. package/src/widget/components/Receipt.tsx +237 -0
  344. package/src/widget/components/SendForm.tsx +695 -0
  345. package/src/widget/components/TokenImage.tsx +37 -0
  346. package/src/widget/components/TokenList.tsx +287 -0
  347. package/src/widget/components/TransferPending.tsx +204 -0
  348. package/src/widget/components/TransferPendingVertical.tsx +412 -0
  349. package/src/widget/components/WalletConfirmation.tsx +172 -0
  350. package/src/widget/config.ts +5 -0
  351. package/src/widget/hooks/useAmountUsd.ts +59 -0
  352. package/src/widget/hooks/useSendForm.ts +715 -0
  353. package/src/widget/hooks/useTokenList.ts +397 -0
  354. package/src/widget/index.css +2 -0
  355. package/src/widget/index.tsx +8 -0
  356. package/src/widget/types/svg.d.ts +8 -0
  357. package/src/widget/types.ts +59 -0
  358. package/src/widget/widget.tsx +1438 -0
  359. package/index.js +0 -1
@@ -0,0 +1,374 @@
1
+ import { Account } from "@0xsequence/account";
2
+ import { commons } from "@0xsequence/core";
3
+ import { allNetworks } from "@0xsequence/network";
4
+ import { trackers } from "@0xsequence/sessions";
5
+ import { Orchestrator } from "@0xsequence/signhub";
6
+ import { ethers } from "ethers";
7
+ import { Abi, AbiFunction } from "ox";
8
+ import { bytesToHex, hexToBytes, toHex, } from "viem";
9
+ import { getRelayerUrl } from "./relayer.js";
10
+ export const TRACKER = new trackers.remote.RemoteConfigTracker("https://sessions.sequence.app");
11
+ export function getAccountNetworks(input) {
12
+ return allNetworks.map((network) => {
13
+ try {
14
+ const relayerUrl = getRelayerUrl(input.relayerConfig, network.chainId);
15
+ if (relayerUrl) {
16
+ const relayer = {
17
+ provider: new ethers.JsonRpcProvider(network.rpcUrl),
18
+ url: relayerUrl,
19
+ projectAccessKey: input.sequenceProjectAccessKey,
20
+ };
21
+ return {
22
+ ...network,
23
+ relayer,
24
+ };
25
+ }
26
+ }
27
+ catch (_err) {
28
+ // noop
29
+ }
30
+ return network;
31
+ });
32
+ }
33
+ export async function createSequenceWallet(threshold, signers, relayerConfig, sequenceProjectAccessKey) {
34
+ const account = await Account.new({
35
+ config: {
36
+ threshold,
37
+ // By default a random checkpoint is generated every second
38
+ checkpoint: Math.floor(Date.now() / 1000),
39
+ signers: signers,
40
+ },
41
+ tracker: TRACKER,
42
+ contexts: commons.context.defaultContexts,
43
+ orchestrator: new Orchestrator([]),
44
+ networks: getAccountNetworks({ relayerConfig, sequenceProjectAccessKey }),
45
+ });
46
+ // Try to fetch the config from the tracker
47
+ const reverse1 = await TRACKER.imageHashOfCounterfactualWallet({
48
+ wallet: account.address,
49
+ });
50
+ if (!reverse1) {
51
+ throw new Error("Failed to fetch imageHash from the tracker");
52
+ }
53
+ // Try to fetch the imageHash from the tracker
54
+ const reverse2 = await TRACKER.configOfImageHash({
55
+ imageHash: reverse1.imageHash,
56
+ });
57
+ if (!reverse2) {
58
+ throw new Error("Failed to fetch config from the tracker");
59
+ }
60
+ return account;
61
+ }
62
+ export function toSequenceTransactions(txs) {
63
+ return txs.map(toSequenceTransaction);
64
+ }
65
+ export function toSequenceTransaction(tx) {
66
+ return {
67
+ to: tx.to,
68
+ value: tx.value ? BigInt(tx.value) : undefined,
69
+ data: tx.data,
70
+ gasLimit: tx.gasLimit ? BigInt(tx.gasLimit) : undefined,
71
+ delegateCall: tx.delegateCall || false,
72
+ revertOnError: tx.revertOnError || false,
73
+ };
74
+ }
75
+ export function accountFor(args) {
76
+ const signers = [];
77
+ if (args.signatures) {
78
+ for (const { signer, signature } of args.signatures) {
79
+ // Some ECDSA libraries may return the signature with `v` as 0x00 or 0x01
80
+ // but the Sequence protocol expects it to be 0x1b or 0x1c. We need to
81
+ // adjust the signature to match the protocol.
82
+ const signatureArr = hexToBytes(signature);
83
+ if (signatureArr.length === 66 &&
84
+ (signatureArr[64] === 0 || signatureArr[64] === 1)) {
85
+ signatureArr[64] = signatureArr[64] + 27;
86
+ }
87
+ signers.push(new StaticSigner(signer, bytesToHex(signatureArr)));
88
+ }
89
+ }
90
+ console.log("[trails-sdk] signers", signers);
91
+ return new Account({
92
+ address: args.address,
93
+ tracker: TRACKER,
94
+ contexts: commons.context.defaultContexts,
95
+ orchestrator: new Orchestrator(signers),
96
+ networks: getAccountNetworks({
97
+ relayerConfig: args.relayerConfig,
98
+ sequenceProjectAccessKey: args.sequenceProjectAccessKey,
99
+ }),
100
+ });
101
+ }
102
+ export function digestOf(tx) {
103
+ return commons.transaction.digestOfTransactions(commons.transaction.encodeNonce(tx.space, tx.nonce), toSequenceTransactions(tx.transactions));
104
+ }
105
+ export function subdigestOf(tx) {
106
+ const digest = digestOf(tx);
107
+ return commons.signature.subdigestOf({
108
+ digest,
109
+ chainId: tx.chainId,
110
+ address: tx.wallet,
111
+ });
112
+ }
113
+ export function fromSequenceTransactions(wallet, txs) {
114
+ const sequenceTxs = commons.transaction.fromTransactionish(wallet, txs);
115
+ return sequenceTxs.map((stx) => ({
116
+ to: stx.to,
117
+ value: stx.value?.toString(),
118
+ data: stx.data?.toString(),
119
+ gasLimit: stx.gasLimit?.toString(),
120
+ delegateCall: stx.delegateCall,
121
+ revertOnError: stx.revertOnError,
122
+ }));
123
+ }
124
+ export function recoverSigner(signatures, subdigest) {
125
+ const res = [];
126
+ for (const signature of signatures) {
127
+ try {
128
+ const r = commons.signer.recoverSigner(subdigest, signature);
129
+ res.push({ signer: r, signature: signature });
130
+ }
131
+ catch (e) {
132
+ console.error("[trails-sdk] Failed to recover signature", e);
133
+ }
134
+ }
135
+ return res;
136
+ }
137
+ export async function simpleCreateSequenceWallet(account, relayerConfig, sequenceProjectAccessKey) {
138
+ const signer = account.address;
139
+ const threshold = 1;
140
+ const weight = 1;
141
+ const wallet = await createSequenceWallet(threshold, [{ address: signer, weight: weight }], relayerConfig, sequenceProjectAccessKey);
142
+ return wallet.address;
143
+ }
144
+ export async function getIsWalletDeployed(wallet, publicClient) {
145
+ const hasCode = await publicClient?.getCode({
146
+ address: wallet,
147
+ });
148
+ const isDeployed = hasCode !== undefined && hasCode !== "0x";
149
+ return isDeployed;
150
+ }
151
+ export async function waitForWalletDeployment(wallet, publicClient) {
152
+ while (true) {
153
+ const isDeployed = await getIsWalletDeployed(wallet, publicClient);
154
+ if (isDeployed) {
155
+ break;
156
+ }
157
+ console.log("[trails-sdk] waiting for wallet deployment");
158
+ await new Promise((resolve) => setTimeout(resolve, 500));
159
+ }
160
+ }
161
+ export async function sequenceSendTransaction(sequenceWalletAddress, accountClient, publicClient, calls, chain, relayerConfig, sequenceProjectAccessKey) {
162
+ const chainId = chain.id;
163
+ if (!accountClient?.account?.address || !sequenceWalletAddress) {
164
+ throw new Error("Privy signer or sequence wallet address not available");
165
+ }
166
+ const txsToExecute = calls.map((call) => {
167
+ return {
168
+ to: call.to,
169
+ data: call.data,
170
+ value: call.value || "0",
171
+ revertOnError: true,
172
+ };
173
+ });
174
+ const txe = {
175
+ wallet: sequenceWalletAddress,
176
+ space: Math.floor(Date.now()).toString(),
177
+ nonce: "0",
178
+ chainId: chainId.toString(),
179
+ transactions: txsToExecute,
180
+ };
181
+ // Calculate the tx subdigest
182
+ const subdigest = subdigestOf(txe);
183
+ const digestBytes = hexToBytes(subdigest);
184
+ // Sign the tx subdigest
185
+ const signature = await accountClient.signMessage({
186
+ account: accountClient.account,
187
+ message: { raw: digestBytes },
188
+ });
189
+ const suffixed = `${signature}02`;
190
+ // Get the account for the Sequence Wallet with signatures
191
+ const sequenceAccount = accountFor({
192
+ address: sequenceWalletAddress,
193
+ signatures: [
194
+ {
195
+ signer: accountClient.account?.address,
196
+ signature: suffixed,
197
+ },
198
+ ],
199
+ relayerConfig,
200
+ sequenceProjectAccessKey,
201
+ });
202
+ const sequenceTxs = toSequenceTransactions(txsToExecute);
203
+ const status = await sequenceAccount.status(chainId);
204
+ const wallet = sequenceAccount.walletForStatus(chainId, status);
205
+ console.log("[trails-sdk] sequence wallet", wallet);
206
+ const isDeployed = await getIsWalletDeployed(wallet.address, publicClient);
207
+ if (!isDeployed) {
208
+ console.log("[trails-sdk] deploying sequence wallet");
209
+ const deployTx = await wallet.buildDeployTransaction();
210
+ if (!wallet.relayer)
211
+ throw new Error("Wallet deploy requires a relayer");
212
+ console.log("[trails-sdk] deploy Tx", deployTx);
213
+ console.log("[trails-sdk] deployTx entrypoint:", deployTx.entrypoint);
214
+ console.log("[trails-sdk] deployTx transactions:", deployTx.transactions);
215
+ console.log("[trails-sdk] getting fee options 0");
216
+ const feeOptions = await wallet.relayer.getFeeOptions(wallet.address, ...deployTx.transactions);
217
+ const quote = feeOptions?.quote;
218
+ console.log("[trails-sdk] feeOptions", feeOptions);
219
+ // Check if deployment is whitelisted (no fees required)
220
+ if (feeOptions?.options.length === 0) {
221
+ console.log("[trails-sdk] Deployment is whitelisted - no fees required");
222
+ const bytes = new Uint8Array(32);
223
+ crypto.getRandomValues(bytes);
224
+ wallet.relayer.relay({
225
+ entrypoint: deployTx.entrypoint,
226
+ transactions: deployTx.transactions,
227
+ chainId: wallet.chainId,
228
+ intent: {
229
+ id: toHex(bytes),
230
+ wallet: wallet.address,
231
+ },
232
+ }, quote);
233
+ console.log("[trails-sdk] Deployment relayed");
234
+ await waitForWalletDeployment(wallet.address, publicClient);
235
+ console.log("[trails-sdk] sequence wallet deployed");
236
+ }
237
+ else {
238
+ const option = feeOptions?.options[0];
239
+ if (!option) {
240
+ throw new Error("fee option not found");
241
+ }
242
+ console.log("[trails-sdk] option", option);
243
+ if (option) {
244
+ console.log("[trails-sdk] Using native token for deployment fee");
245
+ // Use encodeGasRefundTransaction to create the fee transaction
246
+ const feeTransactions = encodeGasRefundTransaction(option);
247
+ console.log("[trails-sdk] Fee transactions:", feeTransactions);
248
+ // Include both deployment and fee transactions
249
+ const allTransactions = [...deployTx.transactions];
250
+ console.log("[trails-sdk] All transactions (deployment + fees):", allTransactions);
251
+ const predecorated = await sequenceAccount.predecorateTransactions(allTransactions, status, chainId);
252
+ const signed = await sequenceAccount.signTransactions(predecorated, chainId);
253
+ console.log("[trails-sdk] signed transactions with fees:", signed.transactions);
254
+ console.log("[trails-sdk] signed entrypoint with fees:", signed.entrypoint);
255
+ const bytes = new Uint8Array(32);
256
+ crypto.getRandomValues(bytes);
257
+ wallet.relayer.relay({
258
+ entrypoint: deployTx.entrypoint,
259
+ transactions: deployTx.transactions,
260
+ chainId: wallet.chainId,
261
+ intent: {
262
+ id: toHex(bytes),
263
+ wallet: wallet.address,
264
+ },
265
+ }, quote);
266
+ console.log("[trails-sdk] relayed deployment");
267
+ await waitForWalletDeployment(wallet.address, publicClient);
268
+ console.log("[trails-sdk] sequence wallet deployed");
269
+ }
270
+ else {
271
+ throw new Error("ERC20 fee payment for deployment is not supported yet. Please use native token or a relayer with free wallet deployments.");
272
+ }
273
+ }
274
+ }
275
+ console.log("[trails-sdk] getting fee options 1");
276
+ const feeOptions = await wallet.relayer.getFeeOptions(wallet.address, ...sequenceTxs);
277
+ // Find the USDC option for fee payment
278
+ const option = feeOptions?.options.find((option) => option.token.symbol === "USDC");
279
+ const quote = feeOptions?.quote;
280
+ // Use encodeGasRefundTransaction to create the fee transaction
281
+ const feeTransactions = encodeGasRefundTransaction(option);
282
+ console.log("[trails-sdk] Fee transactions:", feeTransactions);
283
+ // Sign the txs with the Sequence Wallet
284
+ const signed = await wallet.signTransactions([...feeTransactions, ...sequenceTxs], commons.transaction.encodeNonce(txe.space, txe.nonce));
285
+ // Relay the txs to sponsor them
286
+ const relayer = sequenceAccount.relayer(chainId);
287
+ const relayed = await relayer.relay(signed, quote);
288
+ return relayed?.hash || null;
289
+ }
290
+ export class StaticSigner {
291
+ address;
292
+ signature;
293
+ signatureBytes;
294
+ savedSuffix;
295
+ constructor(address, signature) {
296
+ this.address = address;
297
+ this.signature = signature;
298
+ const raw = hexToBytes(this.signature);
299
+ // Separate last byte as suffix
300
+ this.savedSuffix = raw.slice(-1);
301
+ this.signatureBytes = raw.slice(0, -1);
302
+ }
303
+ async buildDeployTransaction() {
304
+ return undefined;
305
+ }
306
+ async predecorateSignedTransactions() {
307
+ return [];
308
+ }
309
+ async decorateTransactions(og) {
310
+ return og;
311
+ }
312
+ async sign() {
313
+ return this.signatureBytes;
314
+ }
315
+ notifyStatusChange() { }
316
+ suffix() {
317
+ return this.savedSuffix;
318
+ }
319
+ async getAddress() {
320
+ return this.address;
321
+ }
322
+ }
323
+ export async function getFeeOptions(relayer, wallet, chainId, calls) {
324
+ const feeOptions = await relayer.feeOptions(wallet, BigInt(chainId), calls);
325
+ return feeOptions;
326
+ }
327
+ // Import the encodeGasRefundTransaction function
328
+ function encodeGasRefundTransaction(option) {
329
+ if (!option)
330
+ return [];
331
+ const value = BigInt(option.value);
332
+ switch (option.token.type) {
333
+ case "UNKNOWN":
334
+ return [
335
+ {
336
+ delegateCall: false,
337
+ revertOnError: true,
338
+ gasLimit: option.gasLimit,
339
+ to: option.to,
340
+ value: value.toString(),
341
+ data: "0x",
342
+ },
343
+ ];
344
+ case "ERC20_TOKEN": {
345
+ if (!option.token.contractAddress) {
346
+ throw new Error(`No contract address for ERC-20 fee option`);
347
+ }
348
+ const [transfer] = Abi.from([
349
+ {
350
+ inputs: [{ type: "address" }, { type: "uint256" }],
351
+ name: "transfer",
352
+ outputs: [{ type: "bool" }],
353
+ stateMutability: "nonpayable",
354
+ type: "function",
355
+ },
356
+ ]);
357
+ return [
358
+ {
359
+ delegateCall: false,
360
+ revertOnError: true,
361
+ gasLimit: option.gasLimit,
362
+ to: option.token.contractAddress,
363
+ value: "0",
364
+ data: AbiFunction.encodeData(transfer, [
365
+ option.to,
366
+ value,
367
+ ]),
368
+ },
369
+ ];
370
+ }
371
+ default:
372
+ throw new Error(`Unhandled fee token type ${option.token.type}`);
373
+ }
374
+ }
@@ -0,0 +1,3 @@
1
+ export type Theme = "light" | "dark" | "auto";
2
+ export type ActiveTheme = "light" | "dark";
3
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAC7C,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAA"}
package/dist/theme.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,95 @@
1
+ import { type Account, type Address, type Assign, BaseError, type Chain, type Client, type EIP1193Provider, type Hex, type JsonRpcAccount, type LocalAccount, type OneOf, type Prettify, type Transport, type WalletClient } from "viem";
2
+ import { entryPoint07Abi, type SmartAccount, type SmartAccountImplementation } from "viem/account-abstraction";
3
+ export declare const getAccountInitCode: (owner: Address, index?: bigint) => Promise<Hex>;
4
+ export type ToSimpleSmartAccountParameters<owner extends OneOf<EthereumProvider | WalletClient<Transport, Chain | undefined, Account> | LocalAccount>> = {
5
+ client: Client<Transport, Chain | undefined, JsonRpcAccount | LocalAccount | undefined>;
6
+ owner: owner;
7
+ entryPoint?: {
8
+ address: Address;
9
+ version: "0.7";
10
+ };
11
+ factoryAddress?: Address;
12
+ index?: bigint;
13
+ address?: Address;
14
+ nonceKey?: bigint;
15
+ accountLogicAddress?: Address;
16
+ };
17
+ export declare const getFactoryAddress: (factoryAddress?: Address) => Address;
18
+ export type SimpleSmartAccountImplementation = Assign<SmartAccountImplementation<typeof entryPoint07Abi, "0.7", object, false>, {
19
+ sign: NonNullable<SmartAccountImplementation["sign"]>;
20
+ }>;
21
+ export type ToSimpleSmartAccountReturnType = SmartAccount<SimpleSmartAccountImplementation>;
22
+ /**
23
+ * @description Creates an Simple Account from a private key.
24
+ *
25
+ * @returns A Private Key Simple Account.
26
+ */
27
+ export declare function toSimpleSmartAccount<owner extends OneOf<EthereumProvider | WalletClient<Transport, Chain | undefined, Account> | LocalAccount>>(parameters: ToSimpleSmartAccountParameters<owner>): Promise<ToSimpleSmartAccountReturnType>;
28
+ export declare const executeSingleAbi: readonly [{
29
+ readonly inputs: readonly [{
30
+ readonly internalType: "address";
31
+ readonly name: "dest";
32
+ readonly type: "address";
33
+ }, {
34
+ readonly internalType: "uint256";
35
+ readonly name: "value";
36
+ readonly type: "uint256";
37
+ }, {
38
+ readonly internalType: "bytes";
39
+ readonly name: "func";
40
+ readonly type: "bytes";
41
+ }];
42
+ readonly name: "execute";
43
+ readonly outputs: readonly [];
44
+ readonly stateMutability: "nonpayable";
45
+ readonly type: "function";
46
+ }];
47
+ export type GetAccountNonceParams = {
48
+ address: Address;
49
+ entryPointAddress: Address;
50
+ key?: bigint;
51
+ };
52
+ /**
53
+ * Returns the nonce of the account with the entry point.
54
+ */
55
+ export declare const getAccountNonce: (client: Client, args: GetAccountNonceParams) => Promise<bigint>;
56
+ export declare const GetSenderAddressHelperByteCode = "0x60806040526102a28038038091610015826100ae565b6080396040816080019112610093576080516001600160a01b03811681036100935760a0516001600160401b0381116100935782609f82011215610093578060800151610061816100fc565b9361006f60405195866100d9565b81855260a082840101116100935761008e9160a0602086019101610117565b610196565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176100d457604052565b610098565b601f909101601f19168101906001600160401b038211908210176100d457604052565b6001600160401b0381116100d457601f01601f191660200190565b60005b83811061012a5750506000910152565b818101518382015260200161011a565b6040916020825261015a8151809281602086015260208686019101610117565b601f01601f1916010190565b3d15610191573d90610177826100fc565b9161018560405193846100d9565b82523d6000602084013e565b606090565b600091908291826040516101cd816101bf6020820195639b249f6960e01b87526024830161013a565b03601f1981018352826100d9565b51925af16101d9610166565b906102485760048151116000146101f7576024015160005260206000f35b60405162461bcd60e51b8152602060048201526024808201527f67657453656e64657241646472657373206661696c656420776974686f7574206044820152636461746160e01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f67657453656e6465724164647265737320646964206e6f74207265766572742060448201526a185cc8195e1c1958dd195960aa1b6064820152608490fdfe";
57
+ export declare const GetSenderAddressHelperAbi: {
58
+ inputs: {
59
+ internalType: string;
60
+ name: string;
61
+ type: string;
62
+ }[];
63
+ stateMutability: string;
64
+ type: string;
65
+ }[];
66
+ export type GetSenderAddressParams = OneOf<{
67
+ initCode: Hex;
68
+ entryPointAddress: Address;
69
+ factory?: never;
70
+ factoryData?: never;
71
+ } | {
72
+ entryPointAddress: Address;
73
+ factory: Address;
74
+ factoryData: Hex;
75
+ initCode?: never;
76
+ }>;
77
+ export declare class InvalidEntryPointError extends BaseError {
78
+ name: string;
79
+ constructor({ cause, entryPointAddress, }?: {
80
+ cause?: BaseError;
81
+ entryPointAddress?: Address;
82
+ });
83
+ }
84
+ /**
85
+ * Returns the address of the account that will be deployed with the given init code.
86
+ */
87
+ export declare const getSenderAddress: (client: Client, args: Prettify<GetSenderAddressParams>) => Promise<Address>;
88
+ export type EthereumProvider = OneOf<{
89
+ request(...args: any): Promise<any>;
90
+ } | EIP1193Provider>;
91
+ export declare function toOwner<provider extends EthereumProvider>({ owner, address, }: {
92
+ owner: OneOf<provider | WalletClient<Transport, Chain | undefined, Account> | LocalAccount>;
93
+ address?: Address;
94
+ }): Promise<LocalAccount>;
95
+ //# sourceMappingURL=toSimpleSmartAccount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toSimpleSmartAccount.d.ts","sourceRoot":"","sources":["../src/toSimpleSmartAccount.ts"],"names":[],"mappings":"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"}