@zerodev/wallet-core 0.0.1-alpha.8 → 0.0.1

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 (368) hide show
  1. package/README.md +68 -18
  2. package/dist/_cjs/actions/auth/authenticateWithEmail.js +1 -2
  3. package/dist/_cjs/actions/auth/authenticateWithEmail.js.map +1 -1
  4. package/dist/_cjs/actions/auth/authenticateWithOAuth.js +2 -3
  5. package/dist/_cjs/actions/auth/authenticateWithOAuth.js.map +1 -1
  6. package/dist/_cjs/actions/auth/getAuthProxyConfigId.js +10 -0
  7. package/dist/_cjs/actions/auth/getAuthProxyConfigId.js.map +1 -0
  8. package/dist/_cjs/actions/auth/getAuthenticators.js +16 -0
  9. package/dist/_cjs/actions/auth/getAuthenticators.js.map +1 -0
  10. package/dist/_cjs/actions/auth/getOAuthLoginUrl.js +18 -0
  11. package/dist/_cjs/actions/auth/getOAuthLoginUrl.js.map +1 -0
  12. package/dist/_cjs/actions/auth/getParentOrgId.js +10 -0
  13. package/dist/_cjs/actions/auth/getParentOrgId.js.map +1 -0
  14. package/dist/_cjs/actions/auth/getWhoami.js +18 -4
  15. package/dist/_cjs/actions/auth/getWhoami.js.map +1 -1
  16. package/dist/_cjs/actions/auth/index.js +9 -3
  17. package/dist/_cjs/actions/auth/index.js.map +1 -1
  18. package/dist/_cjs/actions/auth/loginWithStamp.js +5 -6
  19. package/dist/_cjs/actions/auth/loginWithStamp.js.map +1 -1
  20. package/dist/_cjs/actions/auth/registerWithOTP.js +1 -2
  21. package/dist/_cjs/actions/auth/registerWithOTP.js.map +1 -1
  22. package/dist/_cjs/actions/auth/registerWithPasskey.js +1 -2
  23. package/dist/_cjs/actions/auth/registerWithPasskey.js.map +1 -1
  24. package/dist/_cjs/actions/index.js +9 -3
  25. package/dist/_cjs/actions/index.js.map +1 -1
  26. package/dist/_cjs/actions/wallet/getUserWallet.js +3 -5
  27. package/dist/_cjs/actions/wallet/getUserWallet.js.map +1 -1
  28. package/dist/_cjs/actions/wallet/index.js +9 -3
  29. package/dist/_cjs/actions/wallet/index.js.map +1 -1
  30. package/dist/_cjs/actions/wallet/sign7702Authorization.js +16 -0
  31. package/dist/_cjs/actions/wallet/sign7702Authorization.js.map +1 -0
  32. package/dist/_cjs/actions/wallet/signMessage.js +17 -0
  33. package/dist/_cjs/actions/wallet/signMessage.js.map +1 -0
  34. package/dist/_cjs/actions/wallet/signTransaction.js +9 -18
  35. package/dist/_cjs/actions/wallet/signTransaction.js.map +1 -1
  36. package/dist/_cjs/actions/wallet/signTypedDataV4.js +17 -0
  37. package/dist/_cjs/actions/wallet/signTypedDataV4.js.map +1 -0
  38. package/dist/_cjs/actions/wallet/signUserOperation.js +17 -0
  39. package/dist/_cjs/actions/wallet/signUserOperation.js.map +1 -0
  40. package/dist/_cjs/actions/wallet/signingUtils.js +64 -0
  41. package/dist/_cjs/actions/wallet/signingUtils.js.map +1 -0
  42. package/dist/_cjs/adapters/viem.js +60 -27
  43. package/dist/_cjs/adapters/viem.js.map +1 -1
  44. package/dist/_cjs/client/authProxy.js +1 -1
  45. package/dist/_cjs/client/authProxy.js.map +1 -1
  46. package/dist/_cjs/client/createClient.js +5 -5
  47. package/dist/_cjs/client/createClient.js.map +1 -1
  48. package/dist/_cjs/client/decorators/client.js +9 -4
  49. package/dist/_cjs/client/decorators/client.js.map +1 -1
  50. package/dist/_cjs/client/index.js.map +1 -1
  51. package/dist/_cjs/client/transports/createTransport.js +6 -5
  52. package/dist/_cjs/client/transports/createTransport.js.map +1 -1
  53. package/dist/_cjs/client/transports/rest.js +40 -28
  54. package/dist/_cjs/client/transports/rest.js.map +1 -1
  55. package/dist/_cjs/constants.js +4 -4
  56. package/dist/_cjs/constants.js.map +1 -1
  57. package/dist/_cjs/core/{createZeroDevWallet.js → createZeroDevWalletCore.js} +94 -86
  58. package/dist/_cjs/core/createZeroDevWalletCore.js.map +1 -0
  59. package/dist/_cjs/index.js +14 -8
  60. package/dist/_cjs/index.js.map +1 -1
  61. package/dist/_cjs/index.native.js +39 -0
  62. package/dist/_cjs/index.native.js.map +1 -0
  63. package/dist/_cjs/native/createZeroDevWallet.js +13 -0
  64. package/dist/_cjs/native/createZeroDevWallet.js.map +1 -0
  65. package/dist/_cjs/native/stampers/passkey.js +30 -0
  66. package/dist/_cjs/native/stampers/passkey.js.map +1 -0
  67. package/dist/_cjs/native/stampers/secureStore.js +112 -0
  68. package/dist/_cjs/native/stampers/secureStore.js.map +1 -0
  69. package/dist/_cjs/native/storage/asyncStorage.js +11 -0
  70. package/dist/_cjs/native/storage/asyncStorage.js.map +1 -0
  71. package/dist/_cjs/stampers/iframeStamper.js +3 -0
  72. package/dist/_cjs/stampers/iframeStamper.js.map +1 -1
  73. package/dist/_cjs/stampers/indexedDbStamper.js +20 -2
  74. package/dist/_cjs/stampers/indexedDbStamper.js.map +1 -1
  75. package/dist/_cjs/stampers/noopPasskeyStamper.js +16 -0
  76. package/dist/_cjs/stampers/noopPasskeyStamper.js.map +1 -0
  77. package/dist/_cjs/stampers/webauthnStamper.js +23 -3
  78. package/dist/_cjs/stampers/webauthnStamper.js.map +1 -1
  79. package/dist/_cjs/stubs/native-on-web.js +12 -0
  80. package/dist/_cjs/stubs/native-on-web.js.map +1 -0
  81. package/dist/_cjs/utils/encryptOtpAttempt.js +57 -0
  82. package/dist/_cjs/utils/encryptOtpAttempt.js.map +1 -0
  83. package/dist/_cjs/utils/exportPrivateKey.js +1 -1
  84. package/dist/_cjs/utils/exportPrivateKey.js.map +1 -1
  85. package/dist/_cjs/utils/exportWallet.js +52 -61
  86. package/dist/_cjs/utils/exportWallet.js.map +1 -1
  87. package/dist/_cjs/utils/hpke.js +78 -0
  88. package/dist/_cjs/utils/hpke.js.map +1 -0
  89. package/dist/_cjs/utils/platform.js +19 -0
  90. package/dist/_cjs/utils/platform.js.map +1 -0
  91. package/dist/_cjs/utils/resolveOrganizationId.js +20 -0
  92. package/dist/_cjs/utils/resolveOrganizationId.js.map +1 -0
  93. package/dist/_cjs/utils/utils.js +5 -6
  94. package/dist/_cjs/utils/utils.js.map +1 -1
  95. package/dist/_cjs/web/createZeroDevWallet.js +21 -0
  96. package/dist/_cjs/web/createZeroDevWallet.js.map +1 -0
  97. package/dist/_esm/actions/auth/authenticateWithEmail.js +1 -2
  98. package/dist/_esm/actions/auth/authenticateWithEmail.js.map +1 -1
  99. package/dist/_esm/actions/auth/authenticateWithOAuth.js +8 -7
  100. package/dist/_esm/actions/auth/authenticateWithOAuth.js.map +1 -1
  101. package/dist/_esm/actions/auth/getAuthProxyConfigId.js +13 -0
  102. package/dist/_esm/actions/auth/getAuthProxyConfigId.js.map +1 -0
  103. package/dist/_esm/actions/auth/getAuthenticators.js +36 -0
  104. package/dist/_esm/actions/auth/getAuthenticators.js.map +1 -0
  105. package/dist/_esm/actions/auth/getOAuthLoginUrl.js +23 -0
  106. package/dist/_esm/actions/auth/getOAuthLoginUrl.js.map +1 -0
  107. package/dist/_esm/actions/auth/getParentOrgId.js +17 -0
  108. package/dist/_esm/actions/auth/getParentOrgId.js.map +1 -0
  109. package/dist/_esm/actions/auth/getWhoami.js +28 -6
  110. package/dist/_esm/actions/auth/getWhoami.js.map +1 -1
  111. package/dist/_esm/actions/auth/index.js +4 -1
  112. package/dist/_esm/actions/auth/index.js.map +1 -1
  113. package/dist/_esm/actions/auth/loginWithStamp.js +9 -6
  114. package/dist/_esm/actions/auth/loginWithStamp.js.map +1 -1
  115. package/dist/_esm/actions/auth/registerWithOTP.js +5 -2
  116. package/dist/_esm/actions/auth/registerWithOTP.js.map +1 -1
  117. package/dist/_esm/actions/auth/registerWithPasskey.js +1 -3
  118. package/dist/_esm/actions/auth/registerWithPasskey.js.map +1 -1
  119. package/dist/_esm/actions/index.js +2 -2
  120. package/dist/_esm/actions/index.js.map +1 -1
  121. package/dist/_esm/actions/wallet/getUserWallet.js +5 -5
  122. package/dist/_esm/actions/wallet/getUserWallet.js.map +1 -1
  123. package/dist/_esm/actions/wallet/index.js +4 -1
  124. package/dist/_esm/actions/wallet/index.js.map +1 -1
  125. package/dist/_esm/actions/wallet/sign7702Authorization.js +13 -0
  126. package/dist/_esm/actions/wallet/sign7702Authorization.js.map +1 -0
  127. package/dist/_esm/actions/wallet/signMessage.js +14 -0
  128. package/dist/_esm/actions/wallet/signMessage.js.map +1 -0
  129. package/dist/_esm/actions/wallet/signTransaction.js +9 -36
  130. package/dist/_esm/actions/wallet/signTransaction.js.map +1 -1
  131. package/dist/_esm/actions/wallet/signTypedDataV4.js +14 -0
  132. package/dist/_esm/actions/wallet/signTypedDataV4.js.map +1 -0
  133. package/dist/_esm/actions/wallet/signUserOperation.js +14 -0
  134. package/dist/_esm/actions/wallet/signUserOperation.js.map +1 -0
  135. package/dist/_esm/actions/wallet/signingUtils.js +69 -0
  136. package/dist/_esm/actions/wallet/signingUtils.js.map +1 -0
  137. package/dist/_esm/adapters/viem.js +63 -30
  138. package/dist/_esm/adapters/viem.js.map +1 -1
  139. package/dist/_esm/client/authProxy.js +9 -4
  140. package/dist/_esm/client/authProxy.js.map +1 -1
  141. package/dist/_esm/client/createClient.js +5 -5
  142. package/dist/_esm/client/createClient.js.map +1 -1
  143. package/dist/_esm/client/decorators/client.js +9 -4
  144. package/dist/_esm/client/decorators/client.js.map +1 -1
  145. package/dist/_esm/client/index.js +1 -1
  146. package/dist/_esm/client/index.js.map +1 -1
  147. package/dist/_esm/client/transports/createTransport.js +6 -5
  148. package/dist/_esm/client/transports/createTransport.js.map +1 -1
  149. package/dist/_esm/client/transports/rest.js +44 -29
  150. package/dist/_esm/client/transports/rest.js.map +1 -1
  151. package/dist/_esm/constants.js +10 -3
  152. package/dist/_esm/constants.js.map +1 -1
  153. package/dist/_esm/core/{createZeroDevWallet.js → createZeroDevWalletCore.js} +115 -90
  154. package/dist/_esm/core/createZeroDevWalletCore.js.map +1 -0
  155. package/dist/_esm/index.js +13 -5
  156. package/dist/_esm/index.js.map +1 -1
  157. package/dist/_esm/index.native.js +19 -0
  158. package/dist/_esm/index.native.js.map +1 -0
  159. package/dist/_esm/native/createZeroDevWallet.js +10 -0
  160. package/dist/_esm/native/createZeroDevWallet.js.map +1 -0
  161. package/dist/_esm/native/stampers/passkey.js +27 -0
  162. package/dist/_esm/native/stampers/passkey.js.map +1 -0
  163. package/dist/_esm/native/stampers/secureStore.js +120 -0
  164. package/dist/_esm/native/stampers/secureStore.js.map +1 -0
  165. package/dist/_esm/native/storage/asyncStorage.js +13 -0
  166. package/dist/_esm/native/storage/asyncStorage.js.map +1 -0
  167. package/dist/_esm/stampers/iframeStamper.js +3 -0
  168. package/dist/_esm/stampers/iframeStamper.js.map +1 -1
  169. package/dist/_esm/stampers/indexedDbStamper.js +20 -2
  170. package/dist/_esm/stampers/indexedDbStamper.js.map +1 -1
  171. package/dist/_esm/stampers/noopPasskeyStamper.js +18 -0
  172. package/dist/_esm/stampers/noopPasskeyStamper.js.map +1 -0
  173. package/dist/_esm/stampers/webauthnStamper.js +23 -4
  174. package/dist/_esm/stampers/webauthnStamper.js.map +1 -1
  175. package/dist/_esm/stubs/native-on-web.js +25 -0
  176. package/dist/_esm/stubs/native-on-web.js.map +1 -0
  177. package/dist/_esm/utils/encryptOtpAttempt.js +81 -0
  178. package/dist/_esm/utils/encryptOtpAttempt.js.map +1 -0
  179. package/dist/_esm/utils/exportPrivateKey.js +1 -1
  180. package/dist/_esm/utils/exportPrivateKey.js.map +1 -1
  181. package/dist/_esm/utils/exportWallet.js +52 -61
  182. package/dist/_esm/utils/exportWallet.js.map +1 -1
  183. package/dist/_esm/utils/hpke.js +119 -0
  184. package/dist/_esm/utils/hpke.js.map +1 -0
  185. package/dist/_esm/utils/platform.js +16 -0
  186. package/dist/_esm/utils/platform.js.map +1 -0
  187. package/dist/_esm/utils/resolveOrganizationId.js +27 -0
  188. package/dist/_esm/utils/resolveOrganizationId.js.map +1 -0
  189. package/dist/_esm/utils/utils.js +5 -6
  190. package/dist/_esm/utils/utils.js.map +1 -1
  191. package/dist/_esm/web/createZeroDevWallet.js +18 -0
  192. package/dist/_esm/web/createZeroDevWallet.js.map +1 -0
  193. package/dist/_types/actions/auth/authenticateWithEmail.d.ts +0 -6
  194. package/dist/_types/actions/auth/authenticateWithEmail.d.ts.map +1 -1
  195. package/dist/_types/actions/auth/authenticateWithOAuth.d.ts +10 -4
  196. package/dist/_types/actions/auth/authenticateWithOAuth.d.ts.map +1 -1
  197. package/dist/_types/actions/auth/getAuthProxyConfigId.d.ts +12 -0
  198. package/dist/_types/actions/auth/getAuthProxyConfigId.d.ts.map +1 -0
  199. package/dist/_types/actions/auth/getAuthenticators.d.ts +65 -0
  200. package/dist/_types/actions/auth/getAuthenticators.d.ts.map +1 -0
  201. package/dist/_types/actions/auth/getOAuthLoginUrl.d.ts +30 -0
  202. package/dist/_types/actions/auth/getOAuthLoginUrl.d.ts.map +1 -0
  203. package/dist/_types/actions/auth/getParentOrgId.d.ts +17 -0
  204. package/dist/_types/actions/auth/getParentOrgId.d.ts.map +1 -0
  205. package/dist/_types/actions/auth/getWhoami.d.ts +9 -2
  206. package/dist/_types/actions/auth/getWhoami.d.ts.map +1 -1
  207. package/dist/_types/actions/auth/index.d.ts +5 -2
  208. package/dist/_types/actions/auth/index.d.ts.map +1 -1
  209. package/dist/_types/actions/auth/loginWithStamp.d.ts +2 -5
  210. package/dist/_types/actions/auth/loginWithStamp.d.ts.map +1 -1
  211. package/dist/_types/actions/auth/registerWithOTP.d.ts +10 -3
  212. package/dist/_types/actions/auth/registerWithOTP.d.ts.map +1 -1
  213. package/dist/_types/actions/auth/registerWithPasskey.d.ts +0 -7
  214. package/dist/_types/actions/auth/registerWithPasskey.d.ts.map +1 -1
  215. package/dist/_types/actions/index.d.ts +2 -2
  216. package/dist/_types/actions/index.d.ts.map +1 -1
  217. package/dist/_types/actions/wallet/index.d.ts +4 -1
  218. package/dist/_types/actions/wallet/index.d.ts.map +1 -1
  219. package/dist/_types/actions/wallet/sign7702Authorization.d.ts +19 -0
  220. package/dist/_types/actions/wallet/sign7702Authorization.d.ts.map +1 -0
  221. package/dist/_types/actions/wallet/signMessage.d.ts +19 -0
  222. package/dist/_types/actions/wallet/signMessage.d.ts.map +1 -0
  223. package/dist/_types/actions/wallet/signTransaction.d.ts +1 -19
  224. package/dist/_types/actions/wallet/signTransaction.d.ts.map +1 -1
  225. package/dist/_types/actions/wallet/signTypedDataV4.d.ts +21 -0
  226. package/dist/_types/actions/wallet/signTypedDataV4.d.ts.map +1 -0
  227. package/dist/_types/actions/wallet/signUserOperation.d.ts +21 -0
  228. package/dist/_types/actions/wallet/signUserOperation.d.ts.map +1 -0
  229. package/dist/_types/actions/wallet/signingUtils.d.ts +32 -0
  230. package/dist/_types/actions/wallet/signingUtils.d.ts.map +1 -0
  231. package/dist/_types/adapters/viem.d.ts +1 -1
  232. package/dist/_types/adapters/viem.d.ts.map +1 -1
  233. package/dist/_types/client/authProxy.d.ts +13 -7
  234. package/dist/_types/client/authProxy.d.ts.map +1 -1
  235. package/dist/_types/client/decorators/client.d.ts +32 -6
  236. package/dist/_types/client/decorators/client.d.ts.map +1 -1
  237. package/dist/_types/client/index.d.ts +1 -1
  238. package/dist/_types/client/index.d.ts.map +1 -1
  239. package/dist/_types/client/transports/createTransport.d.ts +2 -0
  240. package/dist/_types/client/transports/createTransport.d.ts.map +1 -1
  241. package/dist/_types/client/transports/rest.d.ts +13 -5
  242. package/dist/_types/client/transports/rest.d.ts.map +1 -1
  243. package/dist/_types/client/types.d.ts +9 -9
  244. package/dist/_types/client/types.d.ts.map +1 -1
  245. package/dist/_types/constants.d.ts +3 -3
  246. package/dist/_types/constants.d.ts.map +1 -1
  247. package/dist/_types/core/{createZeroDevWallet.d.ts → createZeroDevWalletCore.d.ts} +30 -10
  248. package/dist/_types/core/createZeroDevWalletCore.d.ts.map +1 -0
  249. package/dist/_types/index.d.ts +7 -7
  250. package/dist/_types/index.d.ts.map +1 -1
  251. package/dist/_types/index.native.d.ts +19 -0
  252. package/dist/_types/index.native.d.ts.map +1 -0
  253. package/dist/_types/native/createZeroDevWallet.d.ts +12 -0
  254. package/dist/_types/native/createZeroDevWallet.d.ts.map +1 -0
  255. package/dist/_types/native/stampers/passkey.d.ts +5 -0
  256. package/dist/_types/native/stampers/passkey.d.ts.map +1 -0
  257. package/dist/_types/native/stampers/secureStore.d.ts +3 -0
  258. package/dist/_types/native/stampers/secureStore.d.ts.map +1 -0
  259. package/dist/_types/native/storage/asyncStorage.d.ts +3 -0
  260. package/dist/_types/native/storage/asyncStorage.d.ts.map +1 -0
  261. package/dist/_types/stampers/iframeStamper.d.ts.map +1 -1
  262. package/dist/_types/stampers/indexedDbStamper.d.ts +2 -2
  263. package/dist/_types/stampers/indexedDbStamper.d.ts.map +1 -1
  264. package/dist/_types/stampers/noopPasskeyStamper.d.ts +8 -0
  265. package/dist/_types/stampers/noopPasskeyStamper.d.ts.map +1 -0
  266. package/dist/_types/stampers/types.d.ts +39 -5
  267. package/dist/_types/stampers/types.d.ts.map +1 -1
  268. package/dist/_types/stampers/webauthnStamper.d.ts +2 -2
  269. package/dist/_types/stampers/webauthnStamper.d.ts.map +1 -1
  270. package/dist/_types/stubs/native-on-web.d.ts +6 -0
  271. package/dist/_types/stubs/native-on-web.d.ts.map +1 -0
  272. package/dist/_types/types/session.d.ts +2 -3
  273. package/dist/_types/types/session.d.ts.map +1 -1
  274. package/dist/_types/utils/buildClientSignature.d.ts +3 -3
  275. package/dist/_types/utils/buildClientSignature.d.ts.map +1 -1
  276. package/dist/_types/utils/encryptOtpAttempt.d.ts +40 -0
  277. package/dist/_types/utils/encryptOtpAttempt.d.ts.map +1 -0
  278. package/dist/_types/utils/exportPrivateKey.d.ts +1 -1
  279. package/dist/_types/utils/exportPrivateKey.d.ts.map +1 -1
  280. package/dist/_types/utils/exportWallet.d.ts +1 -1
  281. package/dist/_types/utils/exportWallet.d.ts.map +1 -1
  282. package/dist/_types/utils/hpke.d.ts +38 -0
  283. package/dist/_types/utils/hpke.d.ts.map +1 -0
  284. package/dist/_types/utils/platform.d.ts +2 -0
  285. package/dist/_types/utils/platform.d.ts.map +1 -0
  286. package/dist/_types/utils/resolveOrganizationId.d.ts +16 -0
  287. package/dist/_types/utils/resolveOrganizationId.d.ts.map +1 -0
  288. package/dist/_types/utils/utils.d.ts.map +1 -1
  289. package/dist/_types/web/createZeroDevWallet.d.ts +18 -0
  290. package/dist/_types/web/createZeroDevWallet.d.ts.map +1 -0
  291. package/dist/tsconfig.build.tsbuildinfo +1 -1
  292. package/package.json +100 -11
  293. package/src/actions/auth/authenticateWithEmail.ts +1 -9
  294. package/src/actions/auth/authenticateWithOAuth.ts +12 -7
  295. package/src/actions/auth/getAuthProxyConfigId.ts +20 -0
  296. package/src/actions/auth/getAuthenticators.ts +89 -0
  297. package/src/actions/auth/getOAuthLoginUrl.ts +48 -0
  298. package/src/actions/auth/getParentOrgId.ts +25 -0
  299. package/src/actions/auth/getWhoami.ts +33 -6
  300. package/src/actions/auth/index.ts +21 -5
  301. package/src/actions/auth/loginWithStamp.ts +11 -12
  302. package/src/actions/auth/registerWithOTP.ts +11 -5
  303. package/src/actions/auth/registerWithPasskey.ts +1 -10
  304. package/src/actions/index.ts +26 -7
  305. package/src/actions/wallet/getUserWallet.ts +5 -5
  306. package/src/actions/wallet/index.ts +22 -4
  307. package/src/actions/wallet/sign7702Authorization.ts +48 -0
  308. package/src/actions/wallet/signMessage.ts +47 -0
  309. package/src/actions/wallet/signTransaction.ts +19 -38
  310. package/src/actions/wallet/signTypedDataV4.ts +52 -0
  311. package/src/actions/wallet/signUserOperation.ts +56 -0
  312. package/src/actions/wallet/signingUtils.ts +110 -0
  313. package/src/adapters/viem.ts +75 -43
  314. package/src/client/authProxy.ts +14 -8
  315. package/src/client/createClient.ts +6 -6
  316. package/src/client/decorators/client.ts +78 -19
  317. package/src/client/index.ts +4 -1
  318. package/src/client/transports/createTransport.ts +8 -5
  319. package/src/client/transports/rest.ts +57 -34
  320. package/src/client/types.ts +9 -9
  321. package/src/constants.ts +12 -4
  322. package/src/core/{createZeroDevWallet.ts → createZeroDevWalletCore.ts} +147 -122
  323. package/src/index.native.ts +102 -0
  324. package/src/index.ts +49 -16
  325. package/src/native/createZeroDevWallet.ts +26 -0
  326. package/src/native/stampers/passkey.ts +39 -0
  327. package/src/native/stampers/secureStore.ts +139 -0
  328. package/src/native/storage/asyncStorage.ts +18 -0
  329. package/src/stampers/iframeStamper.ts +3 -0
  330. package/src/stampers/indexedDbStamper.ts +27 -4
  331. package/src/stampers/noopPasskeyStamper.ts +21 -0
  332. package/src/stampers/types.ts +39 -5
  333. package/src/stampers/webauthnStamper.ts +27 -6
  334. package/src/stubs/native-on-web.ts +29 -0
  335. package/src/types/session.ts +2 -3
  336. package/src/utils/buildClientSignature.ts +3 -3
  337. package/src/utils/encryptOtpAttempt.ts +142 -0
  338. package/src/utils/exportPrivateKey.ts +2 -2
  339. package/src/utils/exportWallet.ts +66 -75
  340. package/src/utils/hpke.ts +219 -0
  341. package/src/utils/platform.ts +21 -0
  342. package/src/utils/resolveOrganizationId.ts +28 -0
  343. package/src/utils/utils.ts +5 -6
  344. package/src/web/createZeroDevWallet.ts +45 -0
  345. package/dist/_cjs/actions/auth/getUserEmail.js +0 -16
  346. package/dist/_cjs/actions/auth/getUserEmail.js.map +0 -1
  347. package/dist/_cjs/actions/wallet/signRawPayload.js +0 -27
  348. package/dist/_cjs/actions/wallet/signRawPayload.js.map +0 -1
  349. package/dist/_cjs/core/createZeroDevWallet.js.map +0 -1
  350. package/dist/_cjs/stampers/index.js +0 -10
  351. package/dist/_cjs/stampers/index.js.map +0 -1
  352. package/dist/_esm/actions/auth/getUserEmail.js +0 -29
  353. package/dist/_esm/actions/auth/getUserEmail.js.map +0 -1
  354. package/dist/_esm/actions/wallet/signRawPayload.js +0 -42
  355. package/dist/_esm/actions/wallet/signRawPayload.js.map +0 -1
  356. package/dist/_esm/core/createZeroDevWallet.js.map +0 -1
  357. package/dist/_esm/stampers/index.js +0 -4
  358. package/dist/_esm/stampers/index.js.map +0 -1
  359. package/dist/_types/actions/auth/getUserEmail.d.ts +0 -29
  360. package/dist/_types/actions/auth/getUserEmail.d.ts.map +0 -1
  361. package/dist/_types/actions/wallet/signRawPayload.d.ts +0 -39
  362. package/dist/_types/actions/wallet/signRawPayload.d.ts.map +0 -1
  363. package/dist/_types/core/createZeroDevWallet.d.ts.map +0 -1
  364. package/dist/_types/stampers/index.d.ts +0 -5
  365. package/dist/_types/stampers/index.d.ts.map +0 -1
  366. package/src/actions/auth/getUserEmail.ts +0 -46
  367. package/src/actions/wallet/signRawPayload.ts +0 -75
  368. package/src/stampers/index.ts +0 -8
