@0xsequence/marketplace-sdk 0.8.12 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/.storybook/main.ts +63 -0
  2. package/.storybook/preview.ts +24 -0
  3. package/.storybook/vitest.setup.ts +6 -0
  4. package/CHANGELOG.md +158 -21
  5. package/dist/{CartIcon-Bll1rbxv.js → CalendarIcon-CqsuAuCm.js} +30 -77
  6. package/dist/CalendarIcon-CqsuAuCm.js.map +1 -0
  7. package/dist/{types-BIJOaL4j.d.ts → CollectibleCard-Dd-CG6dE.d.ts} +11 -7
  8. package/dist/InfoIcon-v0w_Lu7t.js +53 -0
  9. package/dist/InfoIcon-v0w_Lu7t.js.map +1 -0
  10. package/dist/_internal-C75gOSNo.js +14 -0
  11. package/dist/_internal-C75gOSNo.js.map +1 -0
  12. package/dist/actionModal-CMUeVsFX.js +116 -0
  13. package/dist/actionModal-CMUeVsFX.js.map +1 -0
  14. package/dist/{alien_swap-B_76IMma.js → alien_swap-CYv6YlOF.js} +1 -1
  15. package/dist/{alien_swap-B_76IMma.js.map → alien_swap-CYv6YlOF.js.map} +1 -1
  16. package/dist/{api-1KFxYh7o.js → api-BiMGqWdz.js} +79 -87
  17. package/dist/api-BiMGqWdz.js.map +1 -0
  18. package/dist/{aqua-xyz-CMN_TFY5.js → aqua-xyz-Bzn5baeH.js} +1 -1
  19. package/dist/{aqua-xyz-CMN_TFY5.js.map → aqua-xyz-Bzn5baeH.js.map} +1 -1
  20. package/dist/{aura-Cye_TuHj.js → aura-DzIWh8WT.js} +1 -1
  21. package/dist/{aura-Cye_TuHj.js.map → aura-DzIWh8WT.js.map} +1 -1
  22. package/dist/base-DqaJPvfN.js +22 -0
  23. package/dist/base-DqaJPvfN.js.map +1 -0
  24. package/dist/{blur-DWDMyMpK.js → blur-DSH-Cbpj.js} +1 -1
  25. package/dist/{blur-DWDMyMpK.js.map → blur-DSH-Cbpj.js.map} +1 -1
  26. package/dist/{builder-api-BQvzykoU.js → builder-api-BFuZNOaN.js} +2 -2
  27. package/dist/{builder-api-BQvzykoU.js.map → builder-api-BFuZNOaN.js.map} +1 -1
  28. package/dist/{builder.gen-CxP9NT1p.js → builder.gen-B9wR2nvF.js} +1 -1
  29. package/dist/builder.gen-B9wR2nvF.js.map +1 -0
  30. package/dist/{coinbase-ByA_XRB0.js → coinbase-Df8URNxq.js} +1 -1
  31. package/dist/{coinbase-ByA_XRB0.js.map → coinbase-Df8URNxq.js.map} +1 -1
  32. package/dist/{sdk-config-DJzxVPld.d.ts → create-config-DKJ-F0jc.d.ts} +458 -86
  33. package/dist/{wagmi-DRctYEk6.js → create-config-fQ-jbJD1.js} +33 -16
  34. package/dist/create-config-fQ-jbJD1.js.map +1 -0
  35. package/dist/{element-b77CyXIZ.js → element-Cx6uJu5N.js} +1 -1
  36. package/dist/{element-b77CyXIZ.js.map → element-Cx6uJu5N.js.map} +1 -1
  37. package/dist/{foundation-DbOrKP9Y.js → foundation-D6U4aRLN.js} +1 -1
  38. package/dist/{foundation-DbOrKP9Y.js.map → foundation-D6U4aRLN.js.map} +1 -1
  39. package/dist/get-provider-CYYHfrlg.js +10 -0
  40. package/dist/get-provider-CYYHfrlg.js.map +1 -0
  41. package/dist/get-query-client-D19vvfJo.js +23 -0
  42. package/dist/get-query-client-D19vvfJo.js.map +1 -0
  43. package/dist/hooks-4pxIbLbM.js +4044 -0
  44. package/dist/hooks-4pxIbLbM.js.map +1 -0
  45. package/dist/{index-1bezgsFq.d.ts → index-136YrWDH.d.ts} +929 -255
  46. package/dist/{index-D5v5iluA.d.ts → index-BAhaEfqY.d.ts} +1 -1
  47. package/dist/index-BKBin-rq.d.ts +979 -0
  48. package/dist/index-BUWB_RXp.d.ts +3144 -0
  49. package/dist/{index-Cl7PQOGu.d.ts → index-BhVFc2rX.d.ts} +28 -25
  50. package/dist/{index-DXMfTZ1F.d.ts → index-C5aqo8xu.d.ts} +1 -1
  51. package/dist/{index-BIMIpDiI.d.ts → index-CKrYP7ot.d.ts} +74 -103
  52. package/dist/{index-BEYefG1G.d.ts → index-CUwMH7Ht.d.ts} +5 -5
  53. package/dist/{index-BjIwVzc4.d.ts → index-Cu70Lw-w.d.ts} +238 -238
  54. package/dist/index.css +427 -1
  55. package/dist/index.d.ts +8 -10
  56. package/dist/index.js +15 -11
  57. package/dist/{looks-rare-C1VqNcSM.js → looks-rare-ChBRBY-p.js} +1 -1
  58. package/dist/{looks-rare-C1VqNcSM.js.map → looks-rare-ChBRBY-p.js.map} +1 -1
  59. package/dist/{magic-eden-ea_AGCZr.js → magic-eden-D5U7N1xL.js} +1 -1
  60. package/dist/{magic-eden-ea_AGCZr.js.map → magic-eden-D5U7N1xL.js.map} +1 -1
  61. package/dist/{manifold-8y8J2sjT.js → manifold-CtLF52zU.js} +1 -1
  62. package/dist/{manifold-8y8J2sjT.js.map → manifold-CtLF52zU.js.map} +1 -1
  63. package/dist/{marketplace-nwnZv9Cb.js → marketplace-DmFiyBoS.js} +1 -1
  64. package/dist/{marketplace-nwnZv9Cb.js.map → marketplace-DmFiyBoS.js.map} +1 -1
  65. package/dist/{marketplace-logos-CSeGcPW4.js → marketplace-logos-Cd6W-qOq.js} +21 -21
  66. package/dist/{marketplace-logos-CSeGcPW4.js.map → marketplace-logos-Cd6W-qOq.js.map} +1 -1
  67. package/dist/{marketplace.gen-Dqk8vRmD.js → marketplace.gen-HpnpL5xU.js} +12 -3
  68. package/dist/marketplace.gen-HpnpL5xU.js.map +1 -0
  69. package/dist/{marketplaceConfig-D2MYFqll.js → marketplaceConfig-GQTTmihy.js} +3 -3
  70. package/dist/marketplaceConfig-GQTTmihy.js.map +1 -0
  71. package/dist/{mintify-LA68TzWg.js → mintify-Bi3Bce68.js} +1 -1
  72. package/dist/{mintify-LA68TzWg.js.map → mintify-Bi3Bce68.js.map} +1 -1
  73. package/dist/network-CGD0oKtS.js +15 -0
  74. package/dist/network-CGD0oKtS.js.map +1 -0
  75. package/dist/{nftx-D3Tc8nzd.js → nftx-BDQZjtkX.js} +1 -1
  76. package/dist/{nftx-D3Tc8nzd.js.map → nftx-BDQZjtkX.js.map} +1 -1
  77. package/dist/{okx-hbqg6oIJ.js → okx-D4meadLe.js} +1 -1
  78. package/dist/{okx-hbqg6oIJ.js.map → okx-D4meadLe.js.map} +1 -1
  79. package/dist/{open-sea-BccuK8-t.js → open-sea-DN0hgfVw.js} +1 -1
  80. package/dist/{open-sea-BccuK8-t.js.map → open-sea-DN0hgfVw.js.map} +1 -1
  81. package/dist/options-BBBR8u_4.js +0 -0
  82. package/dist/{primary-sale-Cw95phYC.js → primary-sale-CmWxSfFQ.js} +279 -279
  83. package/dist/primary-sale-CmWxSfFQ.js.map +1 -0
  84. package/dist/provider-DPGUA10G.js +125 -0
  85. package/dist/provider-DPGUA10G.js.map +1 -0
  86. package/dist/queries-Ce_2othB.js +757 -0
  87. package/dist/queries-Ce_2othB.js.map +1 -0
  88. package/dist/{rarible-BgTwwj9g.js → rarible-B0xlD88A.js} +1 -1
  89. package/dist/{rarible-BgTwwj9g.js.map → rarible-B0xlD88A.js.map} +1 -1
  90. package/dist/react/_internal/api/index.d.ts +2 -4
  91. package/dist/react/_internal/api/index.js +9 -6
  92. package/dist/react/_internal/databeat/index.d.ts +2 -73
  93. package/dist/react/_internal/databeat/index.js +4 -21
  94. package/dist/react/_internal/index.d.ts +2 -7
  95. package/dist/react/_internal/index.js +13 -8
  96. package/dist/react/_internal/wagmi/index.d.ts +2 -4
  97. package/dist/react/_internal/wagmi/index.js +6 -4
  98. package/dist/react/hooks/index.d.ts +13 -17
  99. package/dist/react/hooks/index.js +25 -21
  100. package/dist/react/hooks/options/index.d.ts +3 -5
  101. package/dist/react/hooks/options/index.js +15 -10
  102. package/dist/react/index.d.ts +13 -40
  103. package/dist/react/index.js +30 -21
  104. package/dist/react/queries/index.d.ts +9 -8
  105. package/dist/react/queries/index.js +22 -17
  106. package/dist/react/ssr/index.d.ts +7 -9
  107. package/dist/react/ssr/index.js +13 -8
  108. package/dist/react/ssr/index.js.map +1 -1
  109. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +3 -9
  110. package/dist/react/ui/components/marketplace-collectible-card/index.js +29 -20
  111. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -7
  112. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +13 -8
  113. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  114. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  115. package/dist/react/ui/icons/index.js +14 -10
  116. package/dist/react/ui/index.d.ts +3 -9
  117. package/dist/react/ui/index.js +29 -20
  118. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +5 -5
  119. package/dist/react/ui/modals/_internal/components/actionModal/index.js +25 -20
  120. package/dist/{react-BG7o4PId.js → react-DP0M2Wfm.js} +4919 -7839
  121. package/dist/react-DP0M2Wfm.js.map +1 -0
  122. package/dist/{react-BbHBl6gg.css → react-DeDyTgo7.css} +1 -1
  123. package/dist/{react-BbHBl6gg.css.map → react-DeDyTgo7.css.map} +1 -1
  124. package/dist/{sequence-Do3kzb4J.js → sequence-BIrOVRXO.js} +1 -1
  125. package/dist/{sequence-Do3kzb4J.js.map → sequence-BIrOVRXO.js.map} +1 -1
  126. package/dist/{sudo-swap-B6vPKxBz.js → sudo-swap-BPMon-M5.js} +1 -1
  127. package/dist/{sudo-swap-B6vPKxBz.js.map → sudo-swap-BPMon-M5.js.map} +1 -1
  128. package/dist/{super-rare-eCm1SE6O.js → super-rare-kPN6Ua8i.js} +1 -1
  129. package/dist/{super-rare-eCm1SE6O.js.map → super-rare-kPN6Ua8i.js.map} +1 -1
  130. package/dist/{token-CO5llIla.js → token-CHSBPYVG.js} +1540 -761
  131. package/dist/token-CHSBPYVG.js.map +1 -0
  132. package/dist/{transaction-CcVViHEL.js → transaction-CnctdNzS.js} +3 -21
  133. package/dist/transaction-CnctdNzS.js.map +1 -0
  134. package/dist/types/index.d.ts +2 -3
  135. package/dist/types/index.js +3 -3
  136. package/dist/{types-DwWE6xOF.js → types-Yw2ywj6j.js} +1 -1
  137. package/dist/types-Yw2ywj6j.js.map +1 -0
  138. package/dist/utils/abi/index.d.ts +5 -5
  139. package/dist/utils/abi/index.js +5 -5
  140. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  141. package/dist/utils/abi/marketplace/index.js +1 -1
  142. package/dist/utils/abi/primary-sale/index.d.ts +1 -1
  143. package/dist/utils/abi/primary-sale/index.js +1 -1
  144. package/dist/utils/abi/token/index.d.ts +2 -2
  145. package/dist/utils/abi/token/index.js +2 -2
  146. package/dist/utils/index.d.ts +7 -8
  147. package/dist/utils/index.js +13 -10
  148. package/dist/{utils-BFdxaToy.js → utils-9RXDgcBl.js} +86 -93
  149. package/dist/utils-9RXDgcBl.js.map +1 -0
  150. package/dist/{utils-Cat9_pef.js → utils-DjVJ9tov.js} +5 -6
  151. package/dist/utils-DjVJ9tov.js.map +1 -0
  152. package/dist/wagmi-Do_KW5ke.js +0 -0
  153. package/dist/{x2y2-DD17tT91.js → x2y2-BLz-_Q2O.js} +1 -1
  154. package/dist/{x2y2-DD17tT91.js.map → x2y2-BLz-_Q2O.js.map} +1 -1
  155. package/dist/{zora-BpSG9UzS.js → zora-UGhKs-aL.js} +1 -1
  156. package/dist/{zora-BpSG9UzS.js.map → zora-UGhKs-aL.js.map} +1 -1
  157. package/eslint/use-client.js +0 -6
  158. package/eslint.config.mjs +4 -0
  159. package/package.json +47 -35
  160. package/postcss.config.mjs +6 -0
  161. package/src/index.css +5 -4
  162. package/src/index.ts +2 -1
  163. package/src/react/__tests__/provider.test.tsx +4 -3
  164. package/src/react/_internal/api/__mocks__/builder.msw.ts +5 -3
  165. package/src/react/_internal/api/__mocks__/indexer.msw.ts +24 -8
  166. package/src/react/_internal/api/__mocks__/laos.msw.ts +387 -0
  167. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +6 -6
  168. package/src/react/_internal/api/__mocks__/metadata.msw.ts +1 -1
  169. package/src/react/_internal/api/__tests__/laos-api.test.ts +756 -0
  170. package/src/react/_internal/api/builder.gen.ts +6 -6
  171. package/src/react/_internal/api/get-query-client.ts +2 -2
  172. package/src/react/_internal/api/index.ts +2 -2
  173. package/src/react/_internal/api/laos-api.ts +3 -0
  174. package/src/react/_internal/api/marketplace.gen.ts +43 -3
  175. package/src/react/_internal/api/query-keys.ts +21 -6
  176. package/src/react/_internal/api/services.ts +30 -45
  177. package/src/react/_internal/databeat/index.ts +15 -14
  178. package/src/react/_internal/databeat/types.ts +22 -0
  179. package/src/react/_internal/databeat/utils.ts +26 -0
  180. package/src/react/_internal/index.ts +1 -1
  181. package/src/react/_internal/types.ts +10 -23
  182. package/src/react/_internal/utils.ts +4 -5
  183. package/src/react/_internal/wagmi/create-config.ts +43 -19
  184. package/src/react/_internal/wagmi/get-connectors.ts +9 -7
  185. package/src/react/_internal/wallet/__tests__/wallet.test.ts +1 -1
  186. package/src/react/_internal/wallet/wallet.ts +22 -22
  187. package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +20 -0
  188. package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +12 -2
  189. package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +1 -1
  190. package/src/react/hooks/__tests__/useBalanceOfCollectible.laos.test.tsx +367 -0
  191. package/src/react/hooks/__tests__/useBalanceOfCollectible.test.tsx +1 -1
  192. package/src/react/hooks/__tests__/useCancelOrder.test.tsx +4 -4
  193. package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +1 -1
  194. package/src/react/hooks/__tests__/useCheckoutOptions.test.tsx +158 -0
  195. package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +42 -65
  196. package/src/react/hooks/__tests__/useCollectible.test.tsx +14 -16
  197. package/src/react/hooks/__tests__/useCollection.test.tsx +4 -4
  198. package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +16 -25
  199. package/src/react/hooks/__tests__/useCollectionDetails.test.tsx +1 -1
  200. package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +12 -4
  201. package/src/react/hooks/__tests__/useComparePrices.test.tsx +7 -6
  202. package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +4 -4
  203. package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +2 -2
  204. package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +5 -5
  205. package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +2 -2
  206. package/src/react/hooks/__tests__/useCurrency.test.tsx +5 -3
  207. package/src/react/hooks/__tests__/useCurrencyBalance.test.tsx +7 -3
  208. package/src/react/hooks/__tests__/useFilters.test.tsx +3 -3
  209. package/src/react/hooks/__tests__/useFloorOrder.test.tsx +4 -4
  210. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +3 -3
  211. package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +1 -1
  212. package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +1 -1
  213. package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +1 -1
  214. package/src/react/hooks/__tests__/useGetTokenRanges.test.tsx +111 -0
  215. package/src/react/hooks/__tests__/useHighestOffer.test.tsx +4 -4
  216. package/src/react/hooks/__tests__/useInventory.test.tsx +1 -1
  217. package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +11 -13
  218. package/src/react/hooks/__tests__/useListCollectibles.test.tsx +5 -5
  219. package/src/react/hooks/__tests__/useListCollectiblesPaginated.test.tsx +10 -15
  220. package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +13 -15
  221. package/src/react/hooks/__tests__/useListCollections.test.tsx +3 -3
  222. package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +3 -2
  223. package/src/react/hooks/__tests__/useListMarketCardData.test.tsx +301 -0
  224. package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +1 -1
  225. package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +137 -0
  226. package/src/react/hooks/__tests__/useLowestListing.test.tsx +1 -1
  227. package/src/react/hooks/__tests__/useMarketCurrencies.test.tsx +1 -1
  228. package/src/react/hooks/__tests__/useRoyalty.test.tsx +0 -23
  229. package/src/react/hooks/__tests__/useTransferTokens.test.tsx +469 -0
  230. package/src/react/hooks/index.ts +29 -24
  231. package/src/react/hooks/options/index.ts +0 -1
  232. package/src/react/hooks/useAutoSelectFeeOption.tsx +1 -1
  233. package/src/react/hooks/useBalanceOfCollectible.tsx +1 -1
  234. package/src/react/hooks/useCancelTransactionSteps.tsx +2 -2
  235. package/src/react/hooks/useCheckoutOptions.tsx +84 -54
  236. package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +98 -57
  237. package/src/react/hooks/useCollectible.tsx +64 -49
  238. package/src/react/hooks/useCollection.tsx +60 -11
  239. package/src/react/hooks/useCollectionBalanceDetails.tsx +93 -73
  240. package/src/react/hooks/useCollectionDetails.ts +69 -0
  241. package/src/react/hooks/useCollectionDetailsPolling.tsx +7 -3
  242. package/src/react/hooks/useComparePrices.tsx +91 -86
  243. package/src/react/hooks/useConvertPriceToUSD.tsx +83 -86
  244. package/src/react/hooks/useCountListingsForCollectible.tsx +64 -53
  245. package/src/react/hooks/useCountOfCollectables.tsx +60 -69
  246. package/src/react/hooks/useCountOfPrimarySaleItems.tsx +13 -0
  247. package/src/react/hooks/useCountOffersForCollectible.tsx +64 -53
  248. package/src/react/hooks/useCurrency.tsx +56 -64
  249. package/src/react/hooks/useCurrencyBalance.tsx +132 -46
  250. package/src/react/hooks/useERC721SaleMintedTokens.tsx +8 -5
  251. package/src/react/hooks/useFilterState.tsx +1 -2
  252. package/src/react/hooks/useFilters.tsx +154 -111
  253. package/src/react/hooks/useFloorOrder.tsx +65 -40
  254. package/src/react/hooks/useGenerateCancelTransaction.tsx +5 -10
  255. package/src/react/hooks/useGenerateListingTransaction.tsx +1 -1
  256. package/src/react/hooks/useGenerateOfferTransaction.tsx +1 -1
  257. package/src/react/hooks/useGenerateSellTransaction.tsx +5 -10
  258. package/src/react/hooks/useGetCountOfPrimarySaleItems.tsx +48 -0
  259. package/src/react/hooks/useGetReceiptFromHash.tsx +32 -3
  260. package/src/react/hooks/useGetTokenRanges.tsx +92 -0
  261. package/src/react/hooks/useHighestOffer.tsx +68 -4
  262. package/src/react/hooks/useInventory.tsx +1 -1
  263. package/src/react/hooks/useList1155ShopCardData.tsx +57 -82
  264. package/src/react/hooks/useList721ShopCardData.tsx +98 -63
  265. package/src/react/hooks/useListBalances.tsx +1 -1
  266. package/src/react/hooks/useListCollectibleActivities.tsx +89 -50
  267. package/src/react/hooks/useListCollectibles.tsx +81 -16
  268. package/src/react/hooks/useListCollectiblesPaginated.tsx +96 -66
  269. package/src/react/hooks/useListCollectionActivities.tsx +84 -50
  270. package/src/react/hooks/useListCollections.tsx +71 -17
  271. package/src/react/hooks/useListListingsForCollectible.tsx +90 -50
  272. package/src/react/hooks/useListMarketCardData.tsx +3 -2
  273. package/src/react/hooks/useListOffersForCollectible.tsx +9 -14
  274. package/src/react/hooks/useListPrimarySaleItems.tsx +66 -0
  275. package/src/react/hooks/useListShopCardData.tsx +70 -0
  276. package/src/react/hooks/useListTokenMetadata.ts +64 -12
  277. package/src/react/hooks/useListTokenMetadata.tsx +73 -0
  278. package/src/react/hooks/useLowestListing.tsx +68 -4
  279. package/src/react/hooks/useMarketCurrencies.tsx +62 -5
  280. package/src/react/hooks/useOpenConnectModal.tsx +9 -0
  281. package/src/react/hooks/useRoyalty.tsx +57 -13
  282. package/src/react/hooks/useShopCollectibleSaleData.tsx +349 -0
  283. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +3 -7
  284. package/src/react/hooks/useTokenSupplies.ts +81 -0
  285. package/src/react/hooks/useTransferTokens.tsx +2 -2
  286. package/src/react/hooks/util/optimisticCancelUpdates.ts +5 -7
  287. package/src/react/index.ts +5 -3
  288. package/src/react/provider.tsx +73 -9
  289. package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +123 -0
  290. package/src/react/queries/__tests__/inventory.laos.test.ts +496 -0
  291. package/src/react/queries/balanceOfCollectible.ts +8 -5
  292. package/src/react/queries/checkoutOptions.ts +85 -0
  293. package/src/react/queries/checkoutOptionsSalesContract.ts +89 -0
  294. package/src/react/queries/collectible.ts +66 -0
  295. package/src/react/queries/collection.ts +55 -0
  296. package/src/react/queries/collectionBalanceDetails.ts +92 -0
  297. package/src/react/queries/collectionDetails.ts +64 -0
  298. package/src/react/queries/comparePrices.ts +108 -0
  299. package/src/react/queries/convertPriceToUSD.ts +92 -0
  300. package/src/react/queries/countListingsForCollectible.ts +73 -0
  301. package/src/react/queries/countOfCollectables.ts +83 -0
  302. package/src/react/queries/countOfPrimarySaleItems.ts +48 -0
  303. package/src/react/queries/countOffersForCollectible.ts +73 -0
  304. package/src/react/queries/currency.ts +83 -0
  305. package/src/react/queries/filters.ts +138 -0
  306. package/src/react/queries/floorOrder.ts +63 -0
  307. package/src/react/queries/getTokenRanges.ts +62 -0
  308. package/src/react/queries/highestOffer.ts +46 -40
  309. package/src/react/queries/index.ts +10 -4
  310. package/src/react/queries/inventory.ts +10 -4
  311. package/src/react/queries/listBalances.ts +5 -4
  312. package/src/react/queries/listCollectibleActivities.ts +97 -0
  313. package/src/react/queries/listCollectibles.ts +67 -50
  314. package/src/react/queries/listCollectiblesPaginated.ts +87 -0
  315. package/src/react/queries/listCollectionActivities.ts +95 -0
  316. package/src/react/queries/listCollections.ts +53 -10
  317. package/src/react/queries/listListingsForCollectible.ts +82 -0
  318. package/src/react/queries/listTokenMetadata.ts +47 -23
  319. package/src/react/queries/lowestListing.ts +46 -31
  320. package/src/react/queries/marketCurrencies.ts +42 -29
  321. package/src/react/queries/marketplaceConfig.ts +4 -4
  322. package/src/react/queries/primarySaleItems.ts +85 -0
  323. package/src/react/queries/primarySaleItemsCount.ts +64 -0
  324. package/src/react/queries/tokenSupplies.ts +93 -0
  325. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +12 -2
  326. package/src/react/ssr/create-ssr-client.ts +1 -1
  327. package/src/react/types/query.ts +34 -0
  328. package/src/react/ui/components/ModelViewer.tsx +1 -1
  329. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +66 -66
  330. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +22 -4
  331. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +14 -8
  332. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +5 -4
  333. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +3 -0
  334. package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +4 -4
  335. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +20 -18
  336. package/src/react/ui/components/_internals/action-button/store.ts +72 -34
  337. package/src/react/ui/components/_internals/custom-select/CustomSelect.stories.tsx +582 -0
  338. package/src/react/ui/components/_internals/pill/Pill.stories.tsx +83 -0
  339. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +1 -1
  340. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +12 -5
  341. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -4
  342. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +3 -0
  343. package/src/react/ui/components/marketplace-collectible-card/index.ts +1 -1
  344. package/src/react/ui/components/marketplace-collectible-card/types.ts +11 -7
  345. package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +4 -7
  346. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +3 -2
  347. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +7 -6
  348. package/src/react/ui/components/marketplace-logos/marketplace-logos.stories.tsx +199 -0
  349. package/src/react/ui/components/marketplace-logos/marketplace-logos.tsx +1 -1
  350. package/src/react/ui/components/media/Media.stories.tsx +642 -0
  351. package/src/react/ui/components/media/Media.tsx +29 -20
  352. package/src/react/ui/components/media/types.ts +6 -0
  353. package/src/react/ui/index.ts +8 -10
  354. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +15 -0
  355. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +100 -87
  356. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +11 -5
  357. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +10 -2
  358. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +17 -11
  359. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +4 -1
  360. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +1 -1
  361. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +30 -27
  362. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +3 -3
  363. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +11 -2
  364. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +2 -2
  365. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +10 -3
  366. package/src/react/ui/modals/BuyModal/index.tsx +9 -1
  367. package/src/react/ui/modals/BuyModal/store.ts +26 -0
  368. package/src/react/ui/modals/CreateListingModal/Modal.tsx +28 -11
  369. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +2 -2
  370. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +0 -1
  371. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +2 -2
  372. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +7 -6
  373. package/src/react/ui/modals/CreateListingModal/index.tsx +1 -1
  374. package/src/react/ui/modals/CreateListingModal/store.ts +3 -3
  375. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +31 -14
  376. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +1 -1
  377. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +1 -1
  378. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +0 -1
  379. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +7 -7
  380. package/src/react/ui/modals/MakeOfferModal/index.tsx +1 -1
  381. package/src/react/ui/modals/MakeOfferModal/store.ts +3 -3
  382. package/src/react/ui/modals/SellModal/Modal.tsx +14 -11
  383. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +6 -4
  384. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +1 -1
  385. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +0 -1
  386. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +6 -6
  387. package/src/react/ui/modals/SellModal/store.ts +3 -3
  388. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +1 -1
  389. package/src/react/ui/modals/TransferModal/__tests__/__snapshots__/store.test.ts.snap +17 -0
  390. package/src/react/ui/modals/TransferModal/__tests__/store.test.ts +366 -0
  391. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +402 -0
  392. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +52 -50
  393. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +39 -47
  394. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +9 -8
  395. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +33 -37
  396. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +19 -10
  397. package/src/react/ui/modals/TransferModal/index.tsx +28 -31
  398. package/src/react/ui/modals/TransferModal/messages.ts +1 -1
  399. package/src/react/ui/modals/TransferModal/store.ts +122 -0
  400. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +1 -1
  401. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +2 -4
  402. package/src/react/ui/modals/_internal/components/calendar/index.tsx +0 -1
  403. package/src/react/ui/modals/_internal/components/currencyImage/index.tsx +10 -14
  404. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +6 -3
  405. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +23 -18
  406. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +10 -10
  407. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +6 -6
  408. package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +4 -4
  409. package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +13 -5
  410. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +41 -26
  411. package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +68 -59
  412. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +23 -17
  413. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +340 -41
  414. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx +1 -2
  415. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +95 -101
  416. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +72 -14
  417. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +29 -14
  418. package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +2 -2
  419. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
  420. package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +88 -89
  421. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +37 -11
  422. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +0 -1
  423. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +32 -20
  424. package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +92 -63
  425. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +44 -45
  426. package/src/react/ui/modals/_internal/types.ts +2 -2
  427. package/src/react/ui/modals/modal-provider.tsx +2 -3
  428. package/src/types/api-types.ts +36 -36
  429. package/src/types/buyModalErrors.ts +1 -1
  430. package/src/types/index.ts +5 -5
  431. package/src/types/new-marketplace-types.ts +1 -1
  432. package/src/types/sdk-config.ts +8 -2
  433. package/src/types/types.ts +1 -0
  434. package/src/types/waas-types.ts +1 -1
  435. package/src/utils/abi/index.ts +1 -1
  436. package/src/utils/abi/primary-sale/index.ts +1 -1
  437. package/src/utils/abi/token/index.ts +2 -1
  438. package/src/utils/decode/erc20.ts +1 -1
  439. package/src/utils/index.ts +3 -3
  440. package/src/utils/network.ts +15 -0
  441. package/test/const.ts +3 -1
  442. package/test/mocks/wallet.ts +1 -1
  443. package/test/test-utils.tsx +5 -4
  444. package/vitest.shims.d.ts +2 -0
  445. package/vitest.storybook.config.js +33 -0
  446. package/.changeset/fluffy-jokes-lay.md +0 -5
  447. package/.changeset/wise-bugs-boil.md +0 -8
  448. package/dist/CartIcon-Bll1rbxv.js.map +0 -1
  449. package/dist/CollectibleCard-CLQTl0_6.d.ts +0 -8
  450. package/dist/_internal-69NEWNUE.js +0 -34
  451. package/dist/_internal-69NEWNUE.js.map +0 -1
  452. package/dist/api-1KFxYh7o.js.map +0 -1
  453. package/dist/builder-api-DoK3907S.d.ts +0 -12
  454. package/dist/builder.gen-CxP9NT1p.js.map +0 -1
  455. package/dist/index-4-kfOFdx.d.ts +0 -22
  456. package/dist/index-BHiSG-Yi.d.ts +0 -312
  457. package/dist/index-BQW0PUkQ.d.ts +0 -3973
  458. package/dist/index-BfH21xmk.d.ts +0 -117
  459. package/dist/index-CN8puQQJ.d.ts +0 -24
  460. package/dist/index-DafWjEb4.d.ts +0 -65
  461. package/dist/marketplace.gen-Dqk8vRmD.js.map +0 -1
  462. package/dist/marketplaceConfig-D2MYFqll.js.map +0 -1
  463. package/dist/options-DCi6_23w.js +0 -34
  464. package/dist/options-DCi6_23w.js.map +0 -1
  465. package/dist/primary-sale-Cw95phYC.js.map +0 -1
  466. package/dist/queries-DPvwtnO7.js +0 -486
  467. package/dist/queries-DPvwtnO7.js.map +0 -1
  468. package/dist/react-BG7o4PId.js.map +0 -1
  469. package/dist/token-CO5llIla.js.map +0 -1
  470. package/dist/transaction-CcVViHEL.js.map +0 -1
  471. package/dist/types-DwWE6xOF.js.map +0 -1
  472. package/dist/useCollection-C-mclKU0.d.ts +0 -66
  473. package/dist/utils-BFdxaToy.js.map +0 -1
  474. package/dist/utils-Cat9_pef.js.map +0 -1
  475. package/dist/wagmi-DRctYEk6.js.map +0 -1
  476. package/src/react/_internal/api/zod-schema.ts +0 -678
  477. package/src/react/hooks/options/collectionOptions.ts +0 -41
  478. package/src/react/hooks/useCollectionDetails.tsx +0 -50
  479. package/src/react/hooks/useGetTokenSuppliesMap.ts +0 -33
  480. package/src/react/hooks/useListPrimarySaleItems.ts +0 -42
  481. package/src/react/queries/getTokenSupplies.ts +0 -38
  482. package/src/react/ui/modals/TransferModal/_store.ts +0 -72
  483. package/src/react/ui/modals/_internal/stores/accountModal.ts +0 -3
  484. package/tsconfig.tsbuildinfo +0 -1
  485. /package/dist/{abi-BKyRjVcZ.js → abi-BMvgNbKQ.js} +0 -0
  486. /package/dist/{index-C39K_8SG.d.ts → index-CD2bj_xW.d.ts} +0 -0
  487. /package/dist/{index-ij9f8GAA.d.ts → index-DvpBZgor.d.ts} +0 -0
