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
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Session monitoring utilities for tracking session state changes
3
+ *
4
+ * These utilities help monitor session expiration and state changes,
5
+ * similar to the legacy SDK's onSessionStateChange callback functionality.
6
+ */
7
+
8
+ import type { Chain, Client, PublicActions, Transport } from "viem";
9
+
10
+ import type {
11
+ GetSessionStateParams,
12
+ SessionEventType,
13
+ SessionState,
14
+ SessionStateEventCallback,
15
+ } from "../actions/sessions.js";
16
+ import { getSessionState, SessionStatus } from "../actions/sessions.js";
17
+ import type { SessionSpec } from "../session/types.js";
18
+
19
+ /**
20
+ * Parameters for starting session monitoring
21
+ */
22
+ export type StartSessionMonitoringParams = {
23
+ /**
24
+ * Callback to invoke when session state changes
25
+ */
26
+ onSessionStateChange: SessionStateEventCallback;
27
+
28
+ /**
29
+ * Interval in milliseconds to check session state (default: 60000 = 1 minute)
30
+ */
31
+ checkIntervalMs?: number;
32
+
33
+ /**
34
+ * Threshold in seconds for warning about session expiration (default: 3600 = 1 hour)
35
+ */
36
+ expirationWarningThresholdSeconds?: number;
37
+
38
+ /**
39
+ * Threshold percentage for warning about fee limit (default: 80 = 80%)
40
+ */
41
+ feeLimitWarningThresholdPercent?: number;
42
+ };
43
+
44
+ /**
45
+ * Session monitor handle for stopping monitoring
46
+ */
47
+ export type SessionMonitor = {
48
+ /**
49
+ * Stop monitoring the session
50
+ */
51
+ stop: () => void;
52
+
53
+ /**
54
+ * Force an immediate check of session state
55
+ */
56
+ checkNow: () => Promise<void>;
57
+ };
58
+
59
+ /**
60
+ * Start monitoring a session for state changes
61
+ *
62
+ * This function periodically checks the session state and invokes the callback
63
+ * when important events occur (expiration, revocation, fee limit warnings, etc.).
64
+ *
65
+ * @param client - A viem public client with chain and transport
66
+ * @param sessionParams - Parameters for querying session state
67
+ * @param monitoringParams - Monitoring configuration
68
+ * @returns A SessionMonitor handle to stop monitoring
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const monitor = startSessionMonitoring(
73
+ * publicClient,
74
+ * {
75
+ * account: smartAccountAddress,
76
+ * sessionSpec: mySessionSpec,
77
+ * contracts: {
78
+ * sessionValidator: sessionValidatorAddress,
79
+ * },
80
+ * },
81
+ * {
82
+ * onSessionStateChange: (event) => {
83
+ * if (event.type === SessionEventType.Expired) {
84
+ * console.error("Session expired!");
85
+ * } else if (event.type === SessionEventType.Warning) {
86
+ * console.warn(event.message);
87
+ * }
88
+ * },
89
+ * checkIntervalMs: 30000, // Check every 30 seconds
90
+ * }
91
+ * );
92
+ *
93
+ * // Later, stop monitoring
94
+ * monitor.stop();
95
+ * ```
96
+ */
97
+ export function startSessionMonitoring<
98
+ TTransport extends Transport = Transport,
99
+ TChain extends Chain | undefined = Chain | undefined,
100
+ >(
101
+ client: Client<TTransport, TChain> & PublicActions,
102
+ sessionParams: GetSessionStateParams,
103
+ monitoringParams: StartSessionMonitoringParams,
104
+ ): SessionMonitor {
105
+ const {
106
+ onSessionStateChange,
107
+ checkIntervalMs = 60000, // Default: 1 minute
108
+ expirationWarningThresholdSeconds = 3600, // Default: 1 hour
109
+ feeLimitWarningThresholdPercent = 80, // Default: 80%
110
+ } = monitoringParams;
111
+
112
+ let intervalHandle: ReturnType<typeof setInterval> | null = null;
113
+ let expirationTimeoutHandle: ReturnType<typeof setTimeout> | null = null;
114
+ let hasExpired = false;
115
+ let hasRevoked = false;
116
+ let lastFeeWarning = false;
117
+
118
+ const checkSessionState = async () => {
119
+ try {
120
+ const { sessionState } = await getSessionState(client, sessionParams);
121
+ const now = BigInt(Math.floor(Date.now() / 1000));
122
+
123
+ // Check if session has been revoked/closed
124
+ if (sessionState.status === SessionStatus.Closed && !hasRevoked) {
125
+ hasRevoked = true;
126
+ onSessionStateChange({
127
+ type: "session_revoked" as SessionEventType,
128
+ message: "Session has been revoked",
129
+ sessionState,
130
+ });
131
+ return; // Don't continue monitoring after revocation
132
+ }
133
+
134
+ // Check if session is inactive
135
+ if (sessionState.status === SessionStatus.NotInitialized) {
136
+ onSessionStateChange({
137
+ type: "session_inactive" as SessionEventType,
138
+ message: "Session is not initialized",
139
+ sessionState,
140
+ });
141
+ return; // Don't continue monitoring if not initialized
142
+ }
143
+
144
+ // Check if session has expired
145
+ if (sessionParams.sessionSpec.expiresAt <= now && !hasExpired) {
146
+ hasExpired = true;
147
+ onSessionStateChange({
148
+ type: "session_expired" as SessionEventType,
149
+ message: "Session has expired",
150
+ sessionState,
151
+ });
152
+ return; // Don't continue monitoring after expiration
153
+ }
154
+
155
+ // Check for expiration warning
156
+ const timeToExpiry = sessionParams.sessionSpec.expiresAt - now;
157
+ if (
158
+ timeToExpiry > 0n
159
+ && timeToExpiry <= BigInt(expirationWarningThresholdSeconds)
160
+ && !hasExpired
161
+ ) {
162
+ const minutes = Number(timeToExpiry) / 60;
163
+ onSessionStateChange({
164
+ type: "session_warning" as SessionEventType,
165
+ message: `Session will expire in ${minutes.toFixed(1)} minutes`,
166
+ sessionState,
167
+ });
168
+ }
169
+
170
+ // Check for fee limit warning
171
+ if (
172
+ sessionState.status === SessionStatus.Active
173
+ && sessionParams.sessionSpec.feeLimit.limit > 0n
174
+ ) {
175
+ const feeUsedPercent = Number(
176
+ (sessionParams.sessionSpec.feeLimit.limit
177
+ - sessionState.feesRemaining)
178
+ * 100n
179
+ / sessionParams.sessionSpec.feeLimit.limit,
180
+ );
181
+
182
+ if (
183
+ feeUsedPercent >= feeLimitWarningThresholdPercent
184
+ && !lastFeeWarning
185
+ ) {
186
+ lastFeeWarning = true;
187
+ onSessionStateChange({
188
+ type: "session_warning" as SessionEventType,
189
+ message: `Session fee limit is ${feeUsedPercent.toFixed(0)}% exhausted (${sessionState.feesRemaining} remaining)`,
190
+ sessionState,
191
+ });
192
+ } else if (feeUsedPercent < feeLimitWarningThresholdPercent) {
193
+ // Reset warning flag if usage drops below threshold
194
+ lastFeeWarning = false;
195
+ }
196
+ }
197
+ } catch (error) {
198
+ console.error("Error checking session state:", error);
199
+ }
200
+ };
201
+
202
+ // Set up expiration timeout
203
+ const now = BigInt(Math.floor(Date.now() / 1000));
204
+ const timeToExpiry = sessionParams.sessionSpec.expiresAt - now;
205
+ if (timeToExpiry > 0n) {
206
+ const timeoutMs = Number(timeToExpiry) * 1000;
207
+ expirationTimeoutHandle = setTimeout(() => {
208
+ if (!hasExpired) {
209
+ hasExpired = true;
210
+ void getSessionState(client, sessionParams).then(({ sessionState }) => {
211
+ onSessionStateChange({
212
+ type: "session_expired" as SessionEventType,
213
+ message: "Session has expired",
214
+ sessionState,
215
+ });
216
+ });
217
+ }
218
+ }, timeoutMs);
219
+ }
220
+
221
+ // Start periodic monitoring
222
+ intervalHandle = setInterval(() => {
223
+ void checkSessionState();
224
+ }, checkIntervalMs);
225
+
226
+ // Do an immediate check
227
+ void checkSessionState();
228
+
229
+ return {
230
+ stop: () => {
231
+ if (intervalHandle) {
232
+ clearInterval(intervalHandle);
233
+ intervalHandle = null;
234
+ }
235
+ if (expirationTimeoutHandle) {
236
+ clearTimeout(expirationTimeoutHandle);
237
+ expirationTimeoutHandle = null;
238
+ }
239
+ },
240
+ checkNow: checkSessionState,
241
+ };
242
+ }
243
+
244
+ /**
245
+ * Check if a session should show a warning based on its state
246
+ */
247
+ export function shouldWarnAboutSession(
248
+ sessionSpec: SessionSpec,
249
+ sessionState: SessionState,
250
+ options: {
251
+ expirationWarningThresholdSeconds?: number;
252
+ feeLimitWarningThresholdPercent?: number;
253
+ } = {},
254
+ ): { shouldWarn: boolean; reason?: string } {
255
+ const {
256
+ expirationWarningThresholdSeconds = 3600,
257
+ feeLimitWarningThresholdPercent = 80,
258
+ } = options;
259
+
260
+ const now = BigInt(Math.floor(Date.now() / 1000));
261
+
262
+ // Check expiration
263
+ const timeToExpiry = sessionSpec.expiresAt - now;
264
+ if (timeToExpiry > 0n && timeToExpiry <= BigInt(expirationWarningThresholdSeconds)) {
265
+ const minutes = Number(timeToExpiry) / 60;
266
+ return {
267
+ shouldWarn: true,
268
+ reason: `Session will expire in ${minutes.toFixed(1)} minutes`,
269
+ };
270
+ }
271
+
272
+ // Check fee limit
273
+ if (
274
+ sessionState.status === SessionStatus.Active
275
+ && sessionSpec.feeLimit.limit > 0n
276
+ ) {
277
+ const feeUsedPercent = Number(
278
+ (sessionSpec.feeLimit.limit - sessionState.feesRemaining)
279
+ * 100n
280
+ / sessionSpec.feeLimit.limit,
281
+ );
282
+
283
+ if (feeUsedPercent >= feeLimitWarningThresholdPercent) {
284
+ return {
285
+ shouldWarn: true,
286
+ reason: `Fee limit is ${feeUsedPercent.toFixed(0)}% exhausted`,
287
+ };
288
+ }
289
+ }
290
+
291
+ return { shouldWarn: false };
292
+ }
@@ -0,0 +1,205 @@
1
+ import type { Address, Hex } from "viem";
2
+
3
+ /**
4
+ * Limit types for usage tracking
5
+ * Uses numeric values to match contract enum
6
+ */
7
+ export enum LimitType {
8
+ Unlimited = 0,
9
+ Lifetime = 1,
10
+ Allowance = 2,
11
+ }
12
+
13
+ /**
14
+ * Period constants for time-based allowances (in seconds)
15
+ */
16
+ export const LIMIT_PERIODS = {
17
+ Hourly: 3600n,
18
+ Daily: 86400n,
19
+ Weekly: 604800n,
20
+ Monthly: 2592000n, // 30 days
21
+ Yearly: 31536000n, // 365 days
22
+ } as const;
23
+
24
+ /**
25
+ * Usage limit structure
26
+ * @member limitType - Type of limit (Unlimited, Lifetime, or time-based allowance)
27
+ * @member limit - Maximum value allowed (as bigint for U256 compatibility)
28
+ * @member period - Period in seconds for allowance limits (0 for Unlimited/Lifetime)
29
+ */
30
+ export type UsageLimit = {
31
+ limitType: LimitType;
32
+ limit: bigint;
33
+ period: bigint;
34
+ };
35
+
36
+ /**
37
+ * Constraint condition for parameter validation
38
+ * Uses string values to match Rust serialization format
39
+ */
40
+ export enum ConstraintCondition {
41
+ Unconstrained = "Unconstrained",
42
+ Equal = "Equal",
43
+ Greater = "Greater",
44
+ Less = "Less",
45
+ GreaterEqual = "GreaterEqual",
46
+ LessEqual = "LessEqual",
47
+ NotEqual = "NotEqual",
48
+ }
49
+
50
+ /**
51
+ * Constraint for validating transaction parameters
52
+ * @member condition - Comparison condition
53
+ * @member index - Parameter index in calldata
54
+ * @member refValue - Reference value for comparison (as hex string)
55
+ * @member limit - Usage limit for this constraint
56
+ */
57
+ export type Constraint = {
58
+ condition: ConstraintCondition;
59
+ index: bigint;
60
+ refValue: Hex;
61
+ limit: UsageLimit;
62
+ };
63
+
64
+ /**
65
+ * Policy for contract function calls
66
+ * @member target - Contract address
67
+ * @member selector - Function selector (4 bytes)
68
+ * @member maxValuePerUse - Maximum value per transaction
69
+ * @member valueLimit - Total value limit with tracking period
70
+ * @member constraints - Parameter validation constraints
71
+ */
72
+ export type CallPolicy = {
73
+ target: Address;
74
+ selector: Hex;
75
+ maxValuePerUse: bigint;
76
+ valueLimit: UsageLimit;
77
+ constraints: Constraint[];
78
+ };
79
+
80
+ /**
81
+ * Policy for simple value transfers (no calldata)
82
+ * @member target - Recipient address
83
+ * @member maxValuePerUse - Maximum value per transaction
84
+ * @member valueLimit - Total value limit with tracking period
85
+ */
86
+ export type TransferPolicy = {
87
+ target: Address;
88
+ maxValuePerUse: bigint;
89
+ valueLimit: UsageLimit;
90
+ };
91
+
92
+ /**
93
+ * Complete session specification
94
+ * @member signer - Session key public address (can sign transactions within policy limits)
95
+ * @member expiresAt - Unix timestamp when session expires
96
+ * @member feeLimit - Maximum cumulative fees the session can pay
97
+ * @member callPolicies - Policies for contract calls (requires calldata)
98
+ * @member transferPolicies - Policies for value transfers (no calldata)
99
+ */
100
+ export type SessionSpec = {
101
+ signer: Address;
102
+ expiresAt: bigint;
103
+ feeLimit: UsageLimit;
104
+ callPolicies: CallPolicy[];
105
+ transferPolicies: TransferPolicy[];
106
+ };
107
+
108
+ /**
109
+ * Helper to create unlimited limit
110
+ */
111
+ export const LimitUnlimited: UsageLimit = {
112
+ limitType: LimitType.Unlimited,
113
+ limit: 0n,
114
+ period: 0n,
115
+ };
116
+
117
+ /**
118
+ * Helper to create zero (disabled) limit
119
+ */
120
+ export const LimitZero: UsageLimit = {
121
+ limitType: LimitType.Lifetime,
122
+ limit: 0n,
123
+ period: 0n,
124
+ };
125
+
126
+ /**
127
+ * Helper to create lifetime limit (no period tracking)
128
+ */
129
+ export const createLifetimeLimit = (limit: bigint): UsageLimit => ({
130
+ limitType: LimitType.Lifetime,
131
+ limit,
132
+ period: 0n,
133
+ });
134
+
135
+ /**
136
+ * Helper to create time-based allowance limit
137
+ * @param period - Period in seconds for the allowance window
138
+ * @param limit - Maximum value allowed within the period
139
+ */
140
+ export const createAllowanceLimit = (
141
+ period: bigint,
142
+ limit: bigint,
143
+ ): UsageLimit => ({
144
+ limitType: LimitType.Allowance,
145
+ limit,
146
+ period,
147
+ });
148
+
149
+ // ============================================================================
150
+ // Enum Conversion Helpers for Contract ABIs
151
+ // ============================================================================
152
+
153
+ /**
154
+ * Convert LimitType enum to numeric value for contract calls
155
+ */
156
+ export function limitTypeToNumber(limitType: LimitType): number {
157
+ switch (limitType) {
158
+ case LimitType.Unlimited:
159
+ return 0;
160
+ case LimitType.Lifetime:
161
+ return 1;
162
+ case LimitType.Allowance:
163
+ return 2;
164
+ default:
165
+ throw new Error(`Unknown LimitType: ${limitType}`);
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Convert ConstraintCondition enum to numeric value for contract calls
171
+ */
172
+ export function conditionToNumber(condition: ConstraintCondition): number {
173
+ switch (condition) {
174
+ case ConstraintCondition.Unconstrained:
175
+ return 0;
176
+ case ConstraintCondition.Equal:
177
+ return 1;
178
+ case ConstraintCondition.Greater:
179
+ return 2;
180
+ case ConstraintCondition.Less:
181
+ return 3;
182
+ case ConstraintCondition.GreaterEqual:
183
+ return 4;
184
+ case ConstraintCondition.LessEqual:
185
+ return 5;
186
+ case ConstraintCondition.NotEqual:
187
+ return 6;
188
+ default:
189
+ throw new Error(`Unknown ConstraintCondition: ${condition}`);
190
+ }
191
+ }
192
+
193
+ // ============================================================================
194
+ // Backward Compatibility Type Aliases (for legacy SDK migration)
195
+ // ============================================================================
196
+
197
+ /**
198
+ * @deprecated Use SessionSpec instead. Provided for backward compatibility with legacy SDK.
199
+ */
200
+ export type SessionConfig = SessionSpec;
201
+
202
+ /**
203
+ * @deprecated Use UsageLimit instead. Provided for backward compatibility with legacy SDK.
204
+ */
205
+ export type Limit = UsageLimit;
@@ -0,0 +1,160 @@
1
+ import { type Address, encodeAbiParameters, type Hex, keccak256 } from "viem";
2
+
3
+ import { SessionKeyValidatorAbi } from "../../abi/SessionKeyValidator.js";
4
+ import { LimitType, type SessionSpec, type UsageLimit } from "./types.js";
5
+
6
+ /**
7
+ * Utility type that converts all bigint values to strings recursively
8
+ */
9
+ export type ConvertBigIntToString<T> = T extends bigint
10
+ ? string
11
+ : T extends Array<infer U>
12
+ ? Array<ConvertBigIntToString<U>>
13
+ : T extends object
14
+ ? { [K in keyof T]: ConvertBigIntToString<T[K]> }
15
+ : T;
16
+
17
+ /**
18
+ * SessionSpec with all bigint values converted to strings for JSON serialization
19
+ */
20
+ export type SessionSpecJSON = ConvertBigIntToString<SessionSpec>;
21
+
22
+ /**
23
+ * Converts a SessionSpec to JSON string format expected by WASM bindings.
24
+ * All bigint values are converted to strings for safe serialization.
25
+ */
26
+ export function sessionSpecToJSON(spec: SessionSpec): string {
27
+ const usageLimitToJSON = (limit: UsageLimit) => {
28
+ let limitType = "Unlimited";
29
+ if (limit.limitType === LimitType.Lifetime) limitType = "Lifetime";
30
+ else if (limit.limitType === LimitType.Allowance) limitType = "Allowance";
31
+
32
+ return {
33
+ limitType,
34
+ limit: limit.limit.toString(),
35
+ period: limit.period.toString(),
36
+ };
37
+ };
38
+
39
+ return JSON.stringify({
40
+ signer: spec.signer,
41
+ expiresAt: spec.expiresAt.toString(),
42
+ feeLimit: usageLimitToJSON(spec.feeLimit),
43
+ callPolicies: spec.callPolicies.map((policy) => ({
44
+ target: policy.target,
45
+ selector: policy.selector,
46
+ maxValuePerUse: policy.maxValuePerUse.toString(),
47
+ valueLimit: usageLimitToJSON(policy.valueLimit),
48
+ constraints: policy.constraints.map((constraint) => ({
49
+ condition: constraint.condition,
50
+ index: constraint.index.toString(),
51
+ refValue: constraint.refValue,
52
+ limit: usageLimitToJSON(constraint.limit),
53
+ })),
54
+ })),
55
+ transferPolicies: spec.transferPolicies.map((policy) => ({
56
+ target: policy.target,
57
+ maxValuePerUse: policy.maxValuePerUse.toString(),
58
+ valueLimit: usageLimitToJSON(policy.valueLimit),
59
+ })),
60
+ });
61
+ }
62
+
63
+ /**
64
+ * Extract function selector from calldata (first 4 bytes)
65
+ */
66
+ export function extractSelector(callData: Hex): Hex | undefined {
67
+ if (!callData || callData.length < 10) return undefined; // 0x + 8 hex chars = 10
68
+ return callData.slice(0, 10) as Hex;
69
+ }
70
+
71
+ /**
72
+ * Find matching policy for a transaction
73
+ */
74
+ export function findMatchingPolicy(
75
+ spec: SessionSpec,
76
+ target: Address,
77
+ selector?: Hex,
78
+ ): { type: "call" | "transfer"; policy: SessionSpec["callPolicies"][0] | SessionSpec["transferPolicies"][0] } | null {
79
+ // If selector provided, look for call policy
80
+ if (selector) {
81
+ const callPolicy = spec.callPolicies.find(
82
+ (p) => p.target.toLowerCase() === target.toLowerCase() && p.selector.toLowerCase() === selector.toLowerCase(),
83
+ );
84
+ if (callPolicy) return { type: "call", policy: callPolicy };
85
+ }
86
+
87
+ // Otherwise look for transfer policy
88
+ const transferPolicy = spec.transferPolicies.find(
89
+ (p) => p.target.toLowerCase() === target.toLowerCase(),
90
+ );
91
+ if (transferPolicy) return { type: "transfer", policy: transferPolicy };
92
+
93
+ return null;
94
+ }
95
+
96
+ /**
97
+ * Validates that a transaction fits within session policies
98
+ * Returns error message if invalid, null if valid
99
+ */
100
+ export function validateTransactionAgainstSession(
101
+ spec: SessionSpec,
102
+ target: Address,
103
+ value: bigint,
104
+ callData?: Hex,
105
+ ): string | null {
106
+ const selector = callData ? extractSelector(callData) : undefined;
107
+ const match = findMatchingPolicy(spec, target, selector);
108
+
109
+ if (!match) {
110
+ return selector
111
+ ? `No call policy found for target ${target} with selector ${selector}`
112
+ : `No transfer policy found for target ${target}`;
113
+ }
114
+
115
+ // Check max value per use
116
+ if (value > match.policy.maxValuePerUse) {
117
+ return `Value ${value} exceeds maxValuePerUse ${match.policy.maxValuePerUse}`;
118
+ }
119
+
120
+ return null; // Valid
121
+ }
122
+
123
+ /**
124
+ * Checks if a session has expired
125
+ */
126
+ export function isSessionExpired(
127
+ spec: SessionSpec,
128
+ currentTimestamp?: bigint,
129
+ ): boolean {
130
+ const now = currentTimestamp ?? BigInt(Math.floor(Date.now() / 1000));
131
+ return now > spec.expiresAt;
132
+ }
133
+
134
+ /**
135
+ * Gets human-readable expiry time
136
+ */
137
+ export function getSessionExpiryDate(spec: SessionSpec): Date {
138
+ return new Date(Number(spec.expiresAt) * 1000);
139
+ }
140
+
141
+ /**
142
+ * Computes the hash of a session specification.
143
+ * This hash is signed by the session key to prove ownership.
144
+ */
145
+ export function getSessionHash(spec: SessionSpec): Hex {
146
+ const createSessionFunction = SessionKeyValidatorAbi.find(
147
+ (x) => x.type === "function" && x.name === "createSession",
148
+ );
149
+ if (!createSessionFunction) throw new Error("createSession function not found in SessionKeyValidator ABI");
150
+
151
+ const sessionSpecParam = createSessionFunction.inputs.find((x) => x.name === "sessionSpec");
152
+ if (!sessionSpecParam) throw new Error("sessionSpec parameter not found in createSession function inputs");
153
+
154
+ const encoded = encodeAbiParameters(
155
+ [sessionSpecParam],
156
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
157
+ [spec as any],
158
+ );
159
+ return keccak256(encoded);
160
+ }