@0xsequence/marketplace-sdk 0.8.12 → 0.10.0

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 (487) hide show
  1. package/.storybook/main.ts +63 -0
  2. package/.storybook/preview.ts +24 -0
  3. package/.storybook/vitest.setup.ts +6 -0
  4. package/CHANGELOG.md +158 -21
  5. package/dist/{CartIcon-Bll1rbxv.js → CalendarIcon-CqsuAuCm.js} +30 -77
  6. package/dist/CalendarIcon-CqsuAuCm.js.map +1 -0
  7. package/dist/{types-BIJOaL4j.d.ts → CollectibleCard-Dd-CG6dE.d.ts} +11 -7
  8. package/dist/InfoIcon-v0w_Lu7t.js +53 -0
  9. package/dist/InfoIcon-v0w_Lu7t.js.map +1 -0
  10. package/dist/_internal-C75gOSNo.js +14 -0
  11. package/dist/_internal-C75gOSNo.js.map +1 -0
  12. package/dist/actionModal-CMUeVsFX.js +116 -0
  13. package/dist/actionModal-CMUeVsFX.js.map +1 -0
  14. package/dist/{alien_swap-B_76IMma.js → alien_swap-CYv6YlOF.js} +1 -1
  15. package/dist/{alien_swap-B_76IMma.js.map → alien_swap-CYv6YlOF.js.map} +1 -1
  16. package/dist/{api-1KFxYh7o.js → api-BiMGqWdz.js} +79 -87
  17. package/dist/api-BiMGqWdz.js.map +1 -0
  18. package/dist/{aqua-xyz-CMN_TFY5.js → aqua-xyz-Bzn5baeH.js} +1 -1
  19. package/dist/{aqua-xyz-CMN_TFY5.js.map → aqua-xyz-Bzn5baeH.js.map} +1 -1
  20. package/dist/{aura-Cye_TuHj.js → aura-DzIWh8WT.js} +1 -1
  21. package/dist/{aura-Cye_TuHj.js.map → aura-DzIWh8WT.js.map} +1 -1
  22. package/dist/base-DqaJPvfN.js +22 -0
  23. package/dist/base-DqaJPvfN.js.map +1 -0
  24. package/dist/{blur-DWDMyMpK.js → blur-DSH-Cbpj.js} +1 -1
  25. package/dist/{blur-DWDMyMpK.js.map → blur-DSH-Cbpj.js.map} +1 -1
  26. package/dist/{builder-api-BQvzykoU.js → builder-api-BFuZNOaN.js} +2 -2
  27. package/dist/{builder-api-BQvzykoU.js.map → builder-api-BFuZNOaN.js.map} +1 -1
  28. package/dist/{builder.gen-CxP9NT1p.js → builder.gen-B9wR2nvF.js} +1 -1
  29. package/dist/builder.gen-B9wR2nvF.js.map +1 -0
  30. package/dist/{coinbase-ByA_XRB0.js → coinbase-Df8URNxq.js} +1 -1
  31. package/dist/{coinbase-ByA_XRB0.js.map → coinbase-Df8URNxq.js.map} +1 -1
  32. package/dist/{sdk-config-DJzxVPld.d.ts → create-config-DKJ-F0jc.d.ts} +458 -86
  33. package/dist/{wagmi-DRctYEk6.js → create-config-fQ-jbJD1.js} +33 -16
  34. package/dist/create-config-fQ-jbJD1.js.map +1 -0
  35. package/dist/{element-b77CyXIZ.js → element-Cx6uJu5N.js} +1 -1
  36. package/dist/{element-b77CyXIZ.js.map → element-Cx6uJu5N.js.map} +1 -1
  37. package/dist/{foundation-DbOrKP9Y.js → foundation-D6U4aRLN.js} +1 -1
  38. package/dist/{foundation-DbOrKP9Y.js.map → foundation-D6U4aRLN.js.map} +1 -1
  39. package/dist/get-provider-CYYHfrlg.js +10 -0
  40. package/dist/get-provider-CYYHfrlg.js.map +1 -0
  41. package/dist/get-query-client-D19vvfJo.js +23 -0
  42. package/dist/get-query-client-D19vvfJo.js.map +1 -0
  43. package/dist/hooks-4pxIbLbM.js +4044 -0
  44. package/dist/hooks-4pxIbLbM.js.map +1 -0
  45. package/dist/{index-1bezgsFq.d.ts → index-136YrWDH.d.ts} +929 -255
  46. package/dist/{index-D5v5iluA.d.ts → index-BAhaEfqY.d.ts} +1 -1
  47. package/dist/index-BKBin-rq.d.ts +979 -0
  48. package/dist/index-BUWB_RXp.d.ts +3144 -0
  49. package/dist/{index-Cl7PQOGu.d.ts → index-BhVFc2rX.d.ts} +28 -25
  50. package/dist/{index-DXMfTZ1F.d.ts → index-C5aqo8xu.d.ts} +1 -1
  51. package/dist/{index-BIMIpDiI.d.ts → index-CKrYP7ot.d.ts} +74 -103
  52. package/dist/{index-BEYefG1G.d.ts → index-CUwMH7Ht.d.ts} +5 -5
  53. package/dist/{index-BjIwVzc4.d.ts → index-Cu70Lw-w.d.ts} +238 -238
  54. package/dist/index.css +427 -1
  55. package/dist/index.d.ts +8 -10
  56. package/dist/index.js +15 -11
  57. package/dist/{looks-rare-C1VqNcSM.js → looks-rare-ChBRBY-p.js} +1 -1
  58. package/dist/{looks-rare-C1VqNcSM.js.map → looks-rare-ChBRBY-p.js.map} +1 -1
  59. package/dist/{magic-eden-ea_AGCZr.js → magic-eden-D5U7N1xL.js} +1 -1
  60. package/dist/{magic-eden-ea_AGCZr.js.map → magic-eden-D5U7N1xL.js.map} +1 -1
  61. package/dist/{manifold-8y8J2sjT.js → manifold-CtLF52zU.js} +1 -1
  62. package/dist/{manifold-8y8J2sjT.js.map → manifold-CtLF52zU.js.map} +1 -1
  63. package/dist/{marketplace-nwnZv9Cb.js → marketplace-DmFiyBoS.js} +1 -1
  64. package/dist/{marketplace-nwnZv9Cb.js.map → marketplace-DmFiyBoS.js.map} +1 -1
  65. package/dist/{marketplace-logos-CSeGcPW4.js → marketplace-logos-Cd6W-qOq.js} +21 -21
  66. package/dist/{marketplace-logos-CSeGcPW4.js.map → marketplace-logos-Cd6W-qOq.js.map} +1 -1
  67. package/dist/{marketplace.gen-Dqk8vRmD.js → marketplace.gen-HpnpL5xU.js} +12 -3
  68. package/dist/marketplace.gen-HpnpL5xU.js.map +1 -0
  69. package/dist/{marketplaceConfig-D2MYFqll.js → marketplaceConfig-GQTTmihy.js} +3 -3
  70. package/dist/marketplaceConfig-GQTTmihy.js.map +1 -0
  71. package/dist/{mintify-LA68TzWg.js → mintify-Bi3Bce68.js} +1 -1
  72. package/dist/{mintify-LA68TzWg.js.map → mintify-Bi3Bce68.js.map} +1 -1
  73. package/dist/network-CGD0oKtS.js +15 -0
  74. package/dist/network-CGD0oKtS.js.map +1 -0
  75. package/dist/{nftx-D3Tc8nzd.js → nftx-BDQZjtkX.js} +1 -1
  76. package/dist/{nftx-D3Tc8nzd.js.map → nftx-BDQZjtkX.js.map} +1 -1
  77. package/dist/{okx-hbqg6oIJ.js → okx-D4meadLe.js} +1 -1
  78. package/dist/{okx-hbqg6oIJ.js.map → okx-D4meadLe.js.map} +1 -1
  79. package/dist/{open-sea-BccuK8-t.js → open-sea-DN0hgfVw.js} +1 -1
  80. package/dist/{open-sea-BccuK8-t.js.map → open-sea-DN0hgfVw.js.map} +1 -1
  81. package/dist/options-BBBR8u_4.js +0 -0
  82. package/dist/{primary-sale-Cw95phYC.js → primary-sale-CmWxSfFQ.js} +279 -279
  83. package/dist/primary-sale-CmWxSfFQ.js.map +1 -0
  84. package/dist/provider-DPGUA10G.js +125 -0
  85. package/dist/provider-DPGUA10G.js.map +1 -0
  86. package/dist/queries-Ce_2othB.js +757 -0
  87. package/dist/queries-Ce_2othB.js.map +1 -0
  88. package/dist/{rarible-BgTwwj9g.js → rarible-B0xlD88A.js} +1 -1
  89. package/dist/{rarible-BgTwwj9g.js.map → rarible-B0xlD88A.js.map} +1 -1
  90. package/dist/react/_internal/api/index.d.ts +2 -4
  91. package/dist/react/_internal/api/index.js +9 -6
  92. package/dist/react/_internal/databeat/index.d.ts +2 -73
  93. package/dist/react/_internal/databeat/index.js +4 -21
  94. package/dist/react/_internal/index.d.ts +2 -7
  95. package/dist/react/_internal/index.js +13 -8
  96. package/dist/react/_internal/wagmi/index.d.ts +2 -4
  97. package/dist/react/_internal/wagmi/index.js +6 -4
  98. package/dist/react/hooks/index.d.ts +13 -17
  99. package/dist/react/hooks/index.js +25 -21
  100. package/dist/react/hooks/options/index.d.ts +3 -5
  101. package/dist/react/hooks/options/index.js +15 -10
  102. package/dist/react/index.d.ts +13 -40
  103. package/dist/react/index.js +30 -21
  104. package/dist/react/queries/index.d.ts +9 -8
  105. package/dist/react/queries/index.js +22 -17
  106. package/dist/react/ssr/index.d.ts +7 -9
  107. package/dist/react/ssr/index.js +13 -8
  108. package/dist/react/ssr/index.js.map +1 -1
  109. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +3 -9
  110. package/dist/react/ui/components/marketplace-collectible-card/index.js +29 -20
  111. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -7
  112. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +13 -8
  113. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  114. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  115. package/dist/react/ui/icons/index.js +14 -10
  116. package/dist/react/ui/index.d.ts +3 -9
  117. package/dist/react/ui/index.js +29 -20
  118. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +5 -5
  119. package/dist/react/ui/modals/_internal/components/actionModal/index.js +25 -20
  120. package/dist/{react-BG7o4PId.js → react-DP0M2Wfm.js} +4919 -7839
  121. package/dist/react-DP0M2Wfm.js.map +1 -0
  122. package/dist/{react-BbHBl6gg.css → react-DeDyTgo7.css} +1 -1
  123. package/dist/{react-BbHBl6gg.css.map → react-DeDyTgo7.css.map} +1 -1
  124. package/dist/{sequence-Do3kzb4J.js → sequence-BIrOVRXO.js} +1 -1
  125. package/dist/{sequence-Do3kzb4J.js.map → sequence-BIrOVRXO.js.map} +1 -1
  126. package/dist/{sudo-swap-B6vPKxBz.js → sudo-swap-BPMon-M5.js} +1 -1
  127. package/dist/{sudo-swap-B6vPKxBz.js.map → sudo-swap-BPMon-M5.js.map} +1 -1
  128. package/dist/{super-rare-eCm1SE6O.js → super-rare-kPN6Ua8i.js} +1 -1
  129. package/dist/{super-rare-eCm1SE6O.js.map → super-rare-kPN6Ua8i.js.map} +1 -1
  130. package/dist/{token-CO5llIla.js → token-CHSBPYVG.js} +1540 -761
  131. package/dist/token-CHSBPYVG.js.map +1 -0
  132. package/dist/{transaction-CcVViHEL.js → transaction-CnctdNzS.js} +3 -21
  133. package/dist/transaction-CnctdNzS.js.map +1 -0
  134. package/dist/types/index.d.ts +2 -3
  135. package/dist/types/index.js +3 -3
  136. package/dist/{types-DwWE6xOF.js → types-Yw2ywj6j.js} +1 -1
  137. package/dist/types-Yw2ywj6j.js.map +1 -0
  138. package/dist/utils/abi/index.d.ts +5 -5
  139. package/dist/utils/abi/index.js +5 -5
  140. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  141. package/dist/utils/abi/marketplace/index.js +1 -1
  142. package/dist/utils/abi/primary-sale/index.d.ts +1 -1
  143. package/dist/utils/abi/primary-sale/index.js +1 -1
  144. package/dist/utils/abi/token/index.d.ts +2 -2
  145. package/dist/utils/abi/token/index.js +2 -2
  146. package/dist/utils/index.d.ts +7 -8
  147. package/dist/utils/index.js +13 -10
  148. package/dist/{utils-BFdxaToy.js → utils-9RXDgcBl.js} +86 -93
  149. package/dist/utils-9RXDgcBl.js.map +1 -0
  150. package/dist/{utils-Cat9_pef.js → utils-DjVJ9tov.js} +5 -6
  151. package/dist/utils-DjVJ9tov.js.map +1 -0
  152. package/dist/wagmi-Do_KW5ke.js +0 -0
  153. package/dist/{x2y2-DD17tT91.js → x2y2-BLz-_Q2O.js} +1 -1
  154. package/dist/{x2y2-DD17tT91.js.map → x2y2-BLz-_Q2O.js.map} +1 -1
  155. package/dist/{zora-BpSG9UzS.js → zora-UGhKs-aL.js} +1 -1
  156. package/dist/{zora-BpSG9UzS.js.map → zora-UGhKs-aL.js.map} +1 -1
  157. package/eslint/use-client.js +0 -6
  158. package/eslint.config.mjs +4 -0
  159. package/package.json +47 -35
  160. package/postcss.config.mjs +6 -0
  161. package/src/index.css +5 -4
  162. package/src/index.ts +2 -1
  163. package/src/react/__tests__/provider.test.tsx +4 -3
  164. package/src/react/_internal/api/__mocks__/builder.msw.ts +5 -3
  165. package/src/react/_internal/api/__mocks__/indexer.msw.ts +24 -8
  166. package/src/react/_internal/api/__mocks__/laos.msw.ts +387 -0
  167. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +6 -6
  168. package/src/react/_internal/api/__mocks__/metadata.msw.ts +1 -1
  169. package/src/react/_internal/api/__tests__/laos-api.test.ts +756 -0
  170. package/src/react/_internal/api/builder.gen.ts +6 -6
  171. package/src/react/_internal/api/get-query-client.ts +2 -2
  172. package/src/react/_internal/api/index.ts +2 -2
  173. package/src/react/_internal/api/laos-api.ts +3 -0
  174. package/src/react/_internal/api/marketplace.gen.ts +43 -3
  175. package/src/react/_internal/api/query-keys.ts +21 -6
  176. package/src/react/_internal/api/services.ts +30 -45
  177. package/src/react/_internal/databeat/index.ts +15 -14
  178. package/src/react/_internal/databeat/types.ts +22 -0
  179. package/src/react/_internal/databeat/utils.ts +26 -0
  180. package/src/react/_internal/index.ts +1 -1
  181. package/src/react/_internal/types.ts +10 -23
  182. package/src/react/_internal/utils.ts +4 -5
  183. package/src/react/_internal/wagmi/create-config.ts +43 -19
  184. package/src/react/_internal/wagmi/get-connectors.ts +9 -7
  185. package/src/react/_internal/wallet/__tests__/wallet.test.ts +1 -1
  186. package/src/react/_internal/wallet/wallet.ts +22 -22
  187. package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +20 -0
  188. package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +12 -2
  189. package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +1 -1
  190. package/src/react/hooks/__tests__/useBalanceOfCollectible.laos.test.tsx +367 -0
  191. package/src/react/hooks/__tests__/useBalanceOfCollectible.test.tsx +1 -1
  192. package/src/react/hooks/__tests__/useCancelOrder.test.tsx +4 -4
  193. package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +1 -1
  194. package/src/react/hooks/__tests__/useCheckoutOptions.test.tsx +158 -0
  195. package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +42 -65
  196. package/src/react/hooks/__tests__/useCollectible.test.tsx +14 -16
  197. package/src/react/hooks/__tests__/useCollection.test.tsx +4 -4
  198. package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +16 -25
  199. package/src/react/hooks/__tests__/useCollectionDetails.test.tsx +1 -1
  200. package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +12 -4
  201. package/src/react/hooks/__tests__/useComparePrices.test.tsx +7 -6
  202. package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +4 -4
  203. package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +2 -2
  204. package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +5 -5
  205. package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +2 -2
  206. package/src/react/hooks/__tests__/useCurrency.test.tsx +5 -3
  207. package/src/react/hooks/__tests__/useCurrencyBalance.test.tsx +7 -3
  208. package/src/react/hooks/__tests__/useFilters.test.tsx +3 -3
  209. package/src/react/hooks/__tests__/useFloorOrder.test.tsx +4 -4
  210. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +3 -3
  211. package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +1 -1
  212. package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +1 -1
  213. package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +1 -1
  214. package/src/react/hooks/__tests__/useGetTokenRanges.test.tsx +111 -0
  215. package/src/react/hooks/__tests__/useHighestOffer.test.tsx +4 -4
  216. package/src/react/hooks/__tests__/useInventory.test.tsx +1 -1
  217. package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +11 -13
  218. package/src/react/hooks/__tests__/useListCollectibles.test.tsx +5 -5
  219. package/src/react/hooks/__tests__/useListCollectiblesPaginated.test.tsx +10 -15
  220. package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +13 -15
  221. package/src/react/hooks/__tests__/useListCollections.test.tsx +3 -3
  222. package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +3 -2
  223. package/src/react/hooks/__tests__/useListMarketCardData.test.tsx +301 -0
  224. package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +1 -1
  225. package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +137 -0
  226. package/src/react/hooks/__tests__/useLowestListing.test.tsx +1 -1
  227. package/src/react/hooks/__tests__/useMarketCurrencies.test.tsx +1 -1
  228. package/src/react/hooks/__tests__/useRoyalty.test.tsx +0 -23
  229. package/src/react/hooks/__tests__/useTransferTokens.test.tsx +469 -0
  230. package/src/react/hooks/index.ts +29 -24
  231. package/src/react/hooks/options/index.ts +0 -1
  232. package/src/react/hooks/useAutoSelectFeeOption.tsx +1 -1
  233. package/src/react/hooks/useBalanceOfCollectible.tsx +1 -1
  234. package/src/react/hooks/useCancelTransactionSteps.tsx +2 -2
  235. package/src/react/hooks/useCheckoutOptions.tsx +84 -54
  236. package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +98 -57
  237. package/src/react/hooks/useCollectible.tsx +64 -49
  238. package/src/react/hooks/useCollection.tsx +60 -11
  239. package/src/react/hooks/useCollectionBalanceDetails.tsx +93 -73
  240. package/src/react/hooks/useCollectionDetails.ts +69 -0
  241. package/src/react/hooks/useCollectionDetailsPolling.tsx +7 -3
  242. package/src/react/hooks/useComparePrices.tsx +91 -86
  243. package/src/react/hooks/useConvertPriceToUSD.tsx +83 -86
  244. package/src/react/hooks/useCountListingsForCollectible.tsx +64 -53
  245. package/src/react/hooks/useCountOfCollectables.tsx +60 -69
  246. package/src/react/hooks/useCountOfPrimarySaleItems.tsx +13 -0
  247. package/src/react/hooks/useCountOffersForCollectible.tsx +64 -53
  248. package/src/react/hooks/useCurrency.tsx +56 -64
  249. package/src/react/hooks/useCurrencyBalance.tsx +132 -46
  250. package/src/react/hooks/useERC721SaleMintedTokens.tsx +8 -5
  251. package/src/react/hooks/useFilterState.tsx +1 -2
  252. package/src/react/hooks/useFilters.tsx +154 -111
  253. package/src/react/hooks/useFloorOrder.tsx +65 -40
  254. package/src/react/hooks/useGenerateCancelTransaction.tsx +5 -10
  255. package/src/react/hooks/useGenerateListingTransaction.tsx +1 -1
  256. package/src/react/hooks/useGenerateOfferTransaction.tsx +1 -1
  257. package/src/react/hooks/useGenerateSellTransaction.tsx +5 -10
  258. package/src/react/hooks/useGetCountOfPrimarySaleItems.tsx +48 -0
  259. package/src/react/hooks/useGetReceiptFromHash.tsx +32 -3
  260. package/src/react/hooks/useGetTokenRanges.tsx +92 -0
  261. package/src/react/hooks/useHighestOffer.tsx +68 -4
  262. package/src/react/hooks/useInventory.tsx +1 -1
  263. package/src/react/hooks/useList1155ShopCardData.tsx +57 -82
  264. package/src/react/hooks/useList721ShopCardData.tsx +98 -63
  265. package/src/react/hooks/useListBalances.tsx +1 -1
  266. package/src/react/hooks/useListCollectibleActivities.tsx +89 -50
  267. package/src/react/hooks/useListCollectibles.tsx +81 -16
  268. package/src/react/hooks/useListCollectiblesPaginated.tsx +96 -66
  269. package/src/react/hooks/useListCollectionActivities.tsx +84 -50
  270. package/src/react/hooks/useListCollections.tsx +71 -17
  271. package/src/react/hooks/useListListingsForCollectible.tsx +90 -50
  272. package/src/react/hooks/useListMarketCardData.tsx +3 -2
  273. package/src/react/hooks/useListOffersForCollectible.tsx +9 -14
  274. package/src/react/hooks/useListPrimarySaleItems.tsx +66 -0
  275. package/src/react/hooks/useListShopCardData.tsx +70 -0
  276. package/src/react/hooks/useListTokenMetadata.ts +64 -12
  277. package/src/react/hooks/useListTokenMetadata.tsx +73 -0
  278. package/src/react/hooks/useLowestListing.tsx +68 -4
  279. package/src/react/hooks/useMarketCurrencies.tsx +62 -5
  280. package/src/react/hooks/useOpenConnectModal.tsx +9 -0
  281. package/src/react/hooks/useRoyalty.tsx +57 -13
  282. package/src/react/hooks/useShopCollectibleSaleData.tsx +349 -0
  283. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +3 -7
  284. package/src/react/hooks/useTokenSupplies.ts +81 -0
  285. package/src/react/hooks/useTransferTokens.tsx +2 -2
  286. package/src/react/hooks/util/optimisticCancelUpdates.ts +5 -7
  287. package/src/react/index.ts +5 -3
  288. package/src/react/provider.tsx +73 -9
  289. package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +123 -0
  290. package/src/react/queries/__tests__/inventory.laos.test.ts +496 -0
  291. package/src/react/queries/balanceOfCollectible.ts +8 -5
  292. package/src/react/queries/checkoutOptions.ts +85 -0
  293. package/src/react/queries/checkoutOptionsSalesContract.ts +89 -0
  294. package/src/react/queries/collectible.ts +66 -0
  295. package/src/react/queries/collection.ts +55 -0
  296. package/src/react/queries/collectionBalanceDetails.ts +92 -0
  297. package/src/react/queries/collectionDetails.ts +64 -0
  298. package/src/react/queries/comparePrices.ts +108 -0
  299. package/src/react/queries/convertPriceToUSD.ts +92 -0
  300. package/src/react/queries/countListingsForCollectible.ts +73 -0
  301. package/src/react/queries/countOfCollectables.ts +83 -0
  302. package/src/react/queries/countOfPrimarySaleItems.ts +48 -0
  303. package/src/react/queries/countOffersForCollectible.ts +73 -0
  304. package/src/react/queries/currency.ts +83 -0
  305. package/src/react/queries/filters.ts +138 -0
  306. package/src/react/queries/floorOrder.ts +63 -0
  307. package/src/react/queries/getTokenRanges.ts +62 -0
  308. package/src/react/queries/highestOffer.ts +46 -40
  309. package/src/react/queries/index.ts +10 -4
  310. package/src/react/queries/inventory.ts +10 -4
  311. package/src/react/queries/listBalances.ts +5 -4
  312. package/src/react/queries/listCollectibleActivities.ts +97 -0
  313. package/src/react/queries/listCollectibles.ts +67 -50
  314. package/src/react/queries/listCollectiblesPaginated.ts +87 -0
  315. package/src/react/queries/listCollectionActivities.ts +95 -0
  316. package/src/react/queries/listCollections.ts +53 -10
  317. package/src/react/queries/listListingsForCollectible.ts +82 -0
  318. package/src/react/queries/listTokenMetadata.ts +47 -23
  319. package/src/react/queries/lowestListing.ts +46 -31
  320. package/src/react/queries/marketCurrencies.ts +42 -29
  321. package/src/react/queries/marketplaceConfig.ts +4 -4
  322. package/src/react/queries/primarySaleItems.ts +85 -0
  323. package/src/react/queries/primarySaleItemsCount.ts +64 -0
  324. package/src/react/queries/tokenSupplies.ts +93 -0
  325. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +12 -2
  326. package/src/react/ssr/create-ssr-client.ts +1 -1
  327. package/src/react/types/query.ts +34 -0
  328. package/src/react/ui/components/ModelViewer.tsx +1 -1
  329. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +66 -66
  330. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +22 -4
  331. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +14 -8
  332. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +5 -4
  333. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +3 -0
  334. package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +4 -4
  335. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +20 -18
  336. package/src/react/ui/components/_internals/action-button/store.ts +72 -34
  337. package/src/react/ui/components/_internals/custom-select/CustomSelect.stories.tsx +582 -0
  338. package/src/react/ui/components/_internals/pill/Pill.stories.tsx +83 -0
  339. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +1 -1
  340. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +12 -5
  341. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -4
  342. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +3 -0
  343. package/src/react/ui/components/marketplace-collectible-card/index.ts +1 -1
  344. package/src/react/ui/components/marketplace-collectible-card/types.ts +11 -7
  345. package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +4 -7
  346. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +3 -2
  347. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +7 -6
  348. package/src/react/ui/components/marketplace-logos/marketplace-logos.stories.tsx +199 -0
  349. package/src/react/ui/components/marketplace-logos/marketplace-logos.tsx +1 -1
  350. package/src/react/ui/components/media/Media.stories.tsx +642 -0
  351. package/src/react/ui/components/media/Media.tsx +29 -20
  352. package/src/react/ui/components/media/types.ts +6 -0
  353. package/src/react/ui/index.ts +8 -10
  354. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +15 -0
  355. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +100 -87
  356. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +11 -5
  357. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +10 -2
  358. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +17 -11
  359. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +4 -1
  360. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +1 -1
  361. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +30 -27
  362. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +3 -3
  363. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +11 -2
  364. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +2 -2
  365. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +10 -3
  366. package/src/react/ui/modals/BuyModal/index.tsx +9 -1
  367. package/src/react/ui/modals/BuyModal/store.ts +26 -0
  368. package/src/react/ui/modals/CreateListingModal/Modal.tsx +28 -11
  369. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +2 -2
  370. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +0 -1
  371. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +2 -2
  372. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +7 -6
  373. package/src/react/ui/modals/CreateListingModal/index.tsx +1 -1
  374. package/src/react/ui/modals/CreateListingModal/store.ts +3 -3
  375. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +31 -14
  376. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +1 -1
  377. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +1 -1
  378. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +0 -1
  379. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +7 -7
  380. package/src/react/ui/modals/MakeOfferModal/index.tsx +1 -1
  381. package/src/react/ui/modals/MakeOfferModal/store.ts +3 -3
  382. package/src/react/ui/modals/SellModal/Modal.tsx +14 -11
  383. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +6 -4
  384. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +1 -1
  385. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +0 -1
  386. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +6 -6
  387. package/src/react/ui/modals/SellModal/store.ts +3 -3
  388. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +1 -1
  389. package/src/react/ui/modals/TransferModal/__tests__/__snapshots__/store.test.ts.snap +17 -0
  390. package/src/react/ui/modals/TransferModal/__tests__/store.test.ts +366 -0
  391. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +402 -0
  392. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +52 -50
  393. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +39 -47
  394. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +9 -8
  395. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +33 -37
  396. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +19 -10
  397. package/src/react/ui/modals/TransferModal/index.tsx +28 -31
  398. package/src/react/ui/modals/TransferModal/messages.ts +1 -1
  399. package/src/react/ui/modals/TransferModal/store.ts +122 -0
  400. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +1 -1
  401. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +2 -4
  402. package/src/react/ui/modals/_internal/components/calendar/index.tsx +0 -1
  403. package/src/react/ui/modals/_internal/components/currencyImage/index.tsx +10 -14
  404. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +6 -3
  405. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +23 -18
  406. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +10 -10
  407. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +6 -6
  408. package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +4 -4
  409. package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +13 -5
  410. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +41 -26
  411. package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +68 -59
  412. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +23 -17
  413. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +340 -41
  414. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx +1 -2
  415. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +95 -101
  416. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +72 -14
  417. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +29 -14
  418. package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +2 -2
  419. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
  420. package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +88 -89
  421. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +37 -11
  422. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +0 -1
  423. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +32 -20
  424. package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +92 -63
  425. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +44 -45
  426. package/src/react/ui/modals/_internal/types.ts +2 -2
  427. package/src/react/ui/modals/modal-provider.tsx +2 -3
  428. package/src/types/api-types.ts +36 -36
  429. package/src/types/buyModalErrors.ts +1 -1
  430. package/src/types/index.ts +5 -5
  431. package/src/types/new-marketplace-types.ts +1 -1
  432. package/src/types/sdk-config.ts +8 -2
  433. package/src/types/types.ts +1 -0
  434. package/src/types/waas-types.ts +1 -1
  435. package/src/utils/abi/index.ts +1 -1
  436. package/src/utils/abi/primary-sale/index.ts +1 -1
  437. package/src/utils/abi/token/index.ts +2 -1
  438. package/src/utils/decode/erc20.ts +1 -1
  439. package/src/utils/index.ts +3 -3
  440. package/src/utils/network.ts +15 -0
  441. package/test/const.ts +3 -1
  442. package/test/mocks/wallet.ts +1 -1
  443. package/test/test-utils.tsx +5 -4
  444. package/vitest.shims.d.ts +2 -0
  445. package/vitest.storybook.config.js +33 -0
  446. package/.changeset/fluffy-jokes-lay.md +0 -5
  447. package/.changeset/wise-bugs-boil.md +0 -8
  448. package/dist/CartIcon-Bll1rbxv.js.map +0 -1
  449. package/dist/CollectibleCard-CLQTl0_6.d.ts +0 -8
  450. package/dist/_internal-69NEWNUE.js +0 -34
  451. package/dist/_internal-69NEWNUE.js.map +0 -1
  452. package/dist/api-1KFxYh7o.js.map +0 -1
  453. package/dist/builder-api-DoK3907S.d.ts +0 -12
  454. package/dist/builder.gen-CxP9NT1p.js.map +0 -1
  455. package/dist/index-4-kfOFdx.d.ts +0 -22
  456. package/dist/index-BHiSG-Yi.d.ts +0 -312
  457. package/dist/index-BQW0PUkQ.d.ts +0 -3973
  458. package/dist/index-BfH21xmk.d.ts +0 -117
  459. package/dist/index-CN8puQQJ.d.ts +0 -24
  460. package/dist/index-DafWjEb4.d.ts +0 -65
  461. package/dist/marketplace.gen-Dqk8vRmD.js.map +0 -1
  462. package/dist/marketplaceConfig-D2MYFqll.js.map +0 -1
  463. package/dist/options-DCi6_23w.js +0 -34
  464. package/dist/options-DCi6_23w.js.map +0 -1
  465. package/dist/primary-sale-Cw95phYC.js.map +0 -1
  466. package/dist/queries-DPvwtnO7.js +0 -486
  467. package/dist/queries-DPvwtnO7.js.map +0 -1
  468. package/dist/react-BG7o4PId.js.map +0 -1
  469. package/dist/token-CO5llIla.js.map +0 -1
  470. package/dist/transaction-CcVViHEL.js.map +0 -1
  471. package/dist/types-DwWE6xOF.js.map +0 -1
  472. package/dist/useCollection-C-mclKU0.d.ts +0 -66
  473. package/dist/utils-BFdxaToy.js.map +0 -1
  474. package/dist/utils-Cat9_pef.js.map +0 -1
  475. package/dist/wagmi-DRctYEk6.js.map +0 -1
  476. package/src/react/_internal/api/zod-schema.ts +0 -678
  477. package/src/react/hooks/options/collectionOptions.ts +0 -41
  478. package/src/react/hooks/useCollectionDetails.tsx +0 -50
  479. package/src/react/hooks/useGetTokenSuppliesMap.ts +0 -33
  480. package/src/react/hooks/useListPrimarySaleItems.ts +0 -42
  481. package/src/react/queries/getTokenSupplies.ts +0 -38
  482. package/src/react/ui/modals/TransferModal/_store.ts +0 -72
  483. package/src/react/ui/modals/_internal/stores/accountModal.ts +0 -3
  484. package/tsconfig.tsbuildinfo +0 -1
  485. /package/dist/{abi-BKyRjVcZ.js → abi-BMvgNbKQ.js} +0 -0
  486. /package/dist/{index-C39K_8SG.d.ts → index-CD2bj_xW.d.ts} +0 -0
  487. /package/dist/{index-ij9f8GAA.d.ts → index-DvpBZgor.d.ts} +0 -0