@@ -0,0 +1,73 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { SdkConfig } from '../../types';
3
+ import { getMarketplaceClient, type ValuesOptional } from '../_internal';
4
+ import type {
5
+ GetCountOfOffersForCollectibleArgs,
6
+ OrderFilter,
7
+ } from '../_internal/api/marketplace.gen';
8
+ import { collectableKeys } from '../_internal/api/query-keys';
9
+ import type { StandardQueryOptions } from '../types/query';
10
+
11
+ export interface FetchCountOffersForCollectibleParams {
12
+ chainId: number;
13
+ collectionAddress: string;
14
+ collectibleId: string;
15
+ config: SdkConfig;
16
+ filter?: OrderFilter;
17
+ }
18
+
19
+ /**
20
+ * Fetches count of offers for a collectible from the marketplace API
21
+ */
22
+ export async function fetchCountOffersForCollectible(
23
+ params: FetchCountOffersForCollectibleParams,
24
+ ) {
25
+ const { collectionAddress, chainId, collectibleId, config, filter } = params;
26
+
27
+ const client = getMarketplaceClient(config);
28
+
29
+ const apiArgs: GetCountOfOffersForCollectibleArgs = {
30
+ contractAddress: collectionAddress,
31
+ chainId: String(chainId),
32
+ tokenId: collectibleId,
33
+ filter,
34
+ };
35
+
36
+ const result = await client.getCountOfOffersForCollectible(apiArgs);
37
+ return result.count;
38
+ }
39
+
40
+ export type CountOffersForCollectibleQueryOptions =
41
+ ValuesOptional<FetchCountOffersForCollectibleParams> & {
42
+ query?: StandardQueryOptions;
43
+ };
44
+
45
+ export function countOffersForCollectibleQueryOptions(
46
+ params: CountOffersForCollectibleQueryOptions,
47
+ ) {
48
+ const enabled = Boolean(
49
+ params.collectionAddress &&
50
+ params.chainId &&
51
+ params.collectibleId &&
52
+ params.config &&
53
+ (params.query?.enabled ?? true),
54
+ );
55
+
56
+ return queryOptions({
57
+ queryKey: [...collectableKeys.offersCount, params],
58
+ queryFn: () =>
59
+ fetchCountOffersForCollectible({
60
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
61
+ chainId: params.chainId!,
62
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
63
+ collectionAddress: params.collectionAddress!,
64
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
65
+ collectibleId: params.collectibleId!,
66
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
67
+ config: params.config!,
68
+ filter: params.filter,
69
+ }),
70
+ ...params.query,
71
+ enabled,
72
+ });
73
+ }
@@ -0,0 +1,83 @@
1
+ import { queryOptions, skipToken } from '@tanstack/react-query';
2
+ import type { Address } from 'viem';
3
+ import type { SdkConfig } from '../../types';
4
+ import {
5
+ type Currency,
6
+ currencyKeys,
7
+ getMarketplaceClient,
8
+ getQueryClient,
9
+ type ValuesOptional,
10
+ } from '../_internal';
11
+ import type { StandardQueryOptions } from '../types/query';
12
+
13
+ export interface FetchCurrencyParams {
14
+ chainId: number;
15
+ currencyAddress: Address;
16
+ config: SdkConfig;
17
+ }
18
+
19
+ /**
20
+ * Fetches currency details from the marketplace API
21
+ */
22
+ export async function fetchCurrency(
23
+ params: FetchCurrencyParams,
24
+ ): Promise<Currency | undefined> {
25
+ const { chainId, currencyAddress, config } = params;
26
+ const queryClient = getQueryClient();
27
+
28
+ let currencies = queryClient.getQueryData([...currencyKeys.lists, chainId]) as
29
+ | Currency[]
30
+ | undefined;
31
+
32
+ if (!currencies) {
33
+ const marketplaceClient = getMarketplaceClient(config);
34
+ currencies = await marketplaceClient
35
+ .listCurrencies({ chainId: String(chainId) })
36
+ .then((resp) => resp.currencies);
37
+ }
38
+
39
+ if (!currencies?.length) {
40
+ throw new Error('No currencies returned');
41
+ }
42
+ const currency = currencies.find(
43
+ (currency) =>
44
+ currency.contractAddress.toLowerCase() === currencyAddress.toLowerCase(),
45
+ );
46
+
47
+ if (!currency) {
48
+ throw new Error('Currency not found');
49
+ }
50
+
51
+ return currency;
52
+ }
53
+
54
+ export type CurrencyQueryOptions = ValuesOptional<FetchCurrencyParams> & {
55
+ query?: StandardQueryOptions;
56
+ };
57
+
58
+ export function currencyQueryOptions(params: CurrencyQueryOptions) {
59
+ const enabled = Boolean(
60
+ params.chainId &&
61
+ params.currencyAddress &&
62
+ params.config &&
63
+ (params.query?.enabled ?? true),
64
+ );
65
+
66
+ return queryOptions({
67
+ queryKey: [...currencyKeys.details, params],
68
+ queryFn:
69
+ params.chainId && params.currencyAddress
70
+ ? () =>
71
+ fetchCurrency({
72
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
73
+ chainId: params.chainId!,
74
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
75
+ currencyAddress: params.currencyAddress!,
76
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
77
+ config: params.config!,
78
+ })
79
+ : skipToken,
80
+ ...params.query,
81
+ enabled,
82
+ });
83
+ }
@@ -0,0 +1,138 @@
1
+ import type { PropertyFilter } from '@0xsequence/metadata';
2
+ import { queryOptions } from '@tanstack/react-query';
3
+ import { FilterCondition, type SdkConfig } from '../../types';
4
+ import { compareAddress } from '../../utils';
5
+ import {
6
+ getMetadataClient,
7
+ getQueryClient,
8
+ type ValuesOptional,
9
+ } from '../_internal';
10
+ import type { StandardQueryOptions } from '../types/query';
11
+ import { marketplaceConfigOptions } from './marketplaceConfig';
12
+
13
+ export interface FetchFiltersParams {
14
+ chainId: number;
15
+ collectionAddress: string;
16
+ showAllFilters?: boolean;
17
+ excludePropertyValues?: boolean;
18
+ config: SdkConfig;
19
+ }
20
+
21
+ /**
22
+ * Fetches collection filters from the Metadata API with optional marketplace filtering
23
+ */
24
+ export async function fetchFilters(
25
+ params: FetchFiltersParams,
26
+ ): Promise<PropertyFilter[]> {
27
+ const {
28
+ chainId,
29
+ collectionAddress,
30
+ showAllFilters,
31
+ excludePropertyValues,
32
+ config,
33
+ } = params;
34
+
35
+ const metadataClient = getMetadataClient(config);
36
+
37
+ const filters = await metadataClient
38
+ .getTokenMetadataPropertyFilters({
39
+ chainID: chainId.toString(),
40
+ contractAddress: collectionAddress,
41
+ excludeProperties: [],
42
+ excludePropertyValues,
43
+ })
44
+ .then((resp) => resp.filters);
45
+
46
+ if (showAllFilters) return filters;
47
+
48
+ const queryClient = getQueryClient();
49
+ const marketplaceConfig = await queryClient.fetchQuery(
50
+ marketplaceConfigOptions(config),
51
+ );
52
+ const collectionFilters = marketplaceConfig.market.collections.find((c) =>
53
+ compareAddress(c.itemsAddress, collectionAddress),
54
+ )?.filterSettings;
55
+
56
+ if (
57
+ !collectionFilters?.exclusions ||
58
+ collectionFilters.exclusions.length === 0 ||
59
+ !collectionFilters.filterOrder ||
60
+ collectionFilters.filterOrder.length === 0
61
+ )
62
+ return filters;
63
+
64
+ const { filterOrder, exclusions } = collectionFilters;
65
+
66
+ const sortedFilters = filters.toSorted((a, b) => {
67
+ const aIndex =
68
+ filterOrder.indexOf(a.name) > -1
69
+ ? filterOrder.indexOf(a.name)
70
+ : filterOrder.length;
71
+ const bIndex =
72
+ filterOrder.indexOf(b.name) > -1
73
+ ? filterOrder.indexOf(b.name)
74
+ : filterOrder.length;
75
+ return aIndex - bIndex;
76
+ });
77
+
78
+ const filteredResults = sortedFilters.reduce<PropertyFilter[]>(
79
+ (acc, filter) => {
80
+ const exclusionRule = exclusions.find((rule) => rule.key === filter.name);
81
+
82
+ if (!exclusionRule) {
83
+ acc.push(filter);
84
+ return acc;
85
+ }
86
+
87
+ if (exclusionRule.condition === FilterCondition.ENTIRE_KEY) {
88
+ return acc;
89
+ }
90
+
91
+ if (
92
+ exclusionRule.condition === FilterCondition.SPECIFIC_VALUE &&
93
+ exclusionRule.value
94
+ ) {
95
+ const filteredValues =
96
+ filter.values?.filter((value) => value !== exclusionRule.value) || [];
97
+ if (filteredValues.length > 0) {
98
+ acc.push({ ...filter, values: filteredValues });
99
+ }
100
+ }
101
+
102
+ return acc;
103
+ },
104
+ [],
105
+ );
106
+
107
+ return filteredResults;
108
+ }
109
+
110
+ export type FiltersQueryOptions = ValuesOptional<FetchFiltersParams> & {
111
+ query?: StandardQueryOptions;
112
+ };
113
+
114
+ export function filtersQueryOptions(params: FiltersQueryOptions) {
115
+ const enabled = Boolean(
116
+ params.chainId &&
117
+ params.collectionAddress &&
118
+ params.config &&
119
+ (params.query?.enabled ?? true),
120
+ );
121
+
122
+ return queryOptions({
123
+ queryKey: ['filters', params],
124
+ queryFn: () =>
125
+ fetchFilters({
126
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
127
+ chainId: params.chainId!,
128
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
129
+ collectionAddress: params.collectionAddress!,
130
+ showAllFilters: params.showAllFilters,
131
+ excludePropertyValues: params.excludePropertyValues,
132
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
133
+ config: params.config!,
134
+ }),
135
+ ...params.query,
136
+ enabled,
137
+ });
138
+ }
@@ -0,0 +1,63 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { SdkConfig } from '../../types';
3
+ import {
4
+ collectableKeys,
5
+ type GetFloorOrderArgs,
6
+ getMarketplaceClient,
7
+ type ValuesOptional,
8
+ } from '../_internal';
9
+ import type { StandardQueryOptions } from '../types/query';
10
+
11
+ export interface FetchFloorOrderParams
12
+ extends Omit<GetFloorOrderArgs, 'contractAddress' | 'chainId'> {
13
+ collectionAddress: string;
14
+ chainId: number;
15
+ config: SdkConfig;
16
+ }
17
+
18
+ /**
19
+ * Fetches the floor order for a collection from the marketplace API
20
+ */
21
+ export async function fetchFloorOrder(params: FetchFloorOrderParams) {
22
+ const { collectionAddress, chainId, config, ...additionalApiParams } = params;
23
+
24
+ const marketplaceClient = getMarketplaceClient(config);
25
+
26
+ const apiArgs: GetFloorOrderArgs = {
27
+ contractAddress: collectionAddress,
28
+ chainId: String(chainId),
29
+ ...additionalApiParams,
30
+ };
31
+
32
+ const result = await marketplaceClient.getFloorOrder(apiArgs);
33
+ return result.collectible;
34
+ }
35
+
36
+ export type FloorOrderQueryOptions = ValuesOptional<FetchFloorOrderParams> & {
37
+ query?: StandardQueryOptions;
38
+ };
39
+
40
+ export function floorOrderQueryOptions(params: FloorOrderQueryOptions) {
41
+ const enabled = Boolean(
42
+ params.collectionAddress &&
43
+ params.chainId &&
44
+ params.config &&
45
+ (params.query?.enabled ?? true),
46
+ );
47
+
48
+ return queryOptions({
49
+ queryKey: [...collectableKeys.floorOrders, params],
50
+ queryFn: () =>
51
+ fetchFloorOrder({
52
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
53
+ chainId: params.chainId!,
54
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
55
+ collectionAddress: params.collectionAddress!,
56
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
57
+ config: params.config!,
58
+ ...((params.filter && { filter: params.filter }) || {}),
59
+ }),
60
+ ...params.query,
61
+ enabled,
62
+ });
63
+ }
@@ -0,0 +1,62 @@
1
+ import type { GetTokenIDRangesReturn } from '@0xsequence/indexer';
2
+ import { queryOptions } from '@tanstack/react-query';
3
+ import type { Address } from 'viem';
4
+ import type { SdkConfig } from '../../types';
5
+ import { getIndexerClient, type ValuesOptional } from '../_internal';
6
+ import type { StandardQueryOptions } from '../types/query';
7
+
8
+ export interface FetchGetTokenRangesParams {
9
+ chainId: number;
10
+ collectionAddress: Address;
11
+ config: SdkConfig;
12
+ }
13
+
14
+ /**
15
+ * Fetches token ID ranges for a collection from the Indexer API
16
+ */
17
+ export async function fetchGetTokenRanges(
18
+ params: FetchGetTokenRangesParams,
19
+ ): Promise<GetTokenIDRangesReturn> {
20
+ const { chainId, collectionAddress, config } = params;
21
+
22
+ const indexerClient = getIndexerClient(chainId, config);
23
+
24
+ const response = await indexerClient.getTokenIDRanges({
25
+ contractAddress: collectionAddress,
26
+ });
27
+
28
+ if (!response) {
29
+ throw new Error('Failed to fetch token ranges');
30
+ }
31
+
32
+ return response;
33
+ }
34
+
35
+ export type GetTokenRangesQueryOptions =
36
+ ValuesOptional<FetchGetTokenRangesParams> & {
37
+ query?: StandardQueryOptions;
38
+ };
39
+
40
+ export function getTokenRangesQueryOptions(params: GetTokenRangesQueryOptions) {
41
+ const enabled = Boolean(
42
+ params.chainId &&
43
+ params.collectionAddress &&
44
+ params.config &&
45
+ (params.query?.enabled ?? true),
46
+ );
47
+
48
+ return queryOptions({
49
+ queryKey: ['indexer', 'tokenRanges', params],
50
+ queryFn: () =>
51
+ fetchGetTokenRanges({
52
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
53
+ chainId: params.chainId!,
54
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
55
+ collectionAddress: params.collectionAddress!,
56
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
57
+ config: params.config!,
58
+ }),
59
+ ...params.query,
60
+ enabled,
61
+ });
62
+ }
@@ -1,60 +1,66 @@
1
1
  import { queryOptions } from '@tanstack/react-query';
