@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,20 +1,26 @@
1
1
  import { queryOptions } from '@tanstack/react-query';
2
2
  import type { SdkConfig } from '../../types';
3
- import { getMetadataClient } from '../_internal';
3
+ import {
4
+ getMetadataClient,
5
+ tokenKeys,
6
+ type ValuesOptional,
7
+ } from '../_internal';
8
+ import type { StandardQueryOptions } from '../types/query';
4
9
 
5
- export interface FetchTokenMetadataArgs {
10
+ export interface FetchListTokenMetadataParams {
6
11
  chainId: number;
7
12
  contractAddress: string;
8
13
  tokenIds: string[];
9
- query?: {
10
- enabled?: boolean;
11
- };
14
+ config: SdkConfig;
12
15
  }
13
16
 
14
- const fetchTokenMetadata = async (
15
- { chainId, contractAddress, tokenIds }: FetchTokenMetadataArgs,
16
- config: SdkConfig,
17
- ) => {
17
+ /**
18
+ * Fetches token metadata from the metadata API
19
+ */
20
+ export async function fetchListTokenMetadata(
21
+ params: FetchListTokenMetadataParams,
22
+ ) {
23
+ const { chainId, contractAddress, tokenIds, config } = params;
18
24
  const metadataClient = getMetadataClient(config);
19
25
 
20
26
  const response = await metadataClient.getTokenMetadata({
@@ -24,20 +30,38 @@ const fetchTokenMetadata = async (
24
30
  });
25
31
 
26
32
  return response.tokenMetadata;
27
- };
33
+ }
34
+
35
+ export type ListTokenMetadataQueryOptions =
36
+ ValuesOptional<FetchListTokenMetadataParams> & {
37
+ query?: StandardQueryOptions;
38
+ };
39
+
40
+ export function listTokenMetadataQueryOptions(
41
+ params: ListTokenMetadataQueryOptions,
42
+ ) {
43
+ const enabled = Boolean(
44
+ params.chainId &&
45
+ params.contractAddress &&
46
+ params.tokenIds?.length &&
47
+ params.config &&
48
+ (params.query?.enabled ?? true),
49
+ );
28
50
 
29
- export const tokenMetadataOptions = (
30
- args: FetchTokenMetadataArgs,
31
- config: SdkConfig,
32
- ) => {
33
51
  return queryOptions({
34
- ...args.query,
35
- queryKey: [
36
- 'listTokenMetadata',
37
- args.chainId,
38
- args.contractAddress,
39
- args.tokenIds,
40
- ],
41
- queryFn: () => fetchTokenMetadata(args, config),
52
+ queryKey: [...tokenKeys.metadata, params],
53
+ queryFn: () =>
54
+ fetchListTokenMetadata({
55
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
56
+ chainId: params.chainId!,
57
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
58
+ contractAddress: params.contractAddress!,
59
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
60
+ tokenIds: params.tokenIds!,
61
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
62
+ config: params.config!,
63
+ }),
64
+ ...params.query,
65
+ enabled,
42
66
  });
43
- };
67
+ }
@@ -1,54 +1,69 @@
1
1
  import { queryOptions } from '@tanstack/react-query';
2
- import type { Address } from 'viem';
3
2
  import type { SdkConfig } from '../../types';
4
3
  import {
4
+ collectableKeys,
5
5
  type GetCollectibleLowestListingArgs,
6
6
  type GetCollectibleLowestListingReturn,
7
- collectableKeys,
8
7
  getMarketplaceClient,
8
+ type ValuesOptional,
9
9
  } from '../_internal';
10
+ import type { StandardQueryOptions } from '../types/query';
10
11
 
11
- export interface UseLowestListingArgs
12
+ export interface FetchLowestListingParams
12
13
  extends Omit<GetCollectibleLowestListingArgs, 'contractAddress' | 'chainId'> {
13
- collectionAddress: Address;
14
+ collectionAddress: string;
14
15
  chainId: number;
15
- query?: {
16
- enabled?: boolean;
17
- };
16
+ config: SdkConfig;
18
17
  }
19
18
 
19
+ /**
20
+ * Fetches the lowest listing for a collectible from the marketplace API
21
+ */
20
22
  export async function fetchLowestListing(
21
- args: UseLowestListingArgs,
22
- config: SdkConfig,
23
+ params: FetchLowestListingParams,
23
24
  ): Promise<GetCollectibleLowestListingReturn['order'] | null> {
25
+ const { collectionAddress, chainId, config, ...additionalApiParams } = params;
26
+
24
27
  const marketplaceClient = getMarketplaceClient(config);
25
28
 
26
- const { chainId, collectionAddress, tokenId } = args;
27
- const data = await marketplaceClient.getCollectibleLowestListing({
28
- chainId: String(chainId),
29
+ const apiArgs: GetCollectibleLowestListingArgs = {
29
30
  contractAddress: collectionAddress,
30
- tokenId,
31
- });
32
-
33
- // let order: Order | undefined;
34
- // if (data.order) {
35
- // order = {
36
- // ...data.order,
37
- // priceAmount: BigInt(data.order.priceAmount),
38
- // priceAmountNet: BigInt(data.order.priceAmountNet),
39
- // };
40
- // }
31
+ chainId: String(chainId),
32
+ ...additionalApiParams,
33
+ };
41
34
 
42
- return data.order || null;
35
+ const result = await marketplaceClient.getCollectibleLowestListing(apiArgs);
36
+ return result.order || null;
43
37
  }
44
38
 
45
- export function lowestListingOptions(
46
- args: UseLowestListingArgs,
47
- config: SdkConfig,
48
- ) {
39
+ export type LowestListingQueryOptions =
40
+ ValuesOptional<FetchLowestListingParams> & {
41
+ query?: StandardQueryOptions;
42
+ };
43
+
44
+ export function lowestListingQueryOptions(params: LowestListingQueryOptions) {
45
+ const enabled = Boolean(
46
+ params.collectionAddress &&
47
+ params.chainId &&
48
+ params.tokenId &&
49
+ params.config &&
50
+ (params.query?.enabled ?? true),
51
+ );
52
+
49
53
  return queryOptions({
50
- enabled: args.query?.enabled ?? true,
51
- queryKey: [...collectableKeys.lowestListings, args],
52
- queryFn: () => fetchLowestListing(args, config),
54
+ queryKey: [...collectableKeys.lowestListings, params],
55
+ queryFn: () =>
56
+ fetchLowestListing({
57
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
58
+ chainId: params.chainId!,
59
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
60
+ collectionAddress: params.collectionAddress!,
61
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
62
+ tokenId: params.tokenId!,
63
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
64
+ config: params.config!,
65
+ }),
66
+ ...params.query,
67
+ enabled,
53
68
  });
54
69
  }
@@ -6,30 +6,31 @@ import {
6
6
  currencyKeys,
7
7
  getMarketplaceClient,
8
8
  getQueryClient,
9
+ type ValuesOptional,
9
10
  } from '../_internal';
11
+ import type { StandardQueryOptions } from '../types/query';
10
12
  import { marketplaceConfigOptions } from './marketplaceConfig';
11
13
 
12
- type QueryArg = {
13
- enabled?: boolean;
14
- };
15
-
16
- export interface UseMarketCurrenciesArgs {
14
+ export interface FetchMarketCurrenciesParams {
17
15
  chainId: number;
18
16
  includeNativeCurrency?: boolean;
19
17
  collectionAddress?: Address;
20
- query?: QueryArg;
18
+ config: SdkConfig;
21
19
  }
22
20
 
23
- const fetchMarketCurrencies = async (
24
- args: UseMarketCurrenciesArgs,
25
- config: SdkConfig,
26
- ) => {
27
- const includeNativeCurrency = args.includeNativeCurrency ?? true;
21
+ /**
22
+ * Fetches supported currencies for a marketplace
23
+ */
24
+ export async function fetchMarketCurrencies(
25
+ params: FetchMarketCurrenciesParams,
26
+ ) {
27
+ const { chainId, includeNativeCurrency, collectionAddress, config } = params;
28
+ const includeNativeCurrencyOption = includeNativeCurrency ?? true;
28
29
  const marketplaceClient = getMarketplaceClient(config);
29
30
 
30
31
  let currencies = await marketplaceClient
31
32
  .listCurrencies({
32
- chainId: String(args.chainId),
33
+ chainId: String(chainId),
33
34
  })
34
35
  .then((resp) =>
35
36
  resp.currencies.map((currency) => ({
@@ -38,7 +39,7 @@ const fetchMarketCurrencies = async (
38
39
  })),
39
40
  );
40
41
 
41
- if (args.collectionAddress) {
42
+ if (collectionAddress) {
42
43
  const queryClient = getQueryClient();
43
44
  const marketplaceConfig = await queryClient.fetchQuery(
44
45
  marketplaceConfigOptions(config),
@@ -46,7 +47,7 @@ const fetchMarketCurrencies = async (
46
47
 
47
48
  const currenciesOptions = marketplaceConfig.market.collections.find(
48
49
  (collection) =>
49
- compareAddress(collection.itemsAddress, args.collectionAddress),
50
+ compareAddress(collection.itemsAddress, collectionAddress),
50
51
  )?.currencyOptions;
51
52
 
52
53
  // Filter currencies based on collection currency options
@@ -57,25 +58,37 @@ const fetchMarketCurrencies = async (
57
58
  }
58
59
  }
59
60
 
60
- if (!includeNativeCurrency) {
61
+ if (!includeNativeCurrencyOption) {
61
62
  currencies = currencies.filter((currency) => !currency.nativeCurrency);
62
63
  }
63
64
 
64
65
  return currencies;
65
- };
66
+ }
67
+
68
+ export type MarketCurrenciesQueryOptions =
69
+ ValuesOptional<FetchMarketCurrenciesParams> & {
70
+ query?: StandardQueryOptions;
71
+ };
72
+
73
+ export function marketCurrenciesQueryOptions(
74
+ params: MarketCurrenciesQueryOptions,
75
+ ) {
76
+ const enabled = Boolean(
77
+ params.chainId && params.config && (params.query?.enabled ?? true),
78
+ );
66
79
 
67
- export const currenciesOptions = (
68
- args: UseMarketCurrenciesArgs,
69
- config: SdkConfig,
70
- ) => {
71
80
  return queryOptions({
72
- ...args.query,
73
- queryKey: [
74
- ...currencyKeys.lists,
75
- args.chainId,
76
- args.includeNativeCurrency ?? true,
77
- args.collectionAddress,
78
- ],
79
- queryFn: () => fetchMarketCurrencies(args, config),
81
+ queryKey: [...currencyKeys.lists, params],
82
+ queryFn: () =>
83
+ fetchMarketCurrencies({
84
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
85
+ chainId: params.chainId!,
86
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
87
+ config: params.config!,
88
+ includeNativeCurrency: params.includeNativeCurrency,
89
+ collectionAddress: params.collectionAddress,
90
+ }),
91
+ ...params.query,
92
+ enabled,
80
93
  });
81
- };
94
+ }
@@ -15,7 +15,7 @@ export const fetchMarketplaceConfig = async ({
15
15
  prefetchedMarketplaceSettings,
16
16
  }: {
17
17
  config: SdkConfig;
18
- prefetchedMarketplaceSettings?: LookupMarketplaceReturn; //TODO: Is this the right approach?
18
+ prefetchedMarketplaceSettings?: LookupMarketplaceReturn;
19
19
  }): Promise<MarketplaceConfig> => {
20
20
  let builderMarketplaceConfig = prefetchedMarketplaceSettings;
21
21
 
@@ -38,7 +38,7 @@ export const fetchMarketplaceConfig = async ({
38
38
  } satisfies MarketCollection;
39
39
  });
40
40
 
41
- const shopCollections = builderMarketplaceConfig.shopCollections.map(
41
+ const shopCollections = (builderMarketplaceConfig.shopCollections ?? []).map(
42
42
  (collection) => {
43
43
  return {
44
44
  ...collection,
@@ -72,14 +72,14 @@ export const fetchMarketplaceConfig = async ({
72
72
  market: {
73
73
  ...marketplaceConfig.market,
74
74
  ...overrides.market,
75
- //@ts-expect-error - TODO: Fix this partial type
75
+ //@ts-expect-error - TODO: Fix this partial type. We need to align new-marketplace-types with builder.gen.ts
76
76
  collections:
77
77
  overrides.market?.collections ?? marketplaceConfig.market.collections,
78
78
  },
79
79
  shop: {
80
80
  ...marketplaceConfig.shop,
81
81
  ...overrides.shop,
82
- //@ts-expect-error - TODO: Fix this partial type
82
+ //@ts-expect-error - TODO: Fix this partial type. We need to align new-marketplace-types with builder.gen.ts
83
83
  collections:
84
84
  overrides.shop?.collections ?? marketplaceConfig.shop.collections,
85
85
  },
@@ -0,0 +1,85 @@
1
+ import { infiniteQueryOptions } from '@tanstack/react-query';
2
+ import type { Address } from 'viem';
3
+ import type { SdkConfig } from '../../types';
4
+ import {
5
+ getMarketplaceClient,
6
+ type ListPrimarySaleItemsArgs,
7
+ type ListPrimarySaleItemsReturn,
8
+ type Page,
9
+ type PrimarySaleItemsFilter,
10
+ type ValuesOptional,
11
+ } from '../_internal';
12
+ import type { StandardQueryOptions } from '../types/query';
13
+
14
+ export interface FetchPrimarySaleItemsParams {
15
+ chainId: number;
16
+ primarySaleContractAddress: Address;
17
+ filter?: PrimarySaleItemsFilter;
18
+ page?: Page;
19
+ config: SdkConfig;
20
+ }
21
+
22
+ /**
23
+ * Fetches primary sale items from the marketplace API
24
+ */
25
+ export async function fetchPrimarySaleItems(
26
+ params: FetchPrimarySaleItemsParams,
27
+ ): Promise<ListPrimarySaleItemsReturn> {
28
+ const { chainId, primarySaleContractAddress, filter, page, config } = params;
29
+
30
+ const marketplaceClient = getMarketplaceClient(config);
31
+
32
+ return marketplaceClient.listPrimarySaleItems({
33
+ chainId: String(chainId),
34
+ primarySaleContractAddress,
35
+ filter,
36
+ page,
37
+ });
38
+ }
39
+
40
+ export type ListPrimarySaleItemsQueryOptions =
41
+ ValuesOptional<FetchPrimarySaleItemsParams> & {
42
+ query?: StandardQueryOptions;
43
+ };
44
+
45
+ export const listPrimarySaleItemsQueryOptions = (
46
+ params: ListPrimarySaleItemsQueryOptions,
47
+ ) => {
48
+ const enabled = Boolean(
49
+ params.primarySaleContractAddress &&
50
+ params.chainId &&
51
+ params.config &&
52
+ (params.query?.enabled ?? true),
53
+ );
54
+
55
+ type PageParam = { page: number; pageSize: number };
56
+ const initialPage: PageParam = { page: 1, pageSize: 30 };
57
+
58
+ return infiniteQueryOptions({
59
+ queryKey: ['listPrimarySaleItems', params],
60
+ queryFn: async ({ pageParam }) => {
61
+ return fetchPrimarySaleItems({
62
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
63
+ chainId: params.chainId!,
64
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
65
+ primarySaleContractAddress: params.primarySaleContractAddress!,
66
+ filter: params.filter,
67
+ page: pageParam,
68
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
69
+ config: params.config!,
70
+ });
71
+ },
72
+ initialPageParam: initialPage,
73
+ getNextPageParam: (lastPage) =>
74
+ lastPage.page?.more
75
+ ? {
76
+ page: (lastPage.page?.page || 1) + 1,
77
+ pageSize: lastPage.page?.pageSize || 30,
78
+ }
79
+ : undefined,
80
+ ...params.query,
81
+ enabled,
82
+ });
83
+ };
84
+
85
+ export type { ListPrimarySaleItemsArgs, ListPrimarySaleItemsReturn };
@@ -0,0 +1,64 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { Address } from 'viem';
3
+ import type { SdkConfig } from '../../types';
4
+ import {
5
+ type GetCountOfPrimarySaleItemsReturn,
6
+ getMarketplaceClient,
7
+ type PrimarySaleItemsFilter,
8
+ } from '../_internal';
9
+ import type { StandardQueryOptions } from '../types/query';
10
+
11
+ export interface FetchPrimarySaleItemsCountParams {
12
+ chainId: number;
13
+ primarySaleContractAddress: Address;
14
+ filter?: PrimarySaleItemsFilter;
15
+ config: SdkConfig;
16
+ }
17
+
18
+ /**
19
+ * Fetches the count of primary sale items from the marketplace API
20
+ */
21
+ export async function fetchPrimarySaleItemsCount(
22
+ params: FetchPrimarySaleItemsCountParams,
23
+ ): Promise<GetCountOfPrimarySaleItemsReturn> {
24
+ const { chainId, primarySaleContractAddress, filter, config } = params;
25
+
26
+ const marketplaceClient = getMarketplaceClient(config);
27
+ return marketplaceClient.getCountOfPrimarySaleItems({
28
+ chainId: String(chainId),
29
+ primarySaleContractAddress,
30
+ filter,
31
+ });
32
+ }
33
+
34
+ export type PrimarySaleItemsCountQueryOptions =
35
+ Partial<FetchPrimarySaleItemsCountParams> & {
36
+ query?: StandardQueryOptions;
37
+ };
38
+
39
+ export const primarySaleItemsCountQueryOptions = (
40
+ args: PrimarySaleItemsCountQueryOptions,
41
+ ) => {
42
+ const enabled = Boolean(
43
+ args.primarySaleContractAddress &&
44
+ args.chainId &&
45
+ args.config &&
46
+ (args.query?.enabled ?? true),
47
+ );
48
+
49
+ return queryOptions({
50
+ queryKey: ['primarySaleItemsCount', args],
51
+ queryFn: () =>
52
+ fetchPrimarySaleItemsCount({
53
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
54
+ chainId: args.chainId!,
55
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
56
+ primarySaleContractAddress: args.primarySaleContractAddress!,
57
+ filter: args.filter,
58
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
59
+ config: args.config!,
60
+ }),
61
+ ...args.query,
62
+ enabled,
63
+ });
64
+ };
@@ -0,0 +1,93 @@
1
+ import type { GetTokenSuppliesArgs } from '@0xsequence/indexer';
2
+ import { queryOptions } from '@tanstack/react-query';
3
+ import type { SdkConfig } from '../../types';
4
+ import {
5
+ getIndexerClient,
6
+ LaosAPI,
7
+ tokenKeys,
8
+ type ValuesOptional,
9
+ } from '../_internal';
10
+ import type { StandardQueryOptions } from '../types/query';
11
+
12
+ export interface FetchTokenSuppliesParams
13
+ extends Omit<GetTokenSuppliesArgs, 'contractAddress'> {
14
+ chainId: number;
15
+ collectionAddress: string;
16
+ config: SdkConfig;
17
+ isLaos721?: boolean;
18
+ }
19
+
20
+ /**
21
+ * Fetches token supplies with support for both indexer and LAOS APIs
22
+ * Uses the more efficient single-contract APIs from both services
23
+ */
24
+ export async function fetchTokenSupplies(params: FetchTokenSuppliesParams) {
25
+ const { chainId, collectionAddress, config, isLaos721, ...rest } = params;
26
+
27
+ if (isLaos721) {
28
+ const laosApi = new LaosAPI();
29
+
30
+ // Convert indexer Page format to LAOS PaginationOptions format
31
+ const laosPage = rest.page
32
+ ? {
33
+ sort:
34
+ rest.page.sort?.map((sortBy) => ({
35
+ column: sortBy.column,
36
+ order: sortBy.order,
37
+ })) || [],
38
+ }
39
+ : undefined;
40
+
41
+ const result = await laosApi.getTokenSupplies({
42
+ chainId: chainId.toString(),
43
+ contractAddress: collectionAddress,
44
+ includeMetadata: rest.includeMetadata,
45
+ page: laosPage,
46
+ });
47
+
48
+ return result;
49
+ }
50
+
51
+ const indexerClient = getIndexerClient(chainId, config);
52
+
53
+ const apiArgs: GetTokenSuppliesArgs = {
54
+ contractAddress: collectionAddress,
55
+ ...rest,
56
+ };
57
+
58
+ const result = await indexerClient.getTokenSupplies(apiArgs);
59
+ return result;
60
+ }
61
+
62
+ export type TokenSuppliesQueryOptions =
63
+ ValuesOptional<FetchTokenSuppliesParams> & {
64
+ query?: StandardQueryOptions;
65
+ };
66
+
67
+ export function tokenSuppliesQueryOptions(params: TokenSuppliesQueryOptions) {
68
+ const enabled = Boolean(
69
+ params.chainId &&
70
+ params.collectionAddress &&
71
+ params.config &&
72
+ (params.query?.enabled ?? true),
73
+ );
74
+
75
+ return queryOptions({
76
+ queryKey: [...tokenKeys.supplies, params],
77
+ queryFn: () =>
78
+ fetchTokenSupplies({
79
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
80
+ chainId: params.chainId!,
81
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
82
+ collectionAddress: params.collectionAddress!,
83
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
84
+ config: params.config!,
85
+ isLaos721: params.isLaos721,
86
+ includeMetadata: params.includeMetadata,
87
+ metadataOptions: params.metadataOptions,
88
+ page: params.page,
89
+ }),
90
+ ...params.query,
91
+ enabled,
92
+ });
93
+ }
@@ -72,7 +72,7 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
72
72
  ],
73
73
  "enabled": true,
74
74
  "ogImage": "https://example.com/og-image.png",
75
- "title": "Mock Market Page",
75
+ "private": false,
76
76
  },
77
77
  "projectId": NaN,
78
78
  "settings": {
@@ -112,6 +112,11 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
112
112
  "projectId": 1,
113
113
  "saleAddress": "0x0000000000000000000000000000000000000000",
114
114
  "saleBannerUrl": "https://example.com/shop-sale-banner.png",
115
+ "tokenIds": [
116
+ "1",
117
+ "2",
118
+ "3",
119
+ ],
115
120
  "updatedAt": "2025-03-16T13:04:16.098Z",
116
121
  },
117
122
  {
@@ -125,12 +130,17 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
125
130
  "projectId": 1,
126
131
  "saleAddress": "0x1234567890123456789012345678901234567890",
127
132
  "saleBannerUrl": "https://example.com/polygon-shop-sale-banner.png",
133
+ "tokenIds": [
134
+ "4",
135
+ "5",
136
+ "6",
137
+ ],
128
138
  "updatedAt": "2025-03-16T13:04:16.098Z",
129
139
  },
130
140
  ],
131
141
  "enabled": true,
132
142
  "ogImage": "https://example.com/shop-og-image.png",
133
- "title": "Mock Shop Page",
143
+ "private": false,
134
144
  },
135
145
  }
136
146
  `;
@@ -1,4 +1,4 @@
1
- import { type State, cookieToInitialState } from 'wagmi';
1
+ import { cookieToInitialState, type State } from 'wagmi';
2
2
  import type { SdkConfig } from '../../types/sdk-config';
3
3
  import { getQueryClient } from '../_internal/api/get-query-client';
4
4
  import { createWagmiConfig } from '../_internal/wagmi/create-config';
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Standard query options that can be used across all marketplace SDK hooks
3
+ *
4
+ * Based on TanStack Query v5 UseQueryOptions, but simplified, the type from TanStack is hard to modify
5
+ */
6
+ export interface StandardQueryOptions<TError = Error> {
7
+ /** Whether the query should be enabled/disabled */
8
+ enabled?: boolean;
9
+ /** Time in milliseconds that data is considered fresh */
10
+ staleTime?: number;
11
+ gcTime?: number;
12
+ // biome-ignore lint/suspicious/noExplicitAny: TanStack Query requires any type for query parameter
13
+ refetchInterval?: number | false | ((query: any) => number | false);
14
+ refetchOnWindowFocus?: boolean;
15
+ refetchOnMount?: boolean;
16
+ refetchOnReconnect?: boolean;
17
+ retry?: boolean | number | ((failureCount: number, error: TError) => boolean);
18
+ retryDelay?: number | ((retryAttempt: number, error: TError) => number);
19
+ // select is not supported for now
20
+ // select?: <TSelected = TData>(data: TData) => TSelected;
21
+ suspense?: boolean;
22
+ /** Placeholder data is not supported for now */
23
+ // placeholderData?: TData | (() => TData);
24
+ }
25
+
26
+ /**
27
+ * Standard infinite query options that can be used across all marketplace SDK hooks
28
+ * that support infinite pagination
29
+ */
30
+ export interface StandardInfiniteQueryOptions<TError = Error>
31
+ extends StandardQueryOptions<TError> {
32
+ /** Maximum number of pages to fetch */
33
+ maxPages?: number;
34
+ }
@@ -1,5 +1,5 @@
1
1
  import { Skeleton } from '@0xsequence/design-system';
2
- import { Suspense, lazy } from 'react';
2
+ import { lazy, Suspense } from 'react';
3
3
 
4
4
  const ModelViewerComponent = lazy(() =>
5
5
  import('@google/model-viewer').then(() => ({