thirdweb 5.29.6 → 5.30.0-nightly-33777df88fb190c2af8ad25e4930040884996f1e-20240620000630

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 (363) hide show
  1. package/dist/cjs/exports/extensions/erc1155.js +3 -1
  2. package/dist/cjs/exports/extensions/erc1155.js.map +1 -1
  3. package/dist/cjs/exports/wallets/wallet-connect.js +1 -1
  4. package/dist/cjs/extensions/erc1155/__generated__/BatchMintMetadata/events/BatchMetadataUpdate.js +28 -0
  5. package/dist/cjs/extensions/erc1155/__generated__/BatchMintMetadata/events/BatchMetadataUpdate.js.map +1 -0
  6. package/dist/cjs/extensions/erc1155/__generated__/BatchMintMetadata/read/getBaseURICount.js +71 -0
  7. package/dist/cjs/extensions/erc1155/__generated__/BatchMintMetadata/read/getBaseURICount.js.map +1 -0
  8. package/dist/cjs/extensions/erc1155/__generated__/BatchMintMetadata/read/getBatchIdAtIndex.js +115 -0
  9. package/dist/cjs/extensions/erc1155/__generated__/BatchMintMetadata/read/getBatchIdAtIndex.js.map +1 -0
  10. package/dist/cjs/extensions/erc1155/__generated__/DropERC1155/write/freezeBatchBaseURI.js +116 -0
  11. package/dist/cjs/extensions/erc1155/__generated__/DropERC1155/write/freezeBatchBaseURI.js.map +1 -0
  12. package/dist/cjs/extensions/erc1155/__generated__/DropERC1155/write/setMaxTotalSupply.js +126 -0
  13. package/dist/cjs/extensions/erc1155/__generated__/DropERC1155/write/setMaxTotalSupply.js.map +1 -0
  14. package/dist/cjs/extensions/erc1155/__generated__/DropERC1155/write/setSaleRecipientForToken.js +126 -0
  15. package/dist/cjs/extensions/erc1155/__generated__/DropERC1155/write/setSaleRecipientForToken.js.map +1 -0
  16. package/dist/cjs/extensions/erc1155/__generated__/DropERC1155/write/updateBatchBaseURI.js +123 -0
  17. package/dist/cjs/extensions/erc1155/__generated__/DropERC1155/write/updateBatchBaseURI.js.map +1 -0
  18. package/dist/cjs/extensions/erc1155/drops/write/updateMetadata.js +89 -0
  19. package/dist/cjs/extensions/erc1155/drops/write/updateMetadata.js.map +1 -0
  20. package/dist/cjs/pay/buyWithCrypto/getQuote.js +19 -21
  21. package/dist/cjs/pay/buyWithCrypto/getQuote.js.map +1 -1
  22. package/dist/cjs/pay/buyWithCrypto/getStatus.js.map +1 -1
  23. package/dist/cjs/pay/buyWithFiat/getQuote.js +19 -20
  24. package/dist/cjs/pay/buyWithFiat/getQuote.js.map +1 -1
  25. package/dist/cjs/pay/buyWithFiat/getStatus.js.map +1 -1
  26. package/dist/cjs/react/core/hooks/contract/useContractEvents.js +1 -1
  27. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  28. package/dist/cjs/react/native/hooks/wallets/useActiveWalletChain.js +1 -1
  29. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js +1 -0
  30. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  31. package/dist/cjs/react/web/hooks/wallets/useActiveWalletChain.js +1 -1
  32. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +63 -118
  33. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  34. package/dist/cjs/react/web/ui/ConnectWallet/MenuButton.js +53 -0
  35. package/dist/cjs/react/web/ui/ConnectWallet/MenuButton.js.map +1 -0
  36. package/dist/cjs/react/web/ui/ConnectWallet/icons/CoinsIcon.js +12 -0
  37. package/dist/cjs/react/web/ui/ConnectWallet/icons/CoinsIcon.js.map +1 -0
  38. package/dist/cjs/react/web/ui/ConnectWallet/icons/{WalletIcon.js → GenericWalletIcon.js} +4 -4
  39. package/dist/cjs/react/web/ui/ConnectWallet/icons/GenericWalletIcon.js.map +1 -0
  40. package/dist/cjs/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.js +12 -0
  41. package/dist/cjs/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.js.map +1 -0
  42. package/dist/cjs/react/web/ui/ConnectWallet/icons/WalletConnectIcon.js +12 -0
  43. package/dist/cjs/react/web/ui/ConnectWallet/icons/WalletConnectIcon.js.map +1 -0
  44. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +3 -0
  45. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  46. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +2 -2
  47. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  48. package/dist/cjs/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js +57 -0
  49. package/dist/cjs/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js.map +1 -0
  50. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js +3 -1
  51. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  52. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js +78 -0
  53. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js.map +1 -0
  54. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletLogoSpinner.js +2 -4
  55. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletLogoSpinner.js.map +1 -1
  56. package/dist/cjs/react/web/ui/ConnectWallet/useConnectModal.js.map +1 -1
  57. package/dist/cjs/react/web/ui/components/CopyIcon.js +2 -1
  58. package/dist/cjs/react/web/ui/components/CopyIcon.js.map +1 -1
  59. package/dist/cjs/react/web/utils/canFitWideModal.js +1 -1
  60. package/dist/cjs/react/web/wallets/in-app/InputSelectionUI.js +2 -2
  61. package/dist/cjs/react/web/wallets/in-app/InputSelectionUI.js.map +1 -1
  62. package/dist/cjs/react/web/wallets/shared/ConnectingScreen.js +2 -2
  63. package/dist/cjs/react/web/wallets/shared/ConnectingScreen.js.map +1 -1
  64. package/dist/cjs/transaction/read-contract.js +1 -1
  65. package/dist/cjs/version.js +1 -1
  66. package/dist/cjs/version.js.map +1 -1
  67. package/dist/cjs/wallets/injected/index.js +7 -0
  68. package/dist/cjs/wallets/injected/index.js.map +1 -1
  69. package/dist/cjs/wallets/wallet-connect/controller.js +6 -6
  70. package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
  71. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/index.js +17 -4
  72. package/dist/cjs/wallets/wallet-connect/receiver/index.js.map +1 -0
  73. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-raw-transaction.js.map +1 -1
  74. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-transaction.js.map +1 -1
  75. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-transaction.js.map +1 -1
  76. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-typed-data.js.map +1 -1
  77. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign.js +1 -1
  78. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign.js.map +1 -1
  79. package/dist/cjs/wallets/wallet-connect/receiver/request-handlers/switch-chain.js +20 -0
  80. package/dist/cjs/wallets/wallet-connect/receiver/request-handlers/switch-chain.js.map +1 -0
  81. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/session-proposal.js +13 -10
  82. package/dist/cjs/wallets/wallet-connect/receiver/session-proposal.js.map +1 -0
  83. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/session-request.js +28 -0
  84. package/dist/cjs/wallets/wallet-connect/receiver/session-request.js.map +1 -0
  85. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/session-store.js.map +1 -1
  86. package/dist/cjs/wallets/wallet-connect/receiver/types.js.map +1 -0
  87. package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/utils.js +2 -1
  88. package/dist/cjs/wallets/wallet-connect/receiver/utils.js.map +1 -0
  89. package/dist/esm/exports/extensions/erc1155.js +1 -0
  90. package/dist/esm/exports/extensions/erc1155.js.map +1 -1
  91. package/dist/esm/exports/wallets/wallet-connect.js +1 -1
  92. package/dist/esm/extensions/erc1155/__generated__/BatchMintMetadata/events/BatchMetadataUpdate.js +24 -0
  93. package/dist/esm/extensions/erc1155/__generated__/BatchMintMetadata/events/BatchMetadataUpdate.js.map +1 -0
  94. package/dist/esm/extensions/erc1155/__generated__/BatchMintMetadata/read/getBaseURICount.js +65 -0
  95. package/dist/esm/extensions/erc1155/__generated__/BatchMintMetadata/read/getBaseURICount.js.map +1 -0
  96. package/dist/esm/extensions/erc1155/__generated__/BatchMintMetadata/read/getBatchIdAtIndex.js +107 -0
  97. package/dist/esm/extensions/erc1155/__generated__/BatchMintMetadata/read/getBatchIdAtIndex.js.map +1 -0
  98. package/dist/esm/extensions/erc1155/__generated__/DropERC1155/write/freezeBatchBaseURI.js +109 -0
  99. package/dist/esm/extensions/erc1155/__generated__/DropERC1155/write/freezeBatchBaseURI.js.map +1 -0
  100. package/dist/esm/extensions/erc1155/__generated__/DropERC1155/write/setMaxTotalSupply.js +119 -0
  101. package/dist/esm/extensions/erc1155/__generated__/DropERC1155/write/setMaxTotalSupply.js.map +1 -0
  102. package/dist/esm/extensions/erc1155/__generated__/DropERC1155/write/setSaleRecipientForToken.js +119 -0
  103. package/dist/esm/extensions/erc1155/__generated__/DropERC1155/write/setSaleRecipientForToken.js.map +1 -0
  104. package/dist/esm/extensions/erc1155/__generated__/DropERC1155/write/updateBatchBaseURI.js +116 -0
  105. package/dist/esm/extensions/erc1155/__generated__/DropERC1155/write/updateBatchBaseURI.js.map +1 -0
  106. package/dist/esm/extensions/erc1155/drops/write/updateMetadata.js +84 -0
  107. package/dist/esm/extensions/erc1155/drops/write/updateMetadata.js.map +1 -0
  108. package/dist/esm/pay/buyWithCrypto/getQuote.js +19 -21
  109. package/dist/esm/pay/buyWithCrypto/getQuote.js.map +1 -1
  110. package/dist/esm/pay/buyWithCrypto/getStatus.js.map +1 -1
  111. package/dist/esm/pay/buyWithFiat/getQuote.js +19 -20
  112. package/dist/esm/pay/buyWithFiat/getQuote.js.map +1 -1
  113. package/dist/esm/pay/buyWithFiat/getStatus.js.map +1 -1
  114. package/dist/esm/react/core/hooks/contract/useContractEvents.js +1 -1
  115. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  116. package/dist/esm/react/native/hooks/wallets/useActiveWalletChain.js +1 -1
  117. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js +1 -0
  118. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  119. package/dist/esm/react/web/hooks/wallets/useActiveWalletChain.js +1 -1
  120. package/dist/esm/react/web/ui/ConnectWallet/Details.js +23 -78
  121. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  122. package/dist/esm/react/web/ui/ConnectWallet/MenuButton.js +50 -0
  123. package/dist/esm/react/web/ui/ConnectWallet/MenuButton.js.map +1 -0
  124. package/dist/esm/react/web/ui/ConnectWallet/icons/CoinsIcon.js +8 -0
  125. package/dist/esm/react/web/ui/ConnectWallet/icons/CoinsIcon.js.map +1 -0
  126. package/dist/esm/react/web/ui/ConnectWallet/icons/{WalletIcon.js → GenericWalletIcon.js} +2 -2
  127. package/dist/esm/react/web/ui/ConnectWallet/icons/GenericWalletIcon.js.map +1 -0
  128. package/dist/esm/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.js +8 -0
  129. package/dist/esm/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.js.map +1 -0
  130. package/dist/esm/react/web/ui/ConnectWallet/icons/WalletConnectIcon.js +8 -0
  131. package/dist/esm/react/web/ui/ConnectWallet/icons/WalletConnectIcon.js.map +1 -0
  132. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +3 -0
  133. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  134. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +2 -2
  135. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  136. package/dist/esm/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js +53 -0
  137. package/dist/esm/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js.map +1 -0
  138. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js +3 -1
  139. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  140. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js +74 -0
  141. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js.map +1 -0
  142. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletLogoSpinner.js +2 -4
  143. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletLogoSpinner.js.map +1 -1
  144. package/dist/esm/react/web/ui/ConnectWallet/useConnectModal.js.map +1 -1
  145. package/dist/esm/react/web/ui/components/CopyIcon.js +2 -1
  146. package/dist/esm/react/web/ui/components/CopyIcon.js.map +1 -1
  147. package/dist/esm/react/web/utils/canFitWideModal.js +1 -1
  148. package/dist/esm/react/web/wallets/in-app/InputSelectionUI.js +2 -2
  149. package/dist/esm/react/web/wallets/in-app/InputSelectionUI.js.map +1 -1
  150. package/dist/esm/react/web/wallets/shared/ConnectingScreen.js +2 -2
  151. package/dist/esm/react/web/wallets/shared/ConnectingScreen.js.map +1 -1
  152. package/dist/esm/transaction/read-contract.js +1 -1
  153. package/dist/esm/version.js +1 -1
  154. package/dist/esm/version.js.map +1 -1
  155. package/dist/esm/wallets/injected/index.js +7 -0
  156. package/dist/esm/wallets/injected/index.js.map +1 -1
  157. package/dist/esm/wallets/wallet-connect/controller.js +6 -6
  158. package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
  159. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/index.js +15 -3
  160. package/dist/esm/wallets/wallet-connect/receiver/index.js.map +1 -0
  161. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-raw-transaction.js.map +1 -1
  162. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-transaction.js.map +1 -1
  163. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-transaction.js.map +1 -1
  164. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-typed-data.js.map +1 -1
  165. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign.js +1 -1
  166. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign.js.map +1 -1
  167. package/dist/esm/wallets/wallet-connect/receiver/request-handlers/switch-chain.js +16 -0
  168. package/dist/esm/wallets/wallet-connect/receiver/request-handlers/switch-chain.js.map +1 -0
  169. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/session-proposal.js +13 -10
  170. package/dist/esm/wallets/wallet-connect/receiver/session-proposal.js.map +1 -0
  171. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/session-request.js +28 -0
  172. package/dist/esm/wallets/wallet-connect/receiver/session-request.js.map +1 -0
  173. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/session-store.js.map +1 -1
  174. package/dist/esm/wallets/wallet-connect/receiver/types.js.map +1 -0
  175. package/dist/esm/wallets/wallet-connect/{consumer → receiver}/utils.js +2 -1
  176. package/dist/esm/wallets/wallet-connect/receiver/utils.js.map +1 -0
  177. package/dist/types/exports/extensions/erc1155.d.ts +1 -0
  178. package/dist/types/exports/extensions/erc1155.d.ts.map +1 -1
  179. package/dist/types/exports/wallets/wallet-connect.d.ts +2 -2
  180. package/dist/types/extensions/erc1155/__generated__/BatchMintMetadata/events/BatchMetadataUpdate.d.ts +29 -0
  181. package/dist/types/extensions/erc1155/__generated__/BatchMintMetadata/events/BatchMetadataUpdate.d.ts.map +1 -0
  182. package/dist/types/extensions/erc1155/__generated__/BatchMintMetadata/read/getBaseURICount.d.ts +46 -0
  183. package/dist/types/extensions/erc1155/__generated__/BatchMintMetadata/read/getBaseURICount.d.ts.map +1 -0
  184. package/dist/types/extensions/erc1155/__generated__/BatchMintMetadata/read/getBatchIdAtIndex.d.ts +85 -0
  185. package/dist/types/extensions/erc1155/__generated__/BatchMintMetadata/read/getBatchIdAtIndex.d.ts.map +1 -0
  186. package/dist/types/extensions/erc1155/__generated__/DropERC1155/write/freezeBatchBaseURI.d.ts +80 -0
  187. package/dist/types/extensions/erc1155/__generated__/DropERC1155/write/freezeBatchBaseURI.d.ts.map +1 -0
  188. package/dist/types/extensions/erc1155/__generated__/DropERC1155/write/setMaxTotalSupply.d.ts +87 -0
  189. package/dist/types/extensions/erc1155/__generated__/DropERC1155/write/setMaxTotalSupply.d.ts.map +1 -0
  190. package/dist/types/extensions/erc1155/__generated__/DropERC1155/write/setSaleRecipientForToken.d.ts +87 -0
  191. package/dist/types/extensions/erc1155/__generated__/DropERC1155/write/setSaleRecipientForToken.d.ts.map +1 -0
  192. package/dist/types/extensions/erc1155/__generated__/DropERC1155/write/updateBatchBaseURI.d.ts +87 -0
  193. package/dist/types/extensions/erc1155/__generated__/DropERC1155/write/updateBatchBaseURI.d.ts.map +1 -0
  194. package/dist/types/extensions/erc1155/drops/write/updateMetadata.d.ts +37 -0
  195. package/dist/types/extensions/erc1155/drops/write/updateMetadata.d.ts.map +1 -0
  196. package/dist/types/pay/buyWithCrypto/getQuote.d.ts +6 -0
  197. package/dist/types/pay/buyWithCrypto/getQuote.d.ts.map +1 -1
  198. package/dist/types/pay/buyWithCrypto/getStatus.d.ts +1 -0
  199. package/dist/types/pay/buyWithCrypto/getStatus.d.ts.map +1 -1
  200. package/dist/types/pay/buyWithFiat/getQuote.d.ts +11 -1
  201. package/dist/types/pay/buyWithFiat/getQuote.d.ts.map +1 -1
  202. package/dist/types/pay/buyWithFiat/getStatus.d.ts +4 -0
  203. package/dist/types/pay/buyWithFiat/getStatus.d.ts.map +1 -1
  204. package/dist/types/react/core/hooks/contract/useContractEvents.d.ts +1 -1
  205. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts +1 -0
  206. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  207. package/dist/types/react/native/hooks/wallets/useActiveWalletChain.d.ts +1 -1
  208. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  209. package/dist/types/react/web/hooks/wallets/useActiveWalletChain.d.ts +1 -1
  210. package/dist/types/react/web/ui/ConnectWallet/ConnectButtonProps.d.ts +44 -4
  211. package/dist/types/react/web/ui/ConnectWallet/ConnectButtonProps.d.ts.map +1 -1
  212. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  213. package/dist/types/react/web/ui/ConnectWallet/MenuButton.d.ts +10 -0
  214. package/dist/types/react/web/ui/ConnectWallet/MenuButton.d.ts.map +1 -0
  215. package/dist/types/react/web/ui/ConnectWallet/icons/CoinsIcon.d.ts +6 -0
  216. package/dist/types/react/web/ui/ConnectWallet/icons/CoinsIcon.d.ts.map +1 -0
  217. package/dist/types/react/web/ui/ConnectWallet/icons/GenericWalletIcon.d.ts +6 -0
  218. package/dist/types/react/web/ui/ConnectWallet/icons/GenericWalletIcon.d.ts.map +1 -0
  219. package/dist/types/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.d.ts +6 -0
  220. package/dist/types/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.d.ts.map +1 -0
  221. package/dist/types/react/web/ui/ConnectWallet/icons/WalletConnectIcon.d.ts +6 -0
  222. package/dist/types/react/web/ui/ConnectWallet/icons/WalletConnectIcon.d.ts.map +1 -0
  223. package/dist/types/react/web/ui/ConnectWallet/screens/ManageWalletScreen.d.ts +14 -0
  224. package/dist/types/react/web/ui/ConnectWallet/screens/ManageWalletScreen.d.ts.map +1 -0
  225. package/dist/types/react/web/ui/ConnectWallet/screens/SignatureScreen.d.ts.map +1 -1
  226. package/dist/types/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.d.ts +12 -0
  227. package/dist/types/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.d.ts.map +1 -0
  228. package/dist/types/react/web/ui/ConnectWallet/screens/WalletLogoSpinner.d.ts +3 -0
  229. package/dist/types/react/web/ui/ConnectWallet/screens/WalletLogoSpinner.d.ts.map +1 -1
  230. package/dist/types/react/web/ui/ConnectWallet/screens/types.d.ts +1 -0
  231. package/dist/types/react/web/ui/ConnectWallet/screens/types.d.ts.map +1 -1
  232. package/dist/types/react/web/ui/ConnectWallet/useConnectModal.d.ts +1 -1
  233. package/dist/types/react/web/ui/components/CopyIcon.d.ts.map +1 -1
  234. package/dist/types/react/web/utils/canFitWideModal.d.ts +1 -1
  235. package/dist/types/react/web/wallets/in-app/InputSelectionUI.d.ts +1 -0
  236. package/dist/types/react/web/wallets/in-app/InputSelectionUI.d.ts.map +1 -1
  237. package/dist/types/react/web/wallets/shared/ConnectingScreen.d.ts.map +1 -1
  238. package/dist/types/transaction/read-contract.d.ts +1 -1
  239. package/dist/types/version.d.ts +1 -1
  240. package/dist/types/version.d.ts.map +1 -1
  241. package/dist/types/wallets/injected/index.d.ts.map +1 -1
  242. package/dist/types/wallets/interfaces/wallet.d.ts +21 -0
  243. package/dist/types/wallets/interfaces/wallet.d.ts.map +1 -1
  244. package/dist/types/wallets/wallet-connect/controller.d.ts.map +1 -1
  245. package/dist/types/wallets/wallet-connect/{consumer → receiver}/index.d.ts +7 -1
  246. package/dist/types/wallets/wallet-connect/receiver/index.d.ts.map +1 -0
  247. package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-raw-transaction.d.ts.map +1 -1
  248. package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-transaction.d.ts.map +1 -1
  249. package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-transaction.d.ts.map +1 -1
  250. package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-typed-data.d.ts.map +1 -1
  251. package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign.d.ts.map +1 -1
  252. package/dist/types/wallets/wallet-connect/receiver/request-handlers/switch-chain.d.ts +11 -0
  253. package/dist/types/wallets/wallet-connect/receiver/request-handlers/switch-chain.d.ts.map +1 -0
  254. package/dist/types/wallets/wallet-connect/{consumer → receiver}/session-proposal.d.ts +4 -1
  255. package/dist/types/wallets/wallet-connect/receiver/session-proposal.d.ts.map +1 -0
  256. package/dist/types/wallets/wallet-connect/receiver/session-request.d.ts.map +1 -0
  257. package/dist/types/wallets/wallet-connect/{consumer → receiver}/session-store.d.ts.map +1 -1
  258. package/dist/types/wallets/wallet-connect/{consumer → receiver}/types.d.ts +25 -3
  259. package/dist/types/wallets/wallet-connect/receiver/types.d.ts.map +1 -0
  260. package/dist/types/wallets/wallet-connect/{consumer → receiver}/utils.d.ts +1 -1
  261. package/dist/types/wallets/wallet-connect/receiver/utils.d.ts.map +1 -0
  262. package/package.json +3 -3
  263. package/src/exports/extensions/erc1155.ts +5 -0
  264. package/src/exports/wallets/wallet-connect.ts +2 -2
  265. package/src/extensions/erc1155/__generated__/BatchMintMetadata/events/BatchMetadataUpdate.ts +25 -0
  266. package/src/extensions/erc1155/__generated__/BatchMintMetadata/read/getBaseURICount.ts +74 -0
  267. package/src/extensions/erc1155/__generated__/BatchMintMetadata/read/getBatchIdAtIndex.ts +131 -0
  268. package/src/extensions/erc1155/__generated__/DropERC1155/write/freezeBatchBaseURI.ts +141 -0
  269. package/src/extensions/erc1155/__generated__/DropERC1155/write/setMaxTotalSupply.ts +155 -0
  270. package/src/extensions/erc1155/__generated__/DropERC1155/write/setSaleRecipientForToken.ts +157 -0
  271. package/src/extensions/erc1155/__generated__/DropERC1155/write/updateBatchBaseURI.ts +149 -0
  272. package/src/extensions/erc1155/drops/write/claimTo.test.ts +73 -0
  273. package/src/extensions/erc1155/drops/write/updateMetadata.test.ts +127 -0
  274. package/src/extensions/erc1155/drops/write/updateMetadata.ts +125 -0
  275. package/src/extensions/erc721/write/mintTo.test.ts +67 -0
  276. package/src/pay/buyWithCrypto/getQuote.ts +27 -27
  277. package/src/pay/buyWithCrypto/getStatus.ts +1 -0
  278. package/src/pay/buyWithFiat/getQuote.ts +33 -27
  279. package/src/pay/buyWithFiat/getStatus.ts +5 -0
  280. package/src/react/core/hooks/contract/useContractEvents.ts +1 -1
  281. package/src/react/core/hooks/transaction/useSendTransaction.ts +1 -0
  282. package/src/react/native/hooks/wallets/useActiveWalletChain.ts +1 -1
  283. package/src/react/web/hooks/transaction/useSendTransaction.tsx +1 -0
  284. package/src/react/web/hooks/wallets/useActiveWalletChain.ts +1 -1
  285. package/src/react/web/ui/ConnectWallet/ConnectButtonProps.ts +45 -4
  286. package/src/react/web/ui/ConnectWallet/Details.tsx +46 -145
  287. package/src/react/web/ui/ConnectWallet/MenuButton.tsx +55 -0
  288. package/src/react/web/ui/ConnectWallet/icons/CoinsIcon.tsx +46 -0
  289. package/src/react/web/ui/ConnectWallet/icons/{WalletIcon.tsx → GenericWalletIcon.tsx} +1 -1
  290. package/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx +32 -0
  291. package/src/react/web/ui/ConnectWallet/icons/WalletConnectIcon.tsx +22 -0
  292. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +3 -0
  293. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.tsx +2 -2
  294. package/src/react/web/ui/ConnectWallet/screens/ManageWalletScreen.tsx +122 -0
  295. package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.tsx +7 -1
  296. package/src/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.tsx +165 -0
  297. package/src/react/web/ui/ConnectWallet/screens/WalletLogoSpinner.tsx +30 -24
  298. package/src/react/web/ui/ConnectWallet/screens/types.ts +13 -0
  299. package/src/react/web/ui/ConnectWallet/useConnectModal.tsx +1 -1
  300. package/src/react/web/ui/components/CopyIcon.tsx +5 -6
  301. package/src/react/web/utils/canFitWideModal.ts +1 -1
  302. package/src/react/web/wallets/in-app/InputSelectionUI.tsx +3 -0
  303. package/src/react/web/wallets/shared/ConnectingScreen.tsx +2 -1
  304. package/src/transaction/read-contract.ts +1 -1
  305. package/src/version.ts +1 -1
  306. package/src/wallets/injected/index.ts +10 -0
  307. package/src/wallets/interfaces/wallet.ts +22 -0
  308. package/src/wallets/smart/smart-wallet-integration.test.ts +1 -2
  309. package/src/wallets/wallet-connect/controller.ts +6 -5
  310. package/src/wallets/wallet-connect/{consumer → receiver}/index.ts +29 -4
  311. package/src/wallets/wallet-connect/{consumer/consumer.test.ts → receiver/receiver.test.ts} +5 -0
  312. package/src/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign.ts +1 -1
  313. package/src/wallets/wallet-connect/receiver/request-handlers/switch-chain.ts +21 -0
  314. package/src/wallets/wallet-connect/{consumer → receiver}/session-proposal.test.ts +37 -18
  315. package/src/wallets/wallet-connect/{consumer → receiver}/session-proposal.ts +23 -15
  316. package/src/wallets/wallet-connect/{consumer → receiver}/session-request.test.ts +85 -0
  317. package/src/wallets/wallet-connect/{consumer → receiver}/session-request.ts +39 -1
  318. package/src/wallets/wallet-connect/{consumer → receiver}/types.ts +27 -3
  319. package/src/wallets/wallet-connect/{consumer → receiver}/utils.ts +2 -2
  320. package/dist/cjs/react/web/ui/ConnectWallet/icons/WalletIcon.js.map +0 -1
  321. package/dist/cjs/wallets/wallet-connect/consumer/index.js.map +0 -1
  322. package/dist/cjs/wallets/wallet-connect/consumer/session-proposal.js.map +0 -1
  323. package/dist/cjs/wallets/wallet-connect/consumer/session-request.js.map +0 -1
  324. package/dist/cjs/wallets/wallet-connect/consumer/types.js.map +0 -1
  325. package/dist/cjs/wallets/wallet-connect/consumer/utils.js.map +0 -1
  326. package/dist/esm/react/web/ui/ConnectWallet/icons/WalletIcon.js.map +0 -1
  327. package/dist/esm/wallets/wallet-connect/consumer/index.js.map +0 -1
  328. package/dist/esm/wallets/wallet-connect/consumer/session-proposal.js.map +0 -1
  329. package/dist/esm/wallets/wallet-connect/consumer/session-request.js.map +0 -1
  330. package/dist/esm/wallets/wallet-connect/consumer/types.js.map +0 -1
  331. package/dist/esm/wallets/wallet-connect/consumer/utils.js.map +0 -1
  332. package/dist/types/react/web/ui/ConnectWallet/icons/WalletIcon.d.ts +0 -6
  333. package/dist/types/react/web/ui/ConnectWallet/icons/WalletIcon.d.ts.map +0 -1
  334. package/dist/types/wallets/wallet-connect/consumer/index.d.ts.map +0 -1
  335. package/dist/types/wallets/wallet-connect/consumer/session-proposal.d.ts.map +0 -1
  336. package/dist/types/wallets/wallet-connect/consumer/session-request.d.ts.map +0 -1
  337. package/dist/types/wallets/wallet-connect/consumer/types.d.ts.map +0 -1
  338. package/dist/types/wallets/wallet-connect/consumer/utils.d.ts.map +0 -1
  339. /package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-raw-transaction.js +0 -0
  340. /package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-transaction.js +0 -0
  341. /package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-transaction.js +0 -0
  342. /package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-typed-data.js +0 -0
  343. /package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/session-store.js +0 -0
  344. /package/dist/cjs/wallets/wallet-connect/{consumer → receiver}/types.js +0 -0
  345. /package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-raw-transaction.js +0 -0
  346. /package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-transaction.js +0 -0
  347. /package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-transaction.js +0 -0
  348. /package/dist/esm/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-typed-data.js +0 -0
  349. /package/dist/esm/wallets/wallet-connect/{consumer → receiver}/session-store.js +0 -0
  350. /package/dist/esm/wallets/wallet-connect/{consumer → receiver}/types.js +0 -0
  351. /package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-raw-transaction.d.ts +0 -0
  352. /package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-transaction.d.ts +0 -0
  353. /package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-transaction.d.ts +0 -0
  354. /package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-typed-data.d.ts +0 -0
  355. /package/dist/types/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign.d.ts +0 -0
  356. /package/dist/types/wallets/wallet-connect/{consumer → receiver}/session-request.d.ts +0 -0
  357. /package/dist/types/wallets/wallet-connect/{consumer → receiver}/session-store.d.ts +0 -0
  358. /package/src/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-raw-transaction.ts +0 -0
  359. /package/src/wallets/wallet-connect/{consumer → receiver}/request-handlers/send-transaction.ts +0 -0
  360. /package/src/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-transaction.ts +0 -0
  361. /package/src/wallets/wallet-connect/{consumer → receiver}/request-handlers/sign-typed-data.ts +0 -0
  362. /package/src/wallets/wallet-connect/{consumer → receiver}/session-store.test.ts +0 -0
  363. /package/src/wallets/wallet-connect/{consumer → receiver}/session-store.ts +0 -0
