@0xsequence/marketplace-sdk 0.8.11 → 0.8.12

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 (404) hide show
  1. package/CHANGELOG.md +166 -0
  2. package/dist/CartIcon-Bll1rbxv.js +141 -0
  3. package/dist/CartIcon-Bll1rbxv.js.map +1 -0
  4. package/dist/CollectibleCard-CLQTl0_6.d.ts +8 -0
  5. package/dist/_internal-69NEWNUE.js +34 -0
  6. package/dist/_internal-69NEWNUE.js.map +1 -0
  7. package/dist/abi-BKyRjVcZ.js +0 -0
  8. package/dist/{alien_swap-2B65TDGT.js → alien_swap-B_76IMma.js} +5 -5
  9. package/dist/alien_swap-B_76IMma.js.map +1 -0
  10. package/dist/api-1KFxYh7o.js +232 -0
  11. package/dist/api-1KFxYh7o.js.map +1 -0
  12. package/dist/{aqua-xyz-WMYQLAIS.js → aqua-xyz-CMN_TFY5.js} +5 -5
  13. package/dist/aqua-xyz-CMN_TFY5.js.map +1 -0
  14. package/dist/{aura-V22RV5OG.js → aura-Cye_TuHj.js} +5 -5
  15. package/dist/aura-Cye_TuHj.js.map +1 -0
  16. package/dist/{blur-GE5QOMCM.js → blur-DWDMyMpK.js} +5 -5
  17. package/dist/blur-DWDMyMpK.js.map +1 -0
  18. package/dist/builder-api-BQvzykoU.js +28 -0
  19. package/dist/builder-api-BQvzykoU.js.map +1 -0
  20. package/dist/builder-api-DoK3907S.d.ts +12 -0
  21. package/dist/builder.gen-CxP9NT1p.js +303 -0
  22. package/dist/builder.gen-CxP9NT1p.js.map +1 -0
  23. package/dist/{coinbase-NLHJMGAP.js → coinbase-ByA_XRB0.js} +5 -5
  24. package/dist/coinbase-ByA_XRB0.js.map +1 -0
  25. package/dist/{element-2LGTYYSP.js → element-b77CyXIZ.js} +5 -5
  26. package/dist/element-b77CyXIZ.js.map +1 -0
  27. package/dist/{foundation-BPN66ZTN.js → foundation-DbOrKP9Y.js} +5 -5
  28. package/dist/foundation-DbOrKP9Y.js.map +1 -0
  29. package/dist/index-1bezgsFq.d.ts +1129 -0
  30. package/dist/index-4-kfOFdx.d.ts +22 -0
  31. package/dist/index-BEYefG1G.d.ts +24 -0
  32. package/dist/index-BHiSG-Yi.d.ts +312 -0
  33. package/dist/index-BIMIpDiI.d.ts +188 -0
  34. package/dist/index-BQW0PUkQ.d.ts +3973 -0
  35. package/dist/index-BfH21xmk.d.ts +117 -0
  36. package/dist/index-BjIwVzc4.d.ts +1057 -0
  37. package/dist/index-C39K_8SG.d.ts +1 -0
  38. package/dist/index-CN8puQQJ.d.ts +24 -0
  39. package/dist/index-Cl7PQOGu.d.ts +102 -0
  40. package/dist/index-D5v5iluA.d.ts +809 -0
  41. package/dist/index-DXMfTZ1F.d.ts +7 -0
  42. package/dist/index-DafWjEb4.d.ts +65 -0
  43. package/dist/index-ij9f8GAA.d.ts +1 -0
  44. package/dist/index.css +384 -371
  45. package/dist/index.d.ts +10 -29
  46. package/dist/index.js +13 -104
  47. package/dist/{looks-rare-MZRSOPT4.js → looks-rare-C1VqNcSM.js} +5 -5
  48. package/dist/looks-rare-C1VqNcSM.js.map +1 -0
  49. package/dist/{magic-eden-PUBL6KWW.js → magic-eden-ea_AGCZr.js} +5 -5
  50. package/dist/magic-eden-ea_AGCZr.js.map +1 -0
  51. package/dist/{manifold-GA445YJ6.js → manifold-8y8J2sjT.js} +5 -5
  52. package/dist/manifold-8y8J2sjT.js.map +1 -0
  53. package/dist/marketplace-logos-CSeGcPW4.js +50 -0
  54. package/dist/marketplace-logos-CSeGcPW4.js.map +1 -0
  55. package/dist/marketplace-nwnZv9Cb.js +1913 -0
  56. package/dist/marketplace-nwnZv9Cb.js.map +1 -0
  57. package/dist/marketplace.gen-Dqk8vRmD.js +1068 -0
  58. package/dist/marketplace.gen-Dqk8vRmD.js.map +1 -0
  59. package/dist/marketplaceConfig-D2MYFqll.js +71 -0
  60. package/dist/marketplaceConfig-D2MYFqll.js.map +1 -0
  61. package/dist/{mintify-UMC5PTKC.js → mintify-LA68TzWg.js} +5 -5
  62. package/dist/mintify-LA68TzWg.js.map +1 -0
  63. package/dist/{nftx-AX3CY3IE.js → nftx-D3Tc8nzd.js} +5 -5
  64. package/dist/nftx-D3Tc8nzd.js.map +1 -0
  65. package/dist/{okx-GNVLAE2R.js → okx-hbqg6oIJ.js} +5 -5
  66. package/dist/okx-hbqg6oIJ.js.map +1 -0
  67. package/dist/{open-sea-KI43GVEB.js → open-sea-BccuK8-t.js} +5 -5
  68. package/dist/open-sea-BccuK8-t.js.map +1 -0
  69. package/dist/options-DCi6_23w.js +34 -0
  70. package/dist/options-DCi6_23w.js.map +1 -0
  71. package/dist/primary-sale-Cw95phYC.js +1264 -0
  72. package/dist/primary-sale-Cw95phYC.js.map +1 -0
  73. package/dist/queries-DPvwtnO7.js +486 -0
  74. package/dist/queries-DPvwtnO7.js.map +1 -0
  75. package/dist/{rarible-2J3MMZJ7.js → rarible-BgTwwj9g.js} +5 -5
  76. package/dist/rarible-BgTwwj9g.js.map +1 -0
  77. package/dist/react/_internal/api/index.d.ts +4 -86
  78. package/dist/react/_internal/api/index.js +7 -150
  79. package/dist/react/_internal/databeat/index.d.ts +45 -41
  80. package/dist/react/_internal/databeat/index.js +23 -27
  81. package/dist/react/_internal/index.d.ts +7 -76
  82. package/dist/react/_internal/index.js +9 -176
  83. package/dist/react/_internal/wagmi/index.d.ts +4 -17
  84. package/dist/react/_internal/wagmi/index.js +5 -14
  85. package/dist/react/hooks/index.d.ts +17 -3652
  86. package/dist/react/hooks/index.js +23 -153
  87. package/dist/react/hooks/options/index.d.ts +5 -8
  88. package/dist/react/hooks/options/index.js +11 -21
  89. package/dist/react/index.d.ts +37 -33
  90. package/dist/react/index.js +23 -193
  91. package/dist/react/queries/index.d.ts +8 -26
  92. package/dist/react/queries/index.js +18 -51
  93. package/dist/react/ssr/index.d.ts +19 -13
  94. package/dist/react/ssr/index.js +29 -28
  95. package/dist/react/ssr/index.js.map +1 -1
  96. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +10 -0
  97. package/dist/react/ui/components/marketplace-collectible-card/index.js +23 -0
  98. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +8 -0
  99. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +10 -0
  100. package/dist/react/ui/components/marketplace-logos/index.d.ts +26 -24
  101. package/dist/react/ui/components/marketplace-logos/index.js +3 -45
  102. package/dist/react/ui/icons/index.d.ts +1 -2
  103. package/dist/react/ui/icons/index.js +10 -14
  104. package/dist/react/ui/index.d.ts +10 -116
  105. package/dist/react/ui/index.js +23 -41
  106. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +59 -33
  107. package/dist/react/ui/modals/_internal/components/actionModal/index.js +23 -31
  108. package/dist/react-BG7o4PId.js +8351 -0
  109. package/dist/react-BG7o4PId.js.map +1 -0
  110. package/dist/react-BbHBl6gg.css +80 -0
  111. package/dist/react-BbHBl6gg.css.map +1 -0
  112. package/dist/sdk-config-DJzxVPld.d.ts +1535 -0
  113. package/dist/{sequence-TGLUFEPQ.js → sequence-Do3kzb4J.js} +5 -5
  114. package/dist/sequence-Do3kzb4J.js.map +1 -0
  115. package/dist/src-Dz2CfBL0.js +8 -0
  116. package/dist/src-Dz2CfBL0.js.map +1 -0
  117. package/dist/{sudo-swap-M2O6E3TE.js → sudo-swap-B6vPKxBz.js} +5 -5
  118. package/dist/sudo-swap-B6vPKxBz.js.map +1 -0
  119. package/dist/{super-rare-UU2U4LIN.js → super-rare-eCm1SE6O.js} +5 -5
  120. package/dist/super-rare-eCm1SE6O.js.map +1 -0
  121. package/dist/token-CO5llIla.js +1312 -0
  122. package/dist/token-CO5llIla.js.map +1 -0
  123. package/dist/transaction-CcVViHEL.js +97 -0
  124. package/dist/transaction-CcVViHEL.js.map +1 -0
  125. package/dist/types/index.d.ts +3 -13
  126. package/dist/types/index.js +5 -44
  127. package/dist/types-BIJOaL4j.d.ts +68 -0
  128. package/dist/types-DwWE6xOF.js +13 -0
  129. package/dist/types-DwWE6xOF.js.map +1 -0
  130. package/dist/useCollection-C-mclKU0.d.ts +66 -0
  131. package/dist/utils/abi/index.d.ts +5 -3
  132. package/dist/utils/abi/index.js +6 -26
  133. package/dist/utils/abi/marketplace/index.d.ts +2 -805
  134. package/dist/utils/abi/marketplace/index.js +3 -11
  135. package/dist/utils/abi/primary-sale/index.d.ts +2 -1054
  136. package/dist/utils/abi/primary-sale/index.js +3 -9
  137. package/dist/utils/abi/token/index.d.ts +2 -1125
  138. package/dist/utils/abi/token/index.js +3 -11
  139. package/dist/utils/index.d.ts +8 -91
  140. package/dist/utils/index.js +11 -57
  141. package/dist/utils-BFdxaToy.js +216 -0
  142. package/dist/utils-BFdxaToy.js.map +1 -0
  143. package/dist/utils-Cat9_pef.js +44 -0
  144. package/dist/utils-Cat9_pef.js.map +1 -0
  145. package/dist/wagmi-DRctYEk6.js +159 -0
  146. package/dist/wagmi-DRctYEk6.js.map +1 -0
  147. package/dist/{x2y2-3W5BBMZC.js → x2y2-DD17tT91.js} +5 -5
  148. package/dist/x2y2-DD17tT91.js.map +1 -0
  149. package/dist/{zora-6EY6FUH6.js → zora-BpSG9UzS.js} +5 -5
  150. package/dist/zora-BpSG9UzS.js.map +1 -0
  151. package/package.json +10 -8
  152. package/src/index.ts +0 -1
  153. package/src/react/_internal/api/__mocks__/indexer.msw.ts +1 -0
  154. package/src/react/_internal/api/builder.gen.ts +0 -1
  155. package/src/react/_internal/api/marketplace.gen.ts +467 -26
  156. package/src/react/_internal/api/services.ts +42 -49
  157. package/src/react/_internal/wagmi/__tests__/create-config.test.ts +5 -5
  158. package/src/react/_internal/wagmi/create-config.ts +7 -2
  159. package/src/react/_internal/wagmi/get-connectors.ts +5 -2
  160. package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +161 -2
  161. package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +44 -6
  162. package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +7 -4
  163. package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +225 -0
  164. package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +3 -3
  165. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +2 -3
  166. package/src/react/hooks/__tests__/useHighestOffer.test.tsx +0 -16
  167. package/src/react/hooks/__tests__/useInventory.test.tsx +0 -36
  168. package/src/react/hooks/__tests__/useListCollections.test.tsx +1 -1
  169. package/src/react/hooks/index.ts +7 -0
  170. package/src/react/hooks/useBalanceOfCollectible.tsx +13 -9
  171. package/src/react/hooks/useCancelTransactionSteps.tsx +5 -1
  172. package/src/react/hooks/useCheckoutOptions.tsx +2 -1
  173. package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +67 -0
  174. package/src/react/hooks/useCollectionDetails.tsx +22 -7
  175. package/src/react/hooks/useCountListingsForCollectible.tsx +5 -4
  176. package/src/react/hooks/useCountOfCollectables.tsx +10 -7
  177. package/src/react/hooks/useCountOffersForCollectible.tsx +5 -4
  178. package/src/react/hooks/useCurrency.tsx +2 -2
  179. package/src/react/hooks/useERC721SaleMintedTokens.tsx +67 -0
  180. package/src/react/hooks/useFloorOrder.tsx +5 -2
  181. package/src/react/hooks/useGenerateCancelTransaction.tsx +13 -6
  182. package/src/react/hooks/useGenerateListingTransaction.tsx +15 -5
  183. package/src/react/hooks/useGenerateOfferTransaction.tsx +15 -6
  184. package/src/react/hooks/useGenerateSellTransaction.tsx +15 -6
  185. package/src/react/hooks/useGetTokenSuppliesMap.ts +5 -0
  186. package/src/react/hooks/useInventory.tsx +7 -5
  187. package/src/react/hooks/useList1155ShopCardData.tsx +130 -0
  188. package/src/react/hooks/useList721ShopCardData.tsx +130 -0
  189. package/src/react/hooks/useListBalances.tsx +6 -9
  190. package/src/react/hooks/useListCollectibleActivities.tsx +2 -1
  191. package/src/react/hooks/useListCollectibles.tsx +1 -14
  192. package/src/react/hooks/useListCollectiblesPaginated.tsx +8 -5
  193. package/src/react/hooks/useListCollectionActivities.tsx +2 -1
  194. package/src/react/hooks/useListCollections.tsx +1 -1
  195. package/src/react/hooks/useListListingsForCollectible.tsx +2 -1
  196. package/src/react/hooks/useListMarketCardData.tsx +157 -0
  197. package/src/react/hooks/useListOffersForCollectible.tsx +2 -1
  198. package/src/react/hooks/useListPrimarySaleItems.ts +42 -0
  199. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +134 -0
  200. package/src/react/queries/highestOffer.ts +6 -4
  201. package/src/react/queries/inventory.ts +35 -1
  202. package/src/react/queries/listBalances.ts +14 -30
  203. package/src/react/queries/listCollectibles.ts +60 -7
  204. package/src/react/queries/listCollections.ts +8 -2
  205. package/src/react/queries/listTokenMetadata.ts +6 -1
  206. package/src/react/queries/lowestListing.ts +6 -4
  207. package/src/react/queries/marketCurrencies.ts +11 -7
  208. package/src/react/queries/marketplaceConfig.ts +55 -80
  209. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +44 -6
  210. package/src/react/ssr/__tests__/create-ssr-client.test.ts +0 -3
  211. package/src/react/ssr/create-ssr-client.ts +5 -10
  212. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +47 -13
  213. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +1 -1
  214. package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +28 -15
  215. package/src/react/ui/components/_internals/action-button/__tests__/OwnerActions.test.tsx +1 -1
  216. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +1 -1
  217. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +1 -1
  218. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +78 -15
  219. package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +1 -1
  220. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +1 -1
  221. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +17 -0
  222. package/src/react/ui/components/marketplace-collectible-card/CollectibleCardSkeleton.tsx +24 -0
  223. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +231 -0
  224. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +76 -0
  225. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +55 -0
  226. package/src/react/ui/components/marketplace-collectible-card/index.ts +3 -0
  227. package/src/react/ui/components/marketplace-collectible-card/types.ts +95 -0
  228. package/src/react/ui/components/marketplace-collectible-card/utils/formatPrice.ts +45 -0
  229. package/src/react/ui/components/marketplace-collectible-card/utils/index.ts +2 -0
  230. package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +39 -0
  231. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +124 -0
  232. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +105 -0
  233. package/src/react/ui/components/{collectible-card/media → media}/Media.tsx +42 -25
  234. package/src/react/ui/components/{collectible-card/media → media}/types.ts +3 -1
  235. package/src/react/ui/index.ts +5 -2
  236. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +554 -0
  237. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +385 -0
  238. package/src/react/ui/modals/BuyModal/__tests__/ERC721ShopModal.test.tsx +272 -0
  239. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx.bak +112 -0
  240. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +117 -13
  241. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +10 -7
  242. package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +157 -0
  243. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +136 -0
  244. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +184 -0
  245. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +121 -0
  246. package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +85 -0
  247. package/src/react/ui/modals/BuyModal/components/ERC721ShopModal.tsx +86 -0
  248. package/src/react/ui/modals/BuyModal/components/Modal.tsx +14 -0
  249. package/src/react/ui/modals/BuyModal/components/types.ts +8 -0
  250. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +4 -4
  251. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +379 -0
  252. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +253 -0
  253. package/src/react/ui/modals/BuyModal/hooks/__tests__/{useFees.test.tsx → useMarketPlatformFee.test.tsx} +10 -11
  254. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +62 -44
  255. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +73 -0
  256. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +196 -0
  257. package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +74 -18
  258. package/src/react/ui/modals/BuyModal/hooks/useMarketPlatformFee.ts +53 -0
  259. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +27 -12
  260. package/src/react/ui/modals/BuyModal/store.ts +147 -13
  261. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +2 -1
  262. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +5 -3
  263. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +2 -1
  264. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +5 -3
  265. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +4 -3
  266. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +6 -3
  267. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +11 -7
  268. package/src/react/ui/modals/SuccessfulPurchaseModal/index.tsx +34 -28
  269. package/src/react/ui/modals/SuccessfulPurchaseModal/store.ts +71 -0
  270. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +0 -1
  271. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +105 -108
  272. package/src/react/ui/modals/_internal/components/actionModal/store.ts +45 -12
  273. package/src/react/ui/modals/_internal/components/switchChainModal/__tests__/SwitchChainModal.test.tsx +12 -8
  274. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +35 -33
  275. package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +61 -32
  276. package/src/react/ui/modals/modal-provider.tsx +1 -1
  277. package/src/types/buyModalErrors.ts +438 -0
  278. package/src/types/index.ts +4 -1
  279. package/src/types/new-marketplace-types.ts +6 -21
  280. package/src/types/sdk-config.ts +18 -24
  281. package/src/types/types.ts +16 -0
  282. package/src/utils/_internal/error/transaction.ts +36 -1
  283. package/tsconfig.json +1 -1
  284. package/tsconfig.tsbuildinfo +1 -1
  285. package/tsdown.config.ts +25 -0
  286. package/.ctirc +0 -32
  287. package/dist/alien_swap-2B65TDGT.js.map +0 -1
  288. package/dist/aqua-xyz-WMYQLAIS.js.map +0 -1
  289. package/dist/aura-V22RV5OG.js.map +0 -1
  290. package/dist/blur-GE5QOMCM.js.map +0 -1
  291. package/dist/chunk-2PSNAIAT.js +0 -1
  292. package/dist/chunk-2PSNAIAT.js.map +0 -1
  293. package/dist/chunk-5C6ZZ6WX.js +0 -130
  294. package/dist/chunk-5C6ZZ6WX.js.map +0 -1
  295. package/dist/chunk-5O44EPXZ.js +0 -207
  296. package/dist/chunk-5O44EPXZ.js.map +0 -1
  297. package/dist/chunk-6CTFVBKU.js +0 -1
  298. package/dist/chunk-6CTFVBKU.js.map +0 -1
  299. package/dist/chunk-6OPMUCGX.js +0 -42
  300. package/dist/chunk-6OPMUCGX.js.map +0 -1
  301. package/dist/chunk-FUM4OGOQ.js +0 -1027
  302. package/dist/chunk-FUM4OGOQ.js.map +0 -1
  303. package/dist/chunk-L6KWLCER.js +0 -32
  304. package/dist/chunk-L6KWLCER.js.map +0 -1
  305. package/dist/chunk-LAP2CKLN.js +0 -485
  306. package/dist/chunk-LAP2CKLN.js.map +0 -1
  307. package/dist/chunk-LECCEZAO.js +0 -11
  308. package/dist/chunk-LECCEZAO.js.map +0 -1
  309. package/dist/chunk-N7SQWS2R.js +0 -38
  310. package/dist/chunk-N7SQWS2R.js.map +0 -1
  311. package/dist/chunk-NX52D7NX.js +0 -135
  312. package/dist/chunk-NX52D7NX.js.map +0 -1
  313. package/dist/chunk-OAOONM4S.js +0 -1787
  314. package/dist/chunk-OAOONM4S.js.map +0 -1
  315. package/dist/chunk-Q3ECVC4F.js +0 -811
  316. package/dist/chunk-Q3ECVC4F.js.map +0 -1
  317. package/dist/chunk-QY52UADF.js +0 -107
  318. package/dist/chunk-QY52UADF.js.map +0 -1
  319. package/dist/chunk-TNAR3XEF.js +0 -8729
  320. package/dist/chunk-TNAR3XEF.js.map +0 -1
  321. package/dist/chunk-XABYNWXO.js +0 -549
  322. package/dist/chunk-XABYNWXO.js.map +0 -1
  323. package/dist/chunk-XX4EVWBF.js +0 -1292
  324. package/dist/chunk-XX4EVWBF.js.map +0 -1
  325. package/dist/chunk-YB5UUF2G.js +0 -11
  326. package/dist/chunk-YB5UUF2G.js.map +0 -1
  327. package/dist/chunk-YWGFI4PN.js +0 -217
  328. package/dist/chunk-YWGFI4PN.js.map +0 -1
  329. package/dist/coinbase-NLHJMGAP.js.map +0 -1
  330. package/dist/create-config-DLMvMTkZ.d.ts +0 -8
  331. package/dist/element-2LGTYYSP.js.map +0 -1
  332. package/dist/foundation-BPN66ZTN.js.map +0 -1
  333. package/dist/get-query-client-D46hbjk6.d.ts +0 -5
  334. package/dist/index.css.map +0 -1
  335. package/dist/index.js.map +0 -1
  336. package/dist/looks-rare-MZRSOPT4.js.map +0 -1
  337. package/dist/magic-eden-PUBL6KWW.js.map +0 -1
  338. package/dist/manifold-GA445YJ6.js.map +0 -1
  339. package/dist/marketCurrencies-enNVYwBk.d.ts +0 -277
  340. package/dist/marketplace.gen-D24veUQs.d.ts +0 -1073
  341. package/dist/marketplaceConfig-BwNAbLPw.d.ts +0 -21
  342. package/dist/mintify-UMC5PTKC.js.map +0 -1
  343. package/dist/new-marketplace-types-BCw19X9S.d.ts +0 -102
  344. package/dist/nftx-AX3CY3IE.js.map +0 -1
  345. package/dist/okx-GNVLAE2R.js.map +0 -1
  346. package/dist/open-sea-KI43GVEB.js.map +0 -1
  347. package/dist/rarible-2J3MMZJ7.js.map +0 -1
  348. package/dist/react/_internal/api/index.js.map +0 -1
  349. package/dist/react/_internal/databeat/index.css +0 -2764
  350. package/dist/react/_internal/databeat/index.css.map +0 -1
  351. package/dist/react/_internal/databeat/index.js.map +0 -1
  352. package/dist/react/_internal/index.js.map +0 -1
  353. package/dist/react/_internal/wagmi/index.js.map +0 -1
  354. package/dist/react/hooks/index.css +0 -2764
  355. package/dist/react/hooks/index.css.map +0 -1
  356. package/dist/react/hooks/index.js.map +0 -1
  357. package/dist/react/hooks/options/index.js.map +0 -1
  358. package/dist/react/index.css +0 -2764
  359. package/dist/react/index.css.map +0 -1
  360. package/dist/react/index.js.map +0 -1
  361. package/dist/react/queries/index.js.map +0 -1
  362. package/dist/react/ui/components/collectible-card/index.css +0 -2764
  363. package/dist/react/ui/components/collectible-card/index.css.map +0 -1
  364. package/dist/react/ui/components/collectible-card/index.d.ts +0 -71
  365. package/dist/react/ui/components/collectible-card/index.js +0 -27
  366. package/dist/react/ui/components/collectible-card/index.js.map +0 -1
  367. package/dist/react/ui/components/marketplace-logos/index.js.map +0 -1
  368. package/dist/react/ui/icons/index.js.map +0 -1
  369. package/dist/react/ui/index.css +0 -2764
  370. package/dist/react/ui/index.css.map +0 -1
  371. package/dist/react/ui/index.js.map +0 -1
  372. package/dist/react/ui/modals/_internal/components/actionModal/index.css +0 -2764
  373. package/dist/react/ui/modals/_internal/components/actionModal/index.css.map +0 -1
  374. package/dist/react/ui/modals/_internal/components/actionModal/index.js.map +0 -1
  375. package/dist/sdk-config-qorA0TgF.d.ts +0 -165
  376. package/dist/sequence-TGLUFEPQ.js.map +0 -1
  377. package/dist/services-WrshxCqc.d.ts +0 -23
  378. package/dist/sudo-swap-M2O6E3TE.js.map +0 -1
  379. package/dist/super-rare-UU2U4LIN.js.map +0 -1
  380. package/dist/types/index.js.map +0 -1
  381. package/dist/useCollection-YAdXfVO7.d.ts +0 -61
  382. package/dist/utils/abi/index.js.map +0 -1
  383. package/dist/utils/abi/marketplace/index.js.map +0 -1
  384. package/dist/utils/abi/primary-sale/index.js.map +0 -1
  385. package/dist/utils/abi/token/index.js.map +0 -1
  386. package/dist/utils/index.js.map +0 -1
  387. package/dist/x2y2-3W5BBMZC.js.map +0 -1
  388. package/dist/zora-6EY6FUH6.js.map +0 -1
  389. package/postcss.config.mjs +0 -5
  390. package/src/react/hooks/__tests__/__snapshots__/useRoyaltyPercentage.test.tsx.snap +0 -8
  391. package/src/react/ui/components/collectible-card/CollectibleCard.tsx +0 -170
  392. package/src/react/ui/components/collectible-card/Footer.tsx +0 -157
  393. package/src/react/ui/components/collectible-card/__tests__/CollectibleCard.test.tsx +0 -94
  394. package/src/react/ui/components/collectible-card/__tests__/Footer.test.tsx +0 -136
  395. package/src/react/ui/components/collectible-card/__tests__/Media.test.tsx +0 -264
  396. package/src/react/ui/components/collectible-card/index.ts +0 -2
  397. package/src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx +0 -130
  398. package/src/react/ui/modals/BuyModal/Modal.tsx +0 -124
  399. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx +0 -104
  400. package/src/react/ui/modals/BuyModal/hooks/useFees.ts +0 -39
  401. package/src/react/ui/modals/SuccessfulPurchaseModal/_store.ts +0 -72
  402. package/tsup.config.ts +0 -23
  403. /package/src/react/ui/components/{collectible-card/media → media}/MediaSkeleton.tsx +0 -0
  404. /package/src/react/ui/components/{collectible-card/media → media}/utils.ts +0 -0
