@0xsequence/marketplace-sdk 0.8.12 → 0.9.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 (327) hide show
  1. package/CHANGELOG.md +91 -23
  2. package/dist/{CartIcon-Bll1rbxv.js → CalendarIcon-DbQ7Vxcw.js} +38 -38
  3. package/dist/CalendarIcon-DbQ7Vxcw.js.map +1 -0
  4. package/dist/{types-BIJOaL4j.d.ts → CollectibleCard-C8Ae64Ab.d.ts} +7 -4
  5. package/dist/{_internal-69NEWNUE.js → _internal-BgWcRIak.js} +2 -14
  6. package/dist/_internal-BgWcRIak.js.map +1 -0
  7. package/dist/{api-1KFxYh7o.js → api-DTIan01C.js} +73 -64
  8. package/dist/api-DTIan01C.js.map +1 -0
  9. package/dist/{builder-api-BQvzykoU.js → builder-api-BFuZNOaN.js} +2 -2
  10. package/dist/{builder-api-BQvzykoU.js.map → builder-api-BFuZNOaN.js.map} +1 -1
  11. package/dist/{builder-api-DoK3907S.d.ts → builder-api-C_zj5mr3.d.ts} +2 -2
  12. package/dist/{builder.gen-CxP9NT1p.js → builder.gen-B9wR2nvF.js} +1 -1
  13. package/dist/builder.gen-B9wR2nvF.js.map +1 -0
  14. package/dist/{index-Cl7PQOGu.d.ts → index-21LE7OhL.d.ts} +24 -24
  15. package/dist/{index-1bezgsFq.d.ts → index-BL9RUSEK.d.ts} +929 -255
  16. package/dist/index-BQsgAvtX.d.ts +2938 -0
  17. package/dist/{index-DafWjEb4.d.ts → index-BUVWziLP.d.ts} +9 -14
  18. package/dist/{index-BIMIpDiI.d.ts → index-ByznONYE.d.ts} +98 -99
  19. package/dist/{index-BjIwVzc4.d.ts → index-CLy8y5hm.d.ts} +238 -238
  20. package/dist/{index-CN8puQQJ.d.ts → index-COt10OgI.d.ts} +4 -4
  21. package/dist/index-DPNWNa7t.d.ts +414 -0
  22. package/dist/{index-BEYefG1G.d.ts → index-DaE5ZNHb.d.ts} +2 -2
  23. package/dist/{index-BfH21xmk.d.ts → index-DsfCs3-x.d.ts} +46 -41
  24. package/dist/{index-4-kfOFdx.d.ts → index-dUb6wb4Y.d.ts} +5 -5
  25. package/dist/index.css +14 -1
  26. package/dist/index.d.ts +7 -7
  27. package/dist/index.js +7 -7
  28. package/dist/marketplace-logos-CSeGcPW4.js.map +1 -1
  29. package/dist/{marketplace.gen-Dqk8vRmD.js → marketplace.gen-BSDIX7NZ.js} +12 -3
  30. package/dist/marketplace.gen-BSDIX7NZ.js.map +1 -0
  31. package/dist/{marketplaceConfig-D2MYFqll.js → marketplaceConfig-C6X1SUik.js} +2 -2
  32. package/dist/marketplaceConfig-C6X1SUik.js.map +1 -0
  33. package/dist/{sdk-config-DJzxVPld.d.ts → new-marketplace-types-Bfis0U4J.d.ts} +65 -54
  34. package/dist/options-B4QN7Xou.js +0 -0
  35. package/dist/{primary-sale-Cw95phYC.js → primary-sale-C55ALnfQ.js} +279 -279
  36. package/dist/primary-sale-C55ALnfQ.js.map +1 -0
  37. package/dist/{queries-DPvwtnO7.js → queries-CUU65uYZ.js} +247 -134
  38. package/dist/queries-CUU65uYZ.js.map +1 -0
  39. package/dist/react/_internal/api/index.d.ts +4 -4
  40. package/dist/react/_internal/api/index.js +5 -5
  41. package/dist/react/_internal/databeat/index.d.ts +3 -3
  42. package/dist/react/_internal/databeat/index.js +15 -15
  43. package/dist/react/_internal/index.d.ts +7 -7
  44. package/dist/react/_internal/index.js +7 -7
  45. package/dist/react/_internal/wagmi/index.d.ts +3 -3
  46. package/dist/react/_internal/wagmi/index.js +2 -2
  47. package/dist/react/hooks/index.d.ts +15 -14
  48. package/dist/react/hooks/index.js +16 -16
  49. package/dist/react/hooks/options/index.d.ts +4 -5
  50. package/dist/react/hooks/options/index.js +9 -9
  51. package/dist/react/index.d.ts +15 -37
  52. package/dist/react/index.js +16 -16
  53. package/dist/react/queries/index.d.ts +8 -8
  54. package/dist/react/queries/index.js +12 -12
  55. package/dist/react/ssr/index.d.ts +6 -6
  56. package/dist/react/ssr/index.js +7 -7
  57. package/dist/react/ssr/index.js.map +1 -1
  58. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +8 -9
  59. package/dist/react/ui/components/marketplace-collectible-card/index.js +15 -15
  60. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +7 -7
  61. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +7 -7
  62. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  63. package/dist/react/ui/icons/index.js +6 -6
  64. package/dist/react/ui/index.d.ts +8 -9
  65. package/dist/react/ui/index.js +15 -15
  66. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +5 -5
  67. package/dist/react/ui/modals/_internal/components/actionModal/index.js +15 -15
  68. package/dist/{react-BG7o4PId.js → react-DAIicQPT.js} +7422 -6835
  69. package/dist/react-DAIicQPT.js.map +1 -0
  70. package/dist/{token-CO5llIla.js → token-Da4TdyUk.js} +1540 -761
  71. package/dist/token-Da4TdyUk.js.map +1 -0
  72. package/dist/types/index.d.ts +2 -2
  73. package/dist/types/index.js +2 -2
  74. package/dist/types-DwWE6xOF.js.map +1 -1
  75. package/dist/utils/abi/index.d.ts +3 -3
  76. package/dist/utils/abi/index.js +3 -3
  77. package/dist/utils/abi/primary-sale/index.d.ts +1 -1
  78. package/dist/utils/abi/primary-sale/index.js +1 -1
  79. package/dist/utils/abi/token/index.d.ts +2 -2
  80. package/dist/utils/abi/token/index.js +2 -2
  81. package/dist/utils/index.d.ts +6 -6
  82. package/dist/utils/index.js +6 -6
  83. package/dist/{utils-Cat9_pef.js → utils-BPYfgDSL.js} +2 -2
  84. package/dist/{utils-Cat9_pef.js.map → utils-BPYfgDSL.js.map} +1 -1
  85. package/dist/{utils-BFdxaToy.js → utils-CW2NA5KG.js} +87 -87
  86. package/dist/utils-CW2NA5KG.js.map +1 -0
  87. package/dist/{wagmi-DRctYEk6.js → wagmi-CDzEQbfk.js} +19 -12
  88. package/dist/wagmi-CDzEQbfk.js.map +1 -0
  89. package/eslint/use-client.js +0 -6
  90. package/package.json +30 -31
  91. package/src/index.ts +1 -1
  92. package/src/react/_internal/api/__mocks__/builder.msw.ts +5 -3
  93. package/src/react/_internal/api/__mocks__/indexer.msw.ts +8 -8
  94. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +4 -6
  95. package/src/react/_internal/api/__mocks__/metadata.msw.ts +1 -1
  96. package/src/react/_internal/api/builder.gen.ts +6 -6
  97. package/src/react/_internal/api/get-query-client.ts +2 -2
  98. package/src/react/_internal/api/index.ts +2 -2
  99. package/src/react/_internal/api/marketplace.gen.ts +42 -4
  100. package/src/react/_internal/api/query-keys.ts +13 -6
  101. package/src/react/_internal/api/services.ts +28 -31
  102. package/src/react/_internal/index.ts +1 -1
  103. package/src/react/_internal/types.ts +10 -23
  104. package/src/react/_internal/utils.ts +1 -2
  105. package/src/react/_internal/wagmi/create-config.ts +20 -11
  106. package/src/react/_internal/wagmi/get-connectors.ts +9 -7
  107. package/src/react/_internal/wallet/__tests__/wallet.test.ts +1 -1
  108. package/src/react/_internal/wallet/wallet.ts +18 -18
  109. package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +20 -0
  110. package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +12 -2
  111. package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +1 -1
  112. package/src/react/hooks/__tests__/useBalanceOfCollectible.test.tsx +1 -1
  113. package/src/react/hooks/__tests__/useCancelOrder.test.tsx +4 -4
  114. package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +1 -1
  115. package/src/react/hooks/__tests__/useCollectible.test.tsx +14 -16
  116. package/src/react/hooks/__tests__/useCollection.test.tsx +4 -4
  117. package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +1 -27
  118. package/src/react/hooks/__tests__/useCollectionDetails.test.tsx +1 -1
  119. package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +1 -1
  120. package/src/react/hooks/__tests__/useComparePrices.test.tsx +7 -6
  121. package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +1 -1
  122. package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +2 -2
  123. package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +5 -5
  124. package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +2 -2
  125. package/src/react/hooks/__tests__/useCurrency.test.tsx +5 -3
  126. package/src/react/hooks/__tests__/useFilters.test.tsx +1 -1
  127. package/src/react/hooks/__tests__/useFloorOrder.test.tsx +4 -4
  128. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +3 -3
  129. package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +1 -1
  130. package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +1 -1
  131. package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +1 -1
  132. package/src/react/hooks/__tests__/useGetTokenSuppliesMap.test.tsx +104 -0
  133. package/src/react/hooks/__tests__/useHighestOffer.test.tsx +4 -4
  134. package/src/react/hooks/__tests__/useInventory.test.tsx +1 -1
  135. package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +11 -13
  136. package/src/react/hooks/__tests__/useListCollectibles.test.tsx +5 -5
  137. package/src/react/hooks/__tests__/useListCollectiblesPaginated.test.tsx +10 -15
  138. package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +13 -15
  139. package/src/react/hooks/__tests__/useListCollections.test.tsx +3 -3
  140. package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +3 -2
  141. package/src/react/hooks/__tests__/useListMarketCardData.test.tsx +301 -0
  142. package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +1 -1
  143. package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +111 -0
  144. package/src/react/hooks/__tests__/useLowestListing.test.tsx +1 -1
  145. package/src/react/hooks/__tests__/useMarketCurrencies.test.tsx +1 -1
  146. package/src/react/hooks/__tests__/useRoyalty.test.tsx +0 -23
  147. package/src/react/hooks/index.ts +27 -24
  148. package/src/react/hooks/options/index.ts +0 -1
  149. package/src/react/hooks/useAutoSelectFeeOption.tsx +1 -1
  150. package/src/react/hooks/useBalanceOfCollectible.tsx +1 -1
  151. package/src/react/hooks/useCancelTransactionSteps.tsx +2 -2
  152. package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +1 -1
  153. package/src/react/hooks/useCollectible.tsx +64 -49
  154. package/src/react/hooks/useCollection.tsx +60 -11
  155. package/src/react/hooks/useCollectionBalanceDetails.tsx +20 -27
  156. package/src/react/hooks/useCollectionDetails.ts +69 -0
  157. package/src/react/hooks/useCollectionDetailsPolling.tsx +10 -2
  158. package/src/react/hooks/useComparePrices.tsx +18 -21
  159. package/src/react/hooks/useConvertPriceToUSD.tsx +20 -37
  160. package/src/react/hooks/useCountListingsForCollectible.tsx +64 -53
  161. package/src/react/hooks/useCountOfCollectables.tsx +60 -69
  162. package/src/react/hooks/useCountOfPrimarySaleItems.tsx +13 -0
  163. package/src/react/hooks/useCountOffersForCollectible.tsx +64 -53
  164. package/src/react/hooks/useCurrency.tsx +56 -64
  165. package/src/react/hooks/useFilterState.tsx +1 -2
  166. package/src/react/hooks/useFloorOrder.tsx +65 -40
  167. package/src/react/hooks/useGenerateCancelTransaction.tsx +5 -10
  168. package/src/react/hooks/useGenerateListingTransaction.tsx +1 -1
  169. package/src/react/hooks/useGenerateOfferTransaction.tsx +1 -1
  170. package/src/react/hooks/useGenerateSellTransaction.tsx +5 -10
  171. package/src/react/hooks/useGetReceiptFromHash.tsx +32 -3
  172. package/src/react/hooks/{useGetTokenSuppliesMap.ts → useGetTokenRanges.tsx} +15 -17
  173. package/src/react/hooks/useGetTokenSuppliesMap.tsx +73 -0
  174. package/src/react/hooks/useHighestOffer.tsx +68 -4
  175. package/src/react/hooks/useInventory.tsx +1 -1
  176. package/src/react/hooks/useList1155ShopCardData.tsx +55 -82
  177. package/src/react/hooks/useList721ShopCardData.tsx +93 -63
  178. package/src/react/hooks/useListBalances.tsx +1 -1
  179. package/src/react/hooks/useListCollectibleActivities.tsx +89 -50
  180. package/src/react/hooks/useListCollectibles.tsx +81 -16
  181. package/src/react/hooks/useListCollectiblesPaginated.tsx +96 -66
  182. package/src/react/hooks/useListCollectionActivities.tsx +84 -50
  183. package/src/react/hooks/useListCollections.tsx +72 -18
  184. package/src/react/hooks/useListListingsForCollectible.tsx +90 -50
  185. package/src/react/hooks/useListMarketCardData.tsx +1 -1
  186. package/src/react/hooks/useListOffersForCollectible.tsx +9 -14
  187. package/src/react/hooks/useListPrimarySaleItems.ts +72 -12
  188. package/src/react/hooks/useListShopCardData.tsx +70 -0
  189. package/src/react/hooks/useListTokenMetadata.tsx +73 -0
  190. package/src/react/hooks/useLowestListing.tsx +68 -4
  191. package/src/react/hooks/useMarketCurrencies.tsx +62 -5
  192. package/src/react/hooks/useRoyalty.tsx +57 -13
  193. package/src/react/hooks/useShopCollectibleSaleData.tsx +349 -0
  194. package/src/react/hooks/useTransferTokens.tsx +1 -1
  195. package/src/react/hooks/util/optimisticCancelUpdates.ts +5 -7
  196. package/src/react/index.ts +5 -3
  197. package/src/react/queries/balanceOfCollectible.ts +1 -1
  198. package/src/react/queries/collectible.ts +66 -0
  199. package/src/react/queries/collection.ts +55 -0
  200. package/src/react/queries/collectionDetails.ts +64 -0
  201. package/src/react/queries/countListingsForCollectible.ts +73 -0
  202. package/src/react/queries/countOfCollectables.ts +83 -0
  203. package/src/react/queries/countOfPrimarySaleItems.ts +48 -0
  204. package/src/react/queries/countOffersForCollectible.ts +73 -0
  205. package/src/react/queries/currency.ts +83 -0
  206. package/src/react/queries/floorOrder.ts +63 -0
  207. package/src/react/queries/getTokenSuppliesMap.ts +77 -0
  208. package/src/react/queries/highestOffer.ts +46 -40
  209. package/src/react/queries/index.ts +7 -4
  210. package/src/react/queries/inventory.ts +4 -4
  211. package/src/react/queries/listBalances.ts +1 -1
  212. package/src/react/queries/listCollectibleActivities.ts +97 -0
  213. package/src/react/queries/listCollectibles.ts +67 -50
  214. package/src/react/queries/listCollectiblesPaginated.ts +87 -0
  215. package/src/react/queries/listCollectionActivities.ts +95 -0
  216. package/src/react/queries/listCollections.ts +47 -8
  217. package/src/react/queries/listListingsForCollectible.ts +82 -0
  218. package/src/react/queries/listTokenMetadata.ts +47 -23
  219. package/src/react/queries/lowestListing.ts +46 -31
  220. package/src/react/queries/marketCurrencies.ts +42 -29
  221. package/src/react/queries/marketplaceConfig.ts +3 -3
  222. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +12 -2
  223. package/src/react/ssr/create-ssr-client.ts +1 -1
  224. package/src/react/types/query.ts +34 -0
  225. package/src/react/ui/components/ModelViewer.tsx +1 -1
  226. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +14 -8
  227. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +12 -15
  228. package/src/react/ui/components/_internals/action-button/store.ts +46 -18
  229. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +1 -1
  230. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +1 -1
  231. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +3 -0
  232. package/src/react/ui/components/marketplace-collectible-card/index.ts +1 -1
  233. package/src/react/ui/components/marketplace-collectible-card/types.ts +7 -4
  234. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +3 -2
  235. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +2 -5
  236. package/src/react/ui/components/marketplace-logos/marketplace-logos.tsx +1 -1
  237. package/src/react/ui/components/media/Media.tsx +5 -1
  238. package/src/react/ui/index.ts +8 -10
  239. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +94 -87
  240. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +4 -4
  241. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +1 -1
  242. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +3 -4
  243. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +1 -1
  244. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +1 -1
  245. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +1 -1
  246. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +1 -1
  247. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +3 -3
  248. package/src/react/ui/modals/CreateListingModal/Modal.tsx +1 -1
  249. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +2 -2
  250. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +0 -1
  251. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +2 -2
  252. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +7 -6
  253. package/src/react/ui/modals/CreateListingModal/index.tsx +1 -1
  254. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +2 -2
  255. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +1 -1
  256. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +1 -1
  257. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +0 -1
  258. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +7 -7
  259. package/src/react/ui/modals/MakeOfferModal/index.tsx +1 -1
  260. package/src/react/ui/modals/SellModal/Modal.tsx +3 -3
  261. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +6 -4
  262. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +1 -1
  263. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +0 -1
  264. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +6 -6
  265. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +1 -1
  266. package/src/react/ui/modals/TransferModal/_store.ts +1 -7
  267. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +2 -3
  268. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +2 -2
  269. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +1 -1
  270. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +2 -4
  271. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +1 -1
  272. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +0 -1
  273. package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +4 -4
  274. package/src/react/ui/modals/_internal/components/quantityInput/QuantityInputBase.tsx +166 -0
  275. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +12 -141
  276. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +1 -1
  277. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx +1 -2
  278. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +0 -1
  279. package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +1 -1
  280. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +1 -1
  281. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +0 -1
  282. package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +1 -1
  283. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +1 -1
  284. package/src/react/ui/modals/modal-provider.tsx +2 -3
  285. package/src/types/api-types.ts +36 -36
  286. package/src/types/buyModalErrors.ts +1 -1
  287. package/src/types/index.ts +5 -5
  288. package/src/types/new-marketplace-types.ts +1 -1
  289. package/src/types/sdk-config.ts +2 -1
  290. package/src/types/types.ts +1 -0
  291. package/src/types/waas-types.ts +1 -1
  292. package/src/utils/abi/index.ts +1 -1
  293. package/src/utils/abi/primary-sale/index.ts +1 -1
  294. package/src/utils/abi/token/index.ts +2 -1
  295. package/src/utils/decode/erc20.ts +1 -1
  296. package/src/utils/index.ts +3 -3
  297. package/test/const.ts +3 -1
  298. package/test/mocks/wallet.ts +1 -1
  299. package/test/test-utils.tsx +3 -4
  300. package/.changeset/fluffy-jokes-lay.md +0 -5
  301. package/.changeset/wise-bugs-boil.md +0 -8
  302. package/dist/CartIcon-Bll1rbxv.js.map +0 -1
  303. package/dist/CollectibleCard-CLQTl0_6.d.ts +0 -8
  304. package/dist/_internal-69NEWNUE.js.map +0 -1
  305. package/dist/api-1KFxYh7o.js.map +0 -1
  306. package/dist/builder.gen-CxP9NT1p.js.map +0 -1
  307. package/dist/index-BHiSG-Yi.d.ts +0 -312
  308. package/dist/index-BQW0PUkQ.d.ts +0 -3973
  309. package/dist/marketplace.gen-Dqk8vRmD.js.map +0 -1
  310. package/dist/marketplaceConfig-D2MYFqll.js.map +0 -1
  311. package/dist/options-DCi6_23w.js +0 -34
  312. package/dist/options-DCi6_23w.js.map +0 -1
  313. package/dist/primary-sale-Cw95phYC.js.map +0 -1
  314. package/dist/queries-DPvwtnO7.js.map +0 -1
  315. package/dist/react-BG7o4PId.js.map +0 -1
  316. package/dist/token-CO5llIla.js.map +0 -1
  317. package/dist/useCollection-C-mclKU0.d.ts +0 -66
  318. package/dist/utils-BFdxaToy.js.map +0 -1
  319. package/dist/wagmi-DRctYEk6.js.map +0 -1
  320. package/src/react/_internal/api/zod-schema.ts +0 -678
  321. package/src/react/hooks/options/collectionOptions.ts +0 -41
  322. package/src/react/hooks/useCheckoutOptions.tsx +0 -66
  323. package/src/react/hooks/useCollectionDetails.tsx +0 -50
  324. package/src/react/hooks/useListTokenMetadata.ts +0 -19
  325. package/src/react/queries/getTokenSupplies.ts +0 -38
  326. package/tsconfig.tsbuildinfo +0 -1
  327. /package/dist/{index-ij9f8GAA.d.ts → index-DvpBZgor.d.ts} +0 -0
