thirdweb 5.64.6-nightly-f40d2474e6cc1227a8d05151210ef4793beb6142-20241101000357 → 5.65.0-nightly-06604162a11d99ff119bbf427a24b9a7d82c1575-20241103000408

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 (258) hide show
  1. package/dist/cjs/analytics/track/index.js +2 -2
  2. package/dist/cjs/analytics/track/index.js.map +1 -1
  3. package/dist/cjs/auth/core/verify-jwt.js +2 -1
  4. package/dist/cjs/auth/core/verify-jwt.js.map +1 -1
  5. package/dist/cjs/extensions/erc721/drops/write/claimToBatch.js +8 -7
  6. package/dist/cjs/extensions/erc721/drops/write/claimToBatch.js.map +1 -1
  7. package/dist/cjs/pay/buyWithCrypto/getQuote.js +2 -1
  8. package/dist/cjs/pay/buyWithCrypto/getQuote.js.map +1 -1
  9. package/dist/cjs/pay/buyWithCrypto/getTransfer.js +2 -1
  10. package/dist/cjs/pay/buyWithCrypto/getTransfer.js.map +1 -1
  11. package/dist/cjs/pay/buyWithFiat/getQuote.js +2 -1
  12. package/dist/cjs/pay/buyWithFiat/getQuote.js.map +1 -1
  13. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +14 -0
  14. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  15. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +5 -4
  16. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  17. package/dist/cjs/react/web/ui/ConnectWallet/screens/ViewAssets.js +29 -11
  18. package/dist/cjs/react/web/ui/ConnectWallet/screens/ViewAssets.js.map +1 -1
  19. package/dist/cjs/rpc/rpc.js +2 -1
  20. package/dist/cjs/rpc/rpc.js.map +1 -1
  21. package/dist/cjs/utils/domains.js +3 -0
  22. package/dist/cjs/utils/domains.js.map +1 -1
  23. package/dist/cjs/utils/extensions/airdrop/process-snapshot-erc1155.js +3 -2
  24. package/dist/cjs/utils/extensions/airdrop/process-snapshot-erc1155.js.map +1 -1
  25. package/dist/cjs/utils/extensions/airdrop/process-snapshot-erc20.js +3 -2
  26. package/dist/cjs/utils/extensions/airdrop/process-snapshot-erc20.js.map +1 -1
  27. package/dist/cjs/utils/extensions/airdrop/process-snapshot-erc721.js +3 -2
  28. package/dist/cjs/utils/extensions/airdrop/process-snapshot-erc721.js.map +1 -1
  29. package/dist/cjs/utils/extensions/drops/process-override-list.js +3 -2
  30. package/dist/cjs/utils/extensions/drops/process-override-list.js.map +1 -1
  31. package/dist/cjs/utils/jwt/encode-jwt.js +5 -2
  32. package/dist/cjs/utils/jwt/encode-jwt.js.map +1 -1
  33. package/dist/cjs/utils/storage/walletStorage.js +4 -3
  34. package/dist/cjs/utils/storage/walletStorage.js.map +1 -1
  35. package/dist/cjs/version.js +1 -1
  36. package/dist/cjs/wallets/coinbase/coinbaseWebSDK.js +1 -0
  37. package/dist/cjs/wallets/coinbase/coinbaseWebSDK.js.map +1 -1
  38. package/dist/cjs/wallets/in-app/core/authentication/authEndpoint.js +2 -1
  39. package/dist/cjs/wallets/in-app/core/authentication/authEndpoint.js.map +1 -1
  40. package/dist/cjs/wallets/in-app/core/authentication/guest.js +2 -1
  41. package/dist/cjs/wallets/in-app/core/authentication/guest.js.map +1 -1
  42. package/dist/cjs/wallets/in-app/core/authentication/jwt.js +2 -1
  43. package/dist/cjs/wallets/in-app/core/authentication/jwt.js.map +1 -1
  44. package/dist/cjs/wallets/in-app/core/authentication/linkAccount.js +2 -1
  45. package/dist/cjs/wallets/in-app/core/authentication/linkAccount.js.map +1 -1
  46. package/dist/cjs/wallets/in-app/core/authentication/passkeys.js +3 -2
  47. package/dist/cjs/wallets/in-app/core/authentication/passkeys.js.map +1 -1
  48. package/dist/cjs/wallets/in-app/core/authentication/siwe.js +2 -1
  49. package/dist/cjs/wallets/in-app/core/authentication/siwe.js.map +1 -1
  50. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js +1 -0
  51. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  52. package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js +2 -1
  53. package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
  54. package/dist/cjs/wallets/in-app/native/helpers/api/fetchers.js +5 -4
  55. package/dist/cjs/wallets/in-app/native/helpers/api/fetchers.js.map +1 -1
  56. package/dist/cjs/wallets/in-app/native/helpers/errors.js +2 -1
  57. package/dist/cjs/wallets/in-app/native/helpers/errors.js.map +1 -1
  58. package/dist/cjs/wallets/in-app/native/helpers/storage/local.js +2 -1
  59. package/dist/cjs/wallets/in-app/native/helpers/storage/local.js.map +1 -1
  60. package/dist/cjs/wallets/in-app/native/helpers/wallet/migration.js +4 -3
  61. package/dist/cjs/wallets/in-app/native/helpers/wallet/migration.js.map +1 -1
  62. package/dist/cjs/wallets/in-app/native/helpers/wallet/recoveryCode.js +5 -4
  63. package/dist/cjs/wallets/in-app/native/helpers/wallet/recoveryCode.js.map +1 -1
  64. package/dist/cjs/wallets/in-app/web/lib/auth/otp.js +3 -2
  65. package/dist/cjs/wallets/in-app/web/lib/auth/otp.js.map +1 -1
  66. package/dist/cjs/wallets/in-app/web/lib/iframe-wallet.js +1 -0
  67. package/dist/cjs/wallets/in-app/web/lib/iframe-wallet.js.map +1 -1
  68. package/dist/cjs/wallets/injected/index.js +1 -0
  69. package/dist/cjs/wallets/injected/index.js.map +1 -1
  70. package/dist/cjs/wallets/manager/index.js +4 -3
  71. package/dist/cjs/wallets/manager/index.js.map +1 -1
  72. package/dist/cjs/wallets/smart/lib/bundler.js +1 -1
  73. package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
  74. package/dist/cjs/wallets/smart/lib/paymaster.js +2 -1
  75. package/dist/cjs/wallets/smart/lib/paymaster.js.map +1 -1
  76. package/dist/cjs/wallets/wallet-connect/controller.js +3 -1
  77. package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
  78. package/dist/cjs/wallets/wallet-connect/receiver/session-store.js +3 -2
  79. package/dist/cjs/wallets/wallet-connect/receiver/session-store.js.map +1 -1
  80. package/dist/esm/analytics/track/index.js +2 -2
  81. package/dist/esm/analytics/track/index.js.map +1 -1
  82. package/dist/esm/auth/core/verify-jwt.js +2 -1
  83. package/dist/esm/auth/core/verify-jwt.js.map +1 -1
  84. package/dist/esm/extensions/erc721/drops/write/claimToBatch.js +8 -7
  85. package/dist/esm/extensions/erc721/drops/write/claimToBatch.js.map +1 -1
  86. package/dist/esm/pay/buyWithCrypto/getQuote.js +2 -1
  87. package/dist/esm/pay/buyWithCrypto/getQuote.js.map +1 -1
  88. package/dist/esm/pay/buyWithCrypto/getTransfer.js +2 -1
  89. package/dist/esm/pay/buyWithCrypto/getTransfer.js.map +1 -1
  90. package/dist/esm/pay/buyWithFiat/getQuote.js +2 -1
  91. package/dist/esm/pay/buyWithFiat/getQuote.js.map +1 -1
  92. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +14 -0
  93. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  94. package/dist/esm/react/web/ui/ConnectWallet/Details.js +5 -4
  95. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  96. package/dist/esm/react/web/ui/ConnectWallet/screens/ViewAssets.js +30 -12
  97. package/dist/esm/react/web/ui/ConnectWallet/screens/ViewAssets.js.map +1 -1
  98. package/dist/esm/rpc/rpc.js +2 -1
  99. package/dist/esm/rpc/rpc.js.map +1 -1
  100. package/dist/esm/utils/domains.js +3 -0
  101. package/dist/esm/utils/domains.js.map +1 -1
  102. package/dist/esm/utils/extensions/airdrop/process-snapshot-erc1155.js +3 -2
  103. package/dist/esm/utils/extensions/airdrop/process-snapshot-erc1155.js.map +1 -1
  104. package/dist/esm/utils/extensions/airdrop/process-snapshot-erc20.js +3 -2
  105. package/dist/esm/utils/extensions/airdrop/process-snapshot-erc20.js.map +1 -1
  106. package/dist/esm/utils/extensions/airdrop/process-snapshot-erc721.js +3 -2
  107. package/dist/esm/utils/extensions/airdrop/process-snapshot-erc721.js.map +1 -1
  108. package/dist/esm/utils/extensions/drops/process-override-list.js +3 -2
  109. package/dist/esm/utils/extensions/drops/process-override-list.js.map +1 -1
  110. package/dist/esm/utils/jwt/encode-jwt.js +5 -2
  111. package/dist/esm/utils/jwt/encode-jwt.js.map +1 -1
  112. package/dist/esm/utils/storage/walletStorage.js +4 -3
  113. package/dist/esm/utils/storage/walletStorage.js.map +1 -1
  114. package/dist/esm/version.js +1 -1
  115. package/dist/esm/wallets/coinbase/coinbaseWebSDK.js +1 -0
  116. package/dist/esm/wallets/coinbase/coinbaseWebSDK.js.map +1 -1
  117. package/dist/esm/wallets/in-app/core/authentication/authEndpoint.js +2 -1
  118. package/dist/esm/wallets/in-app/core/authentication/authEndpoint.js.map +1 -1
  119. package/dist/esm/wallets/in-app/core/authentication/guest.js +2 -1
  120. package/dist/esm/wallets/in-app/core/authentication/guest.js.map +1 -1
  121. package/dist/esm/wallets/in-app/core/authentication/jwt.js +2 -1
  122. package/dist/esm/wallets/in-app/core/authentication/jwt.js.map +1 -1
  123. package/dist/esm/wallets/in-app/core/authentication/linkAccount.js +2 -1
  124. package/dist/esm/wallets/in-app/core/authentication/linkAccount.js.map +1 -1
  125. package/dist/esm/wallets/in-app/core/authentication/passkeys.js +3 -2
  126. package/dist/esm/wallets/in-app/core/authentication/passkeys.js.map +1 -1
  127. package/dist/esm/wallets/in-app/core/authentication/siwe.js +2 -1
  128. package/dist/esm/wallets/in-app/core/authentication/siwe.js.map +1 -1
  129. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js +1 -0
  130. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  131. package/dist/esm/wallets/in-app/core/wallet/in-app-core.js +2 -1
  132. package/dist/esm/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
  133. package/dist/esm/wallets/in-app/native/helpers/api/fetchers.js +5 -4
  134. package/dist/esm/wallets/in-app/native/helpers/api/fetchers.js.map +1 -1
  135. package/dist/esm/wallets/in-app/native/helpers/errors.js +2 -1
  136. package/dist/esm/wallets/in-app/native/helpers/errors.js.map +1 -1
  137. package/dist/esm/wallets/in-app/native/helpers/storage/local.js +2 -1
  138. package/dist/esm/wallets/in-app/native/helpers/storage/local.js.map +1 -1
  139. package/dist/esm/wallets/in-app/native/helpers/wallet/migration.js +4 -3
  140. package/dist/esm/wallets/in-app/native/helpers/wallet/migration.js.map +1 -1
  141. package/dist/esm/wallets/in-app/native/helpers/wallet/recoveryCode.js +5 -4
  142. package/dist/esm/wallets/in-app/native/helpers/wallet/recoveryCode.js.map +1 -1
  143. package/dist/esm/wallets/in-app/web/lib/auth/otp.js +3 -2
  144. package/dist/esm/wallets/in-app/web/lib/auth/otp.js.map +1 -1
  145. package/dist/esm/wallets/in-app/web/lib/iframe-wallet.js +1 -0
  146. package/dist/esm/wallets/in-app/web/lib/iframe-wallet.js.map +1 -1
  147. package/dist/esm/wallets/injected/index.js +1 -0
  148. package/dist/esm/wallets/injected/index.js.map +1 -1
  149. package/dist/esm/wallets/manager/index.js +4 -3
  150. package/dist/esm/wallets/manager/index.js.map +1 -1
  151. package/dist/esm/wallets/smart/lib/bundler.js +1 -1
  152. package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
  153. package/dist/esm/wallets/smart/lib/paymaster.js +2 -1
  154. package/dist/esm/wallets/smart/lib/paymaster.js.map +1 -1
  155. package/dist/esm/wallets/wallet-connect/controller.js +3 -1
  156. package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
  157. package/dist/esm/wallets/wallet-connect/receiver/session-store.js +3 -2
  158. package/dist/esm/wallets/wallet-connect/receiver/session-store.js.map +1 -1
  159. package/dist/types/analytics/track/index.d.ts.map +1 -1
  160. package/dist/types/auth/core/verify-jwt.d.ts.map +1 -1
  161. package/dist/types/extensions/erc721/drops/write/claimToBatch.d.ts.map +1 -1
  162. package/dist/types/pay/buyWithCrypto/getQuote.d.ts.map +1 -1
  163. package/dist/types/pay/buyWithCrypto/getTransfer.d.ts.map +1 -1
  164. package/dist/types/pay/buyWithFiat/getQuote.d.ts.map +1 -1
  165. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts +7 -0
  166. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts.map +1 -1
  167. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts +14 -0
  168. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
  169. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts +7 -0
  170. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  171. package/dist/types/react/web/ui/ConnectWallet/screens/ViewAssets.d.ts +5 -0
  172. package/dist/types/react/web/ui/ConnectWallet/screens/ViewAssets.d.ts.map +1 -1
  173. package/dist/types/rpc/rpc.d.ts.map +1 -1
  174. package/dist/types/utils/domains.d.ts +6 -0
  175. package/dist/types/utils/domains.d.ts.map +1 -1
  176. package/dist/types/utils/extensions/airdrop/process-snapshot-erc1155.d.ts.map +1 -1
  177. package/dist/types/utils/extensions/airdrop/process-snapshot-erc20.d.ts.map +1 -1
  178. package/dist/types/utils/extensions/airdrop/process-snapshot-erc721.d.ts.map +1 -1
  179. package/dist/types/utils/extensions/drops/process-override-list.d.ts.map +1 -1
  180. package/dist/types/utils/jwt/encode-jwt.d.ts.map +1 -1
  181. package/dist/types/utils/storage/walletStorage.d.ts.map +1 -1
  182. package/dist/types/version.d.ts +1 -1
  183. package/dist/types/wallets/coinbase/coinbaseWebSDK.d.ts.map +1 -1
  184. package/dist/types/wallets/in-app/core/authentication/authEndpoint.d.ts.map +1 -1
  185. package/dist/types/wallets/in-app/core/authentication/guest.d.ts.map +1 -1
  186. package/dist/types/wallets/in-app/core/authentication/jwt.d.ts.map +1 -1
  187. package/dist/types/wallets/in-app/core/authentication/linkAccount.d.ts.map +1 -1
  188. package/dist/types/wallets/in-app/core/authentication/passkeys.d.ts.map +1 -1
  189. package/dist/types/wallets/in-app/core/authentication/siwe.d.ts.map +1 -1
  190. package/dist/types/wallets/in-app/core/wallet/enclave-wallet.d.ts.map +1 -1
  191. package/dist/types/wallets/in-app/core/wallet/in-app-core.d.ts.map +1 -1
  192. package/dist/types/wallets/in-app/native/helpers/api/fetchers.d.ts.map +1 -1
  193. package/dist/types/wallets/in-app/native/helpers/errors.d.ts.map +1 -1
  194. package/dist/types/wallets/in-app/native/helpers/storage/local.d.ts.map +1 -1
  195. package/dist/types/wallets/in-app/native/helpers/wallet/migration.d.ts.map +1 -1
  196. package/dist/types/wallets/in-app/native/helpers/wallet/recoveryCode.d.ts.map +1 -1
  197. package/dist/types/wallets/in-app/web/lib/auth/otp.d.ts.map +1 -1
  198. package/dist/types/wallets/in-app/web/lib/iframe-wallet.d.ts.map +1 -1
  199. package/dist/types/wallets/injected/index.d.ts.map +1 -1
  200. package/dist/types/wallets/manager/index.d.ts.map +1 -1
  201. package/dist/types/wallets/smart/lib/paymaster.d.ts.map +1 -1
  202. package/dist/types/wallets/wallet-connect/controller.d.ts.map +1 -1
  203. package/dist/types/wallets/wallet-connect/receiver/session-store.d.ts.map +1 -1
  204. package/package.json +1 -1
  205. package/src/analytics/track/index.ts +2 -3
  206. package/src/auth/core/verify-jwt.ts +2 -1
  207. package/src/extensions/erc1155/drop1155.test.ts +12 -1
  208. package/src/extensions/erc1155/token1155.test.ts +12 -1
  209. package/src/extensions/erc1155/write/mintAdditionalSupplyToBatch.test.ts +0 -1
  210. package/src/extensions/erc20/drop20.test.ts +11 -2
  211. package/src/extensions/erc721/drop721.test.ts +10 -7
  212. package/src/extensions/erc721/drops/write/claimToBatch.ts +10 -11
  213. package/src/extensions/erc721/read/getNFT.test.ts +0 -67
  214. package/src/extensions/erc721/read/getNFTs.test.ts +0 -32
  215. package/src/extensions/erc721/token721.test.ts +115 -0
  216. package/src/extensions/prebuilts/deploy-erc721.test.ts +0 -42
  217. package/src/pay/buyWithCrypto/getQuote.ts +2 -1
  218. package/src/pay/buyWithCrypto/getTransfer.ts +2 -1
  219. package/src/pay/buyWithFiat/getQuote.ts +2 -1
  220. package/src/react/core/hooks/connection/ConnectButtonProps.ts +8 -0
  221. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +14 -0
  222. package/src/react/web/ui/ConnectWallet/Details.tsx +30 -16
  223. package/src/react/web/ui/ConnectWallet/screens/ViewAssets.tsx +46 -24
  224. package/src/rpc/rpc.ts +2 -1
  225. package/src/utils/domains.ts +8 -0
  226. package/src/utils/extensions/airdrop/process-snapshot-erc1155.ts +3 -2
  227. package/src/utils/extensions/airdrop/process-snapshot-erc20.ts +3 -2
  228. package/src/utils/extensions/airdrop/process-snapshot-erc721.ts +3 -2
  229. package/src/utils/extensions/drops/process-override-list.ts +3 -2
  230. package/src/utils/jwt/encode-jwt.ts +5 -5
  231. package/src/utils/nft/fetch-token-metadata.test.ts +2 -1
  232. package/src/utils/storage/walletStorage.ts +4 -3
  233. package/src/version.ts +1 -1
  234. package/src/wallets/coinbase/coinbaseWebSDK.ts +1 -0
  235. package/src/wallets/in-app/core/authentication/authEndpoint.ts +2 -1
  236. package/src/wallets/in-app/core/authentication/guest.ts +2 -1
  237. package/src/wallets/in-app/core/authentication/jwt.ts +2 -1
  238. package/src/wallets/in-app/core/authentication/linkAccount.ts +2 -1
  239. package/src/wallets/in-app/core/authentication/passkeys.ts +3 -2
  240. package/src/wallets/in-app/core/authentication/siwe.ts +2 -1
  241. package/src/wallets/in-app/core/wallet/enclave-wallet.ts +1 -0
  242. package/src/wallets/in-app/core/wallet/in-app-core.ts +2 -1
  243. package/src/wallets/in-app/native/helpers/api/fetchers.ts +5 -4
  244. package/src/wallets/in-app/native/helpers/errors.ts +3 -1
  245. package/src/wallets/in-app/native/helpers/storage/local.ts +2 -1
  246. package/src/wallets/in-app/native/helpers/wallet/migration.ts +4 -3
  247. package/src/wallets/in-app/native/helpers/wallet/recoveryCode.ts +5 -4
  248. package/src/wallets/in-app/web/lib/auth/otp.ts +3 -2
  249. package/src/wallets/in-app/web/lib/iframe-wallet.ts +1 -0
  250. package/src/wallets/injected/index.ts +1 -0
  251. package/src/wallets/manager/index.ts +4 -3
  252. package/src/wallets/smart/lib/bundler.ts +1 -1
  253. package/src/wallets/smart/lib/paymaster.ts +2 -1
  254. package/src/wallets/wallet-connect/controller.ts +3 -1
  255. package/src/wallets/wallet-connect/receiver/session-store.ts +3 -6
  256. package/src/extensions/erc721/write/mintTo.test.ts +0 -69
  257. package/src/extensions/prebuilts/deploy-erc1155.test.ts +0 -54
  258. package/src/extensions/prebuilts/deploy-erc20.test.ts +0 -56
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thirdweb",
3
- "version": "5.64.6-nightly-f40d2474e6cc1227a8d05151210ef4793beb6142-20241101000357",
3
+ "version": "5.65.0-nightly-06604162a11d99ff119bbf427a24b9a7d82c1575-20241103000408",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/thirdweb-dev/js.git#main"
@@ -1,10 +1,9 @@
1
1
  import type { ThirdwebClient } from "../../client/client.js";