@@ -31,13 +31,14 @@ const fetchListListingsForCollectible = async (
31
31
  args: UseListListingsForCollectibleArgs,
32
32
  ) => {
33
33
  const arg = {
34
+ chainId: String(args.chainId),
34
35
  contractAddress: args.collectionAddress,
35
36
  tokenId: args.collectibleId,
36
37
  filter: args.filter,
37
38
  page: args.page,
38
39
  } satisfies ListListingsForCollectibleArgs;
39
40
 
40
- const marketplaceClient = getMarketplaceClient(args.chainId, config);
41
+ const marketplaceClient = getMarketplaceClient(config);
41
42
  return marketplaceClient.listCollectibleListings(arg);
42
43
  };
43
44
 
@@ -0,0 +1,157 @@
1
+ import { useMemo } from 'react';
2
+
3
+ import type { Address } from 'viem';
4
+ import { useAccount } from 'wagmi';
5
+ import { OrderSide } from '../../types';
6
+ import type {
7
+ CollectibleCardAction,
8
+ CollectibleOrder,
9
+ ContractType,
10
+ Order,
11
+ OrderbookKind,
12
+ PropertyFilter,
13
+ } from '../../types';
14
+ import type { MarketCollectibleCardProps } from '../ui/components/marketplace-collectible-card/types';
15
+ import { useSellModal } from '../ui/modals/SellModal';
16
+ import { useCollectionBalanceDetails } from './useCollectionBalanceDetails';
17
+ import { useListCollectibles } from './useListCollectibles';
18
+
19
+ interface UseListMarketCardDataProps {
20
+ collectionAddress: Address;
21
+ chainId: number;
22
+ orderbookKind: OrderbookKind;
23
+ collectionType: ContractType;
24
+ filterOptions?: PropertyFilter[];
25
+ searchText?: string;
26
+ showListedOnly?: boolean;
27
+ onCollectibleClick?: (tokenId: string) => void;
28
+ onCannotPerformAction?: (action: CollectibleCardAction) => void;
29
+ prioritizeOwnerActions?: boolean;
30
+ assetSrcPrefixUrl?: string;
31
+ }
32
+
33
+ export function useListMarketCardData({
34
+ collectionAddress,
35
+ chainId,
36
+ orderbookKind,
37
+ collectionType,
38
+ filterOptions,
39
+ searchText,
40
+ showListedOnly = false,
41
+ onCollectibleClick,
42
+ onCannotPerformAction,
43
+ prioritizeOwnerActions,
44
+ assetSrcPrefixUrl,
45
+ }: UseListMarketCardDataProps) {
46
+ const { address: accountAddress } = useAccount();
47
+ const { show: showSellModal } = useSellModal();
48
+
49
+ // Get collectibles with listings
50
+ const {
51
+ data: collectiblesList,
52
+ isLoading: collectiblesListIsLoading,
53
+ fetchNextPage,
54
+ hasNextPage,
55
+ isFetchingNextPage,
56
+ error: collectiblesListError,
57
+ } = useListCollectibles({
58
+ collectionAddress,
59
+ chainId,
60
+ side: OrderSide.listing,
61
+ filter: {
62
+ includeEmpty: !showListedOnly,
63
+ searchText,
64
+ properties: filterOptions,
65
+ },
66
+ query: {
67
+ enabled: !!collectionAddress && !!chainId,
68
+ },
69
+ });
70
+
71
+ // Get user balances for this collection
72
+ const { data: collectionBalance, isLoading: balanceLoading } =
73
+ useCollectionBalanceDetails({
74
+ chainId,
75
+ filter: {
76
+ accountAddresses: accountAddress ? [accountAddress] : [],
77
+ omitNativeBalances: true,
78
+ contractWhitelist: [collectionAddress],
79
+ },
80
+ query: {
81
+ enabled: !!accountAddress,
82
+ },
83
+ });
84
+
85
+ // Flatten all collectibles from all pages
86
+ const allCollectibles = useMemo(() => {
87
+ if (!collectiblesList?.pages) return [];
88
+ return collectiblesList.pages.flatMap((page) => page.collectibles);
89
+ }, [collectiblesList?.pages]);
90
+
91
+ // Generate card props for each collectible
92
+ const collectibleCards = useMemo(() => {
93
+ return allCollectibles.map((collectible: CollectibleOrder) => {
94
+ const balance = collectionBalance?.balances.find(
95
+ (balance) => balance.tokenID === collectible.metadata.tokenId,
96
+ )?.balance;
97
+
98
+ const cardProps: MarketCollectibleCardProps = {
99
+ collectibleId: collectible.metadata.tokenId,
100
+ chainId,
101
+ collectionAddress,
102
+ collectionType,
103
+ cardLoading: collectiblesListIsLoading || balanceLoading,
104
+ marketplaceType: 'market',
105
+ orderbookKind,
106
+ collectible,
107
+ onCollectibleClick,
108
+ balance,
109
+ balanceIsLoading: balanceLoading,
110
+ onCannotPerformAction,
111
+ prioritizeOwnerActions,
112
+ assetSrcPrefixUrl,
113
+ onOfferClick: ({ order }) => {
114
+ if (!accountAddress) return;
115
+
116
+ if (balance) {
117
+ showSellModal({
118
+ chainId,
119
+ collectionAddress,
120
+ tokenId: collectible.metadata.tokenId,
121
+ order: order as Order,
122
+ });
123
+ return;
124
+ }
125
+ },
126
+ };
127
+
128
+ return cardProps;
129
+ });
130
+ }, [
131
+ allCollectibles,
132
+ chainId,
133
+ collectionAddress,
134
+ collectionType,
135
+ collectiblesListIsLoading,
136
+ balanceLoading,
137
+ orderbookKind,
138
+ onCollectibleClick,
139
+ collectionBalance?.balances,
140
+ onCannotPerformAction,
141
+ prioritizeOwnerActions,
142
+ assetSrcPrefixUrl,
143
+ accountAddress,
144
+ showSellModal,
145
+ ]);
146
+
147
+ return {
148
+ collectibleCards,
149
+ isLoading: collectiblesListIsLoading || balanceLoading,
150
+ error: collectiblesListError,
151
+
152
+ hasNextPage,
153
+ isFetchingNextPage,
154
+ fetchNextPage,
155
+ allCollectibles,
156
+ };
157
+ }
@@ -30,13 +30,14 @@ const fetchListOffersForCollectible = async (
30
30
  args: UseListOffersForCollectibleArgs,
31
31
  ) => {
32
32
  const arg = {
33
+ chainId: String(args.chainId),
33
34
  contractAddress: args.collectionAddress,
34
35
  tokenId: args.collectibleId,
35
36
  filter: args.filter,
36
37
  page: args.page,
37
38
  } satisfies ListOffersForCollectibleArgs;
38
39
 
39
- const marketplaceClient = getMarketplaceClient(args.chainId, config);
40
+ const marketplaceClient = getMarketplaceClient(config);
40
41
  return marketplaceClient.listCollectibleOffers(arg);
41
42
  };