@@ -0,0 +1,157 @@
1
+ import type { AbiParameterToPrimitiveType } from "abitype";
2
+ import type {
3
+ BaseTransactionOptions,
4
+ WithOverrides,
5
+ } from "../../../../../transaction/types.js";
6
+ import { prepareContractCall } from "../../../../../transaction/prepare-contract-call.js";
7
+ import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
8
+ import { once } from "../../../../../utils/promise/once.js";
9
+ import type { ThirdwebContract } from "../../../../../contract/contract.js";
10
+ import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
11
+
12
+ /**
13
+ * Represents the parameters for the "setSaleRecipientForToken" function.
14
+ */
15
+ export type SetSaleRecipientForTokenParams = WithOverrides<{
16
+ tokenId: AbiParameterToPrimitiveType<{ type: "uint256"; name: "_tokenId" }>;
17
+ saleRecipient: AbiParameterToPrimitiveType<{
18
+ type: "address";
19
+ name: "_saleRecipient";
20
+ }>;
21
+ }>;
22
+
23
+ export const FN_SELECTOR = "0x29c49b9b" as const;
24
+ const FN_INPUTS = [
25
+ {
26
+ type: "uint256",
27
+ name: "_tokenId",
28
+ },
29
+ {
30
+ type: "address",
31
+ name: "_saleRecipient",
32
+ },
33
+ ] as const;
34
+ const FN_OUTPUTS = [] as const;
35
+
36
+ /**
37
+ * Checks if the `setSaleRecipientForToken` method is supported by the given contract.
38
+ * @param contract The ThirdwebContract.
39
+ * @returns A promise that resolves to a boolean indicating if the `setSaleRecipientForToken` method is supported.
40
+ * @extension ERC1155
41
+ * @example
42
+ * ```ts
43
+ * import { isSetSaleRecipientForTokenSupported } from "thirdweb/extensions/erc1155";
44
+ *
45
+ * const supported = await isSetSaleRecipientForTokenSupported(contract);
46
+ * ```
47
+ */
48
+ export async function isSetSaleRecipientForTokenSupported(
49
+ contract: ThirdwebContract<any>,
50
+ ) {
51
+ return detectMethod({
52
+ contract,
53
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
54
+ });
55
+ }
56
+
57
+ /**
58
+ * Encodes the parameters for the "setSaleRecipientForToken" function.
59
+ * @param options - The options for the setSaleRecipientForToken function.
60
+ * @returns The encoded ABI parameters.
61
+ * @extension ERC1155
62
+ * @example
63
+ * ```ts
64
+ * import { encodeSetSaleRecipientForTokenParams } "thirdweb/extensions/erc1155";
65
+ * const result = encodeSetSaleRecipientForTokenParams({
66
+ * tokenId: ...,
67
+ * saleRecipient: ...,
68
+ * });
69
+ * ```
70
+ */
71
+ export function encodeSetSaleRecipientForTokenParams(
72
+ options: SetSaleRecipientForTokenParams,
73
+ ) {
74
+ return encodeAbiParameters(FN_INPUTS, [
75
+ options.tokenId,
76
+ options.saleRecipient,
77
+ ]);
78
+ }
79
+
80
+ /**
81
+ * Encodes the "setSaleRecipientForToken" function into a Hex string with its parameters.
82
+ * @param options - The options for the setSaleRecipientForToken function.
83
+ * @returns The encoded hexadecimal string.
84
+ * @extension ERC1155
85
+ * @example
86
+ * ```ts
87
+ * import { encodeSetSaleRecipientForToken } "thirdweb/extensions/erc1155";
88
+ * const result = encodeSetSaleRecipientForToken({
89
+ * tokenId: ...,
90
+ * saleRecipient: ...,
91
+ * });
92
+ * ```
93
+ */
94
+ export function encodeSetSaleRecipientForToken(
95
+ options: SetSaleRecipientForTokenParams,
96
+ ) {
97
+ // we do a "manual" concat here to avoid the overhead of the "concatHex" function
98
+ // we can do this because we know the specific formats of the values
99
+ return (FN_SELECTOR +
100
+ encodeSetSaleRecipientForTokenParams(options).slice(
101
+ 2,
102
+ )) as `${typeof FN_SELECTOR}${string}`;
103
+ }
104
+
105
+ /**
106
+ * Prepares a transaction to call the "setSaleRecipientForToken" function on the contract.
107
+ * @param options - The options for the "setSaleRecipientForToken" function.
108
+ * @returns A prepared transaction object.
109
+ * @extension ERC1155
110
+ * @example
111
+ * ```ts
112
+ * import { setSaleRecipientForToken } from "thirdweb/extensions/erc1155";
113
+ *
114
+ * const transaction = setSaleRecipientForToken({
115
+ * contract,
116
+ * tokenId: ...,
117
+ * saleRecipient: ...,
118
+ * overrides: {
119
+ * ...
120
+ * }
121
+ * });
122
+ *
123
+ * // Send the transaction
124
+ * ...
125
+ *
126
+ * ```
127
+ */
128
+ export function setSaleRecipientForToken(
129
+ options: BaseTransactionOptions<
130
+ | SetSaleRecipientForTokenParams
131
+ | {
132
+ asyncParams: () => Promise<SetSaleRecipientForTokenParams>;
133
+ }
134
+ >,
135
+ ) {
136
+ const asyncOptions = once(async () => {
137
+ return "asyncParams" in options ? await options.asyncParams() : options;
138
+ });
139
+
140
+ return prepareContractCall({
141
+ contract: options.contract,
142
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
143
+ params: async () => {
144
+ const resolvedOptions = await asyncOptions();
145
+ return [resolvedOptions.tokenId, resolvedOptions.saleRecipient] as const;
146
+ },
147
+ value: async () => (await asyncOptions()).overrides?.value,
148
+ accessList: async () => (await asyncOptions()).overrides?.accessList,
149
+ gas: async () => (await asyncOptions()).overrides?.gas,
150
+ gasPrice: async () => (await asyncOptions()).overrides?.gasPrice,
151
+ maxFeePerGas: async () => (await asyncOptions()).overrides?.maxFeePerGas,
152
+ maxPriorityFeePerGas: async () =>
153
+ (await asyncOptions()).overrides?.maxPriorityFeePerGas,
154
+ nonce: async () => (await asyncOptions()).overrides?.nonce,
155
+ extraGas: async () => (await asyncOptions()).overrides?.extraGas,
156
+ });
157
+ }
@@ -0,0 +1,149 @@
1
+ import type { AbiParameterToPrimitiveType } from "abitype";
2
+ import type {
3
+ BaseTransactionOptions,
4
+ WithOverrides,
5
+ } from "../../../../../transaction/types.js";
6
+ import { prepareContractCall } from "../../../../../transaction/prepare-contract-call.js";
7
+ import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
8
+ import { once } from "../../../../../utils/promise/once.js";
9
+ import type { ThirdwebContract } from "../../../../../contract/contract.js";
10
+ import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
11
+
12
+ /**
13
+ * Represents the parameters for the "updateBatchBaseURI" function.
14
+ */
15
+ export type UpdateBatchBaseURIParams = WithOverrides<{
16
+ index: AbiParameterToPrimitiveType<{ type: "uint256"; name: "_index" }>;
17
+ uri: AbiParameterToPrimitiveType<{ type: "string"; name: "_uri" }>;
18
+ }>;
19
+
20
+ export const FN_SELECTOR = "0xde903ddd" as const;
21
+ const FN_INPUTS = [
22
+ {
23
+ type: "uint256",
24
+ name: "_index",
25
+ },
26
+ {
27
+ type: "string",
28
+ name: "_uri",
29
+ },
30
+ ] as const;
31
+ const FN_OUTPUTS = [] as const;
32
+
33
+ /**
34
+ * Checks if the `updateBatchBaseURI` method is supported by the given contract.
35
+ * @param contract The ThirdwebContract.
36
+ * @returns A promise that resolves to a boolean indicating if the `updateBatchBaseURI` method is supported.
37
+ * @extension ERC1155
38
+ * @example
39
+ * ```ts
40
+ * import { isUpdateBatchBaseURISupported } from "thirdweb/extensions/erc1155";
41
+ *
42
+ * const supported = await isUpdateBatchBaseURISupported(contract);
43
+ * ```
44
+ */
45
+ export async function isUpdateBatchBaseURISupported(
46
+ contract: ThirdwebContract<any>,
47
+ ) {
48
+ return detectMethod({
49
+ contract,
50
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
51
+ });
52
+ }
53
+
54
+ /**
55
+ * Encodes the parameters for the "updateBatchBaseURI" function.
56
+ * @param options - The options for the updateBatchBaseURI function.
57
+ * @returns The encoded ABI parameters.
58
+ * @extension ERC1155
59
+ * @example
60
+ * ```ts
61
+ * import { encodeUpdateBatchBaseURIParams } "thirdweb/extensions/erc1155";
62
+ * const result = encodeUpdateBatchBaseURIParams({
63
+ * index: ...,
64
+ * uri: ...,
65
+ * });
66
+ * ```
67
+ */
68
+ export function encodeUpdateBatchBaseURIParams(
69
+ options: UpdateBatchBaseURIParams,
70
+ ) {
71
+ return encodeAbiParameters(FN_INPUTS, [options.index, options.uri]);
72
+ }
73
+
74
+ /**
75
+ * Encodes the "updateBatchBaseURI" function into a Hex string with its parameters.
76
+ * @param options - The options for the updateBatchBaseURI function.
77
+ * @returns The encoded hexadecimal string.
78
+ * @extension ERC1155
79
+ * @example
80
+ * ```ts
81
+ * import { encodeUpdateBatchBaseURI } "thirdweb/extensions/erc1155";
82
+ * const result = encodeUpdateBatchBaseURI({
83
+ * index: ...,
84
+ * uri: ...,
85
+ * });
86
+ * ```
87
+ */
88
+ export function encodeUpdateBatchBaseURI(options: UpdateBatchBaseURIParams) {
89
+ // we do a "manual" concat here to avoid the overhead of the "concatHex" function
90
+ // we can do this because we know the specific formats of the values
91
+ return (FN_SELECTOR +
92
+ encodeUpdateBatchBaseURIParams(options).slice(
93
+ 2,
94
+ )) as `${typeof FN_SELECTOR}${string}`;
95
+ }
96
+
97
+ /**
98
+ * Prepares a transaction to call the "updateBatchBaseURI" function on the contract.
99
+ * @param options - The options for the "updateBatchBaseURI" function.
100
+ * @returns A prepared transaction object.
101
+ * @extension ERC1155
102
+ * @example
103
+ * ```ts
104
+ * import { updateBatchBaseURI } from "thirdweb/extensions/erc1155";
105
+ *
106
+ * const transaction = updateBatchBaseURI({
107
+ * contract,
108
+ * index: ...,
109
+ * uri: ...,
110
+ * overrides: {
111
+ * ...
112
+ * }
113
+ * });
114
+ *
115
+ * // Send the transaction
116
+ * ...
117
+ *
118
+ * ```
119
+ */
120
+ export function updateBatchBaseURI(
121
+ options: BaseTransactionOptions<
122
+ | UpdateBatchBaseURIParams
123
+ | {
124
+ asyncParams: () => Promise<UpdateBatchBaseURIParams>;
125
+ }
126
+ >,
127
+ ) {
128
+ const asyncOptions = once(async () => {
129
+ return "asyncParams" in options ? await options.asyncParams() : options;
130
+ });
131
+
132
+ return prepareContractCall({
133
+ contract: options.contract,
134
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
135
+ params: async () => {
136
+ const resolvedOptions = await asyncOptions();
137
+ return [resolvedOptions.index, resolvedOptions.uri] as const;
138
+ },
139
+ value: async () => (await asyncOptions()).overrides?.value,
140
+ accessList: async () => (await asyncOptions()).overrides?.accessList,
141
+ gas: async () => (await asyncOptions()).overrides?.gas,
142
+ gasPrice: async () => (await asyncOptions()).overrides?.gasPrice,
143
+ maxFeePerGas: async () => (await asyncOptions()).overrides?.maxFeePerGas,
144
+ maxPriorityFeePerGas: async () =>
145
+ (await asyncOptions()).overrides?.maxPriorityFeePerGas,
146
+ nonce: async () => (await asyncOptions()).overrides?.nonce,
147
+ extraGas: async () => (await asyncOptions()).overrides?.extraGas,
148
+ });
149
+ }
@@ -0,0 +1,73 @@
1
+ import { beforeEach, describe, expect, it } from "vitest";
2
+ import { ANVIL_CHAIN } from "~test/chains.js";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
5
+
6
+ import { NATIVE_TOKEN_ADDRESS } from "../../../../constants/addresses.js";
7
+ import {
8
+ type ThirdwebContract,
9
+ getContract,
10
+ } from "../../../../contract/contract.js";
11
+ import { deployERC1155Contract } from "../../../../extensions/prebuilts/deploy-erc1155.js";
12
+ import { sendAndConfirmTransaction } from "../../../../transaction/actions/send-and-confirm-transaction.js";
13
+ import { totalSupply } from "../../__generated__/IERC1155/read/totalSupply.js";
14
+ import { lazyMint } from "../../write/lazyMint.js";
15
+ import { claimTo } from "./claimTo.js";
16
+ import { setClaimConditions } from "./setClaimConditions.js";
17
+
18
+ let contract: ThirdwebContract;
19
+ const account = TEST_ACCOUNT_A;
20
+ const client = TEST_CLIENT;
21
+ const chain = ANVIL_CHAIN;
22
+
23
+ describe("erc1155 claimTo extension", () => {
24
+ beforeEach(async () => {
25
+ const address = await deployERC1155Contract({
26
+ client,
27
+ chain,
28
+ account,
29
+ type: "DropERC1155",
30
+ params: {
31
+ name: "Edition Drop",
32
+ },
33
+ });
34
+ contract = getContract({
35
+ address,
36
+ client,
37
+ chain,
38
+ });
39
+
40
+ const transaction = lazyMint({ contract, nfts: [{ name: "token 0" }] });
41
+ await sendAndConfirmTransaction({ transaction, account });
42
+
43
+ const setClaimTx = setClaimConditions({
44
+ contract,
45
+ tokenId: 0n,
46
+ phases: [
47
+ {
48
+ maxClaimableSupply: 100n,
49
+ maxClaimablePerWallet: 100n,
50
+ currencyAddress: NATIVE_TOKEN_ADDRESS,
51
+ price: 0.1,
52
+ startTime: new Date(),
53
+ },
54
+ ],
55
+ });
56
+
57
+ await sendAndConfirmTransaction({ transaction: setClaimTx, account });
58
+ });
59
+
60
+ it("should claim the nft", async () => {
61
+ const transaction = claimTo({
62
+ contract,
63
+ tokenId: 0n,
64
+ quantity: 1n,
65
+ to: account.address,
66
+ });
67
+
68
+ await sendAndConfirmTransaction({ transaction, account });
69
+
70
+ const supplyCount = await totalSupply({ contract, id: 0n });
71
+ expect(supplyCount).toBe(1n);
72
+ });
73
+ });
@@ -0,0 +1,127 @@
1
+ import { beforeEach, describe, expect, it } from "vitest";
2
+ import { ANVIL_CHAIN } from "~test/chains.js";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
5
+
6
+ import {
7
+ type ThirdwebContract,
8
+ getContract,
9
+ } from "../../../../contract/contract.js";
10
+ import { deployERC1155Contract } from "../../../../extensions/prebuilts/deploy-erc1155.js";
11
+ import { sendAndConfirmTransaction } from "../../../../transaction/actions/send-and-confirm-transaction.js";
12
+ import type { NFTInput } from "../../../../utils/nft/parseNft.js";
13
+ import { getNFT } from "../../read/getNFT.js";
14
+ import { getNFTs } from "../../read/getNFTs.js";
15
+ import { lazyMint } from "../../write/lazyMint.js";
16
+ import { getUpdateMetadataParams, updateMetadata } from "./updateMetadata.js";
17
+
18
+ let contract: ThirdwebContract;
19
+ const account = TEST_ACCOUNT_A;
20
+ const client = TEST_CLIENT;
21
+ const chain = ANVIL_CHAIN;
22
+
23
+ describe.runIf(process.env.TW_SECRET_KEY)("erc1155: updateMetadata", () => {
24
+ beforeEach(async () => {
25
+ const address = await deployERC1155Contract({
26
+ client,
27
+ chain,
28
+ account,
29
+ type: "DropERC1155",
30
+ params: {
31
+ name: "EditionDrop",
32
+ },
33
+ });
34
+ contract = getContract({
35
+ address,
36
+ client,
37
+ chain,
38
+ });
39
+ });
40
+
41
+ it("should update the metadata for the selected token | case 1", async () => {
42
+ const metadatas: NFTInput[] = [
43
+ { name: "token 0" },
44
+ { name: "token 1" },
45
+ { name: "token 2" },
46
+ ];
47
+
48
+ const lazyMintTx = lazyMint({ contract, nfts: metadatas });
49
+ await sendAndConfirmTransaction({ transaction: lazyMintTx, account });
50
+
51
+ const transaction = updateMetadata({
52
+ contract,
53
+ targetTokenId: 0n,
54
+ newMetadata: { name: "token 0 - updated" },
55
+ client,
56
+ });
57
+ await sendAndConfirmTransaction({ transaction, account });
58
+ const nfts = await getNFTs({ contract });
59
+ expect(nfts[0]?.metadata.name).toBe("token 0 - updated");
60
+
61
+ // The other tokens should not change
62
+ expect(nfts[1]?.metadata.name).toBe("token 1");
63
+ expect(nfts[2]?.metadata.name).toBe("token 2");
64
+ });
65
+
66
+ it("should update the metadata for the selected token | case 2", async () => {
67
+ const nftBatch1: NFTInput[] = [
68
+ { name: "token 0" },
69
+ { name: "token 1" },
70
+ { name: "token 2" },
71
+ ];
72
+
73
+ const batch1 = lazyMint({ contract, nfts: nftBatch1 });
74
+ await sendAndConfirmTransaction({ transaction: batch1, account });
75
+
76
+ const nftBatch2: NFTInput[] = [
77
+ { name: "token 3" },
78
+ { name: "token 4" },
79
+ { name: "token 5" },
80
+ ];
81
+ const batch2 = lazyMint({ contract, nfts: nftBatch2 });
82
+ await sendAndConfirmTransaction({ transaction: batch2, account });
83
+
84
+ // firstly, update the token in the first batch
85
+ const transaction1 = updateMetadata({
86
+ contract,
87
+ targetTokenId: 0n,
88
+ newMetadata: { name: "token 0 - updated" },
89
+ client,
90
+ });
91
+ await sendAndConfirmTransaction({ transaction: transaction1, account });
92
+ const nft = await getNFT({ contract, tokenId: 0n });
93
+ expect(nft.metadata.name).toBe("token 0 - updated");
94
+
95
+ const tokenUriAfterUpdatedFirstTime = nft.tokenURI;
96
+
97
+ // Update token in the second batch
98
+ const transaction2 = updateMetadata({
99
+ contract,
100
+ targetTokenId: 5n,
101
+ newMetadata: { name: "token 5 - updated" },
102
+ client,
103
+ });
104
+ await sendAndConfirmTransaction({ transaction: transaction2, account });
105
+
106
+ const allNfts = await getNFTs({ contract });
107
+ expect(allNfts[0]?.metadata.name).toBe("token 0 - updated");
108
+ expect(allNfts.at(-1)?.metadata.name).toBe("token 5 - updated");
109
+
110
+ // The tokenUri of tokenId#0 after the second updateMetadata should still be the same
111
+ // since it belong to another batch
112
+ expect(allNfts[0]?.tokenURI).toBe(tokenUriAfterUpdatedFirstTime);
113
+ });
114
+
115
+ it("should throw error if there's no batch", async () => {
116
+ await expect(() =>
117
+ getUpdateMetadataParams({
118
+ contract,
119
+ targetTokenId: 0n,
120
+ newMetadata: { name: "token 0 - updated" },
121
+ client,
122
+ }),
123
+ ).rejects.toThrowError(
124
+ "No base URI set. Please set a base URI before updating metadata",
125
+ );
126
+ });
127
+ });
@@ -0,0 +1,125 @@
1
+ import { getBaseURICount } from "../../../erc721/__generated__/IBatchMintMetadata/read/getBaseURICount.js";
2
+ import {
3
+ type UpdateBatchBaseURIParams,
4
+ updateBatchBaseURI,
5
+ } from "../../__generated__/DropERC1155/write/updateBatchBaseURI.js";
6
+
7
+ import type { ThirdwebClient } from "../../../../client/client.js";
8
+ import type { BaseTransactionOptions } from "../../../../transaction/types.js";
9
+ import type { NFT, NFTInput } from "../../../../utils/nft/parseNft.js";
10
+
11
+ export type UpdateMetadataParams = {
12
+ targetTokenId: bigint;
13
+ newMetadata: NFTInput;
14
+ client: ThirdwebClient;
15
+ };
16
+
17
+ /**
18
+ * @internal
19
+ */
20
+ export async function getUpdateMetadataParams(
21
+ options: BaseTransactionOptions<UpdateMetadataParams>,
22
+ ): Promise<UpdateBatchBaseURIParams> {
23
+ const { contract, targetTokenId, newMetadata, client } = options;
24
+ const batchCount = await getBaseURICount(options);
25
+ if (batchCount === 0n) {
26
+ throw new Error(
27
+ "No base URI set. Please set a base URI before updating metadata",
28
+ );
29
+ }
30
+
31
+ // Look for the batchId & determine the start + end tokenId of the batch
32
+ const [{ getBatchIdAtIndex }, { getNFT }] = await Promise.all([
33
+ import("../../__generated__/BatchMintMetadata/read/getBatchIdAtIndex.js"),
34
+ import("../../read/getNFT.js"),
35
+ ]);
36
+
37
+ let startTokenId = 0n;
38
+ let endTokenId = 0n;
39
+ let batchIndex = 0n;
40
+ for (let i = 0n; i < batchCount; i += 1n) {
41
+ batchIndex = i;
42
+ endTokenId = await getBatchIdAtIndex({ contract, index: batchIndex });
43
+ if (endTokenId > targetTokenId) {
44
+ break;
45
+ }
46
+ startTokenId = endTokenId;
47
+ }
48
+
49
+ const range = Array.from(
50
+ { length: Number(endTokenId - startTokenId) },
51
+ (_, k) => BigInt(k) + startTokenId,
52
+ );
53
+
54
+ const currentMetadatas = await Promise.all(
55
+ range.map((id) => getNFT({ contract, tokenId: id })),
56
+ );
57
+
58
+ // Abort if any of the items failed to load
59
+ if (currentMetadatas.some((item) => item === undefined || !item.tokenURI)) {
60
+ throw new Error(
61
+ `Failed to load all ${range.length} items from batchIndex: ${batchIndex}`,
62
+ );
63
+ }
64
+
65
+ const newMetadatas: NFTInput[] = [];
66
+ for (let i = 0; i < currentMetadatas.length; i++) {
67
+ const { id, metadata } = currentMetadatas[i] as NFT;
68
+ if (targetTokenId === id) {
69
+ newMetadatas.push(newMetadata);
70
+ } else {
71
+ newMetadatas.push(metadata);
72
+ }
73
+ }
74
+
75
+ const { uploadOrExtractURIs } = await import("../../../../utils/ipfs.js");
76
+ const batchOfUris = await uploadOrExtractURIs(
77
+ newMetadatas,
78
+ client,
79
+ Number(startTokenId),
80
+ );
81
+
82
+ if (!batchOfUris || !batchOfUris.length || !batchOfUris[0]) {
83
+ throw new Error("Failed to upload batch of new metadatas");
84
+ }
85
+
86
+ const baseUri = batchOfUris[0].substring(0, batchOfUris[0].lastIndexOf("/"));
87
+
88
+ // IMPORTANT: The new ipfs URI must have the trailing slash at the end
89
+ // this is required by the Drop contract
90
+ const uri = `${baseUri}/`;
91
+
92
+ return { index: batchIndex, uri };
93
+ }
94
+
95
+ /**
96
+ * Update the metadata of the single token in an Edition Drop (DropERC1155) collection
97
+ * For Edition contracts, use `setTokenURI`
98
+ * @param options
99
+ * @returns the prepared transaction
100
+ * @extension ERC1155
101
+ * @example
102
+ * ```ts
103
+ * import { updateMetadata } from "thirdweb/extensions/erc1155";
104
+ *
105
+ * const transaction = updateMetadata({
106
+ * contract,
107
+ * targetTokenId: 0n,
108
+ * newMetadata: {
109
+ * name: "this is the new nft name",
110
+ * description: "...",
111
+ * image: "new image uri"
112
+ * // ...
113
+ * }
114
+ * });
115
+ * ```
116
+ */
117
+ export function updateMetadata(
118
+ options: BaseTransactionOptions<UpdateMetadataParams>,
119
+ ) {
120
+ const { contract } = options;
121
+ return updateBatchBaseURI({
122
+ contract,
123
+ asyncParams: async () => getUpdateMetadataParams(options),
124
+ });
125
+ }
@@ -0,0 +1,67 @@
1
+ import { beforeEach, describe, expect, it } from "vitest";
2
+ import { ANVIL_CHAIN } from "~test/chains.js";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
5
+
6
+ import {
7
+ type ThirdwebContract,
8
+ getContract,
9
+ } from "../../../contract/contract.js";
10
+ import { deployERC721Contract } from "../../../extensions/prebuilts/deploy-erc721.js";
11
+ import { sendAndConfirmTransaction } from "../../../transaction/actions/send-and-confirm-transaction.js";
12
+ import { tokenURI } from "../__generated__/IERC721A/read/tokenURI.js";
13
+ import { getNFT } from "../read/getNFT.js";
14
+ import { mintTo } from "./mintTo.js";
15
+
16
+ let contract: ThirdwebContract;
17
+ const account = TEST_ACCOUNT_A;
18
+ const client = TEST_CLIENT;
19
+ const chain = ANVIL_CHAIN;
20
+
21
+ describe("erc721 mintTo extension", () => {
22
+ beforeEach(async () => {
23
+ const address = await deployERC721Contract({
24
+ client,
25
+ chain,
26
+ account,
27
+ type: "TokenERC721",
28
+ params: {
29
+ name: "NFTDrop",
30
+ },
31
+ });
32
+ contract = getContract({
33
+ address,
34
+ client,
35
+ chain,
36
+ });
37
+ });
38
+
39
+ it("should mint an nft when passed an object", async () => {
40
+ const transaction = mintTo({
41
+ contract,
42
+ nft: { name: "token 0" },
43
+ to: account.address,
44
+ });
45
+ await sendAndConfirmTransaction({
46
+ transaction,
47
+ account,
48
+ });
49
+
50
+ const nft = await getNFT({ contract, tokenId: 0n });
51
+ expect(nft.metadata.name).toBe("token 0");
52
+ });
53
+
54
+ it("should mint an nft when passed a string", async () => {
55
+ const transaction = mintTo({
56
+ contract,
57
+ nft: "ipfs://fake-token-uri",
58
+ to: account.address,
59
+ });
60
+ await sendAndConfirmTransaction({
61
+ transaction,
62
+ account,
63
+ });
64
+ const _uri = await tokenURI({ contract, tokenId: 0n });
65
+ expect(_uri).toBe("ipfs://fake-token-uri");
66
+ });
67
+ });