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,59 +1,224 @@
1
- import type { Address } from "abitype";
2
- import { type CustomSource, type Hash, hashTypedData, type Hex, type LocalAccount } from "viem";
3
- import { toAccount } from "viem/accounts";
4
- import { serializeTransaction, type ZksyncTransactionSerializableEIP712 } from "viem/zksync";
1
+ import {
2
+ type Address,
3
+ type Chain,
4
+ type Hash,
5
+ type Hex,
6
+ type PublicClient,
7
+ type Transport,
8
+ } from "viem";
9
+ import {
10
+ entryPoint08Abi,
11
+ entryPoint08Address,
12
+ getUserOperationHash,
13
+ toSmartAccount,
14
+ type ToSmartAccountReturnType,
15
+ } from "viem/account-abstraction";
16
+ import {
17
+ decode_nonce_result,
18
+ encode_get_nonce_call_data,
19
+ encode_session_execute_call_data,
20
+ generate_session_stub_signature_wasm,
21
+ keyed_nonce_decimal,
22
+ session_signature_no_validation_wasm,
23
+ } from "zksync-sso-web-sdk/bundler";
5
24
 
6
- import { getEip712Domain } from "../utils/getEip712Domain.js";
25
+ import type { SessionSpec } from "./types.js";
26
+ import { sessionSpecToJSON } from "./utils.js";
7
27
 
