thirdweb 5.57.2 → 5.58.0-nightly-3229e1f03c3cbb62ddc8dccf22ad8a8feb0a95f0-20240920000335

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 (206) hide show
  1. package/dist/cjs/exports/extensions/erc1155.js +3 -2
  2. package/dist/cjs/exports/extensions/erc1155.js.map +1 -1
  3. package/dist/cjs/extensions/erc1155/drops/read/getClaimConditions.js +1 -1
  4. package/dist/cjs/extensions/erc1155/drops/read/getClaimConditions.js.map +1 -1
  5. package/dist/cjs/extensions/erc20/drops/read/getClaimConditions.js +1 -1
  6. package/dist/cjs/extensions/erc20/drops/read/getClaimConditions.js.map +1 -1
  7. package/dist/cjs/extensions/erc721/drops/read/getClaimConditions.js +1 -1
  8. package/dist/cjs/extensions/erc721/drops/read/getClaimConditions.js.map +1 -1
  9. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js +3 -1
  10. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  11. package/dist/cjs/react/core/utils/walletIcon.js +5 -1
  12. package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
  13. package/dist/cjs/react/native/ui/connect/InAppWalletUI.js +1 -0
  14. package/dist/cjs/react/native/ui/connect/InAppWalletUI.js.map +1 -1
  15. package/dist/cjs/react/native/ui/icons/svgs.js +12 -1
  16. package/dist/cjs/react/native/ui/icons/svgs.js.map +1 -1
  17. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +3 -2
  18. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  19. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +1 -1
  20. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  21. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +3 -2
  22. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  23. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -0
  24. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  25. package/dist/cjs/react/web/wallets/shared/oauthSignIn.js +2 -1
  26. package/dist/cjs/react/web/wallets/shared/oauthSignIn.js.map +1 -1
  27. package/dist/cjs/utils/fetch.js +10 -4
  28. package/dist/cjs/utils/fetch.js.map +1 -1
  29. package/dist/cjs/version.js +1 -1
  30. package/dist/cjs/version.js.map +1 -1
  31. package/dist/cjs/wallets/in-app/core/authentication/types.js +2 -0
  32. package/dist/cjs/wallets/in-app/core/authentication/types.js.map +1 -1
  33. package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
  34. package/dist/cjs/wallets/in-app/native/native-connector.js +1 -0
  35. package/dist/cjs/wallets/in-app/native/native-connector.js.map +1 -1
  36. package/dist/cjs/wallets/in-app/web/in-app.js +1 -0
  37. package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
  38. package/dist/cjs/wallets/in-app/web/lib/actions/generate-wallet.enclave.js +26 -0
  39. package/dist/cjs/wallets/in-app/web/lib/actions/generate-wallet.enclave.js.map +1 -0
  40. package/dist/cjs/wallets/in-app/web/lib/actions/get-enclave-user-status.js +31 -0
  41. package/dist/cjs/wallets/in-app/web/lib/actions/get-enclave-user-status.js.map +1 -0
  42. package/dist/cjs/wallets/in-app/web/lib/actions/sign-message.enclave.js +30 -0
  43. package/dist/cjs/wallets/in-app/web/lib/actions/sign-message.enclave.js.map +1 -0
  44. package/dist/cjs/wallets/in-app/web/lib/actions/sign-transaction.enclave.js +28 -0
  45. package/dist/cjs/wallets/in-app/web/lib/actions/sign-transaction.enclave.js.map +1 -0
  46. package/dist/cjs/wallets/in-app/web/lib/actions/sign-typed-data.enclave.js +27 -0
  47. package/dist/cjs/wallets/in-app/web/lib/actions/sign-typed-data.enclave.js.map +1 -0
  48. package/dist/cjs/wallets/in-app/web/lib/auth/iframe-auth.js +42 -5
  49. package/dist/cjs/wallets/in-app/web/lib/auth/iframe-auth.js.map +1 -1
  50. package/dist/cjs/wallets/in-app/web/lib/enclave-wallet.js +195 -0
  51. package/dist/cjs/wallets/in-app/web/lib/enclave-wallet.js.map +1 -0
  52. package/dist/cjs/wallets/in-app/web/lib/get-auth-token.js +14 -0
  53. package/dist/cjs/wallets/in-app/web/lib/get-auth-token.js.map +1 -0
  54. package/dist/cjs/wallets/in-app/web/lib/{in-app-account.js → iframe-wallet.js} +8 -5
  55. package/dist/cjs/wallets/in-app/web/lib/iframe-wallet.js.map +1 -0
  56. package/dist/cjs/wallets/in-app/web/lib/web-connector.js +98 -37
  57. package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
  58. package/dist/cjs/wallets/in-app/web/lib/web-wallet.js +3 -0
  59. package/dist/cjs/wallets/in-app/web/lib/web-wallet.js.map +1 -0
  60. package/dist/cjs/wallets/types.js +1 -0
  61. package/dist/cjs/wallets/types.js.map +1 -1
  62. package/dist/esm/exports/extensions/erc1155.js +1 -1
  63. package/dist/esm/exports/extensions/erc1155.js.map +1 -1
  64. package/dist/esm/extensions/erc1155/drops/read/getClaimConditions.js +1 -1
  65. package/dist/esm/extensions/erc1155/drops/read/getClaimConditions.js.map +1 -1
  66. package/dist/esm/extensions/erc20/drops/read/getClaimConditions.js +1 -1
  67. package/dist/esm/extensions/erc20/drops/read/getClaimConditions.js.map +1 -1
  68. package/dist/esm/extensions/erc721/drops/read/getClaimConditions.js +1 -1
  69. package/dist/esm/extensions/erc721/drops/read/getClaimConditions.js.map +1 -1
  70. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js +3 -1
  71. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  72. package/dist/esm/react/core/utils/walletIcon.js +4 -0
  73. package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
  74. package/dist/esm/react/native/ui/connect/InAppWalletUI.js +2 -1
  75. package/dist/esm/react/native/ui/connect/InAppWalletUI.js.map +1 -1
  76. package/dist/esm/react/native/ui/icons/svgs.js +11 -0
  77. package/dist/esm/react/native/ui/icons/svgs.js.map +1 -1
  78. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +3 -2
  79. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  80. package/dist/esm/react/web/ui/ConnectWallet/Details.js +1 -1
  81. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  82. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +3 -2
  83. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  84. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -0
  85. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  86. package/dist/esm/react/web/wallets/shared/oauthSignIn.js +2 -1
  87. package/dist/esm/react/web/wallets/shared/oauthSignIn.js.map +1 -1
  88. package/dist/esm/utils/fetch.js +10 -4
  89. package/dist/esm/utils/fetch.js.map +1 -1
  90. package/dist/esm/version.js +1 -1
  91. package/dist/esm/version.js.map +1 -1
  92. package/dist/esm/wallets/in-app/core/authentication/types.js +2 -0
  93. package/dist/esm/wallets/in-app/core/authentication/types.js.map +1 -1
  94. package/dist/esm/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
  95. package/dist/esm/wallets/in-app/native/native-connector.js +1 -0
  96. package/dist/esm/wallets/in-app/native/native-connector.js.map +1 -1
  97. package/dist/esm/wallets/in-app/web/in-app.js +1 -0
  98. package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
  99. package/dist/esm/wallets/in-app/web/lib/actions/generate-wallet.enclave.js +23 -0
  100. package/dist/esm/wallets/in-app/web/lib/actions/generate-wallet.enclave.js.map +1 -0
  101. package/dist/esm/wallets/in-app/web/lib/actions/get-enclave-user-status.js +28 -0
  102. package/dist/esm/wallets/in-app/web/lib/actions/get-enclave-user-status.js.map +1 -0
  103. package/dist/esm/wallets/in-app/web/lib/actions/sign-message.enclave.js +27 -0
  104. package/dist/esm/wallets/in-app/web/lib/actions/sign-message.enclave.js.map +1 -0
  105. package/dist/esm/wallets/in-app/web/lib/actions/sign-transaction.enclave.js +25 -0
  106. package/dist/esm/wallets/in-app/web/lib/actions/sign-transaction.enclave.js.map +1 -0
  107. package/dist/esm/wallets/in-app/web/lib/actions/sign-typed-data.enclave.js +24 -0
  108. package/dist/esm/wallets/in-app/web/lib/actions/sign-typed-data.enclave.js.map +1 -0
  109. package/dist/esm/wallets/in-app/web/lib/auth/iframe-auth.js +42 -5
  110. package/dist/esm/wallets/in-app/web/lib/auth/iframe-auth.js.map +1 -1
  111. package/dist/esm/wallets/in-app/web/lib/enclave-wallet.js +191 -0
  112. package/dist/esm/wallets/in-app/web/lib/enclave-wallet.js.map +1 -0
  113. package/dist/esm/wallets/in-app/web/lib/get-auth-token.js +11 -0
  114. package/dist/esm/wallets/in-app/web/lib/get-auth-token.js.map +1 -0
  115. package/dist/esm/wallets/in-app/web/lib/{in-app-account.js → iframe-wallet.js} +8 -5
  116. package/dist/esm/wallets/in-app/web/lib/iframe-wallet.js.map +1 -0
  117. package/dist/esm/wallets/in-app/web/lib/web-connector.js +98 -37
  118. package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
  119. package/dist/esm/wallets/in-app/web/lib/web-wallet.js +2 -0
  120. package/dist/esm/wallets/in-app/web/lib/web-wallet.js.map +1 -0
  121. package/dist/esm/wallets/types.js +1 -0
  122. package/dist/esm/wallets/types.js.map +1 -1
  123. package/dist/types/exports/extensions/erc1155.d.ts +1 -1
  124. package/dist/types/exports/extensions/erc1155.d.ts.map +1 -1
  125. package/dist/types/react/core/hooks/connection/types.d.ts +5 -0
  126. package/dist/types/react/core/hooks/connection/types.d.ts.map +1 -1
  127. package/dist/types/react/core/hooks/wallets/useAutoConnect.d.ts.map +1 -1
  128. package/dist/types/react/core/utils/walletIcon.d.ts +3 -1
  129. package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
  130. package/dist/types/react/native/ui/connect/InAppWalletUI.d.ts.map +1 -1
  131. package/dist/types/react/native/ui/icons/svgs.d.ts +1 -0
  132. package/dist/types/react/native/ui/icons/svgs.d.ts.map +1 -1
  133. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
  134. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts.map +1 -1
  135. package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
  136. package/dist/types/react/web/wallets/shared/oauthSignIn.d.ts.map +1 -1
  137. package/dist/types/utils/fetch.d.ts.map +1 -1
  138. package/dist/types/version.d.ts +1 -1
  139. package/dist/types/version.d.ts.map +1 -1
  140. package/dist/types/wallets/in-app/core/authentication/types.d.ts +5 -2
  141. package/dist/types/wallets/in-app/core/authentication/types.d.ts.map +1 -1
  142. package/dist/types/wallets/in-app/core/wallet/in-app-core.d.ts.map +1 -1
  143. package/dist/types/wallets/in-app/native/native-connector.d.ts.map +1 -1
  144. package/dist/types/wallets/in-app/web/in-app.d.ts +1 -0
  145. package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
  146. package/dist/types/wallets/in-app/web/lib/actions/generate-wallet.enclave.d.ts +15 -0
  147. package/dist/types/wallets/in-app/web/lib/actions/generate-wallet.enclave.d.ts.map +1 -0
  148. package/dist/types/wallets/in-app/web/lib/actions/get-enclave-user-status.d.ts +14 -0
  149. package/dist/types/wallets/in-app/web/lib/actions/get-enclave-user-status.d.ts.map +1 -0
  150. package/dist/types/wallets/in-app/web/lib/actions/sign-message.enclave.d.ts +17 -0
  151. package/dist/types/wallets/in-app/web/lib/actions/sign-message.enclave.d.ts.map +1 -0
  152. package/dist/types/wallets/in-app/web/lib/actions/sign-transaction.enclave.d.ts +9 -0
  153. package/dist/types/wallets/in-app/web/lib/actions/sign-transaction.enclave.d.ts.map +1 -0
  154. package/dist/types/wallets/in-app/web/lib/actions/sign-typed-data.enclave.d.ts +16 -0
  155. package/dist/types/wallets/in-app/web/lib/actions/sign-typed-data.enclave.d.ts.map +1 -0
  156. package/dist/types/wallets/in-app/web/lib/auth/iframe-auth.d.ts +2 -1
  157. package/dist/types/wallets/in-app/web/lib/auth/iframe-auth.d.ts.map +1 -1
  158. package/dist/types/wallets/in-app/web/lib/enclave-wallet.d.ts +61 -0
  159. package/dist/types/wallets/in-app/web/lib/enclave-wallet.d.ts.map +1 -0
  160. package/dist/types/wallets/in-app/web/lib/get-auth-token.d.ts +4 -0
  161. package/dist/types/wallets/in-app/web/lib/get-auth-token.d.ts.map +1 -0
  162. package/dist/types/wallets/in-app/web/lib/{in-app-account.d.ts → iframe-wallet.d.ts} +5 -8
  163. package/dist/types/wallets/in-app/web/lib/iframe-wallet.d.ts.map +1 -0
  164. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts +4 -2
  165. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
  166. package/dist/types/wallets/in-app/web/lib/web-wallet.d.ts +15 -0
  167. package/dist/types/wallets/in-app/web/lib/web-wallet.d.ts.map +1 -0
  168. package/dist/types/wallets/types.d.ts +2 -2
  169. package/dist/types/wallets/types.d.ts.map +1 -1
  170. package/package.json +1 -1
  171. package/src/exports/extensions/erc1155.ts +1 -0
  172. package/src/extensions/erc1155/drops/read/getClaimConditions.ts +1 -1
  173. package/src/extensions/erc20/drops/read/getClaimConditions.ts +1 -1
  174. package/src/extensions/erc721/drops/read/getClaimConditions.ts +1 -1
  175. package/src/extensions/prebuilts/deploy-published.test.ts +34 -1
  176. package/src/react/core/hooks/connection/types.ts +6 -0
  177. package/src/react/core/hooks/wallets/useAutoConnect.ts +4 -1
  178. package/src/react/core/utils/walletIcon.ts +5 -0
  179. package/src/react/native/ui/connect/InAppWalletUI.tsx +2 -0
  180. package/src/react/native/ui/icons/svgs.ts +12 -0
  181. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +5 -1
  182. package/src/react/web/ui/ConnectWallet/Details.tsx +1 -1
  183. package/src/react/web/ui/ConnectWallet/Modal/ConnectEmbed.tsx +5 -1
  184. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +1 -0
  185. package/src/react/web/wallets/shared/oauthSignIn.ts +2 -1
  186. package/src/utils/fetch.ts +11 -4
  187. package/src/version.ts +1 -1
  188. package/src/wallets/in-app/core/authentication/types.ts +5 -1
  189. package/src/wallets/in-app/core/wallet/in-app-core.ts +1 -0
  190. package/src/wallets/in-app/native/native-connector.ts +1 -0
  191. package/src/wallets/in-app/web/in-app.ts +1 -0
  192. package/src/wallets/in-app/web/lib/actions/generate-wallet.enclave.ts +44 -0
  193. package/src/wallets/in-app/web/lib/actions/get-enclave-user-status.ts +44 -0
  194. package/src/wallets/in-app/web/lib/actions/sign-message.enclave.ts +52 -0
  195. package/src/wallets/in-app/web/lib/actions/sign-transaction.enclave.ts +48 -0
  196. package/src/wallets/in-app/web/lib/actions/sign-typed-data.enclave.ts +51 -0
  197. package/src/wallets/in-app/web/lib/auth/iframe-auth.ts +42 -6
  198. package/src/wallets/in-app/web/lib/enclave-wallet.ts +244 -0
  199. package/src/wallets/in-app/web/lib/get-auth-token.ts +17 -0
  200. package/src/wallets/in-app/web/lib/{in-app-account.ts → iframe-wallet.ts} +14 -15
  201. package/src/wallets/in-app/web/lib/web-connector.ts +107 -39
  202. package/src/wallets/in-app/web/lib/web-wallet.ts +23 -0
  203. package/src/wallets/types.ts +1 -0
  204. package/dist/cjs/wallets/in-app/web/lib/in-app-account.js.map +0 -1
  205. package/dist/esm/wallets/in-app/web/lib/in-app-account.js.map +0 -1
  206. package/dist/types/wallets/in-app/web/lib/in-app-account.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframe-wallet.d.ts","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/web/lib/iframe-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKnE,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,mCAAmC,CAAC;AAG1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,KAAK,EACV,OAAO,EAER,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EACL,KAAK,OAAO,EAGZ,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EACV,uBAAuB,EACvB,SAAS,EAKV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AACnH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,SAAS,CAAC;IACxB,cAAc,EAAE,SAAS,CAAC;IAC1B,aAAa,EAAE,SAAS,CAAC;CAC1B,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,EAAE,SAAS,CAAC;IAC1B,gBAAgB,EAAE,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,eAAe,EAAE;QACf,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACzD,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,eAAe,EAAE;QACf,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACtC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CAEH,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAa,YAAW,UAAU;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IAC7B,SAAS,CAAC,oBAAoB,EAAE,6BAA6B,CAC3D,qBAAqB,GAAG,uBAAuB,CAChD,CAAC;IACF,SAAS,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAE5C;;;OAGG;gBACS,EACV,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE,QAAQ,CACT,uBAAuB,GAAG;QACxB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB,CACF;IAYD;;;;OAIG;IACG,eAAe,CACnB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,uBAAuB,CAAC;IAanC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACG,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IA6B7C;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CA0JrC"}