@@ -1,31 +1,40 @@
1
- import { getWebAuthnAttestation } from '@turnkey/http';
2
1
  import { toViemAccount } from '../adapters/viem.js';
3
2
  import { createAuthProxyClient, createClient, zeroDevWalletTransport, } from '../client/index.js';
4
- import { DEFAULT_AUTH_PROXY_CONFIG_ID, DEFAULT_ORGANIZATION_ID, DEFAULT_SESSION_EXPIRATION_IN_SECONDS, KMS_SERVER_URL, } from '../constants.js';
5
- import { createIndexedDbStamper } from '../stampers/indexedDbStamper.js';
6
- import { createWebauthnStamper } from '../stampers/webauthnStamper.js';
7
- import { createWebStorageAdapter } from '../storage/adapters.js';
3
+ import { DEFAULT_ORGANIZATION_ID, DEFAULT_SESSION_EXPIRATION_IN_SECONDS, KMS_SERVER_URL, } from '../constants.js';
4
+ import { createNoopPasskeyStamper } from '../stampers/noopPasskeyStamper.js';
8
5
  import { createStorageManager, } from '../storage/manager.js';
9
6
  import { SessionType } from '../types/session.js';
10
7
  import { buildClientSignature } from '../utils/buildClientSignature.js';
11
- import { base64UrlEncode, generateCompressedPublicKeyFromKeyPair, generateRandomBuffer, humanReadableDateTime, parseSession, } from '../utils/utils.js';
12
- export async function createZeroDevWallet(config) {
13
- const { projectId, sessionStorage, rpId = window.location.hostname, organizationId = DEFAULT_ORGANIZATION_ID, } = config;
14
- const sessionStorageManager = createStorageManager(sessionStorage || createWebStorageAdapter());
15
- const indexedDbStamper = await createIndexedDbStamper();
16
- const webauthnStamper = await createWebauthnStamper({ rpId });
8
+ import { encryptOtpAttempt } from '../utils/encryptOtpAttempt.js';
9
+ import { createOrganizationIdResolver } from '../utils/resolveOrganizationId.js';
10
+ import { humanReadableDateTime, parseSession } from '../utils/utils.js';
11
+ export async function createZeroDevWalletCore(config) {
12
+ const { projectId, sessionStorage, rpId, apiKeyStamper, organizationId } = config;
13
+ const passkeyStamper = config.passkeyStamper ?? createNoopPasskeyStamper();
14
+ const sessionStorageManager = createStorageManager(sessionStorage);
17
15
  const client = createClient({
18
- indexedDbStamper,
19
- webauthnStamper,
16
+ apiKeyStamper,
17
+ passkeyStamper,
20
18
  transport: zeroDevWalletTransport({
21
19
  baseUrl: config.proxyBaseUrl || `${KMS_SERVER_URL}/api/v1`,
20
+ ...(config.fetchOptions && { fetchOptions: config.fetchOptions }),
22
21
  }),
23
22
  });
23
+ let cachedAuthProxyConfigId;
24
+ // Resolve the Turnkey parent org that stamp-login is signed against: explicit
25
+ // override → backend fetch (/server-info/parent-org-id, cached) → hardcoded
26
+ // fallback if the endpoint is unavailable (older backends). This is why the
27
+ // org no longer needs to be hardcoded/overridden per environment.
28
+ const resolveOrganizationId = createOrganizationIdResolver({
29
+ organizationId,
30
+ fetchParentOrgId: async () => (await client.getParentOrgId()).parentOrgId,
31
+ fallback: DEFAULT_ORGANIZATION_ID,
32
+ });
24
33
  return {
25
34
  client,
26
35
  async getPublicKey() {
27
- await client.indexedDbStamper.resetKeyPair();
28
- const compressedPublicKey = await client.indexedDbStamper.getPublicKey();
36
+ await client.apiKeyStamper.resetKeyPair();
37
+ const compressedPublicKey = await client.apiKeyStamper.getPublicKey();
29
38
  return compressedPublicKey;
30
39
  },
31
40
  async getSession() {
@@ -57,25 +66,25 @@ export async function createZeroDevWallet(config) {
57
66
  if (!activeSession) {
58
67
  throw new Error('No active session');
59
68
  }
60
- if (activeSession.stamperType === 'indexedDb') {
61
- const newKeyPair = await crypto.subtle.generateKey({
62
- name: 'ECDSA',
63
- namedCurve: 'P-256',
64
- }, false, ['sign', 'verify']);
65
- const compressedPublicKeyHex = await generateCompressedPublicKeyFromKeyPair(newKeyPair);
69
+ if (activeSession.stamperType === 'apiKey') {
70
+ const compressedPublicKeyHex = await client.apiKeyStamper.prepareKeyRotation();
66
71
  const data = await client.loginWithStamp({
67
72
  targetPublicKey: compressedPublicKeyHex,
68
73
  projectId,
69
- organizationId: activeSession.organizationId,
70
- stampWith: 'indexedDb',
74
+ // Stamp-login is signed against the Turnkey parent org; the backend
75
+ // resolves the sub-org from the stamped credential. Signing the
76
+ // sub-org here makes the relayed payload's org mismatch the
77
+ // signature → Turnkey SIGNATURE_INVALID.
78
+ organizationId: await resolveOrganizationId(),
79
+ stampWith: 'apiKey',
71
80
  });
72
- await client.indexedDbStamper.resetKeyPair(newKeyPair);
81
+ await client.apiKeyStamper.commitKeyRotation();
73
82
  const parsedSession = parseSession(data.session);
74
83
  const session = {
75
84
  id: `session_indexedDb_${Date.now()}`,
76
85
  userId: parsedSession.userId,
77
86
  organizationId: parsedSession.organizationId,
78
- stamperType: 'indexedDb',
87
+ stamperType: 'apiKey',
79
88
  sessionType: SessionType.READ_WRITE,
80
89
  token: data.session,
81
90
  expiry: parsedSession.expiry,
@@ -91,26 +100,25 @@ export async function createZeroDevWallet(config) {
91
100
  async auth(params) {
92
101
  switch (params.type) {
93
102
  case 'oauth': {
94
- // Backend OAuth flow - the backend reads the OAuth session from a cookie
95
- // set during the OAuth popup flow via /oauth/google/login
103
+ const popSignature = await client.apiKeyStamper.sign(params.sessionId);
96
104
  const data = await client.authenticateWithOAuth({
97
105
  provider: params.provider,
98
106
  projectId,
107
+ sessionId: params.sessionId,
108
+ popSignature,
99
109
  });
100
110
  if (data.session) {
101
111
  // Parse the JWT to get session data
102
112
  const parsedSession = parseSession(data.session);
103
- const publicKey = await client.indexedDbStamper.getPublicKey();
104
113
  const session = {
105
114
  id: `session_oauth_${Date.now()}`,
106
115
  userId: parsedSession.userId,
107
116
  organizationId: parsedSession.organizationId,
108
- stamperType: 'indexedDb',
117
+ stamperType: 'apiKey',
109
118
  sessionType: parsedSession.sessionType || SessionType.READ_WRITE,
110
119
  token: data.session,
111
120
  expiry: parsedSession.expiry,
112
121
  createdAt: Date.now(),
113
- publicKey: publicKey || '',
114
122
  };
115
123
  await sessionStorageManager.storeSession(session, session.id);
116
124
  }
@@ -121,59 +129,35 @@ export async function createZeroDevWallet(config) {
121
129
  if (type === 'passkey' &&
122
130
  'mode' in params &&
123
131
  params.mode === 'register') {
124
- const { email } = params;
125
- await client.indexedDbStamper.resetKeyPair();
126
- const tempPublicKey = await client.indexedDbStamper.getPublicKey();
132
+ await client.apiKeyStamper.resetKeyPair();
133
+ const tempPublicKey = await client.apiKeyStamper.getPublicKey();
127
134
  if (!tempPublicKey) {
128
135
  throw new Error('Failed to get public key');
129
136
  }
130
- const challenge = generateRandomBuffer();
131
- const encodedChallenge = base64UrlEncode(challenge);
132
- const authenticatorUserId = generateRandomBuffer();
133
- const name = `ZeroDevWallet-${humanReadableDateTime()}-${email}`;
134
- const attestation = await getWebAuthnAttestation({
135
- publicKey: {
136
- rp: { id: rpId, name: '' },
137
- challenge,
138
- pubKeyCredParams: [
139
- {
140
- type: 'public-key',
141
- alg: -7,
142
- },
143
- {
144
- type: 'public-key',
145
- alg: -257,
146
- },
147
- ],
148
- user: {
149
- id: authenticatorUserId,
150
- name,
151
- displayName: name,
152
- },
153
- },
137
+ const name = `ZeroDevWallet-${humanReadableDateTime()}`;
138
+ const { attestation, encodedChallenge } = await passkeyStamper.register({
139
+ rp: { id: rpId, name: '' },
140
+ userName: name,
154
141
  });
155
142
  const data = await client.registerWithPasskey({
156
- email,
157
143
  attestation,
158
144
  challenge: encodedChallenge,
159
145
  projectId,
160
146
  encodedPublicKey: tempPublicKey,
161
147
  });
162
- const newKeyPair = await crypto.subtle.generateKey({
163
- name: 'ECDSA',
164
- namedCurve: 'P-256',
165
- }, false, ['sign', 'verify']);
166
- const compressedPublicKeyHex = await generateCompressedPublicKeyFromKeyPair(newKeyPair);
148
+ const compressedPublicKeyHex = await client.apiKeyStamper.prepareKeyRotation();
167
149
  const loginData = await client.loginWithStamp({
168
150
  projectId,
169
151
  targetPublicKey: compressedPublicKeyHex,
170
- organizationId: data.subOrganizationId,
152
+ // Sign against the parent org (see refreshSession note) — the
153
+ // backend derives the sub-org from the stamped credential.
154
+ organizationId: await resolveOrganizationId(),
171
155
  });
172
- await client.indexedDbStamper.resetKeyPair(newKeyPair);
156
+ await client.apiKeyStamper.commitKeyRotation();
173
157
  const parsedSession = parseSession(loginData.session);
174
158
  const session = {
175
159
  id: `session_indexedDb_${Date.now()}`,
176
- stamperType: 'indexedDb',
160
+ stamperType: 'apiKey',
177
161
  createdAt: Date.now(),
178
162
  sessionType: SessionType.READ_WRITE,
179
163
  userId: parsedSession.userId,
@@ -188,21 +172,24 @@ export async function createZeroDevWallet(config) {
188
172
  if (type === 'passkey' &&
189
173
  'mode' in params &&
190
174
  params.mode === 'login') {
191
- await client.indexedDbStamper.resetKeyPair();
192
- const generatedPublicKey = await client.indexedDbStamper.getPublicKey();
175
+ await client.apiKeyStamper.resetKeyPair();
176
+ const generatedPublicKey = await client.apiKeyStamper.getPublicKey();
193
177
  if (!generatedPublicKey) {
194
178
  throw new Error('Failed to get public key');
195
179
  }
196
180
  const loginData = await client.loginWithStamp({
197
181
  targetPublicKey: generatedPublicKey,
198
182
  projectId,
199
- organizationId,
200
- stampWith: 'webauthn',
183
+ // Sign against the parent org, not the user's sub-org (see the
184
+ // refreshSession note). The backend derives the sub-org from the
185
+ // stamped passkey credential.
186
+ organizationId: await resolveOrganizationId(),
187
+ stampWith: 'passkey',
201
188
  });
202
189
  const parsedSession = parseSession(loginData.session);
203
190
  const session = {
204
191
  id: `session_indexedDb_${Date.now()}`,
205
- stamperType: 'indexedDb',
192
+ stamperType: 'apiKey',
206
193
  createdAt: Date.now(),
207
194
  sessionType: SessionType.READ_WRITE,
208
195
  userId: parsedSession.userId,
@@ -216,40 +203,76 @@ export async function createZeroDevWallet(config) {
216
203
  }
217
204
  throw new Error('Passkey authentication requires passkey parameter');
218
205
  }
219
- case 'otp': {
220
- const { type, mode } = params;
221
- if (type === 'otp' && mode === 'sendOtp') {
222
- const { email, contact, emailCustomization } = params;
206
+ case 'otp':
207
+ case 'magicLink': {
208
+ // Normalize magicLink params into OTP params
209
+ let otpParams;
210
+ if (params.type === 'magicLink') {
211
+ if (params.mode === 'send') {
212
+ // Magic-link vs plain-OTP delivery and the link URL template are
213
+ // configured per-project on the backend (`wallet.otp_configs`);
214
+ // the client just initiates OTP and the backend decides.
215
+ otpParams = {
216
+ type: 'otp',
217
+ mode: 'sendOtp',
218
+ email: params.email,
219
+ contact: { type: 'email', contact: params.email },
220
+ };
221
+ }
222
+ else {
223
+ otpParams = {
224
+ type: 'otp',
225
+ mode: 'verifyOtp',
226
+ otpId: params.otpId,
227
+ otpCode: params.code,
228
+ otpEncryptionTargetBundle: params.otpEncryptionTargetBundle,
229
+ };
230
+ }
231
+ }
232
+ else {
233
+ otpParams = params;
234
+ }
235
+ if (otpParams.mode === 'sendOtp') {
236
+ const { email, contact } = otpParams;
223
237
  const data = await client.registerWithOTP({
224
238
  email,
225
239
  contact,
226
240
  projectId,
227
- ...(emailCustomization && { emailCustomization }),
228
241
  });
229
242
  return data;
230
243
  }
231
- if (type === 'otp' && mode === 'verifyOtp') {
232
- const { otpId, otpCode } = params;
244
+ if (otpParams.mode === 'verifyOtp') {
245
+ const { otpId, otpCode, otpEncryptionTargetBundle } = otpParams;
233
246
  // Step 1: Generate new key pair
234
- await client.indexedDbStamper.resetKeyPair();
235
- const targetPublicKey = await client.indexedDbStamper.getPublicKey();
247
+ await client.apiKeyStamper.resetKeyPair();
248
+ const targetPublicKey = await client.apiKeyStamper.getPublicKey();
236
249
  if (!targetPublicKey) {
237
250
  throw new Error('Failed to get public key');
238
251
  }
239
- // Step 2: Verify OTP via Auth Proxy
252
+ // Step 2a: HPKE-seal the OTP attempt to the enclave's per-session
253
+ // target key. The auth proxy never sees the plaintext OTP code.
254
+ const encryptedOtpBundle = await encryptOtpAttempt({
255
+ otpCode,
256
+ publicKey: targetPublicKey,
257
+ encryptionTargetBundle: otpEncryptionTargetBundle,
258
+ });
259
+ // Step 2b: Verify OTP via Auth Proxy
260
+ if (!cachedAuthProxyConfigId) {
261
+ const { authProxyConfigId } = await client.getAuthProxyConfigId();
262
+ cachedAuthProxyConfigId = authProxyConfigId;
263
+ }
240
264
  const authProxyClient = createAuthProxyClient({
241
- authProxyConfigId: DEFAULT_AUTH_PROXY_CONFIG_ID,
265
+ authProxyConfigId: cachedAuthProxyConfigId,
242
266
  });
243
267
  const { verificationToken } = await authProxyClient.verifyOtp({
244
268
  otpId,
245
- otpCode,
246
- public_key: targetPublicKey,
269
+ encryptedOtpBundle,
247
270
  });
248
271
  // Step 3: Build client signature
249
272
  const clientSignature = await buildClientSignature({
250
273
  verificationToken,
251
274
  publicKey: targetPublicKey,
252
- stamper: client.indexedDbStamper,
275
+ stamper: client.apiKeyStamper,
253
276
  });
254
277
  // Step 4: Login via backend (not Auth Proxy!)
255
278
  const data = await client.loginWithOTP({
@@ -264,12 +287,11 @@ export async function createZeroDevWallet(config) {
264
287
  id: `session_otp_${Date.now()}`,
265
288
  userId: parsedSession.userId,
266
289
  organizationId: parsedSession.organizationId,
267
- stamperType: 'indexedDb',
290
+ stamperType: 'apiKey',
268
291
  sessionType: parsedSession.sessionType || SessionType.READ_WRITE,
269
292
  token: data.session,
270
293
  expiry: parsedSession.expiry,
271
294
  createdAt: Date.now(),
272
- publicKey: targetPublicKey,
273
295
  };
274
296
  await sessionStorageManager.storeSession(session, session.id);
275
297
  }
@@ -283,7 +305,7 @@ export async function createZeroDevWallet(config) {
283
305
  },
284
306
  async logout() {
285
307
  await sessionStorageManager.clearAllSessions();
286
- await client.indexedDbStamper.resetKeyPair();
308
+ await client.apiKeyStamper.resetKeyPair();
287
309
  return true;
288
310
  },
289
311
  async toAccount() {
@@ -295,9 +317,12 @@ export async function createZeroDevWallet(config) {
295
317
  client,
296
318
  organizationId: session.organizationId,
297
319
  projectId,
298
- token: session.token ?? '',
320
+ getToken: async () => {
321
+ const activeSession = await sessionStorageManager.getActiveSession();
322
+ return activeSession?.token ?? '';
323
+ },
299
324
  });
300
325
  },
301
326
  };
302
327
  }
303
- //# sourceMappingURL=createZeroDevWallet.js.map
328
+ //# sourceMappingURL=createZeroDevWalletCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createZeroDevWalletCore.js","sourceRoot":"","sources":["../../../src/core/createZeroDevWalletCore.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
+ import { isReactNative } from './utils/platform.js';
2
+ if (isReactNative()) {
3
+ // biome-ignore lint/suspicious/noConsole: Warning users if they try to use the web entry on React Native.
4
+ console.warn('@zerodev/wallet-core: the web entry was loaded in a React Native runtime. Check that your metro.config.js has `unstable_enablePackageExports: true` and `"react-native"` in `unstable_conditionNames`.');
5
+ }
1
6
  // Actions
2
7
  export {
3
8
  // Auth actions
4
- authenticateWithEmail, authenticateWithOAuth,
9
+ authenticateWithEmail, authenticateWithOAuth, getAuthenticators,
5
10
  // Wallet actions
6
- getUserWallet, getWhoami, loginWithOTP, registerWithOTP, signRawPayload, signTransaction, } from './actions/index.js';
11
+ getUserWallet, getWhoami, loginWithOTP, registerWithOTP, sign7702Authorization, signMessage, signTransaction, signTypedDataV4, signUserOperation, } from './actions/index.js';
7
12
  // Adapters
8
13
  export { toViemAccount } from './adapters/viem.js';
9
14
  // Client decorators
@@ -12,12 +17,15 @@ export { zeroDevWalletActions } from './client/decorators/client.js';
12
17
  export { createBaseClient, createClient, zeroDevWalletTransport, } from './client/index.js';
13
18
  // Constants
14
19
  export { KMS_SERVER_URL } from './constants.js';
15
- // Core
16
- export { createZeroDevWallet } from './core/createZeroDevWallet.js';
17
20
  // Stampers
18
- export { createIframeStamper, createIndexedDbStamper, createWebauthnStamper, } from './stampers/index.js';
21
+ export { createIframeStamper } from './stampers/iframeStamper.js';
19
22
  export { exportPrivateKey } from './utils/exportPrivateKey.js';
20
23
  export { exportWallet } from './utils/exportWallet.js';
21
24
  // Utils
22
25
  export { normalizeTimestamp } from './utils/utils.js';
26
+ // Core — bare specifier resolves web defaults (IndexedDB, WebAuthn, session
27
+ // storage, hostname-derived rpId) before forwarding to the shared factory.
28
+ // RN consumers go through `@zerodev/wallet-core/react-native`, which exposes
29
+ // the strict `ZeroDevWalletConfig` (= core's required-fields shape) directly.
30
+ export { createZeroDevWallet, } from './web/createZeroDevWallet.js';
23
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAuBA,UAAU;AACV,OAAO;AACL,eAAe;AACf,qBAAqB,EACrB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAE3B,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,oBAAoB;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE,SAAS;AACT,OAAO,EACL,gBAAgB,EAChB,YAAY,EAEZ,sBAAsB,GACvB,MAAM,mBAAmB,CAAA;AAC1B,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAM/C,OAAO;AACP,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,WAAW;AACX,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAW5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,IAAI,aAAa,EAAE,EAAE,CAAC;IACpB,0GAA0G;IAC1G,OAAO,CAAC,IAAI,CACV,wMAAwM,CACzM,CAAA;AACH,CAAC;AAoCD,UAAU;AACV,OAAO;AACL,eAAe;AACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB;AACjB,iBAAiB;AACjB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAA;AAE3B,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,oBAAoB;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAOpE,SAAS;AACT,OAAO,EACL,gBAAgB,EAChB,YAAY,EAEZ,sBAAsB,GACvB,MAAM,mBAAmB,CAAA;AAC1B,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAK/C,WAAW;AACX,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAcjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,OAAO,EACL,mBAAmB,GAEpB,MAAM,8BAA8B,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { isReactNative } from './utils/platform.js';
2
+ if (!isReactNative()) {
3
+ // biome-ignore lint/suspicious/noConsole: Warning users if they try to use the web entry on React Native.
4
+ console.warn('@zerodev/wallet-core/react-native: the React Native entry was loaded outside a React Native runtime. If this is a non-RN context, import `@zerodev/wallet-core` (the bare specifier) instead.');
5
+ }
6
+ export { authenticateWithEmail, authenticateWithOAuth, getAuthenticators, getUserWallet, getWhoami, loginWithOTP, registerWithOTP, sign7702Authorization, signMessage, signTransaction, signTypedDataV4, signUserOperation, } from './actions/index.js';
7
+ export { toViemAccount } from './adapters/viem.js';
8
+ export { zeroDevWalletActions } from './client/decorators/client.js';
9
+ export { createBaseClient, createClient, zeroDevWalletTransport, } from './client/index.js';
10
+ export { KMS_SERVER_URL } from './constants.js';
11
+ // RN entry re-exports through a thin wrapper that auto-injects the
12
+ // `Origin: https://${rpId}` header on Turnkey requests. `ZeroDevWalletConfig`
13
+ // matches the strict `ZeroDevWalletConfigCore` shape, so RN consumers still
14
+ // get compile-time enforcement of the four required adapter fields.
15
+ export { createZeroDevWallet, } from './native/createZeroDevWallet.js';
16
+ export { exportPrivateKey } from './utils/exportPrivateKey.js';
17
+ export { exportWallet } from './utils/exportWallet.js';
18
+ export { normalizeTimestamp } from './utils/utils.js';
19
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.native.js","sourceRoot":"","sources":["../../src/index.native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;IACrB,0GAA0G;IAC1G,OAAO,CAAC,IAAI,CACV,+LAA+L,CAChM,CAAA;AACH,CAAC;AAsCD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAOpE,OAAO,EACL,gBAAgB,EAChB,YAAY,EAEZ,sBAAsB,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAK/C,mEAAmE;AACnE,8EAA8E;AAC9E,4EAA4E;AAC5E,oEAAoE;AACpE,OAAO,EACL,mBAAmB,GAEpB,MAAM,iCAAiC,CAAA;AAYxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { createZeroDevWalletCore, } from '../core/createZeroDevWalletCore.js';
2
+ export async function createZeroDevWallet(config) {
3
+ return createZeroDevWalletCore({
4
+ ...config,
5
+ fetchOptions: config.fetchOptions ?? {
6
+ headers: { Origin: `https://${config.rpId}` },
7
+ },
8
+ });
9
+ }
10
+ //# sourceMappingURL=createZeroDevWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createZeroDevWallet.js","sourceRoot":"","sources":["../../../src/native/createZeroDevWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAGxB,MAAM,oCAAoC,CAAA;AAY3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAA2B;IAE3B,OAAO,uBAAuB,CAAC;QAC7B,GAAG,MAAM;QACT,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI;YACnC,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,MAAM,CAAC,IAAI,EAAE,EAAE;SAC9C;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { createPasskey, PasskeyStamper as TurnkeyPasskeyStamper, } from '@turnkey/react-native-passkey-stamper';
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ export async function createReactNativePasskeyStamper({ rpId, }) {
4
+ const inner = new TurnkeyPasskeyStamper({ rpId });
5
+ return {
6
+ async stamp(payload) {
7
+ return await inner.stamp(payload);
8
+ },
9
+ async clear() { },
10
+ async register({ rp, userName }) {
11
+ const { attestation, challenge: encodedChallenge } = await createPasskey({
12
+ rp: {
13
+ id: rp.id,
14
+ name: rp.name ?? 'Turnkey',
15
+ },
16
+ user: {
17
+ id: uuidv4(),
18
+ name: userName,
19
+ displayName: userName,
20
+ },
21
+ authenticatorName: userName ?? 'End-User Passkey',
22
+ });
23
+ return { attestation, encodedChallenge };
24
+ },
25
+ };
26
+ }
27
+ //# sourceMappingURL=passkey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey.js","sourceRoot":"","sources":["../../../../src/native/stampers/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,IAAI,qBAAqB,GACxC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAMnC,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,EACpD,IAAI,GAGL;IACC,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAEjD,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,OAAe;YACzB,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC;QACD,KAAK,CAAC,KAAK,KAAI,CAAC;QAChB,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAA8B;YACzD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,aAAa,CAAC;gBACvE,EAAE,EAAE;oBACF,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,SAAS;iBAC3B;gBACD,IAAI,EAAE;oBACJ,EAAE,EAAE,MAAM,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,QAAQ;iBACtB;gBACD,iBAAiB,EAAE,QAAQ,IAAI,kBAAkB;aAClD,CAAC,CAAA;YACF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAA;QAC1C,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,120 @@
1
+ import { ApiKeyStamper, SignatureFormat } from '@turnkey/api-key-stamper';
2
+ import { generateP256KeyPair } from '@turnkey/crypto';
3
+ import * as SecureStore from 'expo-secure-store';
4
+ const PUBLIC_KEY = 'zerodev.publicKey';
5
+ const PRIVATE_KEY = 'zerodev.privateKey';
6
+ class SecureStoreStamperInner {
7
+ constructor() {
8
+ Object.defineProperty(this, "publicKeyHex", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: null
13
+ });
14
+ }
15
+ async init() {
16
+ const publicKey = await SecureStore.getItemAsync(PUBLIC_KEY);
17
+ const privateKey = await SecureStore.getItemAsync(PRIVATE_KEY);
18
+ if (publicKey && privateKey) {
19
+ this.publicKeyHex = publicKey;
20
+ }
21
+ else {
22
+ await this.resetKeyPair();
23
+ }
24
+ }
25
+ async getPublicKey() {
26
+ return this.publicKeyHex;
27
+ }
28
+ async resetKeyPair(externalKeyPair) {
29
+ await this.clear();
30
+ const pair = externalKeyPair ?? generateP256KeyPair();
31
+ await SecureStore.setItemAsync(PUBLIC_KEY, pair.publicKey);
32
+ await SecureStore.setItemAsync(PRIVATE_KEY, pair.privateKey);
33
+ this.publicKeyHex = pair.publicKey;
34
+ }
35
+ async getTurnkeyApiKeyStamper() {
36
+ if (!this.publicKeyHex) {
37
+ throw new Error('Key not initialized. Call init() or resetKeyPair() first.');
38
+ }
39
+ const privateKey = await SecureStore.getItemAsync(PRIVATE_KEY);
40
+ if (!privateKey) {
41
+ throw new Error('No private key found in secure store.');
42
+ }
43
+ return new ApiKeyStamper({
44
+ apiPublicKey: this.publicKeyHex,
45
+ apiPrivateKey: privateKey,
46
+ });
47
+ }
48
+ async stamp(payload) {
49
+ const stamper = await this.getTurnkeyApiKeyStamper();
50
+ const { stampHeaderName, stampHeaderValue } = await stamper.stamp(payload);
51
+ return { stampHeaderName, stampHeaderValue };
52
+ }
53
+ async sign(payload) {
54
+ const stamper = await this.getTurnkeyApiKeyStamper();
55
+ return stamper.sign(payload, SignatureFormat.Der);
56
+ }
57
+ async clear() {
58
+ await SecureStore.deleteItemAsync(PUBLIC_KEY);
59
+ await SecureStore.deleteItemAsync(PRIVATE_KEY);
60
+ this.publicKeyHex = null;
61
+ }
62
+ }
63
+ async function warmApiKeyStamperForMetroDev(inner) {
64
+ // `__DEV__` is a global set by React Native's Metro; read it via globalThis
65
+ // so this file needs no ambient `.d.ts` (which would conflict with RN's own
66
+ // typings when both happen to be in scope, e.g. in the editor).
67
+ if (!globalThis.__DEV__)
68
+ return;
69
+ // In Expo dev, Turnkey's API key stamper loads its React Native signer with a
70
+ // dynamic import the first time `stamp()` runs. OTP verification is usually
71
+ // the first code path that stamps a payload, and if the app was backgrounded
72
+ // while the user copied the code, Metro can serve that lazy module after
73
+ // foregrounding and trigger a full JS reload. Warming the stamper during dev
74
+ // startup makes Metro load the signer while the app is foregrounded; production
75
+ // builds do not use Metro and skip this block via `__DEV__`.
76
+ try {
77
+ await inner.stamp('{"purpose":"metro-dev-warmup"}');
78
+ }
79
+ catch (error) {
80
+ // biome-ignore lint/suspicious/noConsole: This only runs in dev mode
81
+ console.warn('Failed to warm API key stamper in dev:', error);
82
+ }
83
+ }
84
+ export async function createSecureStoreStamper() {
85
+ const inner = new SecureStoreStamperInner();
86
+ await inner.init();
87
+ await warmApiKeyStamperForMetroDev(inner);
88
+ let pendingKeyPair = null;
89
+ return {
90
+ async getPublicKey() {
91
+ return inner.getPublicKey();
92
+ },
93
+ async stamp(payload) {
94
+ return inner.stamp(payload);
95
+ },
96
+ async sign(payload) {
97
+ return inner.sign(payload);
98
+ },
99
+ async clear() {
100
+ await inner.clear();
101
+ },
102
+ async resetKeyPair() {
103
+ pendingKeyPair = null;
104
+ await inner.resetKeyPair();
105
+ },
106
+ async prepareKeyRotation() {
107
+ const keyPair = generateP256KeyPair();
108
+ pendingKeyPair = keyPair;
109
+ return keyPair.publicKey;
110
+ },
111
+ async commitKeyRotation() {
112
+ if (!pendingKeyPair) {
113
+ throw new Error('No pending key rotation to commit');
114
+ }
115
+ await inner.resetKeyPair(pendingKeyPair);
116
+ pendingKeyPair = null;
117
+ },
118
+ };
119
+ }
120
+ //# sourceMappingURL=secureStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secureStore.js","sourceRoot":"","sources":["../../../../src/native/stampers/secureStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as AsyncStorageNS from '@react-native-async-storage/async-storage';
2
+ // CJS package whose `.d.ts` declares `export default AsyncStorage`. Our tsconfig
3
+ // keeps `esModuleInterop: false` (and `verbatimModuleSyntax: true`), so a plain
4
+ // `import AsyncStorage from '...'` types as the module namespace instead of
5
+ // the default. Unwrap explicitly. At runtime Metro returns the default object
6
+ // either way; this only affects the static type.
7
+ const AsyncStorage = AsyncStorageNS.default;
8
+ export const asyncStorageAdapter = {
9
+ getItem: (key) => AsyncStorage.getItem(key),
10
+ setItem: (key, value) => AsyncStorage.setItem(key, value),
11
+ removeItem: (key) => AsyncStorage.removeItem(key),
12
+ };
13
+ //# sourceMappingURL=asyncStorage.js.map