@@ -0,0 +1,73 @@
1
+ 'use client';
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import type { Optional } from '../_internal';
5
+ import {
6
+ type FetchListTokenMetadataParams,
7
+ type ListTokenMetadataQueryOptions,
8
+ listTokenMetadataQueryOptions,
9
+ } from '../queries/listTokenMetadata';
10
+ import { useConfig } from './useConfig';
11
+
12
+ export type UseListTokenMetadataParams = Optional<
13
+ ListTokenMetadataQueryOptions,
14
+ 'config'
15
+ >;
16
+
17
+ /**
18
+ * Hook to fetch metadata for multiple tokens
19
+ *
20
+ * Retrieves metadata for a batch of tokens from a specific contract using the metadata API.
21
+ * This hook is optimized for fetching multiple token metadata in a single request.
22
+ *
23
+ * @param params - Configuration parameters
24
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
25
+ * @param params.contractAddress - The contract address containing the tokens
26
+ * @param params.tokenIds - Array of token IDs to fetch metadata for
27
+ * @param params.config - Optional SDK configuration (defaults from context)
28
+ * @param params.query - Optional React Query configuration
29
+ *
30
+ * @returns Query result containing an array of token metadata
31
+ *
32
+ * @example
33
+ * Basic usage:
34
+ * ```typescript
35
+ * const { data: metadata, isLoading } = useListTokenMetadata({
36
+ * chainId: 137,
37
+ * contractAddress: '0x...',
38
+ * tokenIds: ['1', '2', '3']
39
+ * })
40
+ * ```
41
+ *
42
+ * @example
43
+ * With query options:
44
+ * ```typescript
45
+ * const { data: metadata } = useListTokenMetadata({
46
+ * chainId: 1,
47
+ * contractAddress: '0x...',
48
+ * tokenIds: selectedTokenIds,
49
+ * query: {
50
+ * enabled: selectedTokenIds.length > 0,
51
+ * staleTime: 10 * 60 * 1000 // 10 minutes
52
+ * }
53
+ * })
54
+ * ```
55
+ */
56
+ export function useListTokenMetadata(params: UseListTokenMetadataParams) {
57
+ const defaultConfig = useConfig();
58
+
59
+ const { config = defaultConfig, ...rest } = params;
60
+
61
+ const queryOptions = listTokenMetadataQueryOptions({
62
+ config,
63
+ ...rest,
64
+ });
65
+
66
+ return useQuery({
67
+ ...queryOptions,
68
+ });
69
+ }
70
+
71
+ export { listTokenMetadataQueryOptions };
72
+
73
+ export type { FetchListTokenMetadataParams, ListTokenMetadataQueryOptions };
@@ -1,8 +1,72 @@
1
+ 'use client';
2
+
1
3
  import { useQuery } from '@tanstack/react-query';