@@ -1,54 +1,69 @@
1
- import { queryOptions, useQuery } from '@tanstack/react-query';
2
- import { z } from 'zod';
3
- import type { SdkConfig } from '../../types';
1
+ 'use client';
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import type { Optional } from '../_internal';
4
5
  import {
5
- AddressSchema,
6
- QueryArgSchema,
7
- collectableKeys,
8
- getMetadataClient,
9
- } from '../_internal';
6
+ type CollectibleQueryOptions,
7
+ collectibleQueryOptions,
8
+ type FetchCollectibleParams,
9
+ } from '../queries/collectible';
10
10
  import { useConfig } from './useConfig';
11
11
 
12
- const UseCollectibleSchema = z.object({
13
- chainId: z.number(),
14
- collectionAddress: AddressSchema,
15
- collectibleId: z.string().optional(),
16
- query: QueryArgSchema,
17
- });
18
-
19
- export type UseCollectibleArgs = z.infer<typeof UseCollectibleSchema>;
20
-
21
- export type UseCollectibleReturn = Awaited<ReturnType<typeof fetchCollectible>>;
22
-
23
- const fetchCollectible = async (
24
- args: UseCollectibleArgs,
25
- config: SdkConfig,
26
- ) => {
27
- const parsedArgs = UseCollectibleSchema.parse(args);
28
- const metadataClient = getMetadataClient(config);
29
- const tokenIds = parsedArgs.collectibleId ? [parsedArgs.collectibleId] : [];
30
-
31
- return metadataClient
32
- .getTokenMetadata({
33
- chainID: parsedArgs.chainId.toString(),
34
- contractAddress: parsedArgs.collectionAddress,
35
- tokenIDs: tokenIds,
36
- })
37
- .then((resp) => resp.tokenMetadata[0]);
38
- };
39
-
40
- export const collectibleOptions = (
41
- args: UseCollectibleArgs,
42
- config: SdkConfig,
43
- ) => {
44
- return queryOptions({
45
- ...args.query,
46
- queryKey: [...collectableKeys.details, args, config],
47
- queryFn: () => fetchCollectible(args, config),
12
+ export type UseCollectibleParams = Optional<CollectibleQueryOptions, 'config'>;
13
+
14
+ /**
15
+ * Hook to fetch metadata for a specific collectible
16
+ *
17
+ * This hook retrieves metadata for an individual NFT from a collection,
18
+ * including properties like name, description, image, attributes, etc.
19
+ *
20
+ * @param params - Configuration parameters
21
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
22
+ * @param params.collectionAddress - The collection contract address
23
+ * @param params.collectibleId - The token ID of the collectible
24
+ * @param params.query - Optional React Query configuration
25
+ *
26
+ * @returns Query result containing the collectible metadata
27
+ *
28
+ * @example
29
+ * Basic usage:
30
+ * ```typescript
31
+ * const { data: collectible, isLoading } = useCollectible({
32
+ * chainId: 137,
33
+ * collectionAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',
34
+ * collectibleId: '12345'
35
+ * })
36
+ * ```
37
+ *
38
+ * @example
39
+ * With custom query options:
40
+ * ```typescript
41
+ * const { data } = useCollectible({
42
+ * chainId: 137,
43
+ * collectionAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',
44
+ * collectibleId: '12345',
45
+ * query: {
46
+ * enabled: Boolean(collectionAddress && tokenId),
47
+ * staleTime: 30_000
48
+ * }
49
+ * })
50
+ * ```
51
+ */
52
+ export function useCollectible(params: UseCollectibleParams) {
53
+ const defaultConfig = useConfig();
54
+
55
+ const { config = defaultConfig, ...rest } = params;
56
+
57
+ const queryOptions = collectibleQueryOptions({
58
+ config,
59
+ ...rest,
48
60
  });
49
- };
50
61
 
51
- export const useCollectible = (args: UseCollectibleArgs) => {
52
- const config = useConfig();
53
- return useQuery(collectibleOptions(args, config));
54
- };
62
+ return useQuery({
63
+ ...queryOptions,
64
+ });
65
+ }
66
+
67
+ export { collectibleQueryOptions };
68
+
69
+ export type { FetchCollectibleParams, CollectibleQueryOptions };
@@ -1,17 +1,66 @@
1
+ 'use client';
2
+
1
3
  import { useQuery } from '@tanstack/react-query';
2
- import type { z } from 'zod';
4
+ import type { Optional } from '../_internal';
3
5
  import {
4
- type UseCollectionSchema,
5
- collectionOptions,
6
- type fetchCollection,
7
- } from './options/collectionOptions';
6
+ type CollectionQueryOptions,
7
+ collectionQueryOptions,
8
+ type FetchCollectionParams,
9
+ } from '../queries/collection';
8
10
  import { useConfig } from './useConfig';
9
11
 
10
- export type UseCollectionArgs = z.input<typeof UseCollectionSchema>;
12
+ export type UseCollectionParams = Optional<CollectionQueryOptions, 'config'>;
13
+
14
+ /**
15
+ * Hook to fetch collection information from the metadata API
16
+ *
17
+ * Retrieves basic contract information including name, symbol, type,
18
+ * and extension data for a given collection contract.
19
+ *
20
+ * @param params - Configuration parameters
21
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
22
+ * @param params.collectionAddress - The collection contract address
23
+ * @param params.query - Optional React Query configuration
24
+ *
25
+ * @returns Query result containing contract information
26
+ *
27
+ * @example
28
+ * Basic usage:
29
+ * ```typescript
30
+ * const { data, isLoading } = useCollection({
31
+ * chainId: 137,
32
+ * collectionAddress: '0x...'
33
+ * })
34
+ * ```
35
+ *
36
+ * @example
37
+ * With custom query options:
38
+ * ```typescript
39
+ * const { data, isLoading } = useCollection({
40
+ * chainId: 1,
41
+ * collectionAddress: '0x...',
42
+ * query: {
43
+ * refetchInterval: 30000,
44
+ * enabled: userWantsToFetch
45
+ * }
46
+ * })
47
+ * ```
48
+ */
49
+ export function useCollection(params: UseCollectionParams) {
50
+ const defaultConfig = useConfig();
51
+
52
+ const { config = defaultConfig, ...rest } = params;
53
+
54
+ const queryOptions = collectionQueryOptions({
55
+ config,
56
+ ...rest,
57
+ });
58
+
59
+ return useQuery({
60
+ ...queryOptions,
61
+ });
62
+ }
11
63
 
12
- export type UseCollectionReturn = Awaited<ReturnType<typeof fetchCollection>>;
64
+ export { collectionQueryOptions };
13
65
 
14
- export const useCollection = (args: UseCollectionArgs) => {
15
- const config = useConfig();
16
- return useQuery(collectionOptions(args, config));
17
- };
66
+ export type { FetchCollectionParams, CollectionQueryOptions };
@@ -1,31 +1,22 @@
1
1
  import type { GetTokenBalancesDetailsReturn } from '@0xsequence/indexer';
2
2
  import { queryOptions, useQuery } from '@tanstack/react-query';
3
- import { z } from 'zod';
3
+ import type { Address } from 'viem';
4
4
  import type { SdkConfig } from '../../types';
5
- import {
6
- AddressSchema,
7
- QueryArgSchema,
8
- balanceQueries,
9
- getIndexerClient,
10
- } from '../_internal';
5
+ import type { QueryArg } from '../_internal';
6
+ import { balanceQueries, getIndexerClient } from '../_internal';
11
7
  import { useConfig } from './useConfig';
12
8
 
13
- const filterSchema = z.object({
14
- accountAddresses: z.array(AddressSchema),
15
- contractWhitelist: z.array(AddressSchema).optional(),
16
- omitNativeBalances: z.boolean(),
17
- });
9
+ export interface CollectionBalanceFilter {
10
+ accountAddresses: Address[];
11
+ contractWhitelist?: Address[];
12
+ omitNativeBalances: boolean;
13
+ }
18
14
 
19
- const useCollectionBalanceDetailsArgsSchema = z.object({
20
- chainId: z.number(),
21
- filter: filterSchema,
22
- query: QueryArgSchema.optional(),
23
- });
24
-
25
- export type CollectionBalanceFilter = z.infer<typeof filterSchema>;
26
- export type UseCollectionBalanceDetailsArgs = z.input<
27
- typeof useCollectionBalanceDetailsArgsSchema
28
- >;
15
+ export interface UseCollectionBalanceDetailsArgs {
16
+ chainId: number;
17
+ filter: CollectionBalanceFilter;
18
+ query?: QueryArg;
19
+ }
29
20
 
30
21
  const fetchCollectionBalanceDetails = async (
31
22
  args: UseCollectionBalanceDetailsArgs,
@@ -43,7 +34,10 @@ const fetchCollectionBalanceDetails = async (
43
34
 
44
35
  const responses = await Promise.all(promises);
45
36
  const mergedResponse = responses.reduce<GetTokenBalancesDetailsReturn>(
46
- (acc, curr) => {
37
+ (
38
+ acc: GetTokenBalancesDetailsReturn,
39
+ curr: GetTokenBalancesDetailsReturn | null,
40
+ ) => {
47
41
  if (!curr) return acc;
48
42
  return {
49
43
  page: curr.page,
@@ -68,13 +62,12 @@ export const collectionBalanceDetailsOptions = (
68
62
  args: UseCollectionBalanceDetailsArgs,
69
63
  config: SdkConfig,
70
64
  ) => {
71
- const parsedArgs = useCollectionBalanceDetailsArgsSchema.parse(args);
72
- const indexerClient = getIndexerClient(parsedArgs.chainId, config);
65
+ const indexerClient = getIndexerClient(args.chainId, config);
73
66
 
74
67
  return queryOptions({
75
68
  queryKey: [...balanceQueries.collectionBalanceDetails, args, config],
76
- queryFn: () => fetchCollectionBalanceDetails(parsedArgs, indexerClient),
77
- ...args.query,
69
+ queryFn: () => fetchCollectionBalanceDetails(args, indexerClient),
70
+ ...(args.query || {}),
78
71
  });
79
72
  };
80
73
 
@@ -0,0 +1,69 @@
1
+ 'use client';
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import type { Optional } from '../_internal';
5
+ import {
6
+ type CollectionDetailsQueryOptions,
7
+ collectionDetailsQueryOptions,
8
+ type FetchCollectionDetailsParams,
9
+ } from '../queries/collectionDetails';
10
+ import { useConfig } from './useConfig';
11
+
12
+ export type UseCollectionDetailsParams = Optional<
13
+ CollectionDetailsQueryOptions,
14
+ 'config'
15
+ >;
16
+
17
+ /**
18
+ * Hook to fetch detailed information about a collection
19
+ *
20
+ * This hook retrieves comprehensive metadata and details for an NFT collection,
21
+ * including collection name, description, banner, avatar, social links, stats, etc.
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.query - Optional React Query configuration
27
+ *
28
+ * @returns Query result containing the collection details
29
+ *
30
+ * @example
31
+ * Basic usage:
32
+ * ```typescript
33
+ * const { data: collection, isLoading } = useCollectionDetails({
34
+ * chainId: 137,
35
+ * collectionAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e'
36
+ * })
37
+ * ```
38
+ *
39
+ * @example
40
+ * With custom query options:
41
+ * ```typescript
42
+ * const { data } = useCollectionDetails({
43
+ * chainId: 137,
44
+ * collectionAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',
45
+ * query: {
46
+ * enabled: Boolean(collectionAddress),
47
+ * staleTime: 60_000
48
+ * }
49
+ * })
50
+ * ```
51
+ */
52
+ export function useCollectionDetails(params: UseCollectionDetailsParams) {
53
+ const defaultConfig = useConfig();
54
+
55
+ const { config = defaultConfig, ...rest } = params;
56
+
57
+ const queryOptions = collectionDetailsQueryOptions({
58
+ config,
59
+ ...rest,
60
+ });
61
+
62
+ return useQuery({
63
+ ...queryOptions,
64
+ });
65
+ }
66
+
67
+ export { collectionDetailsQueryOptions };
68
+
69
+ export type { FetchCollectionDetailsParams, CollectionDetailsQueryOptions };
@@ -1,12 +1,15 @@
1
1
  import { queryOptions, useQuery } from '@tanstack/react-query';
2
2
  import type { SdkConfig } from '../../types';
3
3
  import { CollectionStatus } from '../_internal/api/marketplace.gen';
4
- import { collectionDetailsOptions } from './useCollectionDetails';
4
+ import { collectionDetailsQueryOptions } from '../queries/collectionDetails';
5
5
  import { useConfig } from './useConfig';
6
6
 
7
7
  type UseCollectionDetailsPolling = {
8
8
  collectionAddress: string;
9
9
  chainId: number;
10
+ query?: {
11
+ enabled?: boolean;
12
+ };
10
13
  };
11
14
 
12
15
  const INITIAL_POLLING_INTERVAL = 2000; // 2 seconds
@@ -27,7 +30,11 @@ export const collectionDetailsPollingOptions = (
27
30
  config: SdkConfig,
28
31
  ) => {
29
32
  return queryOptions({
30
- ...collectionDetailsOptions(args, config),
33
+ ...collectionDetailsQueryOptions({
34
+ collectionAddress: args.collectionAddress,
35
+ chainId: args.chainId,
36
+ config,
37
+ }),
31
38
  refetchInterval: (query) => {
32
39
  const data = query.state.data;
33
40
  if (data && isTerminalState(data.status)) {
@@ -49,6 +56,7 @@ export const collectionDetailsPollingOptions = (
49
56
  },
50
57
  refetchOnWindowFocus: false,
51
58
  retry: false,
59
+ enabled: args.query?.enabled ?? true,
52
60
  });
53
61
  };
54
62
 
@@ -1,49 +1,46 @@
1
1
  import { queryOptions, useQuery } from '@tanstack/react-query';
2
- import { z } from 'zod';
2
+ import type { Address } from 'viem';
3
3
  import type { SdkConfig } from '../../types';
4
- import { AddressSchema, QueryArgSchema, currencyKeys } from '../_internal';
4
+ import { currencyKeys, type QueryArg } from '../_internal';
5
5
  import { useConfig } from './useConfig';
6
6
  import { convertPriceToUSD } from './useConvertPriceToUSD';
7
7
 
8
- const UseComparePricesArgsSchema = z.object({
9
- chainId: z.number(),
8
+ export interface UseComparePricesArgs {
9
+ chainId: number;
10
10
  // First price details
11
- priceAmountRaw: z.string(),
12
- priceCurrencyAddress: AddressSchema,
11
+ priceAmountRaw: string;
12
+ priceCurrencyAddress: Address;
13
13
  // Second price details (to compare against)
14
- compareToPriceAmountRaw: z.string(),
15
- compareToPriceCurrencyAddress: AddressSchema,
16
- query: QueryArgSchema,
17
- });
14
+ compareToPriceAmountRaw: string;
15
+ compareToPriceCurrencyAddress: Address;
16
+ query: QueryArg;
17
+ }
18
18
 
19
- type UseComparePricesArgs = z.input<typeof UseComparePricesArgsSchema>;
20
-
21
- export type UseComparePricesReturn = {
19
+ export interface UseComparePricesReturn {
22
20
  percentageDifference: number;
23
21
  percentageDifferenceFormatted: string;
24
22
  status: 'above' | 'same' | 'below';
25
- };
23
+ }
26
24
 
27
25
  const comparePrices = async (
28
26
  args: UseComparePricesArgs,
29
27
  config: SdkConfig,
30
28
  ): Promise<UseComparePricesReturn> => {
31
- const parsedArgs = UseComparePricesArgsSchema.parse(args);
32
29
  const [priceUSD, compareToPriceUSD] = await Promise.all([
33
30
  convertPriceToUSD(
34
31
  {
35
- chainId: parsedArgs.chainId,
36
- currencyAddress: parsedArgs.priceCurrencyAddress,
37
- amountRaw: parsedArgs.priceAmountRaw,
32
+ chainId: args.chainId,
33
+ currencyAddress: args.priceCurrencyAddress,
34
+ amountRaw: args.priceAmountRaw,
38
35
  query: {},
39
36
  },
40
37
  config,
41
38
  ),
42
39
  convertPriceToUSD(
43
40
  {
44
- chainId: parsedArgs.chainId,
45
- currencyAddress: parsedArgs.compareToPriceCurrencyAddress,
46
- amountRaw: parsedArgs.compareToPriceAmountRaw,
41
+ chainId: args.chainId,
42
+ currencyAddress: args.compareToPriceCurrencyAddress,
43
+ amountRaw: args.compareToPriceAmountRaw,
47
44
  query: {},
48
45
  },
49
46
  config,
@@ -1,26 +1,18 @@
1
1
  import { queryOptions, useQuery } from '@tanstack/react-query';
2
- import { formatUnits } from 'viem';
3
- import { z } from 'zod';
2
+ import { type Address, formatUnits } from 'viem';
4
3
  import type { SdkConfig } from '../../types';
5
- import {
6
- AddressSchema,
7
- QueryArgSchema,
8
- currencyKeys,
9
- getQueryClient,
10
- } from '../_internal';
11
- import { currenciesOptions } from '../queries/marketCurrencies';
4
+ import { type Currency, currencyKeys, getQueryClient } from '../_internal';
5
+ import { marketCurrenciesQueryOptions } from '../queries/marketCurrencies';
12
6
  import { useConfig } from './useConfig';
13
7
 
14
- const UseConvertPriceToUSDArgsSchema = z.object({
15
- chainId: z.number(),
16
- currencyAddress: AddressSchema,
17
- amountRaw: z.string(),
18
- query: QueryArgSchema,
19
- });
20
-
21
- export type UseConvertPriceToUSDArgs = z.input<
22
- typeof UseConvertPriceToUSDArgsSchema
23
- >;
8
+ export interface UseConvertPriceToUSDArgs {
9
+ chainId: number;
10
+ currencyAddress: Address;
11
+ amountRaw: string;
12
+ query?: {
13
+ enabled?: boolean;
14
+ };
15
+ }
24
16
 
25
17
  export type UseConvertPriceToUSDReturn = {
26
18
  usdAmount: number;
@@ -31,20 +23,16 @@ export const convertPriceToUSD = async (
31
23
  args: UseConvertPriceToUSDArgs,
32
24
  config: SdkConfig,
33
25
  ): Promise<UseConvertPriceToUSDReturn> => {
34
- const parsedArgs = UseConvertPriceToUSDArgsSchema.parse(args);
35
26
  const queryClient = getQueryClient();
36
- const currencies = await queryClient.fetchQuery(
37
- currenciesOptions(
38
- {
39
- chainId: parsedArgs.chainId,
40
- },
27
+ const currencies = (await queryClient.fetchQuery(
28
+ marketCurrenciesQueryOptions({
29
+ chainId: args.chainId,
41
30
  config,
42
- ),
43
- );
31
+ }),
32
+ )) as Currency[];
44
33
  const currencyDetails = currencies.find(
45
- (c) =>
46
- c.contractAddress.toLowerCase() ===
47
- parsedArgs.currencyAddress.toLowerCase(),
34
+ (c: Currency) =>
35
+ c.contractAddress.toLowerCase() === args.currencyAddress.toLowerCase(),
48
36
  );
49
37
 
50
38
  if (!currencyDetails) {
@@ -52,7 +40,7 @@ export const convertPriceToUSD = async (
52
40
  }
53
41
 
54
42
  const amountDecimal = Number(
55
- formatUnits(BigInt(parsedArgs.amountRaw), currencyDetails.decimals),
43
+ formatUnits(BigInt(args.amountRaw), currencyDetails.decimals),
56
44
  );
57
45
  const usdAmount = amountDecimal * currencyDetails.exchangeRate;
58
46
 
@@ -68,12 +56,7 @@ export const convertPriceToUSDOptions = (
68
56
  ) => {
69
57
  return queryOptions({
70
58
  ...args.query,
71
- queryKey: [
72
- ...currencyKeys.conversion,
73
- args.chainId,
74
- args.currencyAddress,
75
- args.amountRaw,
76
- ],
59
+ queryKey: [...currencyKeys.conversion, args],
77
60
  queryFn: () => convertPriceToUSD(args, config),
78
61
  });
79
62
  };
@@ -1,64 +1,75 @@
1
- import { queryOptions, useQuery } from '@tanstack/react-query';
2
- import { z } from 'zod';
3
- import type { SdkConfig } from '../../types';
1
+ 'use client';
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import type { Optional } from '../_internal';
4
5
  import {
5
- AddressSchema,
6
- QueryArgSchema,
7
- collectableKeys,
8
- getMarketplaceClient,
9
- } from '../_internal';
10
- import { countListingsForCollectibleArgsSchema } from '../_internal/api/zod-schema';
6
+ type CountListingsForCollectibleQueryOptions,
7
+ countListingsForCollectibleQueryOptions,
8
+ type FetchCountListingsForCollectibleParams,
9
+ } from '../queries/countListingsForCollectible';
11
10
  import { useConfig } from './useConfig';
12
11
 
13
- const UseCountListingsForCollectibleArgsSchema =
14
- countListingsForCollectibleArgsSchema
15
- .omit({
16
- contractAddress: true,
17
- tokenId: true,
18
- })
19
- .extend({
20
- collectionAddress: AddressSchema,
21
- collectibleId: z.string(),
22
- chainId: z.number(),
23
- query: QueryArgSchema,
24
- });
25
-
26
- export type UseCountListingsForCollectibleArgs = z.infer<
27
- typeof UseCountListingsForCollectibleArgsSchema
12
+ export type UseCountListingsForCollectibleParams = Optional<
13
+ CountListingsForCollectibleQueryOptions,
14
+ 'config'
28
15
  >;
29
16
 
30
- export type UseCountListingsForCollectibleReturn = Awaited<
31
- ReturnType<typeof fetchCountListingsForCollectible>
32
- >;
17
+ /**
18
+ * Hook to get the count of listings for a specific collectible
19
+ *
20
+ * Counts the number of active listings for a given collectible in the marketplace.
21
+ * Useful for displaying listing counts in UI components.
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.collectibleId - The specific collectible/token ID
27
+ * @param params.filter - Optional filter criteria for listings
28
+ * @param params.query - Optional React Query configuration
29
+ *
30
+ * @returns Query result containing the count of listings
31
+ *
32
+ * @example
33
+ * Basic usage:
34
+ * ```typescript
35
+ * const { data: listingCount, isLoading } = useCountListingsForCollectible({
36
+ * chainId: 137,
37
+ * collectionAddress: '0x...',
38
+ * collectibleId: '123'
39
+ * })
40
+ * ```
41
+ *
42
+ * @example
43
+ * With filter:
44
+ * ```typescript
45
+ * const { data: filteredCount } = useCountListingsForCollectible({
46
+ * chainId: 137,
47
+ * collectionAddress: '0x...',
48
+ * collectibleId: '123',
49
+ * filter: { priceRange: { min: '1000000000000000000' } }
50
+ * })
51
+ * ```
52
+ */
53
+ export function useCountListingsForCollectible(
54
+ params: UseCountListingsForCollectibleParams,
55
+ ) {
56
+ const defaultConfig = useConfig();
57
+
58
+ const { config = defaultConfig, ...rest } = params;
33
59
 
34
- const fetchCountListingsForCollectible = async (
35
- args: UseCountListingsForCollectibleArgs,
36
- config: SdkConfig,
37
- ) => {
38
- const parsedArgs = UseCountListingsForCollectibleArgsSchema.parse(args);
39
- const marketplaceClient = getMarketplaceClient(config);
40
- const { chainId, collectionAddress, collectibleId } = parsedArgs;
41
- return marketplaceClient.getCountOfListingsForCollectible({
42
- chainId: String(chainId),
43
- contractAddress: collectionAddress,
44
- tokenId: collectibleId,
60
+ const queryOptions = countListingsForCollectibleQueryOptions({
61
+ config,
62
+ ...rest,
45
63
  });
46
- };
47
64
 
48
- export const countListingsForCollectibleOptions = (
49
- args: UseCountListingsForCollectibleArgs,
50
- config: SdkConfig,
51
- ) => {
52
- return queryOptions({
53
- ...args.query,
54
- queryKey: [...collectableKeys.listingsCount, args, config],
55
- queryFn: () => fetchCountListingsForCollectible(args, config),
65
+ return useQuery({
66
+ ...queryOptions,
56
67
  });
57
- };
68
+ }
69
+
70
+ export { countListingsForCollectibleQueryOptions };
58
71
 
59
- export const useCountListingsForCollectible = (
60
- args: UseCountListingsForCollectibleArgs,
61
- ) => {
62
- const config = useConfig();
63
- return useQuery(countListingsForCollectibleOptions(args, config));
72
+ export type {
73
+ FetchCountListingsForCollectibleParams,
74
+ CountListingsForCollectibleQueryOptions,
64
75
  };