@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
@@ -1,14 +1,11 @@
1
1
  import type { Address } from 'viem';
2
2
  import { useReadContract } from 'wagmi';
3
- import {
4
- ContractType,
5
- ERC721_SALE_ABI,
6
- type TokenMetadata,
7
- } from '../../../../sdk/src';
8
- import type { ShopCollectibleCardProps } from '../ui/components/marketplace-collectible-card';
9
- import { useCollectionDetails } from './useCollectionDetails';
10
- import { useGetTokenSuppliesMap } from './useGetTokenSuppliesMap';
11
- import { useListTokenMetadata } from './useListTokenMetadata';
3
+ import { ERC721_SALE_ABI } from '../../utils';
4
+ import { ContractType, OrderSide, type TokenMetadata } from '../_internal';
5
+ import type { ShopCollectibleCardProps } from '../ui';
6
+ import { useFilterState } from './useFilterState';
7
+ import { useListCollectibles } from './useListCollectibles';
8
+ import { useListPrimarySaleItems } from './useListPrimarySaleItems';
12
9
 
13
10
  interface UseList721ShopCardDataProps {
14
11
  tokenIds: string[];
@@ -25,38 +22,37 @@ export function useList721ShopCardData({
25
22
  salesContractAddress,
26
23
  enabled = true,
27
24
  }: UseList721ShopCardDataProps) {
28
- const {
29
- data: tokenMetadata,
30
- isLoading: tokenMetadataLoading,
31
- error: tokenMetadataError,
32
- } = useListTokenMetadata({
33
- chainId,
34
- contractAddress,
35
- tokenIds,
36
- query: {
37
- enabled,
38
- },
39
- });
25
+ const { showListedOnly } = useFilterState();
40
26
 
41
27
  const {
42
- data: collectionDetails,
43
- error: collectionDetailsError,
44
- isLoading: collectionDetailsLoading,
45
- } = useCollectionDetails({
28
+ data: primarySaleItems,
29
+ isLoading: primarySaleItemsLoading,
30
+ error: primarySaleItemsError,
31
+ } = useListPrimarySaleItems({
46
32
  chainId,
47
- collectionAddress: contractAddress,
48
- query: {
49
- enabled,
33
+ primarySaleContractAddress: salesContractAddress,
34
+ filter: {
35
+ includeEmpty: !showListedOnly,
50
36
  },
51
37
  });
52
38
 
53
- const { data: tokenSupplies, isLoading: tokenSuppliesLoading } =
54
- useGetTokenSuppliesMap({
39
+ // Check if we have minted tokens by looking at the first available token ID
40
+ const firstAvailableTokenId =
41
+ primarySaleItems?.pages[0]?.primarySaleItems[0]?.primarySaleItem.tokenId?.toString();
42
+ const hasMintedTokens: boolean =
43
+ Boolean(firstAvailableTokenId) && Number(firstAvailableTokenId) > 0;
44
+
45
+ // Fetch metadata for minted tokens
46
+ const { data: mintedTokensMetadata, isLoading: mintedTokensMetadataLoading } =
47
+ useListCollectibles({
55
48
  chainId,
56
- tokenIds,
57
49
  collectionAddress: contractAddress,
50
+ side: OrderSide.listing,
51
+ filter: {
52
+ includeEmpty: true,
53
+ },
58
54
  query: {
59
- enabled,
55
+ enabled: enabled && hasMintedTokens,
60
56
  },
61
57
  });
62
58
 
@@ -77,43 +73,82 @@ export function useList721ShopCardData({
77
73
 
78
74
  const isLoading =
79
75
  saleDetailsLoading ||
80
- tokenMetadataLoading ||
81
- collectionDetailsLoading ||
82
- tokenSuppliesLoading;
83
-
84
- const tokenSupplyMap = new Map(
85
- tokenIds.map((tokenId) => {
86
- const supplies = tokenSupplies?.supplies[contractAddress];
87
- const supply = supplies?.find((s) => s.tokenID === tokenId);
88
- // If supply exists and is greater than 0, token exists and is owned
89
- return [tokenId, supply ? BigInt(supply.supply) > 0n : false];
90
- }),
91
- );
76
+ primarySaleItemsLoading ||
77
+ mintedTokensMetadataLoading;
78
+
79
+ // Create a map of token metadata from minted tokens
80
+ const mintedTokensMetadataMap = new Map<string, TokenMetadata>();
81
+ for (const page of mintedTokensMetadata?.pages ?? []) {
82
+ for (const collectible of page.collectibles) {
83
+ mintedTokensMetadataMap.set(
84
+ collectible.metadata.tokenId,
85
+ collectible.metadata,
86
+ );
87
+ }
88
+ }
92
89
 
93
90
  const collectibleCards = tokenIds.map((tokenId) => {
94
- const token = tokenMetadata?.find((token) => token.tokenId === tokenId);
95
- const hasOwner = tokenSupplyMap.get(tokenId) ?? false;
91
+ const minted =
92
+ hasMintedTokens && Number(tokenId) < Number(firstAvailableTokenId);
93
+
94
+ const matchingPrimarySaleItem = primarySaleItems?.pages
95
+ .find((item) =>
96
+ item.primarySaleItems.find(
97
+ (primarySaleItem) =>
98
+ primarySaleItem.primarySaleItem.tokenId?.toString() === tokenId,
99
+ ),
100
+ )
101
+ ?.primarySaleItems.find(
102
+ (primarySaleItem) =>
103
+ primarySaleItem.primarySaleItem.tokenId?.toString() === tokenId,
104
+ );
105
+
106
+ const saleData = matchingPrimarySaleItem?.primarySaleItem;
107
+ let tokenMetadata = matchingPrimarySaleItem?.metadata;
108
+
109
+ // If token is minted, prefer metadata from mintedTokensMetadata
110
+ if (minted && mintedTokensMetadataMap.has(tokenId)) {
111
+ tokenMetadata = mintedTokensMetadataMap.get(tokenId);
112
+ }
113
+ // Fallback to empty metadata if none found
114
+ tokenMetadata = tokenMetadata || ({} as TokenMetadata);
115
+
116
+ const salePrice = saleData
117
+ ? {
118
+ amount: saleData.priceAmount?.toString() || '',
119
+ currencyAddress: saleData.currencyAddress as Address,
120
+ }
121
+ : {
122
+ amount: saleDetails?.cost?.toString() || '',
123
+ currencyAddress: saleDetails?.paymentToken ?? ('0x' as Address),
124
+ };
125
+
126
+ const quantityInitial =
127
+ saleData?.supply?.toString() ??
128
+ (saleDetails?.supplyCap ? saleDetails.supplyCap.toString() : undefined);
129
+
130
+ const quantityRemaining = minted ? undefined : '1';
131
+
132
+ const saleStartsAt =
133
+ saleData?.startDate?.toString() ?? saleDetails?.startTime?.toString();
134
+
135
+ const saleEndsAt =
136
+ saleData?.endDate?.toString() ?? saleDetails?.endTime?.toString();
96
137
 
97
138
  return {
98
139
  collectibleId: tokenId,
99
140
  chainId,
100
- collectionAddress: contractAddress as Address,
141
+ collectionAddress: contractAddress,
101
142
  collectionType: ContractType.ERC721,
102
- tokenMetadata: token as TokenMetadata,
143
+ tokenMetadata,
103
144
  cardLoading: isLoading,
104
- salesContractAddress: salesContractAddress as Address,
105
- salePrice: {
106
- amount: saleDetails?.cost?.toString() || '',
107
- currencyAddress: saleDetails?.paymentToken ?? ('0x' as Address),
108
- },
109
- quantityInitial: saleDetails?.supplyCap
110
- ? saleDetails.supplyCap.toString()
111
- : undefined,
112
- quantityDecimals: collectionDetails?.tokenQuantityDecimals,
113
- // Set quantityRemaining based on supply status
114
- quantityRemaining: hasOwner ? undefined : '1',
115
- saleStartsAt: saleDetails?.startTime?.toString(),
116
- saleEndsAt: saleDetails?.endTime?.toString(),
145
+ salesContractAddress: salesContractAddress,
146
+ salePrice,
147
+ quantityInitial,
148
+ quantityRemaining,
149
+ quantityDecimals: 0,
150
+ saleStartsAt,
151
+ saleEndsAt,
117
152
  marketplaceType: 'shop',
118
153
  } satisfies ShopCollectibleCardProps;
119
154
  });
@@ -121,10 +156,10 @@ export function useList721ShopCardData({
121
156
  return {
122
157
  salePrice: collectibleCards[0]?.salePrice,
123
158
  collectibleCards,
124
- tokenMetadataError,
125
159
  saleDetailsError,
126
- collectionDetailsError,
160
+ primarySaleItemsError,
127
161
  saleDetails,
162
+ primarySaleItems,
128
163
  isLoading,
129
164
  };
130
165
  }
@@ -1,7 +1,7 @@
1
1
  import { useInfiniteQuery } from '@tanstack/react-query';
2
2
  import { ContractType } from '../_internal';
3
- import { listBalancesOptions } from '../queries/listBalances';
4
3
  import type { UseListBalancesArgs } from '../queries/listBalances';
4
+ import { listBalancesOptions } from '../queries/listBalances';
5
5
  import { useConfig } from './useConfig';
6
6
  import { useMarketplaceConfig } from './useMarketplaceConfig';
7
7
 
@@ -1,59 +1,98 @@
1
- import { queryOptions, useQuery } from '@tanstack/react-query';
2
- import type { z } from 'zod';
3
- import type { SdkConfig } from '../../types';
4
- import { collectableKeys, getMarketplaceClient } from '../_internal';
5
- import type {
6
- getListCollectibleActivitiesArgsSchema,
7
- getListCollectibleActivitiesReturnSchema,
8
- } from '../_internal/api/zod-schema';
1
+ 'use client';
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import type { Optional } from '../_internal';
5
+ import {
6
+ type FetchListCollectibleActivitiesParams,
7
+ type fetchListCollectibleActivities,
8
+ type ListCollectibleActivitiesQueryOptions,
9
+ listCollectibleActivitiesQueryOptions,
10
+ } from '../queries/listCollectibleActivities';
9
11
  import { useConfig } from './useConfig';
10
12
 
11
- export type UseListCollectibleActivitiesArgs = z.infer<
12
- typeof getListCollectibleActivitiesArgsSchema
13
+ export type UseListCollectibleActivitiesParams = Optional<
14
+ ListCollectibleActivitiesQueryOptions,
15
+ 'config'
13
16
  >;
14
17
 
15
- export type UseListCollectibleActivitiesReturn = z.infer<
16
- typeof getListCollectibleActivitiesReturnSchema
17
- >;
18
+ /**
19
+ * Hook to fetch a list of activities for a specific collectible
20
+ *
21
+ * Fetches activities (transfers, sales, offers, etc.) for a specific token
22
+ * from the marketplace with support for pagination and sorting.
23
+ *
24
+ * @param params - Configuration parameters
25
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
26
+ * @param params.collectionAddress - The collection contract address
27
+ * @param params.tokenId - The specific token ID to fetch activities for
28
+ * @param params.page - Page number to fetch (default: 1)
29
+ * @param params.pageSize - Number of activities per page (default: 10)
30
+ * @param params.sort - Sort order for activities
31
+ * @param params.query - Optional React Query configuration
32
+ *
33
+ * @returns Query result containing activities data
34
+ *
35
+ * @example
36
+ * Basic usage:
37
+ * ```typescript
38
+ * const { data, isLoading } = useListCollectibleActivities({
39
+ * chainId: 137,
40
+ * collectionAddress: '0x...',
41
+ * tokenId: '123'
42
+ * })
43
+ * ```
44
+ *
45
+ * @example
46
+ * With pagination:
47
+ * ```typescript
48
+ * const { data } = useListCollectibleActivities({
49
+ * chainId: 1,
50
+ * collectionAddress: '0x...',
51
+ * tokenId: '456',
52
+ * page: 2,
53
+ * pageSize: 20
54
+ * })
55
+ * ```
56
+ *
57
+ * @example
58
+ * With sorting:
59
+ * ```typescript
60
+ * const { data } = useListCollectibleActivities({
61
+ * chainId: 137,
62
+ * collectionAddress: '0x...',
63
+ * tokenId: '789',
64
+ * sort: 'timestamp_desc',
65
+ * pageSize: 50
66
+ * })
67
+ * ```
68
+ */
69
+ export function useListCollectibleActivities(
70
+ params: UseListCollectibleActivitiesParams,
71
+ ) {
72
+ const defaultConfig = useConfig();
18
73
 
19
- const fetchCollectibleActivities = async (
20
- args: UseListCollectibleActivitiesArgs,
21
- config: SdkConfig,
22
- ) => {
23
- const marketplaceClient = getMarketplaceClient(config);
24
- return marketplaceClient
25
- .listCollectibleActivities({
26
- chainId: String(args.chainId),
27
- contractAddress: args.collectionAddress,
28
- tokenId: args.tokenId,
29
- page: args.query?.enabled
30
- ? {
31
- page: args.query.page ?? 1,
32
- pageSize: args.query.pageSize ?? 10,
33
- sort: args.query.sort,
34
- }
35
- : undefined,
36
- })
37
- .then((data) => ({
38
- activities: data.activities,
39
- page: data.page,
40
- }));
41
- };
74
+ const { config = defaultConfig, ...rest } = params;
42
75
 
43
- export const listCollectibleActivitiesOptions = (
44
- args: UseListCollectibleActivitiesArgs,
45
- config: SdkConfig,
46
- ) => {
47
- return queryOptions({
48
- queryKey: [...collectableKeys.collectibleActivities, args, config],
49
- queryFn: () => fetchCollectibleActivities(args, config),
50
- enabled: args.query?.enabled ?? true,
76
+ const queryOptions = listCollectibleActivitiesQueryOptions({
77
+ config,
78
+ ...rest,
51
79
  });
52
- };
53
80
 
54
- export const useListCollectibleActivities = (
55
- args: UseListCollectibleActivitiesArgs,
56
- ) => {
57
- const config = useConfig();
58
- return useQuery(listCollectibleActivitiesOptions(args, config));
81
+ return useQuery({
82
+ ...queryOptions,
83
+ });
84
+ }
85
+
86
+ export { listCollectibleActivitiesQueryOptions };
87
+
88
+ export type {
89
+ FetchListCollectibleActivitiesParams,
90
+ ListCollectibleActivitiesQueryOptions,
59
91
  };
92
+
93
+ // Legacy exports for backward compatibility during migration
94
+ export type UseListCollectibleActivitiesArgs =
95
+ UseListCollectibleActivitiesParams;
96
+ export type UseListCollectibleActivitiesReturn = Awaited<
97
+ ReturnType<typeof fetchListCollectibleActivities>
98
+ >;
@@ -1,28 +1,93 @@
1
+ 'use client';
2
+
1
3
  import { useInfiniteQuery } from '@tanstack/react-query';
2
- import { listCollectiblesOptions } from '../queries/listCollectibles';
3
- import type { UseListCollectiblesArgs } from '../queries/listCollectibles';
4
+ import type { Optional } from '../_internal';
5
+ import {
6
+ type FetchListCollectiblesParams,
7
+ type ListCollectiblesQueryOptions,
8
+ listCollectiblesQueryOptions,
9
+ } from '../queries/listCollectibles';
4
10
  import { useConfig } from './useConfig';
5
11
 
12
+ export type UseListCollectiblesParams = Optional<
13
+ ListCollectiblesQueryOptions,
14
+ 'config'
15
+ >;
16
+
6
17
  /**
7
- * Hook to fetch a list of collectibles with pagination support
18
+ * Hook to fetch a list of collectibles with infinite pagination support
19
+ *
20
+ * Fetches collectibles from the marketplace with support for filtering, pagination,
21
+ * and special handling for shop marketplace types and LAOS721 contracts.
8
22
  *
9
- * @param args - The arguments for fetching the collectibles
10
- * @returns Infinite query result containing the collectibles data including orders
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.side - Order side (listing or bid)
27
+ * @param params.filter - Optional filtering parameters
28
+ * @param params.isLaos721 - Whether the collection is a LAOS721 contract
29
+ * @param params.marketplaceType - Type of marketplace (shop, etc.)
30
+ * @param params.query - Optional React Query configuration
31
+ *
32
+ * @returns Infinite query result containing collectibles data with pagination
11
33
  *
12
34
  * @example
13
- * ```tsx
14
- * const { data, isLoading, error, fetchNextPage } = useListCollectibles({
35
+ * Basic usage:
36
+ * ```typescript
37
+ * const { data, isLoading, fetchNextPage, hasNextPage } = useListCollectibles({
38
+ * chainId: 137,
39
+ * collectionAddress: '0x...',
40
+ * side: OrderSide.listing
41
+ * })
42
+ * ```
43
+ *
44
+ * @example
45
+ * With filtering:
46
+ * ```typescript
47
+ * const { data, fetchNextPage } = useListCollectibles({
15
48
  * chainId: 1,
16
- * collectionAddress: '0x123...',
17
- * includeMetadata: true,
18
- * query: {
19
- * enabled: true,
20
- * refetchInterval: 10000,
49
+ * collectionAddress: '0x...',
50
+ * side: OrderSide.listing,
51
+ * filter: {
52
+ * searchText: 'dragon',
53
+ * includeEmpty: false,
54
+ * marketplaces: [MarketplaceKind.sequence_marketplace_v2]
21
55
  * }
22
- * });
56
+ * })
57
+ * ```
58
+ *
59
+ * @example
60
+ * For LAOS721 collections:
61
+ * ```typescript
62
+ * const { data } = useListCollectibles({
63
+ * chainId: 137,
64
+ * collectionAddress: '0x...',
65
+ * side: OrderSide.listing,
66
+ * isLaos721: true,
67
+ * filter: {
68
+ * inAccounts: ['0x...']
69
+ * }
70
+ * })
23
71
  * ```
24
72
  */
25
- export function useListCollectibles(args: UseListCollectiblesArgs) {
26
- const config = useConfig();
27
- return useInfiniteQuery(listCollectiblesOptions({ ...args }, config));
73
+ export function useListCollectibles(params: UseListCollectiblesParams) {
74
+ const defaultConfig = useConfig();
75
+
76
+ const { config = defaultConfig, ...rest } = params;
77
+
78
+ const queryOptions = listCollectiblesQueryOptions({
79
+ config,
80
+ ...rest,
81
+ });
82
+
83
+ return useInfiniteQuery({
84
+ ...queryOptions,
85
+ });
28
86
  }
87
+
88
+ export { listCollectiblesQueryOptions };
89
+
90
+ export type { FetchListCollectiblesParams, ListCollectiblesQueryOptions };
91
+
92
+ // Legacy export for backward compatibility during migration
93
+ export type UseListCollectiblesArgs = UseListCollectiblesParams;
@@ -1,77 +1,107 @@
1
- import { queryOptions, useQuery } from '@tanstack/react-query';
2
- import { z } from 'zod';
3
- import type { Page, 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
- type ListCollectiblesArgs,
7
- collectableKeys,
8
- getMarketplaceClient,
9
- } from '../_internal';
10
- import { listCollectiblesArgsSchema } from '../_internal/api/zod-schema';
6
+ type FetchListCollectiblesPaginatedParams,
7
+ type fetchListCollectiblesPaginated,
8
+ type ListCollectiblesPaginatedQueryOptions,
9
+ listCollectiblesPaginatedQueryOptions,
10
+ } from '../queries/listCollectiblesPaginated';
11
11
  import { useConfig } from './useConfig';
12
12
 
13
- const UseListCollectiblesPaginatedArgsSchema = listCollectiblesArgsSchema
14
- .omit({
15
- contractAddress: true,
16
- })
17
- .extend({
18
- collectionAddress: AddressSchema,
19
- chainId: z.number(),
20
- query: z
21
- .object({
22
- enabled: z.boolean().optional(),
23
- page: z.number().optional().default(1),
24
- pageSize: z.number().optional().default(30),
25
- })
26
- .optional()
27
- .default({}),
28
- });
29
-
30
- export type UseListCollectiblesPaginatedArgs = z.infer<
31
- typeof UseListCollectiblesPaginatedArgsSchema
13
+ export type UseListCollectiblesPaginatedParams = Optional<
14
+ ListCollectiblesPaginatedQueryOptions,
15
+ 'config'
32
16
  >;
33
17
 
34
- export type UseListCollectiblesPaginatedReturn = Awaited<
35
- ReturnType<typeof fetchCollectiblesPaginated>
36
- >;
37
-
38
- const fetchCollectiblesPaginated = async (
39
- args: UseListCollectiblesPaginatedArgs,
40
- marketplaceClient: Awaited<ReturnType<typeof getMarketplaceClient>>,
41
- ) => {
42
- const parsedArgs = UseListCollectiblesPaginatedArgsSchema.parse(args);
43
- const page: Page = {
44
- page: parsedArgs.query?.page ?? 1,
45
- pageSize: parsedArgs.query?.pageSize ?? 30,
46
- };
18
+ /**
19
+ * Hook to fetch a list of collectibles with pagination support
20
+ *
21
+ * Fetches collectibles from the marketplace with support for filtering and pagination.
22
+ * Unlike the infinite query version, this hook fetches a specific page of results.
23
+ *
24
+ * @param params - Configuration parameters
25
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
26
+ * @param params.collectionAddress - The collection contract address
27
+ * @param params.side - Order side (listing or bid)
28
+ * @param params.filter - Optional filtering parameters
29
+ * @param params.page - Page number to fetch (default: 1)
30
+ * @param params.pageSize - Number of items per page (default: 30)
31
+ * @param params.query - Optional React Query configuration
32
+ *
33
+ * @returns Query result containing collectibles data for the specific page
34
+ *
35
+ * @example
36
+ * Basic usage:
37
+ * ```typescript
38
+ * const { data, isLoading } = useListCollectiblesPaginated({
39
+ * chainId: 137,
40
+ * collectionAddress: '0x...',
41
+ * side: OrderSide.listing,
42
+ * page: 1,
43
+ * pageSize: 20
44
+ * })
45
+ * ```
46
+ *
47
+ * @example
48
+ * With filtering:
49
+ * ```typescript
50
+ * const { data } = useListCollectiblesPaginated({
51
+ * chainId: 1,
52
+ * collectionAddress: '0x...',
53
+ * side: OrderSide.listing,
54
+ * page: 2,
55
+ * pageSize: 50,
56
+ * filter: {
57
+ * searchText: 'rare',
58
+ * includeEmpty: false
59
+ * }
60
+ * })
61
+ * ```
62
+ *
63
+ * @example
64
+ * Controlled pagination:
65
+ * ```typescript
66
+ * const [currentPage, setCurrentPage] = useState(1);
67
+ * const { data, isLoading } = useListCollectiblesPaginated({
68
+ * chainId: 137,
69
+ * collectionAddress: '0x...',
70
+ * side: OrderSide.listing,
71
+ * page: currentPage,
72
+ * pageSize: 25
73
+ * });
74
+ *
75
+ * const hasMorePages = data?.page?.more;
76
+ * ```
77
+ */
78
+ export function useListCollectiblesPaginated(
79
+ params: UseListCollectiblesPaginatedParams,
80
+ ) {
81
+ const defaultConfig = useConfig();
47
82
 
48
- const { chainId, collectionAddress, ...restArgs } = parsedArgs;
49
- const arg: ListCollectiblesArgs = {
50
- chainId: String(chainId),
51
- contractAddress: collectionAddress,
52
- page,
53
- side: restArgs.side,
54
- filter: restArgs.filter,
55
- };
83
+ const { config = defaultConfig, ...rest } = params;
56
84
 
57
- return marketplaceClient.listCollectibles(arg);
58
- };
85
+ const queryOptions = listCollectiblesPaginatedQueryOptions({
86
+ config,
87
+ ...rest,
88
+ });
59
89
 
60
- export const listCollectiblesPaginatedOptions = (
61
- args: UseListCollectiblesPaginatedArgs,
62
- config: SdkConfig,
63
- ) => {
64
- const marketplaceClient = getMarketplaceClient(config);
65
- return queryOptions({
66
- queryKey: [...collectableKeys.lists, 'paginated', args],
67
- queryFn: () => fetchCollectiblesPaginated(args, marketplaceClient),
68
- enabled: args.query?.enabled ?? true,
90
+ return useQuery({
91
+ ...queryOptions,
69
92
  });
70
- };
93
+ }
94
+
95
+ export { listCollectiblesPaginatedQueryOptions };
71
96
 
72
- export const useListCollectiblesPaginated = (
73
- args: UseListCollectiblesPaginatedArgs,
74
- ) => {
75
- const config = useConfig();
76
- return useQuery(listCollectiblesPaginatedOptions(args, config));
97
+ export type {
98
+ FetchListCollectiblesPaginatedParams,
99
+ ListCollectiblesPaginatedQueryOptions,
77
100
  };
101
+
102
+ // Legacy exports for backward compatibility during migration
103
+ export type UseListCollectiblesPaginatedArgs =
104
+ UseListCollectiblesPaginatedParams;
105
+ export type UseListCollectiblesPaginatedReturn = Awaited<
106
+ ReturnType<typeof fetchListCollectiblesPaginated>
107
+ >;