42
43
 
@@ -0,0 +1,42 @@
1
+ import { queryOptions, useQuery } from '@tanstack/react-query';
2
+ import type { SdkConfig } from '../../types';
3
+ import {
4
+ type ListPrimarySaleItemsArgs,
5
+ getMarketplaceClient,
6
+ } from '../_internal';
7
+ import { useConfig } from './useConfig';
8
+
9
+ type UseListPrimarySaleItemsArgs = Omit<ListPrimarySaleItemsArgs, 'chainId'> & {
10
+ chainId: number;
11
+ };
12
+
13
+ const fetchListPrimarySaleItems = async (
14
+ config: SdkConfig,
15
+ args: UseListPrimarySaleItemsArgs,
16
+ ) => {
17
+ const arg = {
18
+ chainId: String(args.chainId),
19
+ primarySaleContractAddress: args.primarySaleContractAddress,
20
+ filter: args.filter,
21
+ page: args.page,
22
+ } satisfies ListPrimarySaleItemsArgs;
23
+
24
+ const marketplaceClient = getMarketplaceClient(config);
25
+ return marketplaceClient.listPrimarySaleItems(arg);
26
+ };
27
+
28
+ export const listPrimarySaleItemsOptions = (
29
+ args: UseListPrimarySaleItemsArgs,
30
+ config: SdkConfig,
31
+ ) => {
32
+ return queryOptions({
33
+ queryKey: ['primarySaleItems', args, config],
34
+ queryFn: () => fetchListPrimarySaleItems(config, args),
35
+ });
36
+ };
37
+
38
+ export const useListPrimarySaleItems = (args: UseListPrimarySaleItemsArgs) => {
39
+ const config = useConfig();
40
+
41
+ return useQuery(listPrimarySaleItemsOptions(args, config));
42
+ };
@@ -0,0 +1,134 @@
1
+ import { useQuery } from '@tanstack/react-query';
2
+ import { getUnixTime } from 'date-fns';
3
+ import type { Address } from 'viem';
4
+ import { useReadContracts } from 'wagmi';
5
+ import { ERC1155_SALES_CONTRACT_ABI } from '../..';
6
+ import { getIndexerClient } from '../_internal';
7
+ import { useConfig } from './useConfig';
8
+
9
+ interface useTokenSaleDetailsBatch {
10
+ tokenIds: string[];
11
+ salesContractAddress: Address;
12
+ collectionAddress: Address;
13
+ chainId: number;
14
+ query?: {
15
+ enabled?: boolean;
16
+ };
17
+ }
18
+
19
+ export function useTokenSaleDetailsBatch({
20
+ tokenIds,
21
+ salesContractAddress,
22
+ chainId,
23
+ collectionAddress,
24
+ query,
25
+ }: useTokenSaleDetailsBatch) {
26
+ const config = useConfig();
27
+ const indexerClient = getIndexerClient(chainId, config);
28
+
29
+ const getReadContractsArgs = (tokenIds: string[]) =>
30
+ tokenIds.map((tokenId) => ({
31
+ address: salesContractAddress,
32
+ abi: ERC1155_SALES_CONTRACT_ABI,
33
+ functionName: 'tokenSaleDetails',
34
+ args: [tokenId],
35
+ chainId,
36
+ }));
37
+
38
+ const {
39
+ data: tokenSaleDetails,
40
+ isLoading: tokenSaleDetailsLoading,
41
+ error: tokenSaleDetailsError,
42
+ } = useReadContracts({
43
+ batchSize: 500_000, // Node gateway limit has a limit of 512kB, setting it to 500kB to be safe
44
+ contracts: getReadContractsArgs(tokenIds),
45
+ query: {
46
+ enabled: query?.enabled,
47
+ },
48
+ });
49
+
50
+ // Query token supplies individually using the indexer client:
51
+ /*
52
+ This way, if token 4 isn't minted, we can still get the supply information for tokens 0-3, and just treat token 4's supply as 0 (unminted).
53
+ The problem is essentially that one unminted token was poisoning the entire response when querying all tokens at once.
54
+ */
55
+ const {
56
+ data: tokenSupplies,
57
+ isLoading: tokenSuppliesLoading,
58
+ error: tokenSuppliesError,
59
+ } = useQuery({
60
+ queryKey: ['token-supplies-batch', chainId, collectionAddress, tokenIds],
61
+ queryFn: async () => {
62
+ const supplies = await Promise.all(
63
+ tokenIds.map(async (tokenId) => {
64
+ try {
65
+ const result = await indexerClient.getTokenSuppliesMap({
66
+ tokenMap: {
67
+ [collectionAddress]: [tokenId],
68
+ },
69
+ includeMetadata: false,
70
+ });
71
+ const supply = result.supplies?.[collectionAddress]?.find(
72
+ (s) => s.tokenID === tokenId,
73
+ );
74
+ return {
75
+ tokenId,
76
+ supply: supply ? Number(supply.supply) : 0,
77
+ error: null,
78
+ };
79
+ } catch (error) {
80
+ return {
81
+ tokenId,
82
+ supply: 0,
83
+ error,
84
+ };
85
+ }
86
+ }),
87
+ );
88
+ return supplies;
89
+ },
90
+ enabled: query?.enabled,
91
+ });
92
+
93
+ const extendedSupplyData = (tokenSaleDetails || [])
94
+ .map((data, index) => ({
95
+ ...data,
96
+ tokenId: tokenIds[index],
97
+ }))
98
+ .filter((data) => data.status === 'success')
99
+ .filter((data) => {
100
+ if (typeof data.result !== 'object') return false;
101
+ const now = BigInt(getUnixTime(new Date()));
102
+ return data.result.endTime > now && data.result.startTime < now;
103
+ });
104
+
105
+ const getInitialSupply = (tokenId: string): number | undefined => {
106
+ const found = extendedSupplyData.find((data) => data.tokenId === tokenId);
107
+ if (!found || typeof found.result !== 'object' || found.result === null)
108
+ return undefined;
109
+ const supply = found.result.supplyCap;
110
+ if (supply === undefined) return undefined;
111
+ // https://github.com/0xsequence/contracts-library/blob/ead1baf34270c76260d01cfc130bb7cc9d57518e/src/tokens/ERC1155/utility/sale/IERC1155Sale.sol#L8
112
+ // 0 means infinite
113
+ if (supply === 0n) return Number.POSITIVE_INFINITY;
114
+ return Number(supply);
115
+ };
116
+
117
+ const getRemainingSupply = (tokenId: string): number | undefined => {
118
+ const initialSupply = getInitialSupply(tokenId);
119
+ if (!initialSupply) return undefined;
120
+
121
+ const supplyData = tokenSupplies?.find((s) => s.tokenId === tokenId);
122
+ if (!supplyData || supplyData.error) return initialSupply; // If no supply data or error, assume nothing is minted
123
+
124
+ return initialSupply - supplyData.supply;
125
+ };
126
+
127
+ return {
128
+ extendedSupplyData,
129
+ getInitialSupply,
130
+ getRemainingSupply,
131
+ loading: tokenSuppliesLoading || tokenSaleDetailsLoading,
132
+ error: tokenSuppliesError || tokenSaleDetailsError,
133
+ };
134
+ }
@@ -8,7 +8,7 @@ import {
8
8
  } from '../_internal';