2
- import type { Address } from 'viem';
3
2
  import type { SdkConfig } from '../../types';
4
3
  import {
5
- type GetCollectibleHighestOfferArgs,
6
4
  collectableKeys,
5
+ type GetCollectibleHighestOfferArgs,
7
6
  getMarketplaceClient,
7
+ type ValuesOptional,
8
8
  } from '../_internal';
9
+ import type { StandardQueryOptions } from '../types/query';
9
10
 
10
- export interface UseHighestOfferArgs
11
+ export interface FetchHighestOfferParams
11
12
  extends Omit<GetCollectibleHighestOfferArgs, 'contractAddress' | 'chainId'> {
12
- collectionAddress: Address;
13
+ collectionAddress: string;
13
14
  chainId: number;
14
- query?: {
15
- enabled?: boolean;
16
- };
15
+ config: SdkConfig;
17
16
  }
18
17
 
19
- export async function fetchHighestOffer(
20
- args: UseHighestOfferArgs,
21
- config: SdkConfig,
22
- ) {
18
+ /**
19
+ * Fetches the highest offer for a collectible from the marketplace API
20
+ */
21
+ export async function fetchHighestOffer(params: FetchHighestOfferParams) {
22
+ const { collectionAddress, chainId, config, ...additionalApiParams } = params;
23
+
23
24
  const marketplaceClient = getMarketplaceClient(config);
24
25
 
25
- const { chainId, collectionAddress, tokenId } = args;
26
- const data = await marketplaceClient.getCollectibleHighestOffer({
27
- chainId: String(chainId),
26
+ const apiArgs: GetCollectibleHighestOfferArgs = {
28
27
  contractAddress: collectionAddress,
29
- tokenId,
30
- });
31
-
32
- // let order: Order | undefined;
33
- // if (data.order) {
34
- // order = {
35
- // ...data.order,
36
- // priceAmount: BigInt(data.order.priceAmount),
37
- // priceAmountNet: BigInt(data.order.priceAmountNet),
38
- // };
39
- // }
28
+ chainId: String(chainId),
29
+ ...additionalApiParams,
30
+ };
40
31
 
41
- return data.order ?? null;
32
+ const result = await marketplaceClient.getCollectibleHighestOffer(apiArgs);
33
+ return result.order ?? null;
42
34
  }
43
35
 
44
- /**
45
- * Creates a tanstack query options object for the highest offer query
46
- *
47
- * @param args - The query arguments
48
- * @param config - SDK configuration
49
- * @returns Query options configuration
50
- */
51
- export function highestOfferOptions(
52
- args: UseHighestOfferArgs,
53
- config: SdkConfig,
54
- ) {
36
+ export type HighestOfferQueryOptions =
37
+ ValuesOptional<FetchHighestOfferParams> & {
38
+ query?: StandardQueryOptions;
39
+ };
40
+
41
+ export function highestOfferQueryOptions(params: HighestOfferQueryOptions) {
42
+ const enabled = Boolean(
43
+ params.collectionAddress &&
44
+ params.chainId &&
45
+ params.tokenId &&
46
+ params.config &&
47
+ (params.query?.enabled ?? true),
48
+ );
49
+
55
50
  return queryOptions({
56
- enabled: args.query?.enabled ?? true,
57
- queryKey: [...collectableKeys.highestOffers, args],
58
- queryFn: () => fetchHighestOffer(args, config),
51
+ queryKey: [...collectableKeys.highestOffers, params],
52
+ queryFn: () =>
53
+ fetchHighestOffer({
54
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
55
+ chainId: params.chainId!,
56
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
57
+ collectionAddress: params.collectionAddress!,
58
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
59
+ tokenId: params.tokenId!,
60
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
61
+ config: params.config!,
62
+ }),
63
+ ...params.query,
64
+ enabled,
59
65
  });
60
66
  }
@@ -1,9 +1,15 @@
1
1
  export * from './balanceOfCollectible';
2
- export * from './getTokenSupplies';
3
- export * from './inventory';
4
- export * from './listCollectibles';
2
+ export * from './collectible';
3
+ export * from './collectionDetails';
4
+ export * from './countOfPrimarySaleItems';
5
+ export * from './currency';
6
+ export * from './floorOrder';
5
7
  export * from './highestOffer';
8
+ export * from './inventory';
6
9
  export * from './listBalances';
7
- export * from './lowestListing';
10
+ export * from './listCollectibles';
11
+ export * from './listCollections';
8
12
  export * from './listTokenMetadata';
13
+ export * from './lowestListing';
9
14
  export * from './marketCurrencies';
15
+ export * from './tokenSupplies';
@@ -9,10 +9,10 @@ import { OrderSide, type Page, type SdkConfig } from '../../types';
9
9
  import {
10
10
  type CollectibleOrder,
11
11
  type ContractType,
12
- LaosAPI,
13
12
  getIndexerClient,
13
+ LaosAPI,
14
14
  } from '../_internal';
15
- import { fetchCollectibles } from './listCollectibles';
15
+ import { fetchListCollectibles } from './listCollectibles';
16
16
  import { fetchMarketplaceConfig } from './marketplaceConfig';
17
17
 
18
18
  export interface UseInventoryArgs {
@@ -38,6 +38,11 @@ interface InventoryState {
38
38
  // Store state per collection
39
39
  const stateByCollection = new Map<string, InventoryState>();
40
40
 
41
+ // Test helper to clear state between tests
42
+ export const clearInventoryState = () => {
43
+ stateByCollection.clear();
44
+ };
45
+
41
46
  const getCollectionKey = (args: UseInventoryArgs) =>
42
47
  `${args.chainId}-${args.collectionAddress}-${args.accountAddress}`;
43
48
 
@@ -105,6 +110,7 @@ async function fetchAllIndexerTokens(
105
110
  chainId: chainId.toString(),
106
111
  accountAddress,
107
112
  includeMetadata: true,
113
+ contractAddress: collectionAddress,
108
114
  page: {
109
115
  sort: [
110
116
  {
@@ -259,7 +265,7 @@ export async function fetchInventory(
259
265
 
260
266
  // Fetch collectibles from marketplace API
261
267
  const marketplaceConfig = await fetchMarketplaceConfig({ config });
262
- const collectibles = await fetchCollectibles(
268
+ const collectibles = await fetchListCollectibles(
263
269
  {
264
270
  chainId,
265
271
  collectionAddress,
@@ -268,8 +274,8 @@ export async function fetchInventory(
268
274
  includeEmpty: true,
269
275
  },
270
276
  side: OrderSide.listing,
277
+ config,
271
278
  },
272
- config,
273
279
  marketplaceConfig,
274
280
  page,
275
281
  );
@@ -1,13 +1,13 @@
1
1
  import type { GetTokenBalancesReturn, Page } from '@0xsequence/indexer';
2
2
  import { infiniteQueryOptions } from '@tanstack/react-query';
3
- import type { Hex } from 'viem';
3
+ import type { Address, Hex } from 'viem';
4
4
  import type { SdkConfig } from '../../types';
5
- import { LaosAPI, balanceQueries, getIndexerClient } from '../_internal';
5
+ import { balanceQueries, getIndexerClient, LaosAPI } from '../_internal';
6
6
 
7
7
  export type UseListBalancesArgs = {
8
8
  chainId: number;
9
- accountAddress?: Hex;
10
- contractAddress?: Hex;
9
+ accountAddress?: Address;
10
+ contractAddress?: Address;
11
11
  tokenId?: string;
12
12
  includeMetadata?: boolean;
13
13
  metadataOptions?: {
@@ -34,6 +34,7 @@ export async function fetchBalances(
34
34
  return laosClient.getTokenBalances({
35
35
  chainId: args.chainId.toString(),
36
36
  accountAddress: args.accountAddress,
37
+ contractAddress: args.contractAddress as Address,
37
38
  includeMetadata: args.includeMetadata,
38
39
  page: {
39
40
  sort: [