8
- export type ToSessionAccountParameters = {
9
- /** Address of the deployed Account's Contract implementation. */
10
- address: Address;
11
- signTransaction: (parameters: { hash: Hash; to: Address; callData?: Hash }) => Promise<Hex>;
28
+ export type SessionRequiredContracts = {
29
+ /** Session validator contract address (required for signature generation). */
30
+ sessionValidator: Address;
12
31
  };
13
32
 
14
- export type SessionAccount = LocalAccount<"ssoSessionAccount"> & {
15
- sign: NonNullable<CustomSource["sign"]>;
33
+ export type ToSessionSmartAccountParams<
34
+ TTransport extends Transport = Transport,
35
+ TChain extends Chain = Chain,
36
+ > = {
37
+ /** Public client used internally by the smart account implementation (must have chain). */
38
+ client: PublicClient<TTransport, TChain>;
39
+ /** Session key private key (used to sign user operations within policy limits). */
40
+ sessionKeyPrivateKey: Hash;
41
+ /** Smart account address (required - no counterfactual support). */
42
+ address: Address;
43
+ /** Session specification defining policies and limits. */
44
+ sessionSpec: SessionSpec;
45
+ /** Optional timestamp override (for testing or special timestamp handling). */
46
+ currentTimestamp?: bigint;
47
+ /** Session required contracts. */
48
+ contracts: SessionRequiredContracts;
49
+ /** Optional override for EntryPoint address (defaults to viem's entryPoint08Address). */
50
+ entryPointAddress?: Address;
16
51
  };
17
52
 
18
- export function toSessionAccount(
19
- parameters: ToSessionAccountParameters,
20
- ): SessionAccount {
21
- const { address, signTransaction } = parameters;
22
-
23
- const account = toAccount({
24
- address,
25
- async signTransaction(transaction) {
26
- const signableTransaction = {
27
- ...transaction,
28
- from: this.address!,
29
- type: "eip712",
30
- } as ZksyncTransactionSerializableEIP712;
31
-
32
- const eip712DomainAndMessage = getEip712Domain(signableTransaction);
33
- const digest = hashTypedData(eip712DomainAndMessage);
34
-
35
- return serializeTransaction({
36
- ...signableTransaction,
37
- customSignature: await signTransaction({
38
- hash: digest,
39
- to: signableTransaction.to!,
40
- callData: signableTransaction.data,
41
- }),
53
+ /**
54
+ * Builds a SSO SmartAccount instance which uses a session key for signing within policy limits.
55
+ * This allows delegated transaction signing with enforced limits on gas fees, transfer values, and call parameters.
56
+ */
57
+ export async function toSessionSmartAccount<
58
+ TTransport extends Transport = Transport,
59
+ TChain extends Chain = Chain,
60
+ >({
61
+ client,
62
+ sessionKeyPrivateKey,
63
+ address,
64
+ contracts,
65
+ sessionSpec,
66
+ currentTimestamp,
67
+ entryPointAddress,
68
+ }: ToSessionSmartAccountParams<TTransport, TChain>): Promise<ToSmartAccountReturnType> {
69
+ // Precompute session spec JSON once
70
+ const sessionSpecJSON = sessionSpecToJSON(sessionSpec);
71
+ const epAddress = entryPointAddress ?? entryPoint08Address;
72
+
73
+ return toSmartAccount({
74
+ client,
75
+ entryPoint: {
76
+ abi: entryPoint08Abi,
77
+ address: epAddress,
78
+ version: "0.8",
79
+ },
80
+ async getNonce() {
81
+ const sender = await this.getAddress();
82
+
83
+ // Get the nonce key for this session signer
84
+ const nonceKeyDecimal = keyed_nonce_decimal(sessionSpec.signer);
85
+
86
+ // Encode the getNonce call with the session's nonce key
87
+ const calldata = encode_get_nonce_call_data(sender, nonceKeyDecimal) as Hex;
88
+
89
+ const result = await client.request({
90
+ method: "eth_call",
91
+ params: [{
92
+ from: sender,
93
+ to: epAddress,
94
+ data: calldata,
95
+ }],
42
96
  });
97
+
98
+ const nonceStr = decode_nonce_result(result);
99
+ return BigInt(nonceStr as string);
100
+ },
101
+
102
+ // --- Calls encoding (session execute only - batch not supported yet) ---
103
+ async encodeCalls(calls) {
104
+ // Only support single calls (no batch operations)
105
+ if (calls.length !== 1) {
106
+ throw new Error(
107
+ "Batch transactions are not supported for session accounts. Only single execute() calls are allowed.",
108
+ );
109
+ }
110
+
111
+ const call = calls[0];
112
+
113
+ // Use Rust SDK for encoding session execute
114
+ const valueStr = (call.value ?? 0n).toString();
115
+
116
+ const encoded = encode_session_execute_call_data(
117
+ call.to,
118
+ valueStr,
119
+ call.data ?? "0x",
120
+ ) as Hex;
121
+
122
+ return encoded;
123
+ },
124
+
125
+ async decodeCalls() {
126
+ throw new Error("decodeCalls is not supported yet for session accounts.");
43
127
  },
44
- sign: async () => {
45
- throw new Error(`account.sign not supported for SSO Session Client`);
128
+
129
+ // --- Address & factory args ---
130
+ async getAddress() {
131
+ // Return the provided address (no counterfactual support yet)
132
+ return address;
46
133
  },
47
- signMessage: async () => {
48
- throw new Error(`account.signMessage not supported for SSO Session Client`);
134
+ async getFactoryArgs() {
135
+ // No counterfactual deployment support yet
136
+ throw new Error(
137
+ "getFactoryArgs is not supported for session accounts. Deploy the account first and provide the address.",
138
+ );
49
139
  },
50
- signTypedData: async () => {
51
- throw new Error(`account.signTypedData not supported for SSO Session Client`);
140
+
141
+ // --- Stubs & signing ---
142
+ async getStubSignature() {
143
+ // Generate session stub signature for gas estimation
144
+ const timestampStr = currentTimestamp?.toString();
145
+ return generate_session_stub_signature_wasm(
146
+ contracts.sessionValidator,
147
+ sessionSpecJSON,
148
+ timestampStr,
149
+ ) as Hex;
52
150
  },
53
- });
151
+ async signMessage({ message }) {
152
+ throw new Error(
153
+ `signMessage is not supported for session accounts. Message: ${String(message)}`,
154
+ );
155
+ },
156
+
157
+ async signTypedData() {
158
+ throw new Error("signTypedData is not supported for session accounts");
159
+ },
160
+ async signUserOperation(params) {
161
+ const sender = await this.getAddress();
162
+
163
+ // Default undefined fields to 0n to avoid runtime errors during early signing.
164
+ const nonce = params.nonce ?? 0n;
165
+ const callGasLimit = params.callGasLimit ?? 0n;
166
+ const verificationGasLimit = params.verificationGasLimit ?? 0n;
167
+ const preVerificationGas = params.preVerificationGas ?? 0n;
168
+ const maxFeePerGas = params.maxFeePerGas ?? 0n;
169
+ const maxPriorityFeePerGas = params.maxPriorityFeePerGas ?? 0n;
170
+ const paymasterAndData = (params.paymasterAndData ?? "0x") as Hex;
54
171
 
55
- return {
56
- ...account,
57
- source: "ssoSessionAccount",
58
- } as SessionAccount;
172
+ // Debug: Log effective gas & nonce passed into signing to diagnose zero-gas AA23 issues
173
+ console.debug(
174
+ "[toSessionSmartAccount] signUserOperation params:",
175
+ {
176
+ nonce: nonce.toString(),
177
+ callGasLimit: callGasLimit.toString(),
178
+ verificationGasLimit: verificationGasLimit.toString(),
179
+ preVerificationGas: preVerificationGas.toString(),
180
+ maxFeePerGas: maxFeePerGas.toString(),
181
+ maxPriorityFeePerGas: maxPriorityFeePerGas.toString(),
182
+ },
183
+ );
184
+
185
+ // Compute user operation hash locally using viem helper (includes paymasterAndData)
186
+ const userOpHash = getUserOperationHash({
187
+ chainId: Number(client.chain!.id),
188
+ entryPointAddress: this.entryPoint.address,
189
+ entryPointVersion: "0.8",
190
+ userOperation: {
191
+ sender,
192
+ nonce,
193
+ initCode: (params.initCode ?? "0x") as Hex,
194
+ callData: (params.callData ?? "0x") as Hex,
195
+ callGasLimit,
196
+ verificationGasLimit,
197
+ preVerificationGas,
198
+ maxFeePerGas,
199
+ maxPriorityFeePerGas,
200
+ paymasterAndData,
201
+ signature: "0x",
202
+ },
203
+ } as any) as Hex;
204
+
205
+ // Parse target and selector from callData for validation
206
+ // The callData is already encoded by encodeCalls, so we need to extract execute() params
207
+ // For now, we'll trust that the session policies are validated at contract level
208
+ // In a full implementation, you'd decode the execute call to validate against session spec
209
+
210
+ const timestampStr = currentTimestamp?.toString();
211
+
212
+ // Sign using session key with no validation (contract will validate)
213
+ const signature = session_signature_no_validation_wasm(
214
+ sessionKeyPrivateKey,
215
+ contracts.sessionValidator,
216
+ sessionSpecJSON,
217
+ userOpHash,
218
+ timestampStr,
219
+ ) as Hex;
220
+
221
+ return signature;
222
+ },
223
+ });
59
224
  }
@@ -0,0 +1,62 @@
1
+ import type {
2
+ Account,
3
+ Address,
4
+ Chain,
5
+ Client,
6
+ Transport,
7
+ } from "viem";
8
+ import type { BundlerClient } from "viem/account-abstraction";
9
+
10
+ import type { PaymasterConfig } from "../../actions/sendUserOperation.js";
11
+ import {
12
+ type SmartAccountClientActions,
13
+ smartAccountClientActions,
14
+ } from "../common/smart-account-client-actions.js";
15
+ import { toSessionSmartAccount, type ToSessionSmartAccountParams } from "./account.js";
16
+
17
+ /**
18
+ * Extended client data needed for session smart account wrapper
19
+ */
20
+ export type SessionClientData<
21
+ TTransport extends Transport = Transport,
22
+ TChain extends Chain = Chain,
23
+ > = {
24
+ bundler: BundlerClient;
25
+ sessionAccount: ToSessionSmartAccountParams<TTransport, TChain>;
26
+ accountAddress: Address;
27
+ paymaster?: PaymasterConfig;
28
+ };
29
+
30
+ /**
31
+ * Session client actions extend generic smart account actions but:
32
+ * - Remove addPasskey (not applicable for pure session key accounts)
33
+ */
34
+ export type SessionClientActions<
35
+ TChain extends Chain = Chain,
36
+ TAccount extends Account = Account,
37
+ > = Omit<SmartAccountClientActions<TChain, TAccount>, "addPasskey">;
38
+
39
+ /**
40
+ * Decorator providing session-specific client actions
41
+ */
42
+ export function sessionClientActions<
43
+ TTransport extends Transport,
44
+ TChain extends Chain,
45
+ TAccount extends Account | undefined = undefined,
46
+ >(
47
+ config: SessionClientData<TTransport, TChain> & { client: Client<TTransport, TChain, TAccount> },
48
+ ): SessionClientActions<TChain, TAccount extends Account ? TAccount : Account> {
49
+ const base = smartAccountClientActions<TTransport, TChain, TAccount>({
50
+ bundler: config.bundler,
51
+ accountFactory: () => toSessionSmartAccount(config.sessionAccount),
52
+ client: config.client,
53
+ accountAddress: config.accountAddress,
54
+ paymaster: config.paymaster,
55
+ });
56
+
57
+ return {
58
+ ...base,
59
+ // Remove addPasskey (not valid for session-only signing)
60
+ addPasskey: undefined as never,
61
+ } as SessionClientActions<TChain, TAccount extends Account ? TAccount : Account>;
62
+ }
@@ -1,173 +1,134 @@
1
- import { type Account, type Address, type Chain, type Client, createClient, createPublicClient, encodeAbiParameters, getAddress, type Hash, type Prettify, publicActions, type PublicRpcSchema, type RpcSchema, type Transport, type WalletClientConfig, type WalletRpcSchema } from "viem";
2
- import { privateKeyToAccount } from "viem/accounts";
3
- import { zksyncInMemoryNode } from "viem/chains";
1
+ import {
2
+ type Address,
3
+ type Chain,
4
+ type Client,
5
+ createClient,
6
+ createPublicClient,
7
+ type Hash,
8
+ type Prettify,
9
+ type PublicActions,
10
+ publicActions,
11
+ type PublicRpcSchema,
12
+ type RpcSchema,
13
+ type Transport,
14
+ walletActions,
15
+ type WalletRpcSchema,
16
+ } from "viem";
17
+ import type { BundlerClient } from "viem/account-abstraction";
4
18
 
5
- import type { CustomPaymasterHandler } from "../../paymaster/index.js";
6
- import { encodeSessionTx } from "../../utils/encoding.js";
7
- import type { SessionConfig, SessionStateEventCallback } from "../../utils/session.js";
8
- import { toSessionAccount } from "./account.js";
9
- import { getSessionState, sessionStateNotify } from "./actions/session.js";
10
- import { publicActionsRewrite } from "./decorators/publicActionsRewrite.js";
11
- import { type ZksyncSsoWalletActions, zksyncSsoWalletActions } from "./decorators/wallet.js";
19
+ import type { PaymasterConfig } from "../../actions/sendUserOperation.js";
20
+ import type { SessionRequiredContracts, ToSessionSmartAccountParams } from "./account.js";
21
+ import { type SessionClientActions, sessionClientActions } from "./client-actions.js";
22
+ import type { SessionSpec } from "./types.js";
12
23
 
13
- export const signSessionTransaction = (args: {
14
- sessionKeySignedHash: Hash;
15
- sessionContract: Address;
16
- sessionConfig: SessionConfig;
17
- to: Address;
18
- callData?: Hash;
19
- timestamp?: bigint;
20
- }) => {
21
- return encodeAbiParameters(
22
- [
23
- { type: "bytes", name: "sessionKeySignedHash" },
24
- { type: "address", name: "sessionContract" },
25
- { type: "bytes", name: "validatorData" },
26
- ],
27
- [
28
- args.sessionKeySignedHash,
29
- args.sessionContract,
30
- encodeSessionTx({
31
- sessionConfig: args.sessionConfig,
32
- to: args.to,
33
- callData: args.callData,
34
- timestamp: args.timestamp,
35
- }),
36
- ],
37
- );
24
+ /** Parameters for creating a Session smart account client */
25
+ export type CreateSessionClientParams<
26
+ TTransport extends Transport = Transport,
27
+ TChain extends Chain = Chain,
28
+ > = {
29
+ /** Smart account address (already deployed) */
30
+ address: Address;
31
+ /** Session key private key */
32
+ sessionKeyPrivateKey: Hash;
33
+ /** Session specification governing allowed actions */
34
+ sessionSpec: SessionSpec;
35
+ /** Session required contracts */
36
+ contracts: SessionRequiredContracts;
37
+ /** Bundler client instance */
38
+ bundlerClient: BundlerClient;
39
+ /** Chain config */
40
+ chain: TChain;
41
+ /** Transport for public RPC */
42
+ transport: TTransport;
43
+ /** Optional paymaster configuration for sponsoring transactions */
44
+ paymaster?: PaymasterConfig;
45
+ /** Optional timestamp override for signature generation */
46
+ currentTimestamp?: bigint;
47
+ /** Optional override for EntryPoint address used by the account implementation. */
48
+ entryPointAddress?: Address;
49
+ /** Optional client metadata */
50
+ key?: string;
51
+ name?: string;
38
52
  };
39
53
 
40
- export function createZksyncSessionClient<
41
- transport extends Transport,
42
- chain extends Chain,
43
- rpcSchema extends RpcSchema | undefined = undefined,
44
- >(_parameters: ZksyncSsoSessionClientConfig<transport, chain, rpcSchema>): ZksyncSsoSessionClient<transport, chain, rpcSchema> {
45
- type WalletClientParameters = typeof _parameters;
46
- const parameters: WalletClientParameters & {
47
- key: NonNullable<WalletClientParameters["key"]>;
48
- name: NonNullable<WalletClientParameters["name"]>;
49
- } = {
50
- ..._parameters,
51
- address: getAddress(_parameters.address),
52
- key: _parameters.key || "zksync-sso-session-wallet",
53
- name: _parameters.name || "ZKsync SSO Session Client",
54
- };
54
+ /** Session client type with actions */
55
+ export type SessionClient<
56
+ TTransport extends Transport = Transport,
57
+ TChain extends Chain = Chain,
58
+ TRpcSchema extends RpcSchema | undefined = undefined,
59
+ > = Prettify<
60
+ Client<
61
+ TTransport,
62
+ TChain,
63
+ undefined,
64
+ TRpcSchema extends RpcSchema
65
+ ? [...PublicRpcSchema, ...WalletRpcSchema, ...TRpcSchema]
66
+ : [...PublicRpcSchema, ...WalletRpcSchema]
67
+ > &
68
+ PublicActions<TTransport, TChain> &
69
+ SessionClientActions & {
70
+ bundler: BundlerClient;
71
+ }
72
+ >;
55
73
 
56
- const getInMemoryNodeTimestamp = async () => {
57
- const publicClient = createPublicClient({ chain: parameters.chain, transport: parameters.transport });
58
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
- const timestamp: number = await publicClient.request({ method: "config_getCurrentTimestamp" as any });
60
- return BigInt(timestamp);
61
- };
74
+ /**
75
+ * Create a client wrapping a session smart account. Provides wallet-like API
76
+ * plus helpers for session creation & state queries. Transactions sent via
77
+ * sendTransaction or sendSessionTransaction are encoded as session execute() calls.
78
+ */
79
+ export function createSessionClient<
80
+ TTransport extends Transport = Transport,
81
+ TChain extends Chain = Chain,
82
+ TRpcSchema extends RpcSchema | undefined = undefined,
83
+ >(
84
+ params: CreateSessionClientParams<TTransport, TChain>,
85
+ ): SessionClient<TTransport, TChain, TRpcSchema> {
86
+ const {
87
+ address,
88
+ contracts,
89
+ sessionKeyPrivateKey,
90
+ sessionSpec,
91
+ bundlerClient,
92
+ chain,
93
+ transport,
94
+ currentTimestamp,
95
+ paymaster,
96
+ } = params;
62
97
 
63
- const account = toSessionAccount({
64
- address: parameters.address,
65
- signTransaction: async ({ hash, to, callData }) => {
66
- // In Memory Node uses a different timestamp mechanism which isn't equal to actual timestamp
67
- const timestamp = parameters.chain.id === zksyncInMemoryNode.id
68
- ? await getInMemoryNodeTimestamp()
69
- : undefined;
98
+ const publicClient = createPublicClient({ chain, transport });
70
99
 
71
- const sessionKeySigner = privateKeyToAccount(parameters.sessionKey);
72
- const hashSignature = await sessionKeySigner.sign({ hash });
100
+ const sessionAccountParams: ToSessionSmartAccountParams = {
101
+ client: publicClient as ToSessionSmartAccountParams["client"],
102
+ address,
103
+ contracts,
104
+ sessionKeyPrivateKey,
105
+ sessionSpec,
106
+ currentTimestamp,
107
+ entryPointAddress: params.entryPointAddress,
108
+ };
73
109
 
74
- return signSessionTransaction({
75
- sessionKeySignedHash: hashSignature,
76
- sessionContract: parameters.contracts.session,
77
- sessionConfig: parameters.sessionConfig,
78
- to,
79
- callData,
80
- timestamp,
81
- });
82
- },
83
- });
84
- const client = createClient<transport, chain, Account, rpcSchema>({
85
- ...parameters,
86
- account,
110
+ const client = createClient({
111
+ chain,
112
+ transport,
113
+ account: undefined,
87
114
  type: "walletClient",
115
+ key: params.key || "zksync-sso-session-client",
116
+ name: params.name || "ZKsync SSO Session Client",
88
117
  })
89
- .extend(() => ({
90
- sessionKey: parameters.sessionKey,
91
- sessionConfig: parameters.sessionConfig,
92
- contracts: parameters.contracts,
93
- paymasterHandler: parameters.paymasterHandler,
94
- onSessionStateChange: parameters.onSessionStateChange,
95
- _sessionNotifyTimeout: undefined as NodeJS.Timeout | undefined,
96
- }))
97
118
  .extend(publicActions)
98
- .extend(publicActionsRewrite)
99
- .extend(zksyncSsoWalletActions);
100
-
101
- // Check session state on initialization if callback is provided
102
- if (client.onSessionStateChange) {
103
- getSessionState(client, {
104
- account: client.account.address,
105
- sessionConfig: client.sessionConfig,
106
- contracts: client.contracts,
107
- }).then(({ sessionState }) => {
108
- sessionStateNotify({
109
- sessionConfig: client.sessionConfig,
110
- sessionState,
111
- onSessionStateChange: client.onSessionStateChange!,
112
- sessionNotifyTimeout: client._sessionNotifyTimeout,
113
- });
114
- }).catch((error) => {
115
- console.error("Failed to get session state on initialization:", error);
116
- });
117
- }
118
-
119
- return client;
120
- }
121
-
122
- export type SessionRequiredContracts = {
123
- session: Address; // Session, spend limit, etc.
124
- };
125
- type ZksyncSsoSessionData = {
126
- sessionKey: Hash;
127
- sessionConfig: SessionConfig;
128
- contracts: SessionRequiredContracts;
129
- paymasterHandler?: CustomPaymasterHandler;
130
- onSessionStateChange?: SessionStateEventCallback;
131
- skipPreTransactionStateValidation?: boolean;
132
- _sessionNotifyTimeout?: NodeJS.Timeout;
133
- };
134
-
135
- export type ClientWithZksyncSsoSessionData<
136
- transport extends Transport = Transport,
137
- chain extends Chain = Chain,
138
- account extends Account = Account,
139
- > = Client<transport, chain, account> & ZksyncSsoSessionData;
140
-
141
- export type ZksyncSsoSessionClient<
142
- transport extends Transport = Transport,
143
- chain extends Chain = Chain,
144
- rpcSchema extends RpcSchema | undefined = undefined,
145
- account extends Account = Account,
146
- > = Prettify<
147
- Client<
148
- transport,
149
- chain,
150
- account,
151
- rpcSchema extends RpcSchema
152
- ? [...PublicRpcSchema, ...WalletRpcSchema, ...rpcSchema]
153
- : [...PublicRpcSchema, ...WalletRpcSchema],
154
- ZksyncSsoWalletActions<chain, account>
155
- > & ZksyncSsoSessionData
156
- >;
119
+ .extend(walletActions)
120
+ .extend((client) =>
121
+ sessionClientActions({
122
+ client,
123
+ bundler: bundlerClient,
124
+ sessionAccount: sessionAccountParams,
125
+ accountAddress: address,
126
+ paymaster,
127
+ }),
128
+ )
129
+ .extend(() => ({
130
+ bundler: bundlerClient,
131
+ }));
157
132
 
158
- export interface ZksyncSsoSessionClientConfig<
159
- transport extends Transport = Transport,
160
- chain extends Chain = Chain,
161
- rpcSchema extends RpcSchema | undefined = undefined,
162
- > extends Omit<WalletClientConfig<transport, chain, Account, rpcSchema>, "account"> {
163
- chain: NonNullable<chain>;
164
- address: Address;
165
- sessionKey: Hash;
166
- sessionConfig: SessionConfig;
167
- contracts: SessionRequiredContracts;
168
- key?: string;
169
- name?: string;
170
- paymasterHandler?: CustomPaymasterHandler;
171
- onSessionStateChange?: SessionStateEventCallback;
172
- skipPreTransactionStateValidation?: boolean; // Useful if you want to send session transactions really fast
133
+ return client as SessionClient<TTransport, TChain, TRpcSchema>;
173
134
  }