zksync-sso 0.5.0-beta.3 → 1.0.0-beta.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 (595) hide show
  1. package/dist/_cjs/abi/SessionKeyValidator.js +729 -993
  2. package/dist/_cjs/abi/SessionKeyValidator.js.map +1 -1
  3. package/dist/_cjs/abi/{WebAuthValidator.js → WebAuthnValidator.js} +273 -306
  4. package/dist/_cjs/abi/WebAuthnValidator.js.map +1 -0
  5. package/dist/_cjs/abi/index.js +17 -15
  6. package/dist/_cjs/abi/index.js.map +1 -1
  7. package/dist/_cjs/actions/sendUserOperation.js +14 -0
  8. package/dist/_cjs/actions/sendUserOperation.js.map +1 -0
  9. package/dist/_cjs/client/actions/deploy.js +53 -0
  10. package/dist/_cjs/client/actions/deploy.js.map +1 -0
  11. package/dist/_cjs/client/actions/index.js +22 -0
  12. package/dist/_cjs/client/actions/index.js.map +1 -0
  13. package/dist/_cjs/client/actions/modules.js +42 -0
  14. package/dist/_cjs/client/actions/modules.js.map +1 -0
  15. package/dist/_cjs/client/actions/passkey.js +89 -0
  16. package/dist/_cjs/client/actions/passkey.js.map +1 -0
  17. package/dist/_cjs/client/actions/sessions.js +178 -0
  18. package/dist/_cjs/client/actions/sessions.js.map +1 -0
  19. package/dist/_cjs/client/actions/utils.js +8 -0
  20. package/dist/_cjs/client/actions/utils.js.map +1 -0
  21. package/dist/_cjs/client/common/smart-account-client-actions.js +173 -0
  22. package/dist/_cjs/client/common/smart-account-client-actions.js.map +1 -0
  23. package/dist/_cjs/client/ecdsa/account.js +75 -30
  24. package/dist/_cjs/client/ecdsa/account.js.map +1 -1
  25. package/dist/_cjs/client/ecdsa/client-actions.js +14 -0
  26. package/dist/_cjs/client/ecdsa/client-actions.js.map +1 -0
  27. package/dist/_cjs/client/ecdsa/client.js +29 -23
  28. package/dist/_cjs/client/ecdsa/client.js.map +1 -1
  29. package/dist/_cjs/client/ecdsa/index.js +5 -5
  30. package/dist/_cjs/client/ecdsa/index.js.map +1 -1
  31. package/dist/_cjs/client/index.js +7 -82
  32. package/dist/_cjs/client/index.js.map +1 -1
  33. package/dist/_cjs/client/passkey/account.js +88 -33
  34. package/dist/_cjs/client/passkey/account.js.map +1 -1
  35. package/dist/_cjs/client/passkey/client-actions.js +42 -0
  36. package/dist/_cjs/client/passkey/client-actions.js.map +1 -0
  37. package/dist/_cjs/client/passkey/client.js +32 -41
  38. package/dist/_cjs/client/passkey/client.js.map +1 -1
  39. package/dist/_cjs/client/passkey/index.js +14 -18
  40. package/dist/_cjs/client/passkey/index.js.map +1 -1
  41. package/dist/_cjs/client/passkey/webauthn.js +381 -0
  42. package/dist/_cjs/client/passkey/webauthn.js.map +1 -0
  43. package/dist/_cjs/client/session/account.js +91 -34
  44. package/dist/_cjs/client/session/account.js.map +1 -1
  45. package/dist/_cjs/client/session/client-actions.js +19 -0
  46. package/dist/_cjs/client/session/client-actions.js.map +1 -0
  47. package/dist/_cjs/client/session/client.js +29 -83
  48. package/dist/_cjs/client/session/client.js.map +1 -1
  49. package/dist/_cjs/client/session/formatSessionPreferences.js +263 -0
  50. package/dist/_cjs/client/session/formatSessionPreferences.js.map +1 -0
  51. package/dist/_cjs/client/session/index.js +5 -0
  52. package/dist/_cjs/client/session/index.js.map +1 -1
  53. package/dist/_cjs/client/session/monitor.js +138 -0
  54. package/dist/_cjs/client/session/monitor.js.map +1 -0
  55. package/dist/_cjs/client/session/types.js +83 -0
  56. package/dist/_cjs/client/session/types.js.map +1 -0
  57. package/dist/_cjs/client/session/utils.js +95 -0
  58. package/dist/_cjs/client/session/utils.js.map +1 -0
  59. package/dist/_cjs/client-auth-server/Signer.js +67 -43
  60. package/dist/_cjs/client-auth-server/Signer.js.map +1 -1
  61. package/dist/_cjs/client-auth-server/WalletProvider.js +6 -7
  62. package/dist/_cjs/client-auth-server/WalletProvider.js.map +1 -1
  63. package/dist/_cjs/client-auth-server/session/index.js +36 -21
  64. package/dist/_cjs/client-auth-server/session/index.js.map +1 -1
  65. package/dist/_cjs/client-auth-server/session/utils.js.map +1 -1
  66. package/dist/_cjs/client-auth-server/utils/helpers.js.map +1 -0
  67. package/dist/_cjs/{client/recovery → client-auth-server/utils}/index.js +2 -2
  68. package/dist/_cjs/client-auth-server/utils/index.js.map +1 -0
  69. package/dist/_cjs/client-auth-server/utils/storage.js.map +1 -0
  70. package/dist/_cjs/connector/index.js +92 -13
  71. package/dist/_cjs/connector/index.js.map +1 -1
  72. package/dist/_cjs/index.js +19 -3
  73. package/dist/_cjs/index.js.map +1 -1
  74. package/dist/_esm/abi/SessionKeyValidator.js +729 -993
  75. package/dist/_esm/abi/SessionKeyValidator.js.map +1 -1
  76. package/dist/_esm/abi/{WebAuthValidator.js → WebAuthnValidator.js} +272 -305
  77. package/dist/_esm/abi/WebAuthnValidator.js.map +1 -0
  78. package/dist/_esm/abi/index.js +3 -7
  79. package/dist/_esm/abi/index.js.map +1 -1
  80. package/dist/_esm/actions/sendUserOperation.js +26 -0
  81. package/dist/_esm/actions/sendUserOperation.js.map +1 -0
  82. package/dist/_esm/client/actions/deploy.js +114 -0
  83. package/dist/_esm/client/actions/deploy.js.map +1 -0
  84. package/dist/_esm/client/actions/index.js +7 -0
  85. package/dist/_esm/client/actions/index.js.map +1 -0
  86. package/dist/_esm/client/actions/modules.js +75 -0
  87. package/dist/_esm/client/actions/modules.js.map +1 -0
  88. package/dist/_esm/client/actions/passkey.js +200 -0
  89. package/dist/_esm/client/actions/passkey.js.map +1 -0
  90. package/dist/_esm/client/actions/sessions.js +279 -0
  91. package/dist/_esm/client/actions/sessions.js.map +1 -0
  92. package/dist/_esm/client/actions/utils.js +27 -0
  93. package/dist/_esm/client/actions/utils.js.map +1 -0
  94. package/dist/_esm/client/common/smart-account-client-actions.js +209 -0
  95. package/dist/_esm/client/common/smart-account-client-actions.js.map +1 -0
  96. package/dist/_esm/client/ecdsa/account.js +91 -29
  97. package/dist/_esm/client/ecdsa/account.js.map +1 -1
  98. package/dist/_esm/client/ecdsa/client-actions.js +16 -0
  99. package/dist/_esm/client/ecdsa/client-actions.js.map +1 -0
  100. package/dist/_esm/client/ecdsa/client.js +90 -23
  101. package/dist/_esm/client/ecdsa/client.js.map +1 -1
  102. package/dist/_esm/client/ecdsa/index.js +2 -5
  103. package/dist/_esm/client/ecdsa/index.js.map +1 -1
  104. package/dist/_esm/client/index.js +6 -77
  105. package/dist/_esm/client/index.js.map +1 -1
  106. package/dist/_esm/client/passkey/account.js +118 -32
  107. package/dist/_esm/client/passkey/account.js.map +1 -1
  108. package/dist/_esm/client/passkey/client-actions.js +51 -0
  109. package/dist/_esm/client/passkey/client-actions.js.map +1 -0
  110. package/dist/_esm/client/passkey/client.js +99 -42
  111. package/dist/_esm/client/passkey/client.js.map +1 -1
  112. package/dist/_esm/client/passkey/index.js +4 -4
  113. package/dist/_esm/client/passkey/index.js.map +1 -1
  114. package/dist/_esm/client/passkey/webauthn.js +493 -0
  115. package/dist/_esm/client/passkey/webauthn.js.map +1 -0
  116. package/dist/_esm/client/session/account.js +114 -33
  117. package/dist/_esm/client/session/account.js.map +1 -1
  118. package/dist/_esm/client/session/client-actions.js +20 -0
  119. package/dist/_esm/client/session/client-actions.js.map +1 -0
  120. package/dist/_esm/client/session/client.js +34 -84
  121. package/dist/_esm/client/session/client.js.map +1 -1
  122. package/dist/_esm/client/session/formatSessionPreferences.js +283 -0
  123. package/dist/_esm/client/session/formatSessionPreferences.js.map +1 -0
  124. package/dist/_esm/client/session/index.js +5 -0
  125. package/dist/_esm/client/session/index.js.map +1 -1
  126. package/dist/_esm/client/session/monitor.js +195 -0
  127. package/dist/_esm/client/session/monitor.js.map +1 -0
  128. package/dist/_esm/client/session/types.js +110 -0
  129. package/dist/_esm/client/session/types.js.map +1 -0
  130. package/dist/_esm/client/session/utils.js +115 -0
  131. package/dist/_esm/client/session/utils.js.map +1 -0
  132. package/dist/_esm/client-auth-server/Signer.js +84 -43
  133. package/dist/_esm/client-auth-server/Signer.js.map +1 -1
  134. package/dist/_esm/client-auth-server/WalletProvider.js +6 -5
  135. package/dist/_esm/client-auth-server/WalletProvider.js.map +1 -1
  136. package/dist/_esm/client-auth-server/session/index.js +2 -1
  137. package/dist/_esm/client-auth-server/session/index.js.map +1 -1
  138. package/dist/_esm/client-auth-server/session/utils.js.map +1 -1
  139. package/dist/_esm/client-auth-server/utils/helpers.js.map +1 -0
  140. package/dist/_esm/client-auth-server/utils/index.js +3 -0
  141. package/dist/_esm/client-auth-server/utils/index.js.map +1 -0
  142. package/dist/_esm/client-auth-server/utils/storage.js.map +1 -0
  143. package/dist/_esm/connector/index.js +105 -11
  144. package/dist/_esm/connector/index.js.map +1 -1
  145. package/dist/_esm/index.js +9 -1
  146. package/dist/_esm/index.js.map +1 -1
  147. package/dist/_types/abi/SessionKeyValidator.d.ts +612 -602
  148. package/dist/_types/abi/SessionKeyValidator.d.ts.map +1 -1
  149. package/dist/_types/abi/{WebAuthValidator.d.ts → WebAuthnValidator.d.ts} +234 -186
  150. package/dist/_types/abi/WebAuthnValidator.d.ts.map +1 -0
  151. package/dist/_types/abi/index.d.ts +3 -7
  152. package/dist/_types/abi/index.d.ts.map +1 -1
  153. package/dist/_types/actions/sendUserOperation.d.ts +49 -0
  154. package/dist/_types/actions/sendUserOperation.d.ts.map +1 -0
  155. package/dist/_types/client/actions/deploy.d.ts +108 -0
  156. package/dist/_types/client/actions/deploy.d.ts.map +1 -0
  157. package/dist/_types/client/actions/index.d.ts +10 -0
  158. package/dist/_types/client/actions/index.d.ts.map +1 -0
  159. package/dist/_types/client/actions/modules.d.ts +65 -0
  160. package/dist/_types/client/actions/modules.d.ts.map +1 -0
  161. package/dist/_types/client/actions/passkey.d.ts +192 -0
  162. package/dist/_types/client/actions/passkey.d.ts.map +1 -0
  163. package/dist/_types/client/actions/sessions.d.ts +225 -0
  164. package/dist/_types/client/actions/sessions.d.ts.map +1 -0
  165. package/dist/_types/client/actions/utils.d.ts +25 -0
  166. package/dist/_types/client/actions/utils.d.ts.map +1 -0
  167. package/dist/_types/client/common/smart-account-client-actions.d.ts +50 -0
  168. package/dist/_types/client/common/smart-account-client-actions.d.ts.map +1 -0
  169. package/dist/_types/client/ecdsa/account.d.ts +16 -11
  170. package/dist/_types/client/ecdsa/account.d.ts.map +1 -1
  171. package/dist/_types/client/ecdsa/client-actions.d.ts +25 -0
  172. package/dist/_types/client/ecdsa/client-actions.d.ts.map +1 -0
  173. package/dist/_types/client/ecdsa/client.d.ts +92 -22
  174. package/dist/_types/client/ecdsa/client.d.ts.map +1 -1
  175. package/dist/_types/client/ecdsa/index.d.ts +2 -5
  176. package/dist/_types/client/ecdsa/index.d.ts.map +1 -1
  177. package/dist/_types/client/index.d.ts +7 -31
  178. package/dist/_types/client/index.d.ts.map +1 -1
  179. package/dist/_types/client/passkey/account.d.ts +22 -15
  180. package/dist/_types/client/passkey/account.d.ts.map +1 -1
  181. package/dist/_types/client/passkey/client-actions.d.ts +54 -0
  182. package/dist/_types/client/passkey/client-actions.d.ts.map +1 -0
  183. package/dist/_types/client/passkey/client.d.ts +103 -32
  184. package/dist/_types/client/passkey/client.d.ts.map +1 -1
  185. package/dist/_types/client/passkey/index.d.ts +4 -4
  186. package/dist/_types/client/passkey/index.d.ts.map +1 -1
  187. package/dist/_types/client/passkey/webauthn.d.ts +123 -0
  188. package/dist/_types/client/passkey/webauthn.d.ts.map +1 -0
  189. package/dist/_types/client/session/account.d.ts +26 -13
  190. package/dist/_types/client/session/account.d.ts.map +1 -1
  191. package/dist/_types/client/session/client-actions.d.ts +26 -0
  192. package/dist/_types/client/session/client-actions.d.ts.map +1 -0
  193. package/dist/_types/client/session/client.d.ts +38 -36
  194. package/dist/_types/client/session/client.d.ts.map +1 -1
  195. package/dist/_types/client/session/formatSessionPreferences.d.ts +101 -0
  196. package/dist/_types/client/session/formatSessionPreferences.d.ts.map +1 -0
  197. package/dist/_types/client/session/index.d.ts +5 -0
  198. package/dist/_types/client/session/index.d.ts.map +1 -1
  199. package/dist/_types/client/session/monitor.d.ts +93 -0
  200. package/dist/_types/client/session/monitor.d.ts.map +1 -0
  201. package/dist/_types/client/session/types.d.ts +133 -0
  202. package/dist/_types/client/session/types.d.ts.map +1 -0
  203. package/dist/_types/client/session/utils.d.ts +47 -0
  204. package/dist/_types/client/session/utils.d.ts.map +1 -0
  205. package/dist/_types/client-auth-server/Signer.d.ts +241 -245
  206. package/dist/_types/client-auth-server/Signer.d.ts.map +1 -1
  207. package/dist/_types/client-auth-server/WalletProvider.d.ts +236 -241
  208. package/dist/_types/client-auth-server/WalletProvider.d.ts.map +1 -1
  209. package/dist/_types/client-auth-server/interface.d.ts +2 -2
  210. package/dist/_types/client-auth-server/interface.d.ts.map +1 -1
  211. package/dist/_types/client-auth-server/rpc.d.ts +4 -0
  212. package/dist/_types/client-auth-server/rpc.d.ts.map +1 -1
  213. package/dist/_types/client-auth-server/session/index.d.ts +5 -4
  214. package/dist/_types/client-auth-server/session/index.d.ts.map +1 -1
  215. package/dist/_types/client-auth-server/session/utils.d.ts +3 -3
  216. package/dist/_types/client-auth-server/session/utils.d.ts.map +1 -1
  217. package/dist/_types/client-auth-server/utils/helpers.d.ts.map +1 -0
  218. package/dist/_types/client-auth-server/utils/index.d.ts +3 -0
  219. package/dist/_types/client-auth-server/utils/index.d.ts.map +1 -0
  220. package/dist/_types/client-auth-server/utils/storage.d.ts.map +1 -0
  221. package/dist/_types/communicator/interface.d.ts +5 -0
  222. package/dist/_types/communicator/interface.d.ts.map +1 -1
  223. package/dist/_types/connector/index.d.ts +11 -9
  224. package/dist/_types/connector/index.d.ts.map +1 -1
  225. package/dist/_types/index.d.ts +5 -3
  226. package/dist/_types/index.d.ts.map +1 -1
  227. package/package.json +36 -55
  228. package/prepare-package.mjs +8 -0
  229. package/project.json +7 -7
  230. package/src/abi/SessionKeyValidator.ts +861 -1125
  231. package/src/abi/WebAuthnValidator.ts +324 -0
  232. package/src/abi/index.ts +3 -7
  233. package/src/actions/sendUserOperation.ts +98 -0
  234. package/src/client/actions/deploy.ts +225 -0
  235. package/src/client/actions/index.ts +39 -0
  236. package/src/client/actions/modules.ts +112 -0
  237. package/src/client/actions/passkey.ts +344 -0
  238. package/src/client/actions/sessions.ts +457 -0
  239. package/src/client/actions/utils.ts +30 -0
  240. package/src/client/common/smart-account-client-actions.ts +317 -0
  241. package/src/client/ecdsa/account.ts +146 -42
  242. package/src/client/ecdsa/client-actions.ts +54 -0
  243. package/src/client/ecdsa/client.ts +177 -75
  244. package/src/client/ecdsa/index.ts +9 -5
  245. package/src/client/index.ts +10 -122
  246. package/src/client/passkey/account.ts +180 -55
  247. package/src/client/passkey/client-actions.ts +117 -0
  248. package/src/client/passkey/client.ts +194 -108
  249. package/src/client/passkey/index.ts +21 -4
  250. package/src/client/passkey/webauthn.ts +638 -0
  251. package/src/client/session/account.ts +211 -46
  252. package/src/client/session/client-actions.ts +62 -0
  253. package/src/client/session/client.ts +121 -160
  254. package/src/client/session/formatSessionPreferences.ts +444 -0
  255. package/src/client/session/index.ts +5 -0
  256. package/src/client/session/monitor.ts +292 -0
  257. package/src/client/session/types.ts +205 -0
  258. package/src/client/session/utils.ts +160 -0
  259. package/src/client-auth-server/Signer.ts +91 -41
  260. package/src/client-auth-server/WalletProvider.ts +12 -11
  261. package/src/client-auth-server/interface.ts +2 -2
  262. package/src/client-auth-server/rpc.ts +4 -0
  263. package/src/client-auth-server/session/index.ts +6 -4
  264. package/src/client-auth-server/session/utils.ts +4 -4
  265. package/src/client-auth-server/utils/index.ts +2 -0
  266. package/src/communicator/interface.ts +6 -0
  267. package/src/connector/index.ts +137 -24
  268. package/src/index.ts +12 -3
  269. package/tsconfig.json +1 -1
  270. package/dist/_cjs/abi/GuardianRecoveryModule.js +0 -767
  271. package/dist/_cjs/abi/GuardianRecoveryModule.js.map +0 -1
  272. package/dist/_cjs/abi/GuardianRecoveryValidator.js +0 -813
  273. package/dist/_cjs/abi/GuardianRecoveryValidator.js.map +0 -1
  274. package/dist/_cjs/abi/OidcKeyRegistry.js +0 -492
  275. package/dist/_cjs/abi/OidcKeyRegistry.js.map +0 -1
  276. package/dist/_cjs/abi/OidcRecoveryValidator.js +0 -650
  277. package/dist/_cjs/abi/OidcRecoveryValidator.js.map +0 -1
  278. package/dist/_cjs/abi/SsoAccount.js +0 -1354
  279. package/dist/_cjs/abi/SsoAccount.js.map +0 -1
  280. package/dist/_cjs/abi/WebAuthValidator.js.map +0 -1
  281. package/dist/_cjs/client/ecdsa/actions/account.js +0 -83
  282. package/dist/_cjs/client/ecdsa/actions/account.js.map +0 -1
  283. package/dist/_cjs/client/ecdsa/decorators/ecdsa.js +0 -22
  284. package/dist/_cjs/client/ecdsa/decorators/ecdsa.js.map +0 -1
  285. package/dist/_cjs/client/ecdsa/decorators/wallet.js +0 -53
  286. package/dist/_cjs/client/ecdsa/decorators/wallet.js.map +0 -1
  287. package/dist/_cjs/client/ecdsa/types.js +0 -63
  288. package/dist/_cjs/client/ecdsa/types.js.map +0 -1
  289. package/dist/_cjs/client/oidc/account.js +0 -43
  290. package/dist/_cjs/client/oidc/account.js.map +0 -1
  291. package/dist/_cjs/client/oidc/actions/addNewPasskeyViaOidc.js +0 -28
  292. package/dist/_cjs/client/oidc/actions/addNewPasskeyViaOidc.js.map +0 -1
  293. package/dist/_cjs/client/oidc/actions/index.js +0 -12
  294. package/dist/_cjs/client/oidc/actions/index.js.map +0 -1
  295. package/dist/_cjs/client/oidc/client.js +0 -46
  296. package/dist/_cjs/client/oidc/client.js.map +0 -1
  297. package/dist/_cjs/client/oidc/decorators/actions.js +0 -3
  298. package/dist/_cjs/client/oidc/decorators/actions.js.map +0 -1
  299. package/dist/_cjs/client/oidc/index.js +0 -20
  300. package/dist/_cjs/client/oidc/index.js.map +0 -1
  301. package/dist/_cjs/client/oidc/serialize.js +0 -3
  302. package/dist/_cjs/client/oidc/serialize.js.map +0 -1
  303. package/dist/_cjs/client/passkey/actions/account.js +0 -169
  304. package/dist/_cjs/client/passkey/actions/account.js.map +0 -1
  305. package/dist/_cjs/client/passkey/actions/passkey.js +0 -151
  306. package/dist/_cjs/client/passkey/actions/passkey.js.map +0 -1
  307. package/dist/_cjs/client/passkey/decorators/passkey.js +0 -52
  308. package/dist/_cjs/client/passkey/decorators/passkey.js.map +0 -1
  309. package/dist/_cjs/client/passkey/decorators/wallet.js +0 -54
  310. package/dist/_cjs/client/passkey/decorators/wallet.js.map +0 -1
  311. package/dist/_cjs/client/recovery/account.js +0 -46
  312. package/dist/_cjs/client/recovery/account.js.map +0 -1
  313. package/dist/_cjs/client/recovery/actions/oidc.js +0 -69
  314. package/dist/_cjs/client/recovery/actions/oidc.js.map +0 -1
  315. package/dist/_cjs/client/recovery/actions/recovery.js +0 -114
  316. package/dist/_cjs/client/recovery/actions/recovery.js.map +0 -1
  317. package/dist/_cjs/client/recovery/actions/sendEip712Transaction.js +0 -45
  318. package/dist/_cjs/client/recovery/actions/sendEip712Transaction.js.map +0 -1
  319. package/dist/_cjs/client/recovery/client.js +0 -49
  320. package/dist/_cjs/client/recovery/client.js.map +0 -1
  321. package/dist/_cjs/client/recovery/decorators/publicActionsRewrite.js +0 -33
  322. package/dist/_cjs/client/recovery/decorators/publicActionsRewrite.js.map +0 -1
  323. package/dist/_cjs/client/recovery/decorators/recovery.js +0 -15
  324. package/dist/_cjs/client/recovery/decorators/recovery.js.map +0 -1
  325. package/dist/_cjs/client/recovery/decorators/wallet.js +0 -46
  326. package/dist/_cjs/client/recovery/decorators/wallet.js.map +0 -1
  327. package/dist/_cjs/client/recovery/index.js.map +0 -1
  328. package/dist/_cjs/client/session/actions/sendEip712Transaction.js +0 -45
  329. package/dist/_cjs/client/session/actions/sendEip712Transaction.js.map +0 -1
  330. package/dist/_cjs/client/session/actions/session.js +0 -116
  331. package/dist/_cjs/client/session/actions/session.js.map +0 -1
  332. package/dist/_cjs/client/session/decorators/publicActionsRewrite.js +0 -58
  333. package/dist/_cjs/client/session/decorators/publicActionsRewrite.js.map +0 -1
  334. package/dist/_cjs/client/session/decorators/wallet.js +0 -93
  335. package/dist/_cjs/client/session/decorators/wallet.js.map +0 -1
  336. package/dist/_cjs/client/utils/assertEip712Transaction.js +0 -44
  337. package/dist/_cjs/client/utils/assertEip712Transaction.js.map +0 -1
  338. package/dist/_cjs/client/utils/getEip712Domain.js +0 -57
  339. package/dist/_cjs/client/utils/getEip712Domain.js.map +0 -1
  340. package/dist/_cjs/client/utils/isEip712Transaction.js +0 -16
  341. package/dist/_cjs/client/utils/isEip712Transaction.js.map +0 -1
  342. package/dist/_cjs/paymaster/handlers/general.js +0 -13
  343. package/dist/_cjs/paymaster/handlers/general.js.map +0 -1
  344. package/dist/_cjs/paymaster/handlers/index.js +0 -19
  345. package/dist/_cjs/paymaster/handlers/index.js.map +0 -1
  346. package/dist/_cjs/paymaster/handlers/zyfi.js +0 -57
  347. package/dist/_cjs/paymaster/handlers/zyfi.js.map +0 -1
  348. package/dist/_cjs/paymaster/index.js +0 -54
  349. package/dist/_cjs/paymaster/index.js.map +0 -1
  350. package/dist/_cjs/utils/encoding.js +0 -56
  351. package/dist/_cjs/utils/encoding.js.map +0 -1
  352. package/dist/_cjs/utils/helpers.js.map +0 -1
  353. package/dist/_cjs/utils/index.js +0 -20
  354. package/dist/_cjs/utils/index.js.map +0 -1
  355. package/dist/_cjs/utils/passkey.js +0 -245
  356. package/dist/_cjs/utils/passkey.js.map +0 -1
  357. package/dist/_cjs/utils/session.js +0 -346
  358. package/dist/_cjs/utils/session.js.map +0 -1
  359. package/dist/_cjs/utils/storage.js.map +0 -1
  360. package/dist/_esm/abi/GuardianRecoveryModule.js +0 -764
  361. package/dist/_esm/abi/GuardianRecoveryModule.js.map +0 -1
  362. package/dist/_esm/abi/GuardianRecoveryValidator.js +0 -810
  363. package/dist/_esm/abi/GuardianRecoveryValidator.js.map +0 -1
  364. package/dist/_esm/abi/OidcKeyRegistry.js +0 -489
  365. package/dist/_esm/abi/OidcKeyRegistry.js.map +0 -1
  366. package/dist/_esm/abi/OidcRecoveryValidator.js +0 -647
  367. package/dist/_esm/abi/OidcRecoveryValidator.js.map +0 -1
  368. package/dist/_esm/abi/SsoAccount.js +0 -1351
  369. package/dist/_esm/abi/SsoAccount.js.map +0 -1
  370. package/dist/_esm/abi/WebAuthValidator.js.map +0 -1
  371. package/dist/_esm/client/ecdsa/actions/account.js +0 -82
  372. package/dist/_esm/client/ecdsa/actions/account.js.map +0 -1
  373. package/dist/_esm/client/ecdsa/decorators/ecdsa.js +0 -19
  374. package/dist/_esm/client/ecdsa/decorators/ecdsa.js.map +0 -1
  375. package/dist/_esm/client/ecdsa/decorators/wallet.js +0 -54
  376. package/dist/_esm/client/ecdsa/decorators/wallet.js.map +0 -1
  377. package/dist/_esm/client/ecdsa/types.js +0 -61
  378. package/dist/_esm/client/ecdsa/types.js.map +0 -1
  379. package/dist/_esm/client/oidc/account.js +0 -40
  380. package/dist/_esm/client/oidc/account.js.map +0 -1
  381. package/dist/_esm/client/oidc/actions/addNewPasskeyViaOidc.js +0 -26
  382. package/dist/_esm/client/oidc/actions/addNewPasskeyViaOidc.js.map +0 -1
  383. package/dist/_esm/client/oidc/actions/index.js +0 -9
  384. package/dist/_esm/client/oidc/actions/index.js.map +0 -1
  385. package/dist/_esm/client/oidc/client.js +0 -41
  386. package/dist/_esm/client/oidc/client.js.map +0 -1
  387. package/dist/_esm/client/oidc/decorators/actions.js +0 -2
  388. package/dist/_esm/client/oidc/decorators/actions.js.map +0 -1
  389. package/dist/_esm/client/oidc/index.js +0 -4
  390. package/dist/_esm/client/oidc/index.js.map +0 -1
  391. package/dist/_esm/client/oidc/serialize.js +0 -2
  392. package/dist/_esm/client/oidc/serialize.js.map +0 -1
  393. package/dist/_esm/client/passkey/actions/account.js +0 -165
  394. package/dist/_esm/client/passkey/actions/account.js.map +0 -1
  395. package/dist/_esm/client/passkey/actions/passkey.js +0 -148
  396. package/dist/_esm/client/passkey/actions/passkey.js.map +0 -1
  397. package/dist/_esm/client/passkey/decorators/passkey.js +0 -50
  398. package/dist/_esm/client/passkey/decorators/passkey.js.map +0 -1
  399. package/dist/_esm/client/passkey/decorators/wallet.js +0 -54
  400. package/dist/_esm/client/passkey/decorators/wallet.js.map +0 -1
  401. package/dist/_esm/client/recovery/account.js +0 -43
  402. package/dist/_esm/client/recovery/account.js.map +0 -1
  403. package/dist/_esm/client/recovery/actions/oidc.js +0 -69
  404. package/dist/_esm/client/recovery/actions/oidc.js.map +0 -1
  405. package/dist/_esm/client/recovery/actions/recovery.js +0 -111
  406. package/dist/_esm/client/recovery/actions/recovery.js.map +0 -1
  407. package/dist/_esm/client/recovery/actions/sendEip712Transaction.js +0 -93
  408. package/dist/_esm/client/recovery/actions/sendEip712Transaction.js.map +0 -1
  409. package/dist/_esm/client/recovery/client.js +0 -45
  410. package/dist/_esm/client/recovery/client.js.map +0 -1
  411. package/dist/_esm/client/recovery/decorators/publicActionsRewrite.js +0 -31
  412. package/dist/_esm/client/recovery/decorators/publicActionsRewrite.js.map +0 -1
  413. package/dist/_esm/client/recovery/decorators/recovery.js +0 -13
  414. package/dist/_esm/client/recovery/decorators/recovery.js.map +0 -1
  415. package/dist/_esm/client/recovery/decorators/wallet.js +0 -45
  416. package/dist/_esm/client/recovery/decorators/wallet.js.map +0 -1
  417. package/dist/_esm/client/recovery/index.js +0 -3
  418. package/dist/_esm/client/recovery/index.js.map +0 -1
  419. package/dist/_esm/client/session/actions/sendEip712Transaction.js +0 -93
  420. package/dist/_esm/client/session/actions/sendEip712Transaction.js.map +0 -1
  421. package/dist/_esm/client/session/actions/session.js +0 -119
  422. package/dist/_esm/client/session/actions/session.js.map +0 -1
  423. package/dist/_esm/client/session/decorators/publicActionsRewrite.js +0 -55
  424. package/dist/_esm/client/session/decorators/publicActionsRewrite.js.map +0 -1
  425. package/dist/_esm/client/session/decorators/wallet.js +0 -100
  426. package/dist/_esm/client/session/decorators/wallet.js.map +0 -1
  427. package/dist/_esm/client/utils/assertEip712Transaction.js +0 -39
  428. package/dist/_esm/client/utils/assertEip712Transaction.js.map +0 -1
  429. package/dist/_esm/client/utils/getEip712Domain.js +0 -57
  430. package/dist/_esm/client/utils/getEip712Domain.js.map +0 -1
  431. package/dist/_esm/client/utils/isEip712Transaction.js +0 -13
  432. package/dist/_esm/client/utils/isEip712Transaction.js.map +0 -1
  433. package/dist/_esm/paymaster/handlers/general.js +0 -11
  434. package/dist/_esm/paymaster/handlers/general.js.map +0 -1
  435. package/dist/_esm/paymaster/handlers/index.js +0 -3
  436. package/dist/_esm/paymaster/handlers/index.js.map +0 -1
  437. package/dist/_esm/paymaster/handlers/zyfi.js +0 -54
  438. package/dist/_esm/paymaster/handlers/zyfi.js.map +0 -1
  439. package/dist/_esm/paymaster/index.js +0 -37
  440. package/dist/_esm/paymaster/index.js.map +0 -1
  441. package/dist/_esm/utils/encoding.js +0 -49
  442. package/dist/_esm/utils/encoding.js.map +0 -1
  443. package/dist/_esm/utils/helpers.js.map +0 -1
  444. package/dist/_esm/utils/index.js +0 -4
  445. package/dist/_esm/utils/index.js.map +0 -1
  446. package/dist/_esm/utils/passkey.js +0 -296
  447. package/dist/_esm/utils/passkey.js.map +0 -1
  448. package/dist/_esm/utils/session.js +0 -358
  449. package/dist/_esm/utils/session.js.map +0 -1
  450. package/dist/_esm/utils/storage.js.map +0 -1
  451. package/dist/_types/abi/GuardianRecoveryModule.d.ts +0 -590
  452. package/dist/_types/abi/GuardianRecoveryModule.d.ts.map +0 -1
  453. package/dist/_types/abi/GuardianRecoveryValidator.d.ts +0 -626
  454. package/dist/_types/abi/GuardianRecoveryValidator.d.ts.map +0 -1
  455. package/dist/_types/abi/OidcKeyRegistry.d.ts +0 -375
  456. package/dist/_types/abi/OidcKeyRegistry.d.ts.map +0 -1
  457. package/dist/_types/abi/OidcRecoveryValidator.d.ts +0 -501
  458. package/dist/_types/abi/OidcRecoveryValidator.d.ts.map +0 -1
  459. package/dist/_types/abi/SsoAccount.d.ts +0 -1044
  460. package/dist/_types/abi/SsoAccount.d.ts.map +0 -1
  461. package/dist/_types/abi/WebAuthValidator.d.ts.map +0 -1
  462. package/dist/_types/client/ecdsa/actions/account.d.ts +0 -38
  463. package/dist/_types/client/ecdsa/actions/account.d.ts.map +0 -1
  464. package/dist/_types/client/ecdsa/decorators/ecdsa.d.ts +0 -16
  465. package/dist/_types/client/ecdsa/decorators/ecdsa.d.ts.map +0 -1
  466. package/dist/_types/client/ecdsa/decorators/wallet.d.ts +0 -5
  467. package/dist/_types/client/ecdsa/decorators/wallet.d.ts.map +0 -1
  468. package/dist/_types/client/ecdsa/types.d.ts +0 -10
  469. package/dist/_types/client/ecdsa/types.d.ts.map +0 -1
  470. package/dist/_types/client/oidc/account.d.ts +0 -13
  471. package/dist/_types/client/oidc/account.d.ts.map +0 -1
  472. package/dist/_types/client/oidc/actions/addNewPasskeyViaOidc.d.ts +0 -12
  473. package/dist/_types/client/oidc/actions/addNewPasskeyViaOidc.d.ts.map +0 -1
  474. package/dist/_types/client/oidc/actions/index.d.ts +0 -5
  475. package/dist/_types/client/oidc/actions/index.d.ts.map +0 -1
  476. package/dist/_types/client/oidc/client.d.ts +0 -24
  477. package/dist/_types/client/oidc/client.d.ts.map +0 -1
  478. package/dist/_types/client/oidc/decorators/actions.d.ts +0 -5
  479. package/dist/_types/client/oidc/decorators/actions.d.ts.map +0 -1
  480. package/dist/_types/client/oidc/index.d.ts +0 -4
  481. package/dist/_types/client/oidc/index.d.ts.map +0 -1
  482. package/dist/_types/client/oidc/serialize.d.ts +0 -10
  483. package/dist/_types/client/oidc/serialize.d.ts.map +0 -1
  484. package/dist/_types/client/passkey/actions/account.d.ts +0 -48
  485. package/dist/_types/client/passkey/actions/account.d.ts.map +0 -1
  486. package/dist/_types/client/passkey/actions/passkey.d.ts +0 -55
  487. package/dist/_types/client/passkey/actions/passkey.d.ts.map +0 -1
  488. package/dist/_types/client/passkey/decorators/passkey.d.ts +0 -16
  489. package/dist/_types/client/passkey/decorators/passkey.d.ts.map +0 -1
  490. package/dist/_types/client/passkey/decorators/wallet.d.ts +0 -5
  491. package/dist/_types/client/passkey/decorators/wallet.d.ts.map +0 -1
  492. package/dist/_types/client/recovery/account.d.ts +0 -14
  493. package/dist/_types/client/recovery/account.d.ts.map +0 -1
  494. package/dist/_types/client/recovery/actions/oidc.d.ts +0 -24
  495. package/dist/_types/client/recovery/actions/oidc.d.ts.map +0 -1
  496. package/dist/_types/client/recovery/actions/recovery.d.ts +0 -50
  497. package/dist/_types/client/recovery/actions/recovery.d.ts.map +0 -1
  498. package/dist/_types/client/recovery/actions/sendEip712Transaction.d.ts +0 -60
  499. package/dist/_types/client/recovery/actions/sendEip712Transaction.d.ts.map +0 -1
  500. package/dist/_types/client/recovery/client.d.ts +0 -23
  501. package/dist/_types/client/recovery/client.d.ts.map +0 -1
  502. package/dist/_types/client/recovery/decorators/publicActionsRewrite.d.ts +0 -4
  503. package/dist/_types/client/recovery/decorators/publicActionsRewrite.d.ts.map +0 -1
  504. package/dist/_types/client/recovery/decorators/recovery.d.ts +0 -8
  505. package/dist/_types/client/recovery/decorators/recovery.d.ts.map +0 -1
  506. package/dist/_types/client/recovery/decorators/wallet.d.ts +0 -5
  507. package/dist/_types/client/recovery/decorators/wallet.d.ts.map +0 -1
  508. package/dist/_types/client/recovery/index.d.ts +0 -3
  509. package/dist/_types/client/recovery/index.d.ts.map +0 -1
  510. package/dist/_types/client/session/actions/sendEip712Transaction.d.ts +0 -60
  511. package/dist/_types/client/session/actions/sendEip712Transaction.d.ts.map +0 -1
  512. package/dist/_types/client/session/actions/session.d.ts +0 -61
  513. package/dist/_types/client/session/actions/session.d.ts.map +0 -1
  514. package/dist/_types/client/session/decorators/publicActionsRewrite.d.ts +0 -4
  515. package/dist/_types/client/session/decorators/publicActionsRewrite.d.ts.map +0 -1
  516. package/dist/_types/client/session/decorators/wallet.d.ts +0 -5
  517. package/dist/_types/client/session/decorators/wallet.d.ts.map +0 -1
  518. package/dist/_types/client/utils/assertEip712Transaction.d.ts +0 -11
  519. package/dist/_types/client/utils/assertEip712Transaction.d.ts.map +0 -1
  520. package/dist/_types/client/utils/getEip712Domain.d.ts +0 -3
  521. package/dist/_types/client/utils/getEip712Domain.d.ts.map +0 -1
  522. package/dist/_types/client/utils/isEip712Transaction.d.ts +0 -4
  523. package/dist/_types/client/utils/isEip712Transaction.d.ts.map +0 -1
  524. package/dist/_types/paymaster/handlers/general.d.ts +0 -4
  525. package/dist/_types/paymaster/handlers/general.d.ts.map +0 -1
  526. package/dist/_types/paymaster/handlers/index.d.ts +0 -3
  527. package/dist/_types/paymaster/handlers/index.d.ts.map +0 -1
  528. package/dist/_types/paymaster/handlers/zyfi.d.ts +0 -18
  529. package/dist/_types/paymaster/handlers/zyfi.d.ts.map +0 -1
  530. package/dist/_types/paymaster/index.d.ts +0 -29
  531. package/dist/_types/paymaster/index.d.ts.map +0 -1
  532. package/dist/_types/utils/encoding.d.ts +0 -19
  533. package/dist/_types/utils/encoding.d.ts.map +0 -1
  534. package/dist/_types/utils/helpers.d.ts.map +0 -1
  535. package/dist/_types/utils/index.d.ts +0 -4
  536. package/dist/_types/utils/index.d.ts.map +0 -1
  537. package/dist/_types/utils/passkey.d.ts +0 -47
  538. package/dist/_types/utils/passkey.d.ts.map +0 -1
  539. package/dist/_types/utils/session.d.ts +0 -179
  540. package/dist/_types/utils/session.d.ts.map +0 -1
  541. package/dist/_types/utils/storage.d.ts.map +0 -1
  542. package/src/abi/GuardianRecoveryModule.ts +0 -763
  543. package/src/abi/GuardianRecoveryValidator.ts +0 -809
  544. package/src/abi/OidcKeyRegistry.ts +0 -488
  545. package/src/abi/OidcRecoveryValidator.ts +0 -646
  546. package/src/abi/SsoAccount.ts +0 -1350
  547. package/src/abi/WebAuthValidator.ts +0 -357
  548. package/src/client/ecdsa/actions/account.ts +0 -146
  549. package/src/client/ecdsa/decorators/ecdsa.ts +0 -32
  550. package/src/client/ecdsa/decorators/wallet.ts +0 -80
  551. package/src/client/ecdsa/types.ts +0 -108
  552. package/src/client/oidc/account.ts +0 -65
  553. package/src/client/oidc/actions/addNewPasskeyViaOidc.ts +0 -54
  554. package/src/client/oidc/actions/index.ts +0 -16
  555. package/src/client/oidc/client.ts +0 -122
  556. package/src/client/oidc/decorators/actions.ts +0 -5
  557. package/src/client/oidc/index.ts +0 -3
  558. package/src/client/oidc/serialize.ts +0 -10
  559. package/src/client/passkey/actions/account.ts +0 -241
  560. package/src/client/passkey/actions/passkey.ts +0 -208
  561. package/src/client/passkey/decorators/passkey.ts +0 -77
  562. package/src/client/passkey/decorators/wallet.ts +0 -79
  563. package/src/client/recovery/account.ts +0 -61
  564. package/src/client/recovery/actions/oidc.ts +0 -119
  565. package/src/client/recovery/actions/recovery.ts +0 -176
  566. package/src/client/recovery/actions/sendEip712Transaction.ts +0 -149
  567. package/src/client/recovery/client.ts +0 -102
  568. package/src/client/recovery/decorators/publicActionsRewrite.ts +0 -38
  569. package/src/client/recovery/decorators/recovery.ts +0 -22
  570. package/src/client/recovery/decorators/wallet.ts +0 -59
  571. package/src/client/recovery/index.ts +0 -2
  572. package/src/client/session/actions/sendEip712Transaction.ts +0 -149
  573. package/src/client/session/actions/session.ts +0 -204
  574. package/src/client/session/decorators/publicActionsRewrite.ts +0 -63
  575. package/src/client/session/decorators/wallet.ts +0 -143
  576. package/src/client/utils/assertEip712Transaction.ts +0 -49
  577. package/src/client/utils/getEip712Domain.ts +0 -84
  578. package/src/client/utils/isEip712Transaction.ts +0 -18
  579. package/src/paymaster/handlers/general.ts +0 -14
  580. package/src/paymaster/handlers/index.ts +0 -2
  581. package/src/paymaster/handlers/zyfi.ts +0 -108
  582. package/src/paymaster/index.ts +0 -76
  583. package/src/types/index.d.ts +0 -9
  584. package/src/utils/encoding.ts +0 -70
  585. package/src/utils/index.ts +0 -3
  586. package/src/utils/passkey.ts +0 -347
  587. package/src/utils/session.ts +0 -524
  588. /package/dist/_cjs/{utils → client-auth-server/utils}/helpers.js +0 -0
  589. /package/dist/_cjs/{utils → client-auth-server/utils}/storage.js +0 -0
  590. /package/dist/_esm/{utils → client-auth-server/utils}/helpers.js +0 -0
  591. /package/dist/_esm/{utils → client-auth-server/utils}/storage.js +0 -0
  592. /package/dist/_types/{utils → client-auth-server/utils}/helpers.d.ts +0 -0
  593. /package/dist/_types/{utils → client-auth-server/utils}/storage.d.ts +0 -0
  594. /package/src/{utils → client-auth-server/utils}/helpers.ts +0 -0
  595. /package/src/{utils → client-auth-server/utils}/storage.ts +0 -0