2
+ import { getThirdwebBaseUrl } from "../../utils/domains.js";
2
3
  import { getClientFetch } from "../../utils/fetch.js";
3
4
  import { stringify } from "../../utils/json.js";
4
5
  import type { Ecosystem } from "../../wallets/in-app/core/wallet/types.js";
5
6
 
6
- const ANALYTICS_ENDPOINT = "https://c.thirdweb.com/event";
7
-
8
7
  /**
9
8
  * @internal
10
9
  */
@@ -23,7 +22,7 @@ export async function track({
23
22
  ...data,
24
23
  };
25
24
 
26
- return fetch(ANALYTICS_ENDPOINT, {
25
+ return fetch(`${getThirdwebBaseUrl("analytics")}/event`, {
27
26
  method: "POST",
28
27
  body: stringify(event),
29
28
  }).catch(() => {});
@@ -1,3 +1,4 @@
1
+ import { stringify } from "../../utils/json.js";
1
2
  import { decodeJWT } from "../../utils/jwt/decode-jwt.js";
2
3
  import type { JWTPayload } from "../../utils/jwt/types.js";
3
4
  import { verifyEOASignature } from "../verify-signature.js";
@@ -82,7 +83,7 @@ export function verifyJWT(options: AuthOptions) {
82
83
  }
83
84
 
84
85
  const verified = await verifyEOASignature({
85
- message: JSON.stringify(payload),
86
+ message: stringify(payload),
86
87
  signature,
87
88
  address: issuerAddress,
88
89
  });
@@ -16,6 +16,7 @@ import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-co
16
16
  import { resolvePromisedValue } from "../../utils/promise/resolve-promised-value.js";
17
17
  import { toEther } from "../../utils/units.js";
18
18
  import { generateMerkleTreeInfoERC1155 } from "../airdrop/write/merkleInfoERC1155.js";
19
+ import { name } from "../common/read/name.js";
19
20
  import { deployERC20Contract } from "../prebuilts/deploy-erc20.js";
20
21
  import { deployERC1155Contract } from "../prebuilts/deploy-erc1155.js";
21
22
  import { balanceOf } from "./__generated__/IERC1155/read/balanceOf.js";
@@ -45,12 +46,22 @@ describe.runIf(process.env.TW_SECRET_KEY)(
45
46
  chain: ANVIL_CHAIN,
46
47
  client: TEST_CLIENT,
47
48
  params: {
48
- name: "Test DropERC1155",
49
+ name: "EditionDrop",
49
50
  contractURI: TEST_CONTRACT_URI,
50
51
  },
51
52
  type: "DropERC1155",
52
53
  });
53
54
 
55
+ expect(contractAddress).toBeDefined();
56
+ const deployedName = await name({
57
+ contract: getContract({
58
+ client: TEST_CLIENT,
59
+ chain: ANVIL_CHAIN,
60
+ address: contractAddress,
61
+ }),
62
+ });
63
+ expect(deployedName).toBe("EditionDrop");
64
+
54
65
  contract = getContract({
55
66
  address: contractAddress,
56
67
  chain: ANVIL_CHAIN,
@@ -11,6 +11,7 @@ import {
11
11
  import { resolveContractAbi } from "../../contract/actions/resolve-abi.js";
12
12
  import { type ThirdwebContract, getContract } from "../../contract/contract.js";
13
13
  import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
14
+ import { name } from "../common/read/name.js";
14
15
  import { deployERC1155Contract } from "../prebuilts/deploy-erc1155.js";
15
16
  import { balanceOf } from "./__generated__/IERC1155/read/balanceOf.js";
16
17
  import { totalSupply } from "./__generated__/IERC1155/read/totalSupply.js";
@@ -37,12 +38,22 @@ describe.runIf(process.env.TW_SECRET_KEY)("TokenERC1155", () => {
37
38
  chain: ANVIL_CHAIN,
38
39
  client: TEST_CLIENT,
39
40
  params: {
40
- name: "Test TokenERC1155",
41
+ name: "Edition",
41
42
  contractURI: TEST_CONTRACT_URI,
42
43
  },
43
44
  type: "TokenERC1155",
44
45
  });
45
46
 
47
+ expect(contractAddress).toBeDefined();
48
+ const deployedName = await name({
49
+ contract: getContract({
50
+ client: TEST_CLIENT,
51
+ chain: ANVIL_CHAIN,
52
+ address: contractAddress,
53
+ }),
54
+ });
55
+ expect(deployedName).toBe("Edition");
56
+
46
57
  contract = getContract({
47
58
  address: contractAddress,
48
59
  chain: ANVIL_CHAIN,
@@ -1,4 +1,3 @@
1
- import {} from "viem";
2
1
  import { describe, expect, it } from "vitest";
3
2
  import { TEST_ACCOUNT_C } from "~test/test-wallets.js";
4
3
  import { optimizeMintBatchContent } from "./mintAdditionalSupplyToBatch.js";
@@ -1,5 +1,4 @@
1
1
  import { beforeAll, describe, expect, it } from "vitest";
2
- import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
3
2
  import { VITALIK_WALLET } from "../../../test/src/addresses.js";
4
3
  import { ANVIL_CHAIN } from "../../../test/src/chains.js";
5
4
  import { TEST_CLIENT } from "../../../test/src/test-clients.js";
@@ -13,6 +12,7 @@ import { type ThirdwebContract, getContract } from "../../contract/contract.js";
13
12
  import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
14
13
  import { resolvePromisedValue } from "../../utils/promise/resolve-promised-value.js";
15
14
  import { toEther } from "../../utils/units.js";
15
+ import { name } from "../common/read/name.js";
16
16
  import { deployERC20Contract } from "../prebuilts/deploy-erc20.js";
17
17
  import { getClaimConditions } from "./drops/read/getClaimConditions.js";
18
18
  import { claimTo } from "./drops/write/claimTo.js";
@@ -35,11 +35,20 @@ describe.runIf(process.env.TW_SECRET_KEY)(
35
35
  client: TEST_CLIENT,
36
36
  params: {
37
37
  name: "Test DropERC20",
38
- contractURI: TEST_CONTRACT_URI,
39
38
  },
40
39
  type: "DropERC20",
41
40
  });
42
41
 
42
+ expect(contractAddress).toBeDefined();
43
+ const deployedName = await name({
44
+ contract: getContract({
45
+ client: TEST_CLIENT,
46
+ chain: ANVIL_CHAIN,
47
+ address: contractAddress,
48
+ }),
49
+ });
50
+ expect(deployedName).toBe("Test DropERC20");
51
+
43
52
  contract = getContract({
44
53
  address: contractAddress,
45
54
  chain: ANVIL_CHAIN,
@@ -13,6 +13,7 @@ import { type ThirdwebContract, getContract } from "../../contract/contract.js";
13
13
  import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
14
14
  import { resolvePromisedValue } from "../../utils/promise/resolve-promised-value.js";
15
15
  import { toEther } from "../../utils/units.js";
16
+ import { name } from "../common/read/name.js";
16
17
  import { deployERC20Contract } from "../prebuilts/deploy-erc20.js";
17
18
  import { deployERC721Contract } from "../prebuilts/deploy-erc721.js";
18
19
  import { balanceOf } from "./__generated__/IERC721A/read/balanceOf.js";
@@ -40,11 +41,19 @@ describe.runIf(process.env.TW_SECRET_KEY)(
40
41
  client: TEST_CLIENT,
41
42
  params: {
42
43
  name: "Test DropERC721",
43
- contractURI: TEST_CONTRACT_URI,
44
44
  },
45
45
  type: "DropERC721",
46
46
  });
47
47
 
48
+ contract = getContract({
49
+ address: contractAddress,
50
+ chain: ANVIL_CHAIN,
51
+ client: TEST_CLIENT,
52
+ });
53
+
54
+ const deployedName = await name({ contract });
55
+ expect(deployedName).toBe("Test DropERC721");
56
+
48
57
  const erc20ContractAddress = await deployERC20Contract({
49
58
  account: TEST_ACCOUNT_A,
50
59
  chain: ANVIL_CHAIN,
@@ -61,12 +70,6 @@ describe.runIf(process.env.TW_SECRET_KEY)(
61
70
  chain: ANVIL_CHAIN,
62
71
  client: TEST_CLIENT,
63
72
  });
64
-
65
- contract = getContract({
66
- address: contractAddress,
67
- chain: ANVIL_CHAIN,
68
- client: TEST_CLIENT,
69
- });
70
73
  // this deploys a contract, it may take some time
71
74
  }, 120_000);
72
75
 
@@ -59,17 +59,15 @@ export function claimToBatch(
59
59
  async function getClaimToBatchParams(
60
60
  options: BaseTransactionOptions<ClaimToBatchParams>,
61
61
  ) {
62
- const errorIndexTo = options.content.findIndex((o) => !o.to);
63
- if (errorIndexTo !== -1) {
64
- throw new Error(
65
- `Error: Item at index ${errorIndexTo} is missing recipient address ("to")`,
66
- );
67
- }
68
- const errorIndexQuantity = options.content.findIndex((o) => !o.quantity);
69
- if (errorIndexQuantity !== -1) {
70
- throw new Error(
71
- `Error: Item at index ${errorIndexQuantity} is missing claim quantity`,
72
- );
62
+ for (let i = 0; i < options.content.length; i++) {
63
+ if (!options.content[i]?.quantity) {
64
+ throw new Error(`Error: Item at index ${i} is missing claim quantity`);
65
+ }
66
+ if (!options.content[i]?.to) {
67
+ throw new Error(
68
+ `Error: Item at index ${i} is missing recipient address ("to")`,
69
+ );
70
+ }
73
71
  }
74
72
  const content = optimizeClaimContent(options.content);
75
73
  const data = await Promise.all(
@@ -89,6 +87,7 @@ async function getClaimToBatchParams(
89
87
  pricePerToken: claimParams.pricePerToken,
90
88
  allowlistProof: claimParams.allowlistProof,
91
89
  data: claimParams.data,
90
+ overrides: claimParams.overrides,
92
91
  });
93
92
  }),
94
93
  );
@@ -1,16 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
-
3
- import { ANVIL_CHAIN } from "~test/chains.js";
4
- import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
5
- import { TEST_CLIENT } from "~test/test-clients.js";
6
2
  import { DOODLES_CONTRACT } from "~test/test-contracts.js";
7
- import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
8
- import { getContract } from "../../../contract/contract.js";
9
- import { deployERC721Contract } from "../../../extensions/prebuilts/deploy-erc721.js";
10
- import { sendAndConfirmTransaction } from "../../../transaction/actions/send-and-confirm-transaction.js";
11
- import { parseNFT } from "../../../utils/nft/parseNft.js";
12
- import { setTokenURI } from "../__generated__/INFTMetadata/write/setTokenURI.js";
13
- import { mintTo } from "../write/mintTo.js";
14
3
  import { getNFT } from "./getNFT.js";
15
4
 
16
5
  describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
@@ -99,60 +88,4 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
99
88
  }
100
89
  `);
101
90
  });
102
-
103
- it("should return a default value if the URI of the token doesn't exist", async () => {
104
- /**
105
- * To create this test scenario, we first deploy an NFTCollection/Edition contract,
106
- * mint a token, then purposefully change that token's URI to an empty string, using setTokenURI
107
- */
108
- const contract = getContract({
109
- address: await deployERC721Contract({
110
- chain: ANVIL_CHAIN,
111
- client: TEST_CLIENT,
112
- account: TEST_ACCOUNT_A,
113
- type: "TokenERC721",
114
- params: {
115
- name: "",
116
- contractURI: TEST_CONTRACT_URI,
117
- },
118
- }),
119
- chain: ANVIL_CHAIN,
120
- client: TEST_CLIENT,
121
- });
122
-
123
- await sendAndConfirmTransaction({
124
- transaction: mintTo({
125
- contract,
126
- nft: { name: "token 0" },
127
- to: TEST_ACCOUNT_A.address,
128
- }),
129
- account: TEST_ACCOUNT_A,
130
- });
131
-
132
- await sendAndConfirmTransaction({
133
- transaction: setTokenURI({
134
- contract,
135
- tokenId: 0n,
136
- // Need to have some spaces because NFTMetadata.sol does not allow to update an empty valud
137
- uri: " ",
138
- }),
139
- account: TEST_ACCOUNT_A,
140
- });
141
-
142
- expect(await getNFT({ contract, tokenId: 0n })).toStrictEqual(
143
- parseNFT(
144
- {
145
- id: 0n,
146
- type: "ERC721",
147
- uri: "",
148
- },
149
- {
150
- tokenId: 0n,
151
- tokenUri: "",
152
- type: "ERC721",
153
- owner: null,
154
- },
155
- ),
156
- );
157
- });
158
91
  });
@@ -1,17 +1,8 @@
1
- import { type Abi, toFunctionSelector } from "viem";
2
1
  import { describe, expect, it } from "vitest";
3
- import { ANVIL_CHAIN } from "~test/chains.js";
4
- import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
5
- import { TEST_CLIENT } from "~test/test-clients.js";
6
2
  import {
7
3
  DOODLES_CONTRACT,
8
4
  UNISWAPV3_FACTORY_CONTRACT,
9
5
  } from "~test/test-contracts.js";
10
- import { TEST_ACCOUNT_B } from "~test/test-wallets.js";
11
- import { resolveContractAbi } from "../../../contract/actions/resolve-abi.js";
12
- import { getContract } from "../../../contract/contract.js";
13
- import { deployERC721Contract } from "../../../extensions/prebuilts/deploy-erc721.js";
14
- import { isGetNFTSupported } from "./getNFT.js";
15
6
  import { getNFTs } from "./getNFTs.js";
16
7
 
17
8
  describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFTs", () => {
@@ -197,29 +188,6 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFTs", () => {
197
188
  // TODO find a contract that we can use that has "1 indexed" NFTs, then re-enable this test
198
189
  });
199
190
 
200
- it("isGetNFTsSupported should work", async () => {
201
- const contract = getContract({
202
- address: await deployERC721Contract({
203
- chain: ANVIL_CHAIN,
204
- client: TEST_CLIENT,
205
- type: "TokenERC721",
206
- params: {
207
- name: "",
208
- contractURI: TEST_CONTRACT_URI,
209
- },
210
- account: TEST_ACCOUNT_B,
211
- }),
212
- chain: ANVIL_CHAIN,
213
- client: TEST_CLIENT,
214
- });
215
-
216
- const abi = await resolveContractAbi<Abi>(contract);
217
- const selectors = abi
218
- .filter((f) => f.type === "function")
219
- .map((f) => toFunctionSelector(f));
220
- expect(isGetNFTSupported(selectors)).toBe(true);
221
- });
222
-
223
191
  it("should throw error if totalSupply and nextTokenIdToMint are not supported", async () => {
224
192
  await expect(() =>
225
193
  getNFTs({ contract: UNISWAPV3_FACTORY_CONTRACT }),
@@ -0,0 +1,115 @@
1
+ import { type Abi, toFunctionSelector } from "viem";
2
+ import { describe, expect, it } from "vitest";
3
+ import { ANVIL_CHAIN } from "~test/chains.js";
4
+ import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
5
+ import { TEST_CLIENT } from "~test/test-clients.js";
6
+ import { TEST_ACCOUNT_B } from "~test/test-wallets.js";
7
+ import { resolveContractAbi } from "../../contract/actions/resolve-abi.js";
8
+ import { type ThirdwebContract, getContract } from "../../contract/contract.js";
9
+ import { name } from "../../extensions/common/read/name.js";
10
+ import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
11
+ import { parseNFT } from "../../utils/nft/parseNft.js";
12
+ import { deployERC721Contract } from "../prebuilts/deploy-erc721.js";
13
+ import { tokenURI } from "./__generated__/IERC721A/read/tokenURI.js";
14
+ import { setTokenURI } from "./__generated__/INFTMetadata/write/setTokenURI.js";
15
+ import { getNFT, isGetNFTSupported } from "./read/getNFT.js";
16
+ import { mintTo } from "./write/mintTo.js";
17
+
18
+ const client = TEST_CLIENT;
19
+ const chain = ANVIL_CHAIN;
20
+ const account = TEST_ACCOUNT_B;
21
+
22
+ let token721Contract: ThirdwebContract;
23
+
24
+ describe.runIf(process.env.TW_SECRET_KEY)("deployERC721", () => {
25
+ it("should deploy ERC721 token", async () => {
26
+ const address = await deployERC721Contract({
27
+ client,
28
+ chain,
29
+ account,
30
+ type: "TokenERC721",
31
+ params: {
32
+ name: "NFTCollection",
33
+ contractURI: TEST_CONTRACT_URI,
34
+ },
35
+ });
36
+ expect(address).toBeDefined();
37
+ token721Contract = getContract({
38
+ client: TEST_CLIENT,
39
+ chain: ANVIL_CHAIN,
40
+ address,
41
+ });
42
+ const deployedName = await name({ contract: token721Contract });
43
+ expect(deployedName).toBe("NFTCollection");
44
+ });
45
+
46
+ it("should mint an nft when passed an object", async () => {
47
+ const transaction = mintTo({
48
+ contract: token721Contract,
49
+ nft: { name: "token 0" },
50
+ to: account.address,
51
+ });
52
+ await sendAndConfirmTransaction({
53
+ transaction,
54
+ account,
55
+ });
56
+
57
+ const nft = await getNFT({ contract: token721Contract, tokenId: 0n });
58
+ expect(nft.metadata.name).toBe("token 0");
59
+ });
60
+
61
+ it("should mint an nft when passed a string", async () => {
62
+ const transaction = mintTo({
63
+ contract: token721Contract,
64
+ nft: "ipfs://fake-token-uri",
65
+ to: account.address,
66
+ });
67
+ await sendAndConfirmTransaction({
68
+ transaction,
69
+ account,
70
+ });
71
+ const _uri = await tokenURI({ contract: token721Contract, tokenId: 1n });
72
+ expect(_uri).toBe("ipfs://fake-token-uri");
73
+ });
74
+
75
+ it("isGetNFTsSupported should work", async () => {
76
+ const abi = await resolveContractAbi<Abi>(token721Contract);
77
+ const selectors = abi
78
+ .filter((f) => f.type === "function")
79
+ .map((f) => toFunctionSelector(f));
80
+ expect(isGetNFTSupported(selectors)).toBe(true);
81
+ });
82
+
83
+ it("should return a default value if the URI of the token doesn't exist", async () => {
84
+ /**
85
+ * mint a token, then purposefully change that token's URI to an empty string, using setTokenURI
86
+ */
87
+ await sendAndConfirmTransaction({
88
+ transaction: setTokenURI({
89
+ contract: token721Contract,
90
+ tokenId: 1n,
91
+ // Need to have some spaces because NFTMetadata.sol does not allow to update an empty value
92
+ uri: " ",
93
+ }),
94
+ account,
95
+ });
96
+
97
+ expect(
98
+ await getNFT({ contract: token721Contract, tokenId: 1n }),
99
+ ).toStrictEqual(
100
+ parseNFT(
101
+ {
102
+ id: 1n,
103
+ type: "ERC721",
104
+ uri: "",
105
+ },
106
+ {
107
+ tokenId: 1n,
108
+ tokenUri: "",
109
+ type: "ERC721",
110
+ owner: null,
111
+ },
112
+ ),
113
+ );
114
+ });
115
+ });
@@ -11,48 +11,6 @@ const account = TEST_ACCOUNT_B;
11
11
  // skip this test suite if there is no secret key available to test with
12
12
  // TODO: remove reliance on secret key during unit tests entirely
13
13
  describe.runIf(process.env.TW_SECRET_KEY)("deployERC721", () => {
14
- it("should deploy ERC721 drop", async () => {
15
- const address = await deployERC721Contract({
16
- client: TEST_CLIENT,
17
- chain: ANVIL_CHAIN,
18
- account,
19
- type: "DropERC721",
20
- params: {
21
- name: "NFTDrop",
22
- },
23
- });
24
- expect(address).toBeDefined();
25
- const deployedName = await name({
26
- contract: getContract({
27
- client: TEST_CLIENT,
28
- chain: ANVIL_CHAIN,
29
- address,
30
- }),
31
- });
32
- expect(deployedName).toBe("NFTDrop");
33
- });
34
-
35
- it("should deploy ERC721 token", async () => {
36
- const address = await deployERC721Contract({
37
- client: TEST_CLIENT,
38
- chain: ANVIL_CHAIN,
39
- account,
40
- type: "TokenERC721",
41
- params: {
42
- name: "NFTCollection",
43
- },
44
- });
45
- expect(address).toBeDefined();
46
- const deployedName = await name({
47
- contract: getContract({
48
- client: TEST_CLIENT,
49
- chain: ANVIL_CHAIN,
50
- address,
51
- }),
52
- });
53
- expect(deployedName).toBe("NFTCollection");
54
- });
55
-
56
14
  it("should deploy ERC721 open edition", async () => {
57
15
  const address = await deployERC721Contract({
58
16
  client: TEST_CLIENT,
@@ -5,6 +5,7 @@ import { getContract } from "../../contract/contract.js";
5
5
  import { approve } from "../../extensions/erc20/write/approve.js";
6
6
  import type { PrepareTransactionOptions } from "../../transaction/prepare-transaction.js";
7
7
  import { getClientFetch } from "../../utils/fetch.js";
8
+ import { stringify } from "../../utils/json.js";
8
9
  import { getPayBuyWithCryptoQuoteEndpoint } from "../utils/definitions.js";
9
10
  import type {
10
11
  QuoteApprovalInfo,
@@ -223,7 +224,7 @@ export async function getBuyWithCryptoQuote(
223
224
  Accept: "application/json",
224
225
  "Content-Type": "application/json",
225
226
  },
226
- body: JSON.stringify({
227
+ body: stringify({
227
228
  fromAddress: params.fromAddress,
228
229
  toAddress: params.toAddress,
229
230
  fromChainId: params.fromChainId.toString(),
@@ -6,6 +6,7 @@ import { approve } from "../../extensions/erc20/write/approve.js";
6
6
  import type { PrepareTransactionOptions } from "../../transaction/prepare-transaction.js";
7
7
  import type { Address } from "../../utils/address.js";
8
8
  import { getClientFetch } from "../../utils/fetch.js";
9
+ import { stringify } from "../../utils/json.js";
9
10
  import { getPayBuyWithCryptoTransferEndpoint } from "../utils/definitions.js";
10
11
  import type {
11
12
  QuoteApprovalInfo,
@@ -129,7 +130,7 @@ export async function getBuyWithCryptoTransfer(
129
130
  Accept: "application/json",
130
131
  "Content-Type": "application/json",
131
132
  },
132
- body: JSON.stringify({
133
+ body: stringify({
133
134
  fromAddress: params.fromAddress,
134
135
  toAddress: params.toAddress,
135
136
  chainId: params.chainId,
@@ -1,5 +1,6 @@
1
1
  import type { ThirdwebClient } from "../../client/client.js";
2
2
  import { getClientFetch } from "../../utils/fetch.js";
3
+ import { stringify } from "../../utils/json.js";
3
4
  import type { FiatProvider } from "../utils/commonTypes.js";
4
5
  import { getPayBuyWithFiatQuoteEndpoint } from "../utils/definitions.js";
5
6
 
@@ -299,7 +300,7 @@ export async function getBuyWithFiatQuote(
299
300
  Accept: "application/json",
300
301
  "Content-Type": "application/json",
301
302
  },
302
- body: JSON.stringify({
303
+ body: stringify({
303
304
  toAddress: params.toAddress,
304
305
  fromCurrencySymbol: params.fromCurrencySymbol,
305
306
  toChainId: params.toChainId.toString(),
@@ -3,6 +3,7 @@ import type { ThirdwebClient } from "../../../../client/client.js";
3
3
  import type { BuyWithCryptoStatus } from "../../../../pay/buyWithCrypto/getStatus.js";
4
4
  import type { BuyWithFiatStatus } from "../../../../pay/buyWithFiat/getStatus.js";
5
5
  import type { FiatProvider } from "../../../../pay/utils/commonTypes.js";
6
+ import type { AssetTabs } from "../../../../react/web/ui/ConnectWallet/screens/ViewAssets.js";
6
7
  import type { PreparedTransaction } from "../../../../transaction/prepare-transaction.js";
7
8
  import type { Prettify } from "../../../../utils/type-utils.js";
8
9
  import type { Account, Wallet } from "../../../../wallets/interfaces/wallet.js";
@@ -311,6 +312,13 @@ export type ConnectButton_detailsModalOptions = {
311
312
  * All wallet IDs included in this array will be hidden from wallet selection when connected.
312
313
  */
313
314
  hiddenWallets?: WalletId[];
315
+
316
+ /**
317
+ * When you click on "View Assets", by default the "Tokens" tab is shown first.
318
+ * If you want to show the "NFTs" tab first, change the order of the asset tabs to: ["nft", "token"]
319
+ * Note: If an empty array is passed, the [View Funds] button will be hidden
320
+ */
321
+ assetTabs?: AssetTabs[];
314
322
  };
315
323
 
316
324
  /**
@@ -247,6 +247,20 @@ const TW_CONNECT_WALLET = "tw-connect-wallet";
247
247
  * />
248
248
  * ```
249
249
  *
250
+ * ### Customizing the orders of the tabs in the [View Funds] screen
251
+ * When you click on "View Assets", by default the "Tokens" tab is shown first.
252
+ * If you want to show the "NFTs" tab first, change the order of the asset tabs to: ["nft", "token"]
253
+ * Note: If an empty array is passed, the [View Funds] button will be hidden
254
+ *
255
+ * ```tsx
256
+ * <ConnectButton
257
+ * client={client}
258
+ * detailsModal={{
259
+ * assetTabs: ["nft", "token"],
260
+ * }}
261
+ * />
262
+ * ```
263
+ *
250
264
  * @param props
251
265
  * Props for the `ConnectButton` component
252
266
  *