9
9
 
10
10
  export interface UseHighestOfferArgs
11
- extends Omit<GetCollectibleHighestOfferArgs, 'contractAddress'> {
11
+ extends Omit<GetCollectibleHighestOfferArgs, 'contractAddress' | 'chainId'> {
12
12
  collectionAddress: Address;
13
13
  chainId: number;
14
14
  query?: {
@@ -20,11 +20,13 @@ export async function fetchHighestOffer(
20
20
  args: UseHighestOfferArgs,
21
21
  config: SdkConfig,
22
22
  ) {
23
- const marketplaceClient = getMarketplaceClient(args.chainId, config);
23
+ const marketplaceClient = getMarketplaceClient(config);
24
24
 
25
+ const { chainId, collectionAddress, tokenId } = args;
25
26
  const data = await marketplaceClient.getCollectibleHighestOffer({
26
- contractAddress: args.collectionAddress,
27
- ...args,
27
+ chainId: String(chainId),
28
+ contractAddress: collectionAddress,
29
+ tokenId,
28
30
  });
29
31
 
30
32
  // let order: Order | undefined;
@@ -9,9 +9,11 @@ import { OrderSide, type Page, type SdkConfig } from '../../types';
9
9
  import {
10
10
  type CollectibleOrder,
11
11
  type ContractType,
12
+ LaosAPI,
12
13
  getIndexerClient,
13
14
  } from '../_internal';
14
15
  import { fetchCollectibles } from './listCollectibles';
16
+ import { fetchMarketplaceConfig } from './marketplaceConfig';
15
17
 
16
18
  export interface UseInventoryArgs {
17
19
  accountAddress: Address;
@@ -95,7 +97,37 @@ async function fetchAllIndexerTokens(
95
97
  collectionAddress: Address,
96
98
  config: SdkConfig,
97
99
  state: InventoryState,
100
+ isLaos721: boolean,
98
101
  ): Promise<void> {
102
+ if (isLaos721) {
103
+ const laosClient = new LaosAPI();
104
+ const { balances } = await laosClient.getTokenBalances({
105
+ chainId: chainId.toString(),
106
+ accountAddress,
107
+ includeMetadata: true,
108
+ page: {
109
+ sort: [
110
+ {
111
+ column: 'CREATED_AT',
112
+ order: 'DESC',
113
+ },
114
+ ],
115
+ },
116
+ });
117
+
118
+ for (const balance of balances) {
119
+ if (balance.tokenID) {
120
+ state.indexerTokenBalances.set(
121
+ balance.tokenID,
122
+ collectibleFromTokenBalance(balance),
123
+ );
124
+ }
125
+ }
126
+
127
+ state.indexerTokensFetched = true;
128
+ return;
129
+ }
130
+
99
131
  const indexerClient = getIndexerClient(chainId, config);
100
132
 
101
133
  let page: IndexerPage = {
@@ -216,6 +248,7 @@ export async function fetchInventory(
216
248
  collectionAddress,
217
249
  config,
218
250
  state,
251
+ isLaos721,
219
252
  );
220
253
  }
221
254
 
@@ -225,6 +258,7 @@ export async function fetchInventory(
225
258
  }
226
259
 
227
260
  // Fetch collectibles from marketplace API
261
+ const marketplaceConfig = await fetchMarketplaceConfig({ config });
228
262
  const collectibles = await fetchCollectibles(
229
263
  {
230
264
  chainId,
@@ -234,9 +268,9 @@ export async function fetchInventory(
234
268
  includeEmpty: true,
235
269
  },
236
270
  side: OrderSide.listing,
237
- isLaos721,
238
271
  },
239
272
  config,
273
+ marketplaceConfig,
240
274
  page,
241
275
  );
242
276
 
@@ -2,7 +2,7 @@ import type { GetTokenBalancesReturn, Page } from '@0xsequence/indexer';
2
2
  import { infiniteQueryOptions } from '@tanstack/react-query';
3
3
  import type { Hex } from 'viem';
4
4
  import type { SdkConfig } from '../../types';
5
- import { balanceQueries, getIndexerClient } from '../_internal';
5
+ import { LaosAPI, balanceQueries, getIndexerClient } from '../_internal';
6
6
 
7
7
  export type UseListBalancesArgs = {
8
8
  chainId: number;
@@ -29,37 +29,21 @@ export async function fetchBalances(
29
29
  config: SdkConfig,
30
30
  page: Page,
31
31
  ): Promise<GetTokenBalancesReturn> {
32
- if (args.isLaos721) {
33
- const response = await fetch(
34
- 'https://extensions.api.laosnetwork.io/token/GetTokenBalances',
35
- {
36
- method: 'POST',
37
- headers: {
38
- 'Content-Type': 'application/json',
39
- },
40
- body: JSON.stringify({
41
- chainId: args.chainId.toString(),
42
- accountAddress: args.accountAddress,
43
- contractAddress: args.contractAddress,
44
- includeMetadata: args.includeMetadata ?? true,
45
- page: {
46
- sort: [
47
- {
48
- column: 'CREATED_AT',
49
- order: 'DESC',
50
- },
51
- ],
32
+ if (args.isLaos721 && args.accountAddress) {
33
+ const laosClient = new LaosAPI();
34
+ return laosClient.getTokenBalances({
35
+ chainId: args.chainId.toString(),
36
+ accountAddress: args.accountAddress,
37
+ includeMetadata: args.includeMetadata,
38
+ page: {
39
+ sort: [
40
+ {
41
+ column: 'CREATED_AT',
42
+ order: 'DESC',
52
43
  },
53
- }),
44
+ ],
54
45
  },
55
- );
56
-
57
- if (!response.ok) {
58
- throw new Error(`Laos API request failed with status ${response.status}`);
59
- }
60
-
61
- // TODO: This is pretty unsafe, we should validate the response
62
- return response.json() as Promise<GetTokenBalancesReturn>;
46
+ });
63
47
  }
64
48
 
65
49
  const indexerClient = getIndexerClient(args.chainId, config);
@@ -1,20 +1,29 @@
1
1
  import { infiniteQueryOptions } from '@tanstack/react-query';
2
2
  import type { Address, Hex } from 'viem';
3
- import type { Page, SdkConfig } from '../../types';
3
+ import type { MarketplaceConfig, Page, SdkConfig } from '../../types';
4
+ import type { MarketplaceType } from '../../types/types';
5
+ import { compareAddress } from '../../utils';
4
6
  import type {
5
- CollectibleOrder,
6
7
  CollectiblesFilter,
7
8
  ListCollectiblesArgs,
8
9
  ListCollectiblesReturn,
9
10
  } from '../_internal';
10
- import { OrderSide, collectableKeys, getMarketplaceClient } from '../_internal';
11
+ import {
12
+ type CollectibleOrder,
13
+ OrderSide,
14
+ collectableKeys,
15
+ getMarketplaceClient,
16
+ } from '../_internal';
17
+ import { fetchMarketplaceConfig } from '../queries/marketplaceConfig';
11
18
  import { type UseListBalancesArgs, fetchBalances } from './listBalances';
19
+
12
20
  export type UseListCollectiblesArgs = {
13
21
  collectionAddress: Hex;
14
22
  chainId: number;
15
23
  side: OrderSide;
16
24
  filter?: CollectiblesFilter;
17
25
  isLaos721?: boolean;
26
+ marketplaceType?: MarketplaceType;
18
27
  query?: {
19
28
  enabled?: boolean;
20
29
  };
@@ -31,16 +40,56 @@ export type UseListCollectiblesArgs = {
31
40
  export async function fetchCollectibles(
32
41
  args: UseListCollectiblesArgs,
33
42
  config: SdkConfig,
43
+ marketplaceConfig: MarketplaceConfig,
34
44
  page: Page,
35
45
  ): Promise<ListCollectiblesReturn> {
36
- const marketplaceClient = getMarketplaceClient(args.chainId, config);
46
+ const marketplaceClient = getMarketplaceClient(config);
47
+ const { chainId, collectionAddress, ...restArgs } = args;
37
48
  const parsedArgs = {
38
- ...args,
39
- contractAddress: args.collectionAddress,
49
+ ...restArgs,
50
+ chainId: String(chainId),
51
+ contractAddress: collectionAddress,
40
52
  page: page,
41
53
  side: args.side,
42
54
  } satisfies ListCollectiblesArgs;
43
55
 
56
+ if (args.marketplaceType === 'shop') {
57
+ const shopCollection = marketplaceConfig.shop.collections.find(
58
+ (collection) =>
59
+ compareAddress(collection.itemsAddress, args.collectionAddress),
60
+ );
61
+
62
+ if (!shopCollection) {
63
+ return { collectibles: [] };
64
+ }
65
+
66
+ const primarySaleItemsList = await marketplaceClient.listPrimarySaleItems(
67
+ {
68
+ chainId: args.chainId.toString(),
69
+ primarySaleContractAddress: shopCollection.saleAddress as Address,
70
+ },
71
+ marketplaceConfig,
72
+ );
73
+
74
+ return {
75
+ collectibles: primarySaleItemsList.primarySaleItems.map((item) => ({
76
+ metadata: item.metadata,
77
+ primarySale: {
78
+ price: {
79
+ amount: item.primarySaleItem.priceAmount,
80
+ formatted: item.primarySaleItem.priceAmountFormatted,
81
+ decimals: item.primarySaleItem.priceDecimals,
82
+ currencyAddress: item.primarySaleItem.currencyAddress,
83
+ },
84
+ startDate: item.primarySaleItem.startDate,
85
+ endDate: item.primarySaleItem.endDate,
86
+ supplyCap: item.primarySaleItem.supplyCap,
87
+ itemType: item.primarySaleItem.itemType,
88
+ },
89
+ })),
90
+ };
91
+ }
92
+
44
93
  if (args.isLaos721 && args.side === OrderSide.listing) {
45
94
  try {
46
95
  const fetchBalancesArgs = {
@@ -80,6 +129,7 @@ export async function fetchCollectibles(
80
129
  console.error(error);
81
130
  }
82
131
  }
132
+
83
133
  return await marketplaceClient.listCollectibles(parsedArgs);
84
134
  }
85
135
 
@@ -97,7 +147,10 @@ export function listCollectiblesOptions(
97
147
  return infiniteQueryOptions({
98
148
  ...args.query,
99
149
  queryKey: [...collectableKeys.lists, args, config],
100
- queryFn: ({ pageParam }) => fetchCollectibles(args, config, pageParam),
150
+ queryFn: async ({ pageParam }) => {
151
+ const marketplaceConfig = await fetchMarketplaceConfig({ config });
152
+ return fetchCollectibles(args, config, marketplaceConfig, pageParam);
153
+ },
101
154
  initialPageParam: { page: 1, pageSize: 30 } as Page,
102
155
  getNextPageParam: (lastPage) =>
103
156
  lastPage.page?.more ? lastPage.page : undefined,
@@ -1,10 +1,9 @@
1
1
  import type { ContractInfo } from '@0xsequence/metadata';
2
2
  import { queryOptions, skipToken } from '@tanstack/react-query';
3
- import type { SdkConfig } from '../../types';
3
+ import type { MarketplaceType, SdkConfig } from '../../types';
4
4
  import type {
5
5
  MarketCollection,
6
6
  MarketplaceConfig,
7
- MarketplaceType,
8
7
  ShopCollection,
9
8
  } from '../../types/new-marketplace-types';
10
9
  import { compareAddress } from '../../utils';
@@ -65,6 +64,13 @@ const fetchListCollections = async ({
65
64
  );
66
65
 
67
66
  const settled = await Promise.allSettled(promises);
67
+
68
+ // If all promises failed, throw the first error
69
+ if (settled.every((result) => result.status === 'rejected')) {
70
+ const firstError = settled[0] as PromiseRejectedResult;
71
+ throw firstError.reason;
72
+ }
73
+
68
74
  const results = settled
69
75
  .filter(
70
76
  (r): r is PromiseFulfilledResult<ContractInfo[]> =>
@@ -32,7 +32,12 @@ export const tokenMetadataOptions = (
32
32
  ) => {
33
33
  return queryOptions({
34
34
  ...args.query,
35
- queryKey: ['listTokenMetadata', args.chainId, args.contractAddress],
35
+ queryKey: [
36
+ 'listTokenMetadata',
37
+ args.chainId,
38
+ args.contractAddress,
39
+ args.tokenIds,
40
+ ],
36
41
  queryFn: () => fetchTokenMetadata(args, config),
37
42
  });
38
43
  };