@@ -1,41 +1,122 @@
1
- import { hashTypedData } from "viem";
2
- import { toAccount } from "viem/accounts";
3
- import { serializeTransaction } from "viem/zksync";
4
- import { getEip712Domain } from "../utils/getEip712Domain.js";
5
- export function toSessionAccount(parameters) {
6
- const { address, signTransaction } = parameters;
7
- const account = toAccount({
8
- address,
9
- async signTransaction(transaction) {
10
- const signableTransaction = {
11
- ...transaction,
12
- from: this.address,
13
- type: "eip712",
14
- };
15
- const eip712DomainAndMessage = getEip712Domain(signableTransaction);
16
- const digest = hashTypedData(eip712DomainAndMessage);
17
- return serializeTransaction({
18
- ...signableTransaction,
19
- customSignature: await signTransaction({
20
- hash: digest,
21
- to: signableTransaction.to,
22
- callData: signableTransaction.data,
23
- }),
1
+ import {} from "viem";
2
+ import { entryPoint08Abi, entryPoint08Address, getUserOperationHash, toSmartAccount, } from "viem/account-abstraction";
3
+ import { decode_nonce_result, encode_get_nonce_call_data, encode_session_execute_call_data, generate_session_stub_signature_wasm, keyed_nonce_decimal, session_signature_no_validation_wasm, } from "zksync-sso-web-sdk/bundler";
4
+ import { sessionSpecToJSON } from "./utils.js";
5
+ /**
6
+ * Builds a SSO SmartAccount instance which uses a session key for signing within policy limits.
7
+ * This allows delegated transaction signing with enforced limits on gas fees, transfer values, and call parameters.
8
+ */
9
+ export async function toSessionSmartAccount({ client, sessionKeyPrivateKey, address, contracts, sessionSpec, currentTimestamp, entryPointAddress, }) {
10
+ // Precompute session spec JSON once
11
+ const sessionSpecJSON = sessionSpecToJSON(sessionSpec);
12
+ const epAddress = entryPointAddress ?? entryPoint08Address;
13
+ return toSmartAccount({
14
+ client,
15
+ entryPoint: {
16
+ abi: entryPoint08Abi,
17
+ address: epAddress,
18
+ version: "0.8",
19
+ },
20
+ async getNonce() {
21
+ const sender = await this.getAddress();
22
+ // Get the nonce key for this session signer
23
+ const nonceKeyDecimal = keyed_nonce_decimal(sessionSpec.signer);
24
+ // Encode the getNonce call with the session's nonce key
25
+ const calldata = encode_get_nonce_call_data(sender, nonceKeyDecimal);
26
+ const result = await client.request({
27
+ method: "eth_call",
28
+ params: [{
29
+ from: sender,
30
+ to: epAddress,
31
+ data: calldata,
32
+ }],
24
33
  });
34
+ const nonceStr = decode_nonce_result(result);
35
+ return BigInt(nonceStr);
36
+ },
37
+ // --- Calls encoding (session execute only - batch not supported yet) ---
38
+ async encodeCalls(calls) {
39
+ // Only support single calls (no batch operations)
40
+ if (calls.length !== 1) {
41
+ throw new Error("Batch transactions are not supported for session accounts. Only single execute() calls are allowed.");
42
+ }
43
+ const call = calls[0];
44
+ // Use Rust SDK for encoding session execute
45
+ const valueStr = (call.value ?? 0n).toString();
46
+ const encoded = encode_session_execute_call_data(call.to, valueStr, call.data ?? "0x");
47
+ return encoded;
48
+ },
49
+ async decodeCalls() {
50
+ throw new Error("decodeCalls is not supported yet for session accounts.");
51
+ },
52
+ // --- Address & factory args ---
53
+ async getAddress() {
54
+ // Return the provided address (no counterfactual support yet)
55
+ return address;
25
56
  },
26
- sign: async () => {
27
- throw new Error(`account.sign not supported for SSO Session Client`);
57
+ async getFactoryArgs() {
58
+ // No counterfactual deployment support yet
59
+ throw new Error("getFactoryArgs is not supported for session accounts. Deploy the account first and provide the address.");
28
60
  },
29
- signMessage: async () => {
30
- throw new Error(`account.signMessage not supported for SSO Session Client`);
61
+ // --- Stubs & signing ---
62
+ async getStubSignature() {
63
+ // Generate session stub signature for gas estimation
64
+ const timestampStr = currentTimestamp?.toString();
65
+ return generate_session_stub_signature_wasm(contracts.sessionValidator, sessionSpecJSON, timestampStr);
31
66
  },
32
- signTypedData: async () => {
33
- throw new Error(`account.signTypedData not supported for SSO Session Client`);
67
+ async signMessage({ message }) {
68
+ throw new Error(`signMessage is not supported for session accounts. Message: ${String(message)}`);
69
+ },
70
+ async signTypedData() {
71
+ throw new Error("signTypedData is not supported for session accounts");
72
+ },
73
+ async signUserOperation(params) {
74
+ const sender = await this.getAddress();
75
+ // Default undefined fields to 0n to avoid runtime errors during early signing.
76
+ const nonce = params.nonce ?? 0n;
77
+ const callGasLimit = params.callGasLimit ?? 0n;
78
+ const verificationGasLimit = params.verificationGasLimit ?? 0n;
79
+ const preVerificationGas = params.preVerificationGas ?? 0n;
80
+ const maxFeePerGas = params.maxFeePerGas ?? 0n;
81
+ const maxPriorityFeePerGas = params.maxPriorityFeePerGas ?? 0n;
82
+ const paymasterAndData = (params.paymasterAndData ?? "0x");
83
+ // Debug: Log effective gas & nonce passed into signing to diagnose zero-gas AA23 issues
84
+ console.debug("[toSessionSmartAccount] signUserOperation params:", {
85
+ nonce: nonce.toString(),
86
+ callGasLimit: callGasLimit.toString(),
87
+ verificationGasLimit: verificationGasLimit.toString(),
88
+ preVerificationGas: preVerificationGas.toString(),
89
+ maxFeePerGas: maxFeePerGas.toString(),
90
+ maxPriorityFeePerGas: maxPriorityFeePerGas.toString(),
91
+ });
92
+ // Compute user operation hash locally using viem helper (includes paymasterAndData)
93
+ const userOpHash = getUserOperationHash({
94
+ chainId: Number(client.chain.id),
95
+ entryPointAddress: this.entryPoint.address,
96
+ entryPointVersion: "0.8",
97
+ userOperation: {
98
+ sender,
99
+ nonce,
100
+ initCode: (params.initCode ?? "0x"),
101
+ callData: (params.callData ?? "0x"),
102
+ callGasLimit,
103
+ verificationGasLimit,
104
+ preVerificationGas,
105
+ maxFeePerGas,
106
+ maxPriorityFeePerGas,
107
+ paymasterAndData,
108
+ signature: "0x",
109
+ },
110
+ });
111
+ // Parse target and selector from callData for validation
112
+ // The callData is already encoded by encodeCalls, so we need to extract execute() params
113
+ // For now, we'll trust that the session policies are validated at contract level
114
+ // In a full implementation, you'd decode the execute call to validate against session spec
115
+ const timestampStr = currentTimestamp?.toString();
116
+ // Sign using session key with no validation (contract will validate)
117
+ const signature = session_signature_no_validation_wasm(sessionKeyPrivateKey, contracts.sessionValidator, sessionSpecJSON, userOpHash, timestampStr);
118
+ return signature;
34
119
  },
35
120
  });
36
- return {
37
- ...account,
38
- source: "ssoSessionAccount",
39
- };
40
121
  }
41
122
  //# sourceMappingURL=account.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/client/session/account.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,aAAa,EAA+B,MAAM,MAAM,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAA4C,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAY9D,MAAM,UAAU,gBAAgB,CAC9B,UAAsC;IAEtC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;IAEhD,MAAM,OAAO,GAAG,SAAS,CAAC;QACxB,OAAO;QACP,KAAK,CAAC,eAAe,CAAC,WAAW;YAC/B,MAAM,mBAAmB,GAAG;gBAC1B,GAAG,WAAW;gBACd,IAAI,EAAE,IAAI,CAAC,OAAQ;gBACnB,IAAI,EAAE,QAAQ;aACwB,CAAC;YAEzC,MAAM,sBAAsB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAErD,OAAO,oBAAoB,CAAC;gBAC1B,GAAG,mBAAmB;gBACtB,eAAe,EAAE,MAAM,eAAe,CAAC;oBACrC,IAAI,EAAE,MAAM;oBACZ,EAAE,EAAE,mBAAmB,CAAC,EAAG;oBAC3B,QAAQ,EAAE,mBAAmB,CAAC,IAAI;iBACnC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,WAAW,EAAE,KAAK,IAAI,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,aAAa,EAAE,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,mBAAmB;KACV,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/client/session/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { smartAccountClientActions, } from "../common/smart-account-client-actions.js";
2
+ import { toSessionSmartAccount } from "./account.js";
3
+ /**
4
+ * Decorator providing session-specific client actions
5
+ */
6
+ export function sessionClientActions(config) {
7
+ const base = smartAccountClientActions({
8
+ bundler: config.bundler,
9
+ accountFactory: () => toSessionSmartAccount(config.sessionAccount),
10
+ client: config.client,
11
+ accountAddress: config.accountAddress,
12
+ paymaster: config.paymaster,
13
+ });
14
+ return {
15
+ ...base,
16
+ // Remove addPasskey (not valid for session-only signing)
17
+ addPasskey: undefined,
18
+ };
19
+ }
20
+ //# sourceMappingURL=client-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-actions.js","sourceRoot":"","sources":["../../../../src/client/session/client-actions.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,yBAAyB,GAC1B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAoC,MAAM,cAAc,CAAC;AAwBvF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAKlC,MAAgG;IAEhG,MAAM,IAAI,GAAG,yBAAyB,CAA+B;QACnE,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,cAAc,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC;QAClE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,IAAI;QACP,yDAAyD;QACzD,UAAU,EAAE,SAAkB;KACgD,CAAC;AACnF,CAAC"}
@@ -1,92 +1,42 @@
1
- import { createClient, createPublicClient, encodeAbiParameters, getAddress, publicActions } from "viem";
2
- import { privateKeyToAccount } from "viem/accounts";
3
- import { zksyncInMemoryNode } from "viem/chains";
4
- import { encodeSessionTx } from "../../utils/encoding.js";
5
- import { toSessionAccount } from "./account.js";
6
- import { getSessionState, sessionStateNotify } from "./actions/session.js";
7
- import { publicActionsRewrite } from "./decorators/publicActionsRewrite.js";
8
- import { zksyncSsoWalletActions } from "./decorators/wallet.js";
9
- export const signSessionTransaction = (args) => {
10
- return encodeAbiParameters([
11
- { type: "bytes", name: "sessionKeySignedHash" },
12
- { type: "address", name: "sessionContract" },
13
- { type: "bytes", name: "validatorData" },
14
- ], [
15
- args.sessionKeySignedHash,
16
- args.sessionContract,
17
- encodeSessionTx({
18
- sessionConfig: args.sessionConfig,
19
- to: args.to,
20
- callData: args.callData,
21
- timestamp: args.timestamp,
22
- }),
23
- ]);
24
- };
25
- export function createZksyncSessionClient(_parameters) {
26
- const parameters = {
27
- ..._parameters,
28
- address: getAddress(_parameters.address),
29
- key: _parameters.key || "zksync-sso-session-wallet",
30
- name: _parameters.name || "ZKsync SSO Session Client",
1
+ import { createClient, createPublicClient, publicActions, walletActions, } from "viem";
2
+ import { sessionClientActions } from "./client-actions.js";
3
+ /**
4
+ * Create a client wrapping a session smart account. Provides wallet-like API
5
+ * plus helpers for session creation & state queries. Transactions sent via
6
+ * sendTransaction or sendSessionTransaction are encoded as session execute() calls.
7
+ */
8
+ export function createSessionClient(params) {
9
+ const { address, contracts, sessionKeyPrivateKey, sessionSpec, bundlerClient, chain, transport, currentTimestamp, paymaster, } = params;
10
+ const publicClient = createPublicClient({ chain, transport });
11
+ const sessionAccountParams = {
12
+ client: publicClient,
13
+ address,
14
+ contracts,
15
+ sessionKeyPrivateKey,
16
+ sessionSpec,
17
+ currentTimestamp,
18
+ entryPointAddress: params.entryPointAddress,
31
19
  };
32
- const getInMemoryNodeTimestamp = async () => {
33
- const publicClient = createPublicClient({ chain: parameters.chain, transport: parameters.transport });
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
- const timestamp = await publicClient.request({ method: "config_getCurrentTimestamp" });
36
- return BigInt(timestamp);
37
- };
38
- const account = toSessionAccount({
39
- address: parameters.address,
40
- signTransaction: async ({ hash, to, callData }) => {
41
- // In Memory Node uses a different timestamp mechanism which isn't equal to actual timestamp
42
- const timestamp = parameters.chain.id === zksyncInMemoryNode.id
43
- ? await getInMemoryNodeTimestamp()
44
- : undefined;
45
- const sessionKeySigner = privateKeyToAccount(parameters.sessionKey);
46
- const hashSignature = await sessionKeySigner.sign({ hash });
47
- return signSessionTransaction({
48
- sessionKeySignedHash: hashSignature,
49
- sessionContract: parameters.contracts.session,
50
- sessionConfig: parameters.sessionConfig,
51
- to,
52
- callData,
53
- timestamp,
54
- });
55
- },
56
- });
57
20
  const client = createClient({
58
- ...parameters,
59
- account,
21
+ chain,
22
+ transport,
23
+ account: undefined,
60
24
  type: "walletClient",
25
+ key: params.key || "zksync-sso-session-client",
26
+ name: params.name || "ZKsync SSO Session Client",
61
27
  })
62
- .extend(() => ({
63
- sessionKey: parameters.sessionKey,
64
- sessionConfig: parameters.sessionConfig,
65
- contracts: parameters.contracts,
66
- paymasterHandler: parameters.paymasterHandler,
67
- onSessionStateChange: parameters.onSessionStateChange,
68
- _sessionNotifyTimeout: undefined,
69
- }))
70
28
  .extend(publicActions)
71
- .extend(publicActionsRewrite)
72
- .extend(zksyncSsoWalletActions);
73
- // Check session state on initialization if callback is provided
74
- if (client.onSessionStateChange) {
75
- getSessionState(client, {
76
- account: client.account.address,
77
- sessionConfig: client.sessionConfig,
78
- contracts: client.contracts,
79
- }).then(({ sessionState }) => {
80
- sessionStateNotify({
81
- sessionConfig: client.sessionConfig,
82
- sessionState,
83
- onSessionStateChange: client.onSessionStateChange,
84
- sessionNotifyTimeout: client._sessionNotifyTimeout,
85
- });
86
- }).catch((error) => {
87
- console.error("Failed to get session state on initialization:", error);
88
- });
89
- }
29
+ .extend(walletActions)
30
+ .extend((client) => sessionClientActions({
31
+ client,
32
+ bundler: bundlerClient,
33
+ sessionAccount: sessionAccountParams,
34
+ accountAddress: address,
35
+ paymaster,
36
+ }))
37
+ .extend(() => ({
38
+ bundler: bundlerClient,
39
+ }));
90
40
  return client;
91
41
  }
92
42
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/session/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/session/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,kBAAkB,EAIlB,aAAa,EAIb,aAAa,GAEd,MAAM,MAAM,CAAC;AAKd,OAAO,EAA6B,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAqDtF;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAKjC,MAAqD;IAErD,MAAM,EACJ,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,SAAS,GACV,GAAG,MAAM,CAAC;IAEX,MAAM,YAAY,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAE9D,MAAM,oBAAoB,GAAgC;QACxD,MAAM,EAAE,YAAqD;QAC7D,OAAO;QACP,SAAS;QACT,oBAAoB;QACpB,WAAW;QACX,gBAAgB;QAChB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;KAC5C,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,KAAK;QACL,SAAS;QACT,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,cAAc;QACpB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,2BAA2B;QAC9C,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,2BAA2B;KACjD,CAAC;SACC,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CACjB,oBAAoB,CAAC;QACnB,MAAM;QACN,OAAO,EAAE,aAAa;QACtB,cAAc,EAAE,oBAAoB;QACpC,cAAc,EAAE,OAAO;QACvB,SAAS;KACV,CAAC,CACH;SACA,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACb,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC,CAAC;IAEN,OAAO,MAAuD,CAAC;AACjE,CAAC"}
@@ -0,0 +1,283 @@
1
+ import { encodeAbiParameters, getAddress, toFunctionSelector, toHex, } from "viem";
2
+ import { ConstraintCondition, LimitType, LimitUnlimited, LimitZero, } from "./types.js";
3
+ // Typesafety helper function
4
+ export const callPolicy = (policy) => policy;
5
+ // ============================================================================
6
+ // Utility Functions
7
+ // ============================================================================
8
+ /**
9
+ * Convert ms string format (e.g. "1h", "24h", "7d") to seconds as bigint
10
+ * Supports formats: ms, s, m, h, d, w, y
11
+ */
12
+ export const msStringToSeconds = (value) => {
13
+ const units = {
14
+ ms: 0.001,
15
+ s: 1,
16
+ m: 60,
17
+ h: 3600,
18
+ d: 86400,
19
+ w: 604800,
20
+ y: 31536000,
21
+ };
22
+ const match = value.match(/^(\d+(?:\.\d+)?)(ms|s|m|h|d|w|y)$/);
23
+ if (!match) {
24
+ throw new Error(`Invalid date format: ${value}. Expected format like "1h", "24h", "7d"`);
25
+ }
26
+ const [, numStr, unit] = match;
27
+ const num = parseFloat(numStr);
28
+ const seconds = num * units[unit];
29
+ if (seconds < 0)
30
+ throw new Error(`Date can't be in the past: ${value}`);
31
+ if (seconds === 0)
32
+ throw new Error(`Date can't be zero: ${value}`);
33
+ return BigInt(Math.floor(seconds));
34
+ };
35
+ const DYNAMIC_ABI_INPUT_TYPES = ["bytes", "string"];
36
+ export const isDynamicInputType = (inputType) => {
37
+ return inputType.endsWith("[]") || DYNAMIC_ABI_INPUT_TYPES.includes(inputType);
38
+ };
39
+ const includesDynamicInputType = (abiParameters) => {
40
+ return abiParameters.some((input) => {
41
+ const isDynamicType = isDynamicInputType(input.type);
42
+ if (isDynamicType)
43
+ return true;
44
+ if (input.type.startsWith("tuple")) {
45
+ const components = input.components;
46
+ if (!components)
47
+ throw new Error("Tuple without components is unsupported");
48
+ return includesDynamicInputType(components);
49
+ }
50
+ return false;
51
+ });
52
+ };
53
+ export const isFollowedByDynamicInputType = (abiFunction, targetInputIndex) => {
54
+ if (targetInputIndex >= abiFunction.inputs.length) {
55
+ throw new Error(`Input index ${targetInputIndex} is out of bounds`);
56
+ }
57
+ return includesDynamicInputType(abiFunction.inputs.slice(0, targetInputIndex));
58
+ };
59
+ export const encodedInputToAbiChunks = (encodedInput) => {
60
+ if (!encodedInput.startsWith("0x")) {
61
+ throw new Error("Input is not a valid hex string");
62
+ }
63
+ return (encodedInput.slice(2).match(/.{1,64}/g) || []).map((e) => `0x${e}`); // 32 bytes abi chunks
64
+ };
65
+ const getDummyBytesValue = (type) => {
66
+ const size = parseInt(type.slice(5)) || 32;
67
+ return toHex("", { size });
68
+ };
69
+ // Function to generate dummy values for ABI types
70
+ const getDummyValue = (type) => {
71
+ if (type === "address")
72
+ return "0x36615Cf349d7F6344891B1e7CA7C72883F5dc049";
73
+ if (type.startsWith("uint") || type.startsWith("int"))
74
+ return 0n; // BigInt for numbers
75
+ if (type.startsWith("bytes"))
76
+ return getDummyBytesValue(type); // Empty bytes
77
+ if (type === "bool")
78
+ return false;
79
+ if (type === "string")
80
+ return ""; // Empty string
81
+ throw new Error(`Unsupported ABI type: ${type}`);
82
+ };
83
+ function getArrayComponents(type) {
84
+ const matches = type.match(/^(.*)\[(\d+)?\]$/);
85
+ return matches
86
+ ? [matches[2] ? Number(matches[2]) : null, matches[1]]
87
+ : undefined;
88
+ }
89
+ // Recursive function to fill dummy values for complex types like tuples
90
+ const getDummyValues = (inputs) => {
91
+ return inputs.map((input) => {
92
+ const arrayComponents = getArrayComponents(input.type);
93
+ if (arrayComponents) {
94
+ // Recursively fill array components
95
+ const [length, innerType] = arrayComponents;
96
+ if (!length)
97
+ throw new Error("Dynamic array length is unsupported");
98
+ const arrayValue = Array.from({ length }, () => getDummyValues([{
99
+ ...input,
100
+ type: innerType,
101
+ }]));
102
+ return arrayValue;
103
+ }
104
+ if (input.type.startsWith("tuple")) {
105
+ // Recursively fill tuple components
106
+ const components = input.components;
107
+ if (!components)
108
+ throw new Error("Tuple without components is unsupported");
109
+ return getDummyValues(components);
110
+ }
111
+ return getDummyValue(input.type);
112
+ });
113
+ };
114
+ export const getParameterChunkIndex = (abiFunction, targetInputIndex) => {
115
+ if (targetInputIndex >= abiFunction.inputs.length) {
116
+ throw new Error(`Input index ${targetInputIndex} is out of bounds`);
117
+ }
118
+ const inputs = abiFunction.inputs.slice(0, targetInputIndex);
119
+ const dummyValues = getDummyValues(inputs);
120
+ const encoded = encodeAbiParameters(inputs, dummyValues);
121
+ const chunks = encodedInputToAbiChunks(encoded);
122
+ const chunkIndex = chunks.length;
123
+ return chunkIndex;
124
+ };
125
+ // ============================================================================
126
+ // Format Functions
127
+ // ============================================================================
128
+ /**
129
+ * Format user-friendly limit preferences to full UsageLimit
130
+ */
131
+ export const formatLimitPreferences = (limit) => {
132
+ /* Just bigint was passed */
133
+ if (typeof limit === "bigint") {
134
+ return {
135
+ limitType: LimitType.Lifetime,
136
+ limit,
137
+ period: 0n,
138
+ };
139
+ }
140
+ /* LimitType was specified */
141
+ if ("limitType" in limit) {
142
+ if (limit.limitType === "lifetime" || limit.limitType === LimitType.Lifetime) {
143
+ return {
144
+ limitType: LimitType.Lifetime,
145
+ limit: limit.limit,
146
+ period: 0n,
147
+ };
148
+ }
149
+ else if (limit.limitType === "unlimited" || limit.limitType === LimitType.Unlimited) {
150
+ return {
151
+ limitType: LimitType.Unlimited,
152
+ limit: 0n,
153
+ period: 0n,
154
+ };
155
+ }
156
+ else if (limit.limitType === "allowance" || limit.limitType === LimitType.Allowance) {
157
+ return {
158
+ limitType: LimitType.Allowance,
159
+ limit: limit.limit,
160
+ period: typeof limit.period === "string" ? msStringToSeconds(limit.period) : limit.period,
161
+ };
162
+ }
163
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
+ throw new Error(`Invalid limit type: ${limit.limitType}`);
165
+ }
166
+ /* LimitType not selected */
167
+ if (limit.period) {
168
+ return {
169
+ limitType: LimitType.Allowance,
170
+ limit: limit.limit,
171
+ period: typeof limit.period === "string" ? msStringToSeconds(limit.period) : limit.period,
172
+ };
173
+ }
174
+ return {
175
+ limitType: LimitType.Lifetime,
176
+ limit: limit.limit,
177
+ period: 0n,
178
+ };
179
+ };
180
+ /**
181
+ * Format user-friendly date preferences to bigint timestamp
182
+ */
183
+ export const formatDatePreferences = (date) => {
184
+ if (typeof date === "string") {
185
+ const now = Math.floor(new Date().getTime() / 1000);
186
+ const seconds = msStringToSeconds(date);
187
+ return BigInt(now) + seconds;
188
+ }
189
+ if (date instanceof Date) {
190
+ const seconds = Math.floor(date.getTime() / 1000);
191
+ return BigInt(seconds);
192
+ }
193
+ return date;
194
+ };
195
+ /**
196
+ * Format user-friendly session preferences to full SessionSpec (without signer)
197
+ * @param preferences - User-friendly session configuration
198
+ * @param defaults - Default values for expiry and feeLimit if not specified
199
+ * @returns SessionSpec without the signer field (to be added separately)
200
+ */
201
+ export function formatSessionPreferences(preferences, defaults) {
202
+ return {
203
+ expiresAt: preferences.expiry ? formatDatePreferences(preferences.expiry) : defaults.expiresAt,
204
+ feeLimit: preferences.feeLimit ? formatLimitPreferences(preferences.feeLimit) : defaults.feeLimit,
205
+ callPolicies: preferences.contractCalls?.map((policy) => {
206
+ const allowedStateMutability = ["nonpayable", "payable"];
207
+ const abiFunction = policy.abi.find((fn) => fn.type === "function" && fn.name === policy.functionName && allowedStateMutability.includes(fn.stateMutability));
208
+ if (!abiFunction)
209
+ throw new Error(`Function not found in the provided ABI: ${policy.functionName}`);
210
+ const selector = toFunctionSelector(abiFunction);
211
+ const valueLimit = policy.valueLimit ? formatLimitPreferences(policy.valueLimit) : LimitZero;
212
+ return {
213
+ target: getAddress(policy.address.toLowerCase()),
214
+ maxValuePerUse: policy.maxValuePerUse ?? valueLimit.limit,
215
+ valueLimit,
216
+ selector: selector,
217
+ constraints: policy.constraints?.map((constraint) => {
218
+ const limit = constraint.limit ? formatLimitPreferences(constraint.limit) : LimitUnlimited;
219
+ let condition = ConstraintCondition.Unconstrained;
220
+ if (constraint.condition) {
221
+ condition = ConstraintCondition[constraint.condition];
222
+ }
223
+ else if (constraint.value !== undefined && constraint.value !== null) {
224
+ condition = ConstraintCondition.Equal;
225
+ }
226
+ const input = abiFunction.inputs[constraint.index];
227
+ if (!input) {
228
+ throw new Error(`Target function parameter not found in the provided ABI function. Provided at function ${policy.functionName}, index ${constraint.index}`);
229
+ }
230
+ const isDynamicType = isDynamicInputType(input.type);
231
+ if (isDynamicType) {
232
+ throw new Error(`Function parameters with dynamic types are not supported for constraint validation. Provided at function ${policy.functionName}, index ${constraint.index}`);
233
+ }
234
+ const isFollowedByDynamicType = isFollowedByDynamicInputType(abiFunction, constraint.index);
235
+ if (isFollowedByDynamicType) {
236
+ throw new Error(`Target function parameter is followed by a dynamic type parameter. Provided at function ${policy.functionName}, index ${constraint.index}`);
237
+ }
238
+ const startingAbiChunkIndex = getParameterChunkIndex(abiFunction, constraint.index);
239
+ if (constraint.value === undefined || constraint.value === null) {
240
+ return {
241
+ index: BigInt(startingAbiChunkIndex),
242
+ condition: ConstraintCondition.Unconstrained,
243
+ refValue: toHex("", { size: 32 }),
244
+ limit,
245
+ };
246
+ }
247
+ const encodedInput = encodeAbiParameters([input], [constraint.value]);
248
+ const abiBytesChunks = encodedInputToAbiChunks(encodedInput);
249
+ const ALLOWED_OVERFLOW_CONDITIONS = [
250
+ ConstraintCondition.Unconstrained,
251
+ ConstraintCondition.Equal,
252
+ ConstraintCondition.NotEqual,
253
+ ];
254
+ const ALLOWED_OVERFLOW_LIMIT_TYPES = [
255
+ LimitType.Unlimited,
256
+ ];
257
+ if (abiBytesChunks.length > 1
258
+ && (!ALLOWED_OVERFLOW_CONDITIONS.includes(condition) // Can't validate condition (e.g. < >) if value is split across multiple chunks
259
+ || !ALLOWED_OVERFLOW_LIMIT_TYPES.includes(limit.limitType) // Can't validate limit if value is split across multiple chunks
260
+ )) {
261
+ throw new Error(`Encoded input size of parameter at index ${constraint.index} of ${policy.functionName} exceeds the maximum size of 32 bytes: ${abiBytesChunks.length * 32} bytes`);
262
+ }
263
+ ;
264
+ return abiBytesChunks.map((abiChunk, index) => ({
265
+ index: BigInt(startingAbiChunkIndex + index),
266
+ condition,
267
+ refValue: abiChunk,
268
+ limit,
269
+ }));
270
+ }).flat() ?? [],
271
+ };
272
+ }) ?? [],
273
+ transferPolicies: preferences.transfers?.map((policy) => {
274
+ const valueLimit = policy.valueLimit ? formatLimitPreferences(policy.valueLimit) : LimitZero;
275
+ return {
276
+ target: getAddress(policy.to.toLowerCase()),
277
+ maxValuePerUse: policy.maxValuePerUse ?? valueLimit.limit,
278
+ valueLimit,
279
+ };
280
+ }) ?? [],
281
+ };
282
+ }
283
+ //# sourceMappingURL=formatSessionPreferences.js.map