2
- import { type UseLowestListingArgs, lowestListingOptions } from '../queries';
4
+ import type { Optional } from '../_internal';
5
+ import {
6
+ type FetchLowestListingParams,
7
+ type LowestListingQueryOptions,
8
+ lowestListingQueryOptions,
9
+ } from '../queries/lowestListing';
3
10
  import { useConfig } from './useConfig';
4
11
 
5
- export function useLowestListing(args: UseLowestListingArgs) {
6
- const config = useConfig();
7
- return useQuery(lowestListingOptions(args, config));
12
+ export type UseLowestListingParams = Optional<
13
+ LowestListingQueryOptions,
14
+ 'config'
15
+ >;
16
+
17
+ /**
18
+ * Hook to fetch the lowest listing for a collectible
19
+ *
20
+ * Retrieves the lowest priced listing currently available for a specific token
21
+ * in a collection from the marketplace.
22
+ *
23
+ * @param params - Configuration parameters
24
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
25
+ * @param params.collectionAddress - The collection contract address
26
+ * @param params.tokenId - The token ID within the collection
27
+ * @param params.query - Optional React Query configuration
28
+ *
29
+ * @returns Query result containing the lowest listing data or null if no listings exist
30
+ *
31
+ * @example
32
+ * Basic usage:
33
+ * ```typescript
34
+ * const { data, isLoading } = useLowestListing({
35
+ * chainId: 137,
36
+ * collectionAddress: '0x...',
37
+ * tokenId: '1'
38
+ * })
39
+ * ```
40
+ *
41
+ * @example
42
+ * With custom query options:
43
+ * ```typescript
44
+ * const { data, isLoading } = useLowestListing({
45
+ * chainId: 1,
46
+ * collectionAddress: '0x...',
47
+ * tokenId: '42',
48
+ * query: {
49
+ * refetchInterval: 15000,
50
+ * enabled: hasTokenId
51
+ * }
52
+ * })
53
+ * ```
54
+ */
55
+ export function useLowestListing(params: UseLowestListingParams) {
56
+ const defaultConfig = useConfig();
57
+
58
+ const { config = defaultConfig, ...rest } = params;
59
+
60
+ const queryOptions = lowestListingQueryOptions({
61
+ config,
62
+ ...rest,
63
+ });
64
+
65
+ return useQuery({
66
+ ...queryOptions,
67
+ });
8
68
  }
69
+
70
+ export { lowestListingQueryOptions };
71
+
72
+ export type { FetchLowestListingParams, LowestListingQueryOptions };
@@ -1,8 +1,65 @@
1
+ 'use client';
2
+
1
3
  import { useQuery } from '@tanstack/react-query';
2
- import { type UseMarketCurrenciesArgs, currenciesOptions } from '../queries';
4
+ import type { Optional } from '../_internal';
5
+ import {
6
+ type FetchMarketCurrenciesParams,
7
+ type MarketCurrenciesQueryOptions,
8
+ marketCurrenciesQueryOptions,
9
+ } from '../queries/marketCurrencies';
3
10
  import { useConfig } from './useConfig';
4
11
 
5
- export const useMarketCurrencies = (args: UseMarketCurrenciesArgs) => {
6
- const config = useConfig();
7
- return useQuery(currenciesOptions(args, config));
8
- };
12
+ export type UseMarketCurrenciesParams = Optional<
13
+ MarketCurrenciesQueryOptions,
14
+ 'config'
15
+ >;
16
+
17
+ /**
18
+ * Hook to fetch supported currencies for a marketplace
19
+ *
20
+ * Retrieves the list of currencies supported by the marketplace for a specific chain.
21
+ * Can optionally filter to exclude native currency or filter by collection.
22
+ *
23
+ * @param params - Configuration parameters
24
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
25
+ * @param params.includeNativeCurrency - Whether to include native currency (default: true)
26
+ * @param params.collectionAddress - Optional collection address to filter currencies
27
+ * @param params.query - Optional React Query configuration
28
+ *
29
+ * @returns Query result containing supported currencies
30
+ *
31
+ * @example
32
+ * Basic usage:
33
+ * ```typescript
34
+ * const { data, isLoading } = useMarketCurrencies({
35
+ * chainId: 137
36
+ * })
37
+ * ```
38
+ *
39
+ * @example
40
+ * Exclude native currency:
41
+ * ```typescript
42
+ * const { data, isLoading } = useMarketCurrencies({
43
+ * chainId: 1,
44
+ * includeNativeCurrency: false
45
+ * })
46
+ * ```
47
+ */
48
+ export function useMarketCurrencies(params: UseMarketCurrenciesParams) {
49
+ const defaultConfig = useConfig();
50
+
51
+ const { config = defaultConfig, ...rest } = params;
52
+
53
+ const queryOptions = marketCurrenciesQueryOptions({
54
+ config,
55
+ ...rest,
56
+ });
57
+
58
+ return useQuery({
59
+ ...queryOptions,
60
+ });
61
+ }
62
+
63
+ export { marketCurrenciesQueryOptions };
64
+
65
+ export type { FetchMarketCurrenciesParams, MarketCurrenciesQueryOptions };
@@ -0,0 +1,9 @@
1
+ import { useConfig } from './useConfig';
2
+
3
+ export const useOpenConnectModal = () => {
4
+ const context = useConfig();
5
+
6
+ return {
7
+ openConnectModal: context.openConnectModal,
8
+ };
9
+ };
@@ -1,18 +1,62 @@
1
+ 'use client';
2
+
3
+ import type { Address } from 'viem';
1
4
  import { useReadContract } from 'wagmi';
2
- import { z } from 'zod';
3
5
  import { EIP2981_ABI } from '../../utils';
4
- import { AddressSchema, QueryArgSchema, collectableKeys } from '../_internal';
5
-
6
- const UseRoyaltySchema = z.object({
7
- chainId: z.number(),
8
- collectionAddress: AddressSchema,
9
- collectibleId: z.string(),
10
- query: QueryArgSchema.optional(),
11
- });
6
+ import type { QueryArg } from '../_internal';
7
+ import { collectableKeys } from '../_internal';
12
8
 
13
- type UseRoyaltyArgs = z.infer<typeof UseRoyaltySchema>;
9
+ export interface UseRoyaltyArgs {
10
+ chainId: number;
11
+ collectionAddress: Address;
12
+ collectibleId: string;
13
+ query?: QueryArg;
14
+ }
14
15
 
15
- export const useRoyalty = (args: UseRoyaltyArgs) => {
16
+ /**
17
+ * Hook to fetch royalty information for a collectible
18
+ *
19
+ * Reads royalty information from the blockchain using the EIP-2981 standard.
20
+ * This hook queries the contract directly to get royalty percentage and recipient
21
+ * address for a specific token.
22
+ *
23
+ * @param args - Configuration parameters
24
+ * @param args.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
25
+ * @param args.collectionAddress - The collection contract address
26
+ * @param args.collectibleId - The token ID within the collection
27
+ * @param args.query - Optional React Query configuration
28
+ *
29
+ * @returns Query result containing royalty information (percentage and recipient) or null
30
+ *
31
+ * @example
32
+ * Basic usage:
33
+ * ```typescript
34
+ * const { data, isLoading } = useRoyalty({
35
+ * chainId: 137,
36
+ * collectionAddress: '0x...',
37
+ * collectibleId: '1'
38
+ * })
39
+ *
40
+ * if (data) {
41
+ * console.log('Royalty:', data.percentage, 'Recipient:', data.recipient)
42
+ * }
43
+ * ```
44
+ *
45
+ * @example
46
+ * With custom query options:
47
+ * ```typescript
48
+ * const { data, isLoading } = useRoyalty({
49
+ * chainId: 1,
50
+ * collectionAddress: '0x...',
51
+ * collectibleId: '42',
52
+ * query: {
53
+ * refetchInterval: 60000,
54
+ * enabled: hasTokenId
55
+ * }
56
+ * })
57
+ * ```
58
+ */
59
+ export function useRoyalty(args: UseRoyaltyArgs) {
16
60
  const { chainId, collectionAddress, collectibleId, query } = args;
17
61
  const scopeKey = `${collectableKeys.royaltyPercentage.join('.')}-${chainId}-${collectionAddress}-${collectibleId}`;
18
62
 
@@ -31,7 +75,7 @@ export const useRoyalty = (args: UseRoyaltyArgs) => {
31
75
  recipient && percentage
32
76
  ? {
33
77
  percentage,
34
- recipient,
78
+ recipient: recipient as Address,
35
79
  }
36
80
  : null;
37
81
 
@@ -39,4 +83,4 @@ export const useRoyalty = (args: UseRoyaltyArgs) => {
39
83
  ...contractResult,
40
84
  data: formattedData,
41
85
  };
42
- };
86
+ }
@@ -0,0 +1,349 @@
1
+ import { useMemo } from 'react';
2
+
3
+ import type { Address } from 'viem';
4
+ import { useReadContract } from 'wagmi';
5
+ import {
6
+ ERC721_ABI,
7
+ ERC721_SALE_ABI,
8
+ ERC1155_SALES_CONTRACT_ABI,
9
+ SEQUENCE_1155_ITEMS_ABI,
10
+ } from '../../utils';
11
+ import { ContractType } from '../_internal';
12
+
13
+ interface ShopCollectibleSaleData {
14
+ salePrice: { amount: string; currencyAddress: Address } | null;
15
+ paymentToken: Address | null;
16
+ supplyCap: string;
17
+ totalMinted: string;
18
+ quantityRemaining: string;
19
+ startTime: number | null;
20
+ endTime: number | null;
21
+ isActive: boolean;
22
+ isLoading: boolean;
23
+ error: Error | null;
24
+ isAvailable: boolean;
25
+ }
26
+
27
+ interface BaseShopCollectibleSaleDataProps {
28
+ chainId: number;
29
+ salesContractAddress: Address;
30
+ itemsContractAddress: Address;
31
+ enabled?: boolean;
32
+ }
33
+
34
+ interface ERC721ShopCollectibleSaleDataProps
35
+ extends BaseShopCollectibleSaleDataProps {
36
+ collectionType: ContractType.ERC721;
37
+ tokenId?: string;
38
+ }
39
+
40
+ interface ERC1155ShopCollectibleSaleDataProps
41
+ extends BaseShopCollectibleSaleDataProps {
42
+ collectionType: ContractType.ERC1155;
43
+ tokenId: string;
44
+ }
45
+
46
+ type UseShopCollectibleSaleDataProps =
47
+ | ERC721ShopCollectibleSaleDataProps
48
+ | ERC1155ShopCollectibleSaleDataProps;
49
+
50
+ export function useShopCollectibleSaleData({
51
+ chainId,
52
+ salesContractAddress,
53
+ itemsContractAddress,
54
+ tokenId,
55
+ collectionType,
56
+ enabled = true,
57
+ }: UseShopCollectibleSaleDataProps): ShopCollectibleSaleData {
58
+ // ERC721 Sales Contract Calls
59
+ const {
60
+ data: erc721SaleDetails,
61
+ isLoading: erc721SaleLoading,
62
+ error: erc721SaleError,
63
+ } = useReadContract({
64
+ chainId,
65
+ address: salesContractAddress,
66
+ abi: ERC721_SALE_ABI,
67
+ functionName: 'saleDetails',
68
+ query: {
69
+ enabled: enabled && collectionType === ContractType.ERC721,
70
+ },
71
+ });
72
+
73
+ const {
74
+ data: erc721TotalSupply,
75
+ isLoading: erc721SupplyLoading,
76
+ error: erc721SupplyError,
77
+ } = useReadContract({
78
+ chainId,
79
+ address: itemsContractAddress,
80
+ abi: ERC721_ABI,
81
+ functionName: 'totalSupply',
82
+ query: {
83
+ enabled: enabled && collectionType === ContractType.ERC721,
84
+ },
85
+ });
86
+
87
+ // ERC1155 Sales Contract Calls
88
+ const {
89
+ data: erc1155TokenSaleDetails,
90
+ isLoading: erc1155TokenSaleLoading,
91
+ error: erc1155TokenSaleError,
92
+ } = useReadContract({
93
+ chainId,
94
+ address: salesContractAddress,
95
+ abi: ERC1155_SALES_CONTRACT_ABI,
96
+ functionName: 'tokenSaleDetails',
97
+ args:
98
+ collectionType === ContractType.ERC1155 ? [BigInt(tokenId)] : undefined,
99
+ query: {
100
+ enabled: enabled && collectionType === ContractType.ERC1155,
101
+ },
102
+ });
103
+
104
+ const {
105
+ data: erc1155GlobalSaleDetails,
106
+ isLoading: erc1155GlobalSaleLoading,
107
+ error: erc1155GlobalSaleError,
108
+ } = useReadContract({
109
+ chainId,
110
+ address: salesContractAddress,
111
+ abi: ERC1155_SALES_CONTRACT_ABI,
112
+ functionName: 'globalSaleDetails',
113
+ query: {
114
+ enabled: enabled && collectionType === ContractType.ERC1155,
115
+ },
116
+ });
117
+
118
+ const {
119
+ data: erc1155PaymentToken,
120
+ isLoading: erc1155PaymentTokenLoading,
121
+ error: erc1155PaymentTokenError,
122
+ } = useReadContract({
123
+ chainId,
124
+ address: salesContractAddress,
125
+ abi: ERC1155_SALES_CONTRACT_ABI,
126
+ functionName: 'paymentToken',
127
+ query: {
128
+ enabled: enabled && collectionType === ContractType.ERC1155,
129
+ },
130
+ });
131
+
132
+ const {
133
+ data: erc1155TotalSupply,
134
+ isLoading: erc1155SupplyLoading,
135
+ error: erc1155SupplyError,
136
+ } = useReadContract({
137
+ chainId,
138
+ address: itemsContractAddress,
139
+ abi: SEQUENCE_1155_ITEMS_ABI,
140
+ functionName: 'totalSupply',
141
+ query: {
142
+ enabled: enabled && collectionType === ContractType.ERC1155,
143
+ },
144
+ });
145
+
146
+ return useMemo(() => {
147
+ const isLoading =
148
+ collectionType === ContractType.ERC721
149
+ ? erc721SaleLoading || erc721SupplyLoading
150
+ : erc1155TokenSaleLoading ||
151
+ erc1155GlobalSaleLoading ||
152
+ erc1155PaymentTokenLoading ||
153
+ erc1155SupplyLoading;
154
+
155
+ const error =
156
+ collectionType === ContractType.ERC721
157
+ ? erc721SaleError || erc721SupplyError
158
+ : erc1155TokenSaleError ||
159
+ erc1155GlobalSaleError ||
160
+ erc1155PaymentTokenError ||
161
+ erc1155SupplyError;
162
+
163
+ if (isLoading) {
164
+ return {
165
+ salePrice: null,
166
+ paymentToken: null,
167
+ supplyCap: '0',
168
+ totalMinted: '0',
169
+ quantityRemaining: '0',
170
+ startTime: null,
171
+ endTime: null,
172
+ isActive: false,
173
+ isLoading: true,
174
+ error: null,
175
+ isAvailable: false,
176
+ };
177
+ }
178
+
179
+ if (error) {
180
+ return {
181
+ salePrice: null,
182
+ paymentToken: null,
183
+ supplyCap: '0',
184
+ totalMinted: '0',
185
+ quantityRemaining: '0',
186
+ startTime: null,
187
+ endTime: null,
188
+ isActive: false,
189
+ isLoading: false,
190
+ error: error as Error,
191
+ isAvailable: false,
192
+ };
193
+ }
194
+
195
+ if (
196
+ collectionType === ContractType.ERC721 &&
197
+ erc721SaleDetails &&
198
+ erc721TotalSupply !== undefined
199
+ ) {
200
+ const saleDetails = erc721SaleDetails as {
201
+ supplyCap: bigint;
202
+ cost: bigint;
203
+ paymentToken: Address;
204
+ startTime: bigint;
205
+ endTime: bigint;
206
+ merkleRoot: string;
207
+ };
208
+
209
+ const supplyCap = saleDetails.supplyCap.toString();
210
+ const totalMinted = erc721TotalSupply.toString();
211
+ const quantityRemaining = (
212
+ saleDetails.supplyCap - erc721TotalSupply
213
+ ).toString();
214
+
215
+ const now = Math.floor(Date.now() / 1000);
216
+ const startTime = Number(saleDetails.startTime);
217
+ const endTime = Number(saleDetails.endTime);
218
+ const isActive = now >= startTime && now <= endTime;
219
+
220
+ return {
221
+ salePrice: {
222
+ amount: saleDetails.cost.toString(),
223
+ currencyAddress: saleDetails.paymentToken,
224
+ },
225
+ paymentToken: saleDetails.paymentToken,
226
+ supplyCap,
227
+ totalMinted,
228
+ quantityRemaining,
229
+ startTime,
230
+ endTime,
231
+ isActive,
232
+ isLoading: false,
233
+ error: null,
234
+ isAvailable: BigInt(quantityRemaining) > 0 && isActive,
235
+ };
236
+ }
237
+
238
+ if (
239
+ collectionType === ContractType.ERC1155 &&
240
+ erc1155PaymentToken &&
241
+ erc1155TotalSupply !== undefined &&
242
+ (erc1155TokenSaleDetails || erc1155GlobalSaleDetails)
243
+ ) {
244
+ // Type the sale details structures
245
+ type SaleDetails = {
246
+ cost: bigint;
247
+ supplyCap: bigint;
248
+ startTime: bigint;
249
+ endTime: bigint;
250
+ merkleRoot: string;
251
+ };
252
+
253
+ const tokenSaleDetails = erc1155TokenSaleDetails as
254
+ | SaleDetails
255
+ | undefined;
256
+ const globalSaleDetails = erc1155GlobalSaleDetails as
257
+ | SaleDetails
258
+ | undefined;
259
+
260
+ // If token-specific details have zero values, use global as fallback
261
+ const useGlobal = tokenSaleDetails && tokenSaleDetails.supplyCap === 0n;
262
+ const finalSaleDetails = useGlobal
263
+ ? globalSaleDetails
264
+ : tokenSaleDetails || globalSaleDetails;
265
+
266
+ if (!finalSaleDetails) {
267
+ return {
268
+ salePrice: null,
269
+ paymentToken: null,
270
+ supplyCap: '0',
271
+ totalMinted: '0',
272
+ quantityRemaining: '0',
273
+ startTime: null,
274
+ endTime: null,
275
+ isActive: false,
276
+ isLoading: false,
277
+ error: null,
278
+ isAvailable: false,
279
+ };
280
+ }
281
+
282
+ const supplyCap = finalSaleDetails.supplyCap.toString();
283
+ const totalMintedBigInt = erc1155TotalSupply
284
+ ? BigInt(erc1155TotalSupply as bigint)
285
+ : 0n;
286
+ const totalMinted = totalMintedBigInt.toString();
287
+ const quantityRemaining = (
288
+ finalSaleDetails.supplyCap - totalMintedBigInt
289
+ ).toString();
290
+
291
+ const now = Math.floor(Date.now() / 1000);
292
+ const startTime = Number(finalSaleDetails.startTime);
293
+ const endTime = Number(finalSaleDetails.endTime);
294
+ const isActive = now >= startTime && now <= endTime;
295
+
296
+ return {
297
+ salePrice: {
298
+ amount: finalSaleDetails.cost.toString(),
299
+ currencyAddress: erc1155PaymentToken,
300
+ },
301
+ paymentToken: erc1155PaymentToken,
302
+ supplyCap,
303
+ totalMinted,
304
+ quantityRemaining,
305
+ startTime,
306
+ endTime,
307
+ isActive,
308
+ isLoading: false,
309
+ error: null,
310
+ isAvailable: BigInt(quantityRemaining) > 0 && isActive,
311
+ };
312
+ }
313
+
314
+ // No valid data found
315
+ return {
316
+ salePrice: null,
317
+ paymentToken: null,
318
+ supplyCap: '0',
319
+ totalMinted: '0',
320
+ quantityRemaining: '0',
321
+ startTime: null,
322
+ endTime: null,
323
+ isActive: false,
324
+ isLoading: false,
325
+ error: null,
326
+ isAvailable: false,
327
+ };
328
+ }, [
329
+ collectionType,
330
+ erc721SaleDetails,
331
+ erc721TotalSupply,
332
+ erc721SaleLoading,
333
+ erc721SupplyLoading,
334
+ erc721SaleError,
335
+ erc721SupplyError,
336
+ erc1155TokenSaleDetails,
337
+ erc1155GlobalSaleDetails,
338
+ erc1155PaymentToken,
339
+ erc1155TotalSupply,
340
+ erc1155TokenSaleLoading,
341
+ erc1155GlobalSaleLoading,
342
+ erc1155PaymentTokenLoading,
343
+ erc1155SupplyLoading,
344
+ erc1155TokenSaleError,
345
+ erc1155GlobalSaleError,
346
+ erc1155PaymentTokenError,
347
+ erc1155SupplyError,
348
+ ]);
349
+ }
@@ -62,15 +62,11 @@ export function useTokenSaleDetailsBatch({
62
62
  const supplies = await Promise.all(
63
63
  tokenIds.map(async (tokenId) => {
64
64
  try {
65
- const result = await indexerClient.getTokenSuppliesMap({
66
- tokenMap: {
67
- [collectionAddress]: [tokenId],
68
- },
65
+ const result = await indexerClient.getTokenSupplies({
66
+ contractAddress: collectionAddress,
69
67
  includeMetadata: false,
70
68
  });
71
- const supply = result.supplies?.[collectionAddress]?.find(
72
- (s) => s.tokenID === tokenId,
73
- );
69
+ const supply = result.tokenIDs?.find((s) => s.tokenID === tokenId);
74
70
  return {
75
71
  tokenId,
76
72
  supply: supply ? Number(supply.supply) : 0,