@@ -3,7 +3,7 @@ import type { SocialAuthOption } from "../../../../wallets/types.js";
3
3
  import type { Account } from "../../../interfaces/wallet.js";
4
4
  import { type AuthLoginReturnType, type AuthStoredTokenWithCookieReturnType, type GetUser, type LogoutReturnType, type MultiStepAuthArgsType, type MultiStepAuthProviderType, type SingleStepAuthArgsType } from "../../core/authentication/types.js";
5
5
  import type { InAppConnector } from "../../core/interfaces/connector.js";
6
- import type { InAppWalletConstructorType } from "../types.js";
6
+ import type { Ecosystem, InAppWalletConstructorType } from "../types.js";
7
7
  import { InAppWalletIframeCommunicator } from "../utils/iFrameCommunication/InAppWalletIframeCommunicator.js";
8
8
  import { Auth, type AuthQuerierTypes } from "./auth/iframe-auth.js";
9
9
  /**
@@ -11,8 +11,9 @@ import { Auth, type AuthQuerierTypes } from "./auth/iframe-auth.js";
11
11
  */
12
12
  export declare class InAppWebConnector implements InAppConnector {
13
13
  protected client: ThirdwebClient;
14
+ protected ecosystem?: Ecosystem;
14
15
  protected querier: InAppWalletIframeCommunicator<AuthQuerierTypes>;
15
- private wallet;
16
+ private wallet?;
16
17
  /**
17
18
  * Used to manage the Auth state of the user.
18
19
  */
@@ -25,6 +26,7 @@ export declare class InAppWebConnector implements InAppConnector {
25
26
  * @internal
26
27
  */
27
28
  constructor({ client, onAuthSuccess, ecosystem, passkeyDomain, }: InAppWalletConstructorType);
29
+ initializeWallet(authToken?: string): Promise<void>;
28
30
  /**
29
31
  * Gets the user if they're logged in
30
32
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"web-connector.d.ts","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/web/lib/web-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAO7D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mCAAmC,EACxC,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAE5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,IAAI,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAKpE;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,OAAO,EAAE,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;IAEnE,OAAO,CAAC,MAAM,CAAe;IAC7B;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B,OAAO,CAAC,qBAAqB;IAO7B;;;;OAIG;gBACS,EACV,MAAM,EACN,aAAa,EACb,SAAS,EACT,aAAa,GACd,EAAE,0BAA0B;IAsD7B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxB,eAAe,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrE,wBAAwB,CACtB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,EACtC,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI;IAUD,kBAAkB,CAAC,UAAU,EAAE,mCAAmC;IAIxE;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,qBAAqB,GAAG,sBAAsB,GACnD,OAAO,CAAC,mCAAmC,CAAC;IAsE/C;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,qBAAqB,GAAG,sBAAsB,GACnD,OAAO,CAAC,mBAAmB,CAAC;IAgDzB,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAI3B,WAAW;CA8B1B"}
1
+ {"version":3,"file":"web-connector.d.ts","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/web/lib/web-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAO7D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mCAAmC,EACxC,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAE5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,IAAI,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOpE;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;IAEnE,OAAO,CAAC,MAAM,CAAC,CAA+B;IAC9C;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B,OAAO,CAAC,qBAAqB;IAO7B;;;;OAIG;gBACS,EACV,MAAM,EACN,aAAa,EACb,SAAS,EACT,aAAa,GACd,EAAE,0BAA0B;IAiEvB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM;IAqCzC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAejC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAOxB,eAAe,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrE,wBAAwB,CACtB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,EACtC,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI;IAUD,kBAAkB,CAAC,UAAU,EAAE,mCAAmC;IAIxE;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,qBAAqB,GAAG,sBAAsB,GACnD,OAAO,CAAC,mCAAmC,CAAC;IAuE/C;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,qBAAqB,GAAG,sBAAsB,GACnD,OAAO,CAAC,mBAAmB,CAAC;IAiDzB,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAI3B,WAAW;CA8B1B"}
@@ -0,0 +1,15 @@
1
+ import type { Account } from "../../../interfaces/wallet.js";
2
+ import type { GetUser, SetUpWalletRpcReturnType, WalletAddressObjectType } from "../../core/authentication/types.js";
3
+ export type PostWalletSetup = (SetUpWalletRpcReturnType | WalletAddressObjectType) & {
4
+ walletUserId: string;
5
+ authToken: string;
6
+ };
7
+ /**
8
+ *
9
+ */
10
+ export interface IWebWallet {
11
+ postWalletSetUp(args: PostWalletSetup): Promise<WalletAddressObjectType>;
12
+ getUserWalletStatus(): Promise<GetUser>;
13
+ getAccount(): Promise<Account>;
14
+ }
15
+ //# sourceMappingURL=web-wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-wallet.d.ts","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/web/lib/web-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EACV,OAAO,EACP,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG,CAC1B,wBAAwB,GACxB,uBAAuB,CAC1B,GAAG;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzE,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAChC"}
@@ -17,10 +17,10 @@ export type AppMetadata = {
17
17
  */
18
18
  logoUrl?: string;
19
19
  };
20
- export declare const socialAuthOptions: readonly ["google", "apple", "facebook", "discord", "line", "x", "farcaster", "telegram"];
20
+ export declare const socialAuthOptions: readonly ["google", "apple", "facebook", "discord", "line", "x", "coinbase", "farcaster", "telegram"];
21
21
  export type SocialAuthOption = (typeof socialAuthOptions)[number];
22
22
  export type OAuthOption = SocialAuthOption | "guest";
23
- export declare const authOptions: readonly ["google", "apple", "facebook", "discord", "line", "x", "farcaster", "telegram", "guest", "email", "phone", "passkey"];
23
+ export declare const authOptions: readonly ["google", "apple", "facebook", "discord", "line", "x", "coinbase", "farcaster", "telegram", "guest", "email", "phone", "passkey"];
24
24
  export type AuthOption = (typeof authOptions)[number];
25
25
  export type DisconnectFn = () => Promise<void>;
26
26
  export type SwitchChainFn = (chain: Chain) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/wallets/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,2FASpB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAErD,eAAO,MAAM,WAAW,iIAMd,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/wallets/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,uGAUpB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAErD,eAAO,MAAM,WAAW,6IAMd,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thirdweb",
3
- "version": "5.57.2",
3
+ "version": "5.58.0-nightly-3229e1f03c3cbb62ddc8dccf22ad8a8feb0a95f0-20240920000335",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/thirdweb-dev/js.git#main"
@@ -6,6 +6,7 @@ export {
6
6
  } from "../../extensions/erc1155/__generated__/IERC1155/read/balanceOfBatch.js";
7
7
  export {
8
8
  getNFT,
9
+ isGetNFTSupported,
9
10
  type GetNFTParams,
10
11
  } from "../../extensions/erc1155/read/getNFT.js";
11
12
  export {
@@ -27,7 +27,7 @@ export async function getClaimConditions(
27
27
  const conditionPromises: Array<
28
28
  ReturnType<typeof MultiById.getClaimConditionById>
29
29
  > = [];
30
- for (let i = startId; i < count; i++) {
30
+ for (let i = startId; i < startId + count; i++) {
31
31
  conditionPromises.push(
32
32
  MultiById.getClaimConditionById({
33
33
  ...options,
@@ -24,7 +24,7 @@ export async function getClaimConditions(
24
24
  const conditionPromises: Array<
25
25
  ReturnType<typeof MultiById.getClaimConditionById>
26
26
  > = [];
27
- for (let i = startId; i < count; i++) {
27
+ for (let i = startId; i < startId + count; i++) {
28
28
  conditionPromises.push(
29
29
  MultiById.getClaimConditionById({
30
30
  ...options,
@@ -24,7 +24,7 @@ export async function getClaimConditions(
24
24
  const conditionPromises: Array<
25
25
  ReturnType<typeof MultiById.getClaimConditionById>
26
26
  > = [];
27
- for (let i = startId; i < count; i++) {
27
+ for (let i = startId; i < startId + count; i++) {
28
28
  conditionPromises.push(
29
29
  MultiById.getClaimConditionById({
30
30
  ...options,
@@ -1,5 +1,8 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { ANVIL_CHAIN } from "../../../test/src/chains.js";
2
+ import {
3
+ ANVIL_CHAIN,
4
+ FORKED_ETHEREUM_CHAIN_WITH_MINING,
5
+ } from "../../../test/src/chains.js";
3
6
  import { TEST_CLIENT } from "../../../test/src/test-clients.js";
4
7
  import { TEST_ACCOUNT_A } from "../../../test/src/test-wallets.js";
5
8
  import { isContractDeployed } from "../../utils/bytecode/is-contract-deployed.js";
@@ -46,6 +49,21 @@ describe.runIf(process.env.TW_SECRET_KEY)(
46
49
  address,
47
50
  });
48
51
  expect(isDeployed).toBe(true);
52
+
53
+ const ethAddress = await deployPublishedContract({
54
+ client: TEST_CLIENT,
55
+ chain: FORKED_ETHEREUM_CHAIN_WITH_MINING,
56
+ account: TEST_ACCOUNT_A,
57
+ contractId: "AccountFactory",
58
+ contractParams: {
59
+ defaultAdmin: TEST_ACCOUNT_A.address,
60
+ entrypoint: ENTRYPOINT_ADDRESS_v0_6,
61
+ },
62
+ salt: "test",
63
+ });
64
+
65
+ // ensure they are the same address!
66
+ expect(address).toBe(ethAddress);
49
67
  });
50
68
 
51
69
  it("should deploy a published autofactory contract", async () => {
@@ -82,6 +100,21 @@ describe.runIf(process.env.TW_SECRET_KEY)(
82
100
  address,
83
101
  });
84
102
  expect(isDeployed).toBe(true);
103
+
104
+ // deploy on forked ethereum
105
+ const ethAddress = await deployPublishedContract({
106
+ client: TEST_CLIENT,
107
+ chain: FORKED_ETHEREUM_CHAIN_WITH_MINING,
108
+ account: TEST_ACCOUNT_A,
109
+ contractId: "Airdrop",
110
+ contractParams: {
111
+ defaultAdmin: TEST_ACCOUNT_A.address,
112
+ contractURI: "",
113
+ },
114
+ salt: "test",
115
+ });
116
+ // ensure they are the same address!
117
+ expect(address).toBe(ethAddress);
85
118
  });
86
119
 
87
120
  // TODO: Replace these tests' live contracts with mocks
@@ -1,3 +1,4 @@
1
+ import type { Chain } from "../../../../chains/types.js";
1
2
  import type { ThirdwebClient } from "../../../../client/client.js";
2
3
  import type { Wallet } from "../../../../wallets/interfaces/wallet.js";
3
4
  import type { SmartWalletOptions } from "../../../../wallets/smart/types.js";
@@ -107,4 +108,9 @@ export type AutoConnectProps = {
107
108
  * ```
108
109
  */
109
110
  onConnect?: (wallet: Wallet) => void;
111
+
112
+ /**
113
+ * Optional chain to autoconnect to
114
+ */
115
+ chain?: Chain;
110
116
  };
@@ -56,7 +56,10 @@ export function useAutoConnectCore(
56
56
  return autoConnected;
57
57
  }
58
58
 
59
- const lastConnectedChain = await getLastConnectedChain(storage);
59
+ // this flow can actually be used for a first connection in the case of a redirect
60
+ // in that case, we default to the passed chain to connect to
61
+ const lastConnectedChain =
62
+ (await getLastConnectedChain(storage)) || props.chain;
60
63
 
61
64
  async function handleWalletConnection(wallet: Wallet) {
62
65
  return wallet.autoConnect({
@@ -19,6 +19,8 @@ export const twitchIconUri =
19
19
  "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmlld0JveD0iMCAwIDExMS43ODY2NyAxMjcuMzg2NjciCiAgIGhlaWdodD0iMTI3LjM4NjY3IgogICB3aWR0aD0iMTExLjc4NjY3IgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmczMzU1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJUd2l0Y2hfbG9nby5zdmciCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMS4xICgzYmY1YWUwZDI1LCAyMDIxLTA5LTIwKSIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICBpZD0iZGVmczI5Ij4KICAgIAogICAgCiAgPC9kZWZzPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgaWQ9Im5hbWVkdmlldzI3IgogICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iNC4xOTkyMjg0IgogICBpbmtzY2FwZTpjeD0iLTUwLjYwNDUzNSIKICAgaW5rc2NhcGU6Y3k9IjE0MC4zODI5MyIKICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIyNTYwIgogICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMzg3IgogICBpbmtzY2FwZTp3aW5kb3cteD0iMTkxMiIKICAgaW5rc2NhcGU6d2luZG93LXk9Ii04IgogICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmczMzU1IiAvPgogIDxnCiAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMzMzMzMzMywwLDAsLTEuMzMzMzMzMywxMDEuMzkzMzMsNjcuNTg5MzMyKSIKICAgaWQ9ImczMzY1Ij4KICAgICAgPHBhdGgKICAgaWQ9InBhdGgzMzY3IgogICBzdHlsZT0iZmlsbDojNjQ0MWE1O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICBkPSJtIDAsMCAtMTMuNjUyLC0xMy42NTEgaCAtMjEuNDQ1IGwgLTExLjY5OSwtMTEuNjk3IHYgMTEuNjk3IEggLTY0LjM0NCBWIDQyLjg5MyBIIDAgWiBtIC03Mi4xNDYsNTAuNjkyIC0zLjg5OSwtMTUuNTk5IHYgLTcwLjE5IGggMTcuNTUgdiAtOS43NTEgaCA5Ljc0NiBsIDkuNzUyLDkuNzUxIGggMTUuNTk2IEwgNy43OTUsLTMuOTA1IHYgNTQuNTk3IHoiIC8+CiAgICA8L2c+PHBhdGgKICAgaWQ9InBhdGgzMzY5IgogICBzdHlsZT0iZmlsbDojNjQ0MWE1O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjMzMzMzIgogICBkPSJtIDQ0LjE5NzMzMSw2Mi4zOTQyNjYgaCAxMC4zOTg2NyBWIDMxLjE5MjkzMyBoIC0xMC4zOTg2NyB6IG0gMjguNTk0NjcsMCBoIDEwLjM5ODY2IFYgMzEuMTkyOTMzIGggLTEwLjM5ODY2IHoiIC8+Cjwvc3ZnPgo=";
20
20
  export const discordIconUri =
21
21
  "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBpZD0iZGlzY29yZCI+PHBhdGggZmlsbD0iIzY2NjVkMiIgZD0iTTg1LjIyLDI0Ljk1OGMtMTEuNDU5LTguNTc1LTIyLjQzOC04LjMzNC0yMi40MzgtOC4zMzRsLTEuMTIyLDEuMjgyCgkJCQljMTMuNjIzLDQuMDg3LDE5Ljk1NCwxMC4wOTcsMTkuOTU0LDEwLjA5N2MtMTkuNDkxLTEwLjczMS00NC4zMTctMTAuNjU0LTY0LjU5LDBjMCwwLDYuNTcxLTYuMzMxLDIwLjk5Ni0xMC40MThsLTAuODAxLTAuOTYyCgkJCQljMCwwLTEwLjg5OS0wLjI0LTIyLjQzOCw4LjMzNGMwLDAtMTEuNTQsMjAuNzU1LTExLjU0LDQ2LjMxOWMwLDAsNi43MzIsMTEuNTQsMjQuNDQyLDEyLjEwMWMwLDAsMi45NjUtMy41MjYsNS4zNjktNi41NzEKCQkJCWMtMTAuMTc3LTMuMDQ1LTE0LjAyNC05LjM3Ni0xNC4wMjQtOS4zNzZjNi4zOTQsNC4wMDEsMTIuODU5LDYuNTA1LDIwLjkxNiw4LjA5NGMxMy4xMDgsMi42OTgsMjkuNDEzLTAuMDc2LDQxLjU5MS04LjA5NAoJCQkJYzAsMC00LjAwNyw2LjQ5MS0xNC41MDUsOS40NTZjMi40MDQsMi45NjUsNS4yODksNi40MTEsNS4yODksNi40MTFjMTcuNzEtMC41NjEsMjQuNDQxLTEyLjEwMSwyNC40NDEtMTIuMDIKCQkJCUM5Ni43NTksNDUuNzEzLDg1LjIyLDI0Ljk1OCw4NS4yMiwyNC45NTh6IE0zNS4wNTUsNjMuODI0Yy00LjQ4OCwwLTguMTc0LTMuOTI3LTguMTc0LTguODE1CgkJCQljMC4zMjgtMTEuNzA3LDE2LjEwMi0xMS42NzEsMTYuMzQ4LDBDNDMuMjI5LDU5Ljg5NywzOS42MjIsNjMuODI0LDM1LjA1NSw2My44MjR6IE02NC4zMDQsNjMuODI0CgkJCQljLTQuNDg4LDAtOC4xNzQtMy45MjctOC4xNzQtOC44MTVjMC4zNi0xMS42ODQsMTUuOTM3LTExLjY4OSwxNi4zNDgsMEM3Mi40NzgsNTkuODk3LDY4Ljg3Miw2My44MjQsNjQuMzA0LDYzLjgyNHoiPjwvcGF0aD48L3N2Zz4=";
22
+ export const coinbaseIconUri =
23
+ "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTU2IiBoZWlnaHQ9IjU1NiIgdmlld0JveD0iMCAwIDU1NiA1NTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xNDhfNSkiPgo8cGF0aCBkPSJNMjc4IDBDNDMxLjUzMyAwIDU1NiAxMjQuNDY3IDU1NiAyNzhDNTU2IDQzMS41MzMgNDMxLjUzMyA1NTYgMjc4IDU1NkMxMjQuNDY3IDU1NiAwIDQzMS41MzMgMCAyNzhDMCAxMjQuNDY3IDEyNC40NjcgMCAyNzggMFoiIGZpbGw9IiMwMDUyRkYiLz4KPHBhdGggZD0iTTI3OC40ODIgMzc1LjE5QzIyNC40OSAzNzUuMTkgMTgwLjg2MiAzMzEuNDEgMTgwLjg2MiAyNzcuNUMxODAuODYyIDIyMy41OSAyMjQuNjEgMTc5LjgxIDI3OC40ODIgMTc5LjgxQzMyNi44MSAxNzkuODEgMzY2Ljk0MyAyMTUuMDI3IDM3NC42NTYgMjYxLjIxOEg0NzNDNDY0LjY4NCAxNjAuODc1IDM4MC44MDMgODIgMjc4LjM2MiA4MkMxNzAuNDk3IDgyIDgzIDE2OS41NTkgODMgMjc3LjVDODMgMzg1LjQ0MSAxNzAuNDk3IDQ3MyAyNzguMzYyIDQ3M0MzODAuODAzIDQ3MyA0NjQuNjg0IDM5NC4xMjUgNDczIDI5My43ODJIMzc0LjUzNkMzNjYuODIzIDMzOS45NzMgMzI2LjgxIDM3NS4xOSAyNzguNDgyIDM3NS4xOVoiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTQ4XzUiPgo8cmVjdCB3aWR0aD0iNTU2IiBoZWlnaHQ9IjU1NiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K";
22
24
  export const lineIconUri =
23
25
  "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiB2aWV3Qm94PSIwIDAgMzIwIDMyMCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwNmM3NTU7fS5jbHMtMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMSU5FX0xPR08iIGRhdGEtbmFtZT0iTElORSBMT0dPIj48cmVjdCBjbGFzcz0iY2xzLTEiIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiByeD0iNzIuMTQiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNjYuNjYsMTQ0LjkyYzAtNDcuNzQtNDcuODYtODYuNTgtMTA2LjY5LTg2LjU4UzUzLjI4LDk3LjE4LDUzLjI4LDE0NC45MmMwLDQyLjgsMzgsNzguNjUsODkuMjIsODUuNDIsMy40OC43NSw4LjIxLDIuMjksOS40LDUuMjYsMS4wOCwyLjcuNzEsNi45My4zNSw5LjY1LDAsMC0xLjI1LDcuNTMtMS41Miw5LjEzLS40NywyLjctMi4xNSwxMC41NSw5LjI0LDUuNzZzNjEuNDQtMzYuMTgsODMuODItNjEuOTVoMEMyNTkuMjUsMTgxLjI0LDI2Ni42NiwxNjQsMjY2LjY2LDE0NC45MloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzEuMTYsMTcyLjQ5aC0zMGEyLDIsMCwwLDEtMi0ydjBoMFYxMjMuOTRoMHYwYTIsMiwwLDAsMSwyLTJoMzBhMiwyLDAsMCwxLDIsMnY3LjU3YTIsMiwwLDAsMS0yLDJIMjEwLjc5djcuODVoMjAuMzdhMiwyLDAsMCwxLDIsMlYxNTFhMiwyLDAsMCwxLTIsMkgyMTAuNzl2Ny44NmgyMC4zN2EyLDIsMCwwLDEsMiwydjcuNTZBMiwyLDAsMCwxLDIzMS4xNiwxNzIuNDlaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIwLjI5LDE3Mi40OWEyLDIsMCwwLDAsMi0ydi03LjU2YTIsMiwwLDAsMC0yLTJIOTkuOTJ2LTM3YTIsMiwwLDAsMC0yLTJIOTAuMzJhMiwyLDAsMCwwLTIsMnY0Ni41M2gwdjBhMiwyLDAsMCwwLDIsMmgzMFoiLz48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjEyOC43MyIgeT0iMTIxLjg1IiB3aWR0aD0iMTEuNjQiIGhlaWdodD0iNTAuNjQiIHJ4PSIyLjA0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTg5Ljg0LDEyMS44NWgtNy41NmEyLDIsMCwwLDAtMiwydjI3LjY2bC0yMS4zLTI4Ljc3YTEuMiwxLjIsMCwwLDAtLjE3LS4yMXYwbC0uMTItLjEyLDAsMC0uMTEtLjA5LS4wNiwwLS4xMS0uMDgtLjA2LDAtLjExLS4wNi0uMDcsMC0uMTEsMC0uMDcsMC0uMTIsMC0uMDgsMC0uMTIsMGgtLjA4bC0uMTEsMGgtNy43MWEyLDIsMCwwLDAtMiwydjQ2LjU2YTIsMiwwLDAsMCwyLDJoNy41N2EyLDIsMCwwLDAsMi0yVjE0Mi44MWwyMS4zMywyOC44YTIsMiwwLDAsMCwuNTIuNTJoMGwuMTIuMDguMDYsMCwuMS4wNS4xLDAsLjA3LDAsLjE0LDBoMGEyLjQyLDIuNDIsMCwwLDAsLjU0LjA3aDcuNTJhMiwyLDAsMCwwLDItMlYxMjMuODlBMiwyLDAsMCwwLDE4OS44NCwxMjEuODVaIi8+PC9nPjwvZz48L3N2Zz4=";
24
26
  export const farcasterIconUri =
@@ -52,6 +54,7 @@ export const passkeyIcon =
52
54
  export const socialIcons = {
53
55
  google: googleIconUri,
54
56
  apple: appleIconUri,
57
+ coinbase: coinbaseIconUri,
55
58
  facebook: facebookIconUri,
56
59
  discord: discordIconUri,
57
60
  line: lineIconUri,
@@ -65,6 +68,8 @@ export function getWalletIcon(provider: string) {
65
68
  switch (provider) {
66
69
  case "google":
67
70
  return googleIconUri;
71
+ case "coinbase":
72
+ return coinbaseIconUri;
68
73
  case "apple":
69
74
  return appleIconUri;
70
75
  case "facebook":
@@ -30,6 +30,7 @@ import { Spacer } from "../components/spacer.js";
30
30
  import { ThemedText } from "../components/text.js";
31
31
  import {
32
32
  APPLE_ICON,
33
+ COINBASE_ICON,
33
34
  DISCORD_ICON,
34
35
  FACEBOOK_ICON,
35
36
  FARCASTER_ICON,
@@ -53,6 +54,7 @@ const defaultAuthOptions: InAppWalletAuth[] = [
53
54
  const socialIcons = {
54
55
  google: GOOGLE_ICON,
55
56
  facebook: FACEBOOK_ICON,
57
+ coinbase: COINBASE_ICON,
56
58
  apple: APPLE_ICON,
57
59
  discord: DISCORD_ICON,
58
60
  line: LINE_ICON,
@@ -37,6 +37,18 @@ export const DISCORD_ICON = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink
37
37
  </g>
38
38
  </svg>`;
39
39
 
40
+ export const COINBASE_ICON = `<svg width="556" height="556" viewBox="0 0 556 556" fill="none" xmlns="http://www.w3.org/2000/svg">
41
+ <g clip-path="url(#clip0_148_5)">
42
+ <path d="M278 0C431.533 0 556 124.467 556 278C556 431.533 431.533 556 278 556C124.467 556 0 431.533 0 278C0 124.467 124.467 0 278 0Z" fill="#0052FF"/>
43
+ <path d="M278.482 375.19C224.49 375.19 180.862 331.41 180.862 277.5C180.862 223.59 224.61 179.81 278.482 179.81C326.81 179.81 366.943 215.027 374.656 261.218H473C464.684 160.875 380.803 82 278.362 82C170.497 82 83 169.559 83 277.5C83 385.441 170.497 473 278.362 473C380.803 473 464.684 394.125 473 293.782H374.536C366.823 339.973 326.81 375.19 278.482 375.19Z" fill="white"/>
44
+ </g>
45
+ <defs>
46
+ <clipPath id="clip0_148_5">
47
+ <rect width="556" height="556" fill="white"/>
48
+ </clipPath>
49
+ </defs>
50
+ </svg>`;
51
+
40
52
  export const LINE_ICON = `<svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" viewBox="0 0 320 320"><defs><style>.cls-1{fill:#06c755;}.cls-2{fill:#fff;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="LINE_LOGO" data-name="LINE LOGO"><rect class="cls-1" width="320" height="320" rx="72.14"/><path class="cls-2" d="M266.66,144.92c0-47.74-47.86-86.58-106.69-86.58S53.28,97.18,53.28,144.92c0,42.8,38,78.65,89.22,85.42,3.48.75,8.21,2.29,9.4,5.26,1.08,2.7.71,6.93.35,9.65,0,0-1.25,7.53-1.52,9.13-.47,2.7-2.15,10.55,9.24,5.76s61.44-36.18,83.82-61.95h0C259.25,181.24,266.66,164,266.66,144.92Z"/><path class="cls-1" d="M231.16,172.49h-30a2,2,0,0,1-2-2v0h0V123.94h0v0a2,2,0,0,1,2-2h30a2,2,0,0,1,2,2v7.57a2,2,0,0,1-2,2H210.79v7.85h20.37a2,2,0,0,1,2,2V151a2,2,0,0,1-2,2H210.79v7.86h20.37a2,2,0,0,1,2,2v7.56A2,2,0,0,1,231.16,172.49Z"/><path class="cls-1" d="M120.29,172.49a2,2,0,0,0,2-2v-7.56a2,2,0,0,0-2-2H99.92v-37a2,2,0,0,0-2-2H90.32a2,2,0,0,0-2,2v46.53h0v0a2,2,0,0,0,2,2h30Z"/><rect class="cls-1" x="128.73" y="121.85" width="11.64" height="50.64" rx="2.04"/><path class="cls-1" d="M189.84,121.85h-7.56a2,2,0,0,0-2,2v27.66l-21.3-28.77a1.2,1.2,0,0,0-.17-.21v0l-.12-.12,0,0-.11-.09-.06,0-.11-.08-.06,0-.11-.06-.07,0-.11,0-.07,0-.12,0-.08,0-.12,0h-.08l-.11,0h-7.71a2,2,0,0,0-2,2v46.56a2,2,0,0,0,2,2h7.57a2,2,0,0,0,2-2V142.81l21.33,28.8a2,2,0,0,0,.52.52h0l.12.08.06,0,.1.05.1,0,.07,0,.14,0h0a2.42,2.42,0,0,0,.54.07h7.52a2,2,0,0,0,2-2V123.89A2,2,0,0,0,189.84,121.85Z"/></g></g></svg>`;
41
53
 
42
54
  export const FARCASTER_ICON = `<svg width={width} height={height} viewBox="0 0 1000 1000" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -293,8 +293,12 @@ export function ConnectButton(props: ConnectButtonProps) {
293
293
  : props.connectModal?.size || "compact";
294
294
  }, [wallets.length, props.connectModal?.size]);
295
295
 
296
+ const preferredChain =
297
+ props.accountAbstraction?.chain || props.chain || props.chains?.[0];
298
+
296
299
  const autoConnectComp = props.autoConnect !== false && (
297
300
  <AutoConnect
301
+ chain={preferredChain}
298
302
  appMetadata={props.appMetadata}
299
303
  client={props.client}
300
304
  wallets={wallets}
@@ -336,7 +340,7 @@ export function ConnectButton(props: ConnectButtonProps) {
336
340
  shouldSetActive={true}
337
341
  accountAbstraction={props.accountAbstraction}
338
342
  auth={props.auth}
339
- chain={props.chain || props.accountAbstraction?.chain}
343
+ chain={preferredChain}
340
344
  chains={props.chains}
341
345
  client={props.client}
342
346
  connectLocale={localeQuery.data}
@@ -1073,7 +1073,7 @@ function InAppWalletUserInfo(props: {
1073
1073
  }
1074
1074
  return walletInfo?.name;
1075
1075
  },
1076
- enabled: !!activeWallet?.id,
1076
+ enabled: !!activeWallet?.id && !!walletInfo,
1077
1077
  });
1078
1078
 
1079
1079
  const userInfoQuery = useQuery({
@@ -238,8 +238,12 @@ export function ConnectEmbed(props: ConnectEmbedProps) {
238
238
  props.requireApproval,
239
239
  ]);
240
240
 
241
+ const preferredChain =
242
+ props.accountAbstraction?.chain || props.chain || props.chains?.[0];
243
+
241
244
  const autoConnectComp = props.autoConnect !== false && (
242
245
  <AutoConnect
246
+ chain={preferredChain}
243
247
  appMetadata={props.appMetadata}
244
248
  client={props.client}
245
249
  wallets={wallets}
@@ -272,7 +276,7 @@ export function ConnectEmbed(props: ConnectEmbedProps) {
272
276
  <ConnectEmbedContent
273
277
  auth={props.auth}
274
278
  accountAbstraction={props.accountAbstraction}
275
- chain={props.chain || props.accountAbstraction?.chain}
279
+ chain={preferredChain}
276
280
  chains={props.chains}
277
281
  client={props.client}
278
282
  connectLocale={localeQuery.data}
@@ -111,6 +111,7 @@ export const ConnectWalletSocialOptions = (
111
111
  discord: locale.signInWithDiscord,
112
112
  line: "LINE",
113
113
  x: "X",
114
+ coinbase: "Coinbase",
114
115
  farcaster: "Farcaster",
115
116
  telegram: "Telegram",
116
117
  };
@@ -41,10 +41,11 @@ function getOauthLoginPath(
41
41
  case "line":
42
42
  case "x":
43
43
  case "guest":
44
+ case "coinbase":
44
45
  case "discord":
45
46
  return getLoginUrl({ authOption, client, ecosystem });
46
47
  default:
47
- return "";
48
+ throw new Error(`Unsupported auth option: ${authOption}`);
48
49
  }
49
50
  }
50
51
 
@@ -32,19 +32,26 @@ export function getClientFetch(client: ThirdwebClient, ecosystem?: Ecosystem) {
32
32
  if (!headers) {
33
33
  headers = new Headers();
34
34
  }
35
+ // auth token if secret key === jwt
35
36
  const authToken =
36
37
  client.secretKey && isJWT(client.secretKey)
37
38
  ? client.secretKey
38
39
  : undefined;
40
+ // secret key if secret key !== jwt
41
+ const secretKey =
42
+ client.secretKey && !isJWT(client.secretKey)
43
+ ? client.secretKey
44
+ : undefined;
45
+ const clientId = client.clientId;
39
46
 
40
47
  // if we have an auth token set, use that (thirdweb.com/dashboard sets this for the user)
41
48
  // pay urls should never send the auth token, because we always want the "developer" to be the one making the request, not the "end user"
42
49
  if (authToken && !isPayUrl(url)) {
43
50
  headers.set("authorization", `Bearer ${authToken}`);
44
- } else if (client.secretKey) {
45
- headers.set("x-secret-key", client.secretKey);
46
- } else if (client.clientId) {
47
- headers.set("x-client-id", client.clientId);
51
+ } else if (secretKey) {
52
+ headers.set("x-secret-key", secretKey);
53
+ } else if (clientId) {
54
+ headers.set("x-client-id", clientId);
48
55
  }
49
56
 
50
57
  if (ecosystem) {
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.57.2";
1
+ export const version = "5.58.0-nightly-3229e1f03c3cbb62ddc8dccf22ad8a8feb0a95f0-20240920000335";
@@ -67,6 +67,7 @@ export type AuthArgsType = (MultiStepAuthArgsType | SingleStepAuthArgsType) & {
67
67
  export enum RecoveryShareManagement {
68
68
  USER_MANAGED = "USER_MANAGED",
69
69
  CLOUD_MANAGED = "AWS_MANAGED",
70
+ ENCLAVE = "ENCLAVE",
70
71
  }
71
72
 
72
73
  // TODO: remove usage of enums, instead use object with as const
@@ -81,6 +82,7 @@ export enum AuthProvider {
81
82
  APPLE = "Apple",
82
83
  PASSKEY = "Passkey",
83
84
  DISCORD = "Discord",
85
+ COINBASE = "Coinbase",
84
86
  X = "X",
85
87
  LINE = "Line",
86
88
  FARCASTER = "Farcaster",
@@ -133,7 +135,8 @@ export type AuthStoredTokenWithCookieReturnType = {
133
135
  };
134
136
  };
135
137
  export type AuthAndWalletRpcReturnType = AuthStoredTokenWithCookieReturnType & {
136
- walletDetails: SetUpWalletRpcReturnType;
138
+ // Will just be WalletAddressObjectType for enclave wallets
139
+ walletDetails: SetUpWalletRpcReturnType | WalletAddressObjectType;
137
140
  };
138
141
 
139
142
  export type AuthLoginReturnType = { user: InitializedUser };
@@ -151,6 +154,7 @@ export type AuthDetails = (
151
154
  encryptionKey?: string;
152
155
  backupRecoveryCodes?: string[];
153
156
  recoveryShareManagement: RecoveryShareManagement;
157
+ walletType?: "sharded" | "enclave";
154
158
  };
155
159
 
156
160
  export type InitializedUser = {
@@ -104,6 +104,7 @@ export function createInAppWallet(args: {
104
104
  createOptions,
105
105
  connector,
106
106
  );
107
+
107
108
  // set the states
108
109
  client = options.client;
109
110
  account = connectedAccount;
@@ -158,6 +158,7 @@ export class InAppNativeConnector implements InAppConnector {
158
158
  case "x":
159
159
  case "farcaster":
160
160
  case "telegram":
161
+ case "coinbase":
161
162
  case "apple": {
162
163
  const ExpoLinking = require("expo-linking");
163
164
  const redirectUrl =
@@ -15,6 +15,7 @@ import { createInAppWallet } from "../core/wallet/in-app-core.js";
15
15
  * - Apple
16
16
  * - Facebook
17
17
  * - Discord
18
+ * - Coinbase
18
19
  * - Telegram
19
20
  * - LINE
20
21
  * - X
@@ -0,0 +1,44 @@
1
+ import type { ThirdwebClient } from "../../../../../client/client.js";
2
+ import { getThirdwebBaseUrl } from "../../../../../utils/domains.js";
3
+ import { getClientFetch } from "../../../../../utils/fetch.js";
4
+ import type { Ecosystem } from "../../types.js";
5
+
6
+ /**
7
+ * Generate a new enclave wallet using an auth token
8
+ * @internal
9
+ */
10
+ export async function generateWallet({
11
+ authToken,
12
+ client,
13
+ ecosystem,
14
+ }: {
15
+ client: ThirdwebClient;
16
+ ecosystem: Ecosystem;
17
+ authToken: string;
18
+ }) {
19
+ const clientFetch = getClientFetch(client, ecosystem);
20
+ const response = await clientFetch(
21
+ `${getThirdwebBaseUrl("inAppWallet")}/api/v1/enclave-wallet/generate`,
22
+ {
23
+ method: "POST",
24
+ headers: {
25
+ "Content-Type": "application/json",
26
+ "x-thirdweb-client-id": client.clientId,
27
+ Authorization: `Bearer embedded-wallet-token:${authToken}`,
28
+ },
29
+ },
30
+ );
31
+
32
+ if (!response.ok) {
33
+ throw new Error("Failed to generate wallet");
34
+ }
35
+
36
+ const { wallet } = (await response.json()) as {
37
+ wallet: {
38
+ address: string;
39
+ type: "enclave";
40
+ };
41
+ };
42
+
43
+ return wallet;
44
+ }
@@ -0,0 +1,44 @@
1
+ import type { ThirdwebClient } from "../../../../../client/client.js";
2
+ import { getThirdwebBaseUrl } from "../../../../../utils/domains.js";
3
+ import { getClientFetch } from "../../../../../utils/fetch.js";
4
+ import type { UserStatus } from "../../lib/enclave-wallet.js";
5
+ import type { Ecosystem } from "../../types.js";
6
+
7
+ /**
8
+ * Gets the user's status from the backend.
9
+ *
10
+ * @internal
11
+ */
12
+ export async function getEnclaveUserStatus({
13
+ authToken,
14
+ client,
15
+ ecosystem,
16
+ }: {
17
+ authToken: string;
18
+ client: ThirdwebClient;
19
+ ecosystem?: Ecosystem;
20
+ }): Promise<UserStatus | undefined> {
21
+ const clientFetch = getClientFetch(client, ecosystem);
22
+ const response = await clientFetch(
23
+ `${getThirdwebBaseUrl("inAppWallet")}/api/2024-05-05/accounts`,
24
+ {
25
+ method: "GET",
26
+ headers: {
27
+ "Content-Type": "application/json",
28
+ "x-thirdweb-client-id": client.clientId,
29
+ Authorization: `Bearer embedded-wallet-token:${authToken}`,
30
+ },
31
+ },
32
+ );
33
+
34
+ if (!response.ok) {
35
+ if (response.status === 401) {
36
+ // 401 response indicates there is no user logged in, so we return undefined
37
+ return undefined;
38
+ }
39
+ const result = await response.json();
40
+ throw new Error(`Failed to get user status: ${result.error}`);
41
+ }
42
+
43
+ return (await response.json()) as UserStatus;
44
+ }
@@ -0,0 +1,52 @@
1
+ import type { ThirdwebClient } from "../../../../../client/client.js";
2
+ import { getThirdwebBaseUrl } from "../../../../../utils/domains.js";
3
+ import { getClientFetch } from "../../../../../utils/fetch.js";
4
+ import type { Ecosystem } from "../../types.js";
5
+ import { getAuthToken } from "../get-auth-token.js";
6
+
7
+ export async function signMessage({
8
+ client,
9
+ ecosystem,
10
+ payload: { message, isRaw },
11
+ }: {
12
+ client: ThirdwebClient;
13
+ ecosystem?: Ecosystem;
14
+ payload: {
15
+ message: string;
16
+ isRaw: boolean;
17
+ };
18
+ }) {
19
+ const clientFetch = getClientFetch(client, ecosystem);
20
+ const authToken = await getAuthToken(client, ecosystem);
21
+
22
+ const response = await clientFetch(
23
+ `${getThirdwebBaseUrl("inAppWallet")}/api/v1/enclave-wallet/sign-message`,
24
+ {
25
+ method: "POST",
26
+ headers: {
27
+ "Content-Type": "application/json",
28
+ "x-thirdweb-client-id": client.clientId,
29
+ Authorization: `Bearer embedded-wallet-token:${authToken}`,
30
+ },
31
+ body: JSON.stringify({
32
+ messagePayload: {
33
+ message,
34
+ isRaw,
35
+ },
36
+ }),
37
+ },
38
+ );
39
+
40
+ if (!response.ok) {
41
+ throw new Error("Failed to sign message");
42
+ }
43
+
44
+ const signedMessage = (await response.json()) as {
45
+ r: string;
46
+ s: string;
47
+ v: number;
48
+ signature: string;
49
+ hash: string;
50
+ };
51
+ return signedMessage;
52
+ }