@0xsequence/marketplace-sdk 0.8.11 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/CHANGELOG.md +236 -2
  2. package/dist/CalendarIcon-DbQ7Vxcw.js +141 -0
  3. package/dist/CalendarIcon-DbQ7Vxcw.js.map +1 -0
  4. package/dist/CollectibleCard-C8Ae64Ab.d.ts +71 -0
  5. package/dist/_internal-BgWcRIak.js +22 -0
  6. package/dist/_internal-BgWcRIak.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-DTIan01C.js +241 -0
  11. package/dist/api-DTIan01C.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-BFuZNOaN.js +28 -0
  19. package/dist/builder-api-BFuZNOaN.js.map +1 -0
  20. package/dist/builder-api-C_zj5mr3.d.ts +12 -0
  21. package/dist/builder.gen-B9wR2nvF.js +303 -0
  22. package/dist/builder.gen-B9wR2nvF.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-21LE7OhL.d.ts +102 -0
  30. package/dist/index-BL9RUSEK.d.ts +1803 -0
  31. package/dist/index-BQsgAvtX.d.ts +2938 -0
  32. package/dist/index-BUVWziLP.d.ts +60 -0
  33. package/dist/index-ByznONYE.d.ts +187 -0
  34. package/dist/index-C39K_8SG.d.ts +1 -0
  35. package/dist/index-CLy8y5hm.d.ts +1057 -0
  36. package/dist/index-COt10OgI.d.ts +24 -0
  37. package/dist/index-D5v5iluA.d.ts +809 -0
  38. package/dist/index-DPNWNa7t.d.ts +414 -0
  39. package/dist/index-DXMfTZ1F.d.ts +7 -0
  40. package/dist/index-DaE5ZNHb.d.ts +24 -0
  41. package/dist/index-DsfCs3-x.d.ts +122 -0
  42. package/dist/index-DvpBZgor.d.ts +1 -0
  43. package/dist/index-dUb6wb4Y.d.ts +22 -0
  44. package/dist/index.css +397 -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-BSDIX7NZ.js +1077 -0
  58. package/dist/marketplace.gen-BSDIX7NZ.js.map +1 -0
  59. package/dist/marketplaceConfig-C6X1SUik.js +71 -0
  60. package/dist/marketplaceConfig-C6X1SUik.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/new-marketplace-types-Bfis0U4J.d.ts +1546 -0
  64. package/dist/{nftx-AX3CY3IE.js → nftx-D3Tc8nzd.js} +5 -5
  65. package/dist/nftx-D3Tc8nzd.js.map +1 -0
  66. package/dist/{okx-GNVLAE2R.js → okx-hbqg6oIJ.js} +5 -5
  67. package/dist/okx-hbqg6oIJ.js.map +1 -0
  68. package/dist/{open-sea-KI43GVEB.js → open-sea-BccuK8-t.js} +5 -5
  69. package/dist/open-sea-BccuK8-t.js.map +1 -0
  70. package/dist/options-B4QN7Xou.js +0 -0
  71. package/dist/primary-sale-C55ALnfQ.js +1264 -0
  72. package/dist/primary-sale-C55ALnfQ.js.map +1 -0
  73. package/dist/queries-CUU65uYZ.js +599 -0
  74. package/dist/queries-CUU65uYZ.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 +18 -3652
  86. package/dist/react/hooks/index.js +23 -153
  87. package/dist/react/hooks/options/index.d.ts +4 -8
  88. package/dist/react/hooks/options/index.js +11 -21
  89. package/dist/react/index.d.ts +18 -36
  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 +9 -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 +9 -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-BbHBl6gg.css +80 -0
  109. package/dist/react-BbHBl6gg.css.map +1 -0
  110. package/dist/react-DAIicQPT.js +8938 -0
  111. package/dist/react-DAIicQPT.js.map +1 -0
  112. package/dist/{sequence-TGLUFEPQ.js → sequence-Do3kzb4J.js} +5 -5
  113. package/dist/sequence-Do3kzb4J.js.map +1 -0
  114. package/dist/src-Dz2CfBL0.js +8 -0
  115. package/dist/src-Dz2CfBL0.js.map +1 -0
  116. package/dist/{sudo-swap-M2O6E3TE.js → sudo-swap-B6vPKxBz.js} +5 -5
  117. package/dist/sudo-swap-B6vPKxBz.js.map +1 -0
  118. package/dist/{super-rare-UU2U4LIN.js → super-rare-eCm1SE6O.js} +5 -5
  119. package/dist/super-rare-eCm1SE6O.js.map +1 -0
  120. package/dist/token-Da4TdyUk.js +2091 -0
  121. package/dist/token-Da4TdyUk.js.map +1 -0
  122. package/dist/transaction-CcVViHEL.js +97 -0
  123. package/dist/transaction-CcVViHEL.js.map +1 -0
  124. package/dist/types/index.d.ts +3 -13
  125. package/dist/types/index.js +5 -44
  126. package/dist/types-DwWE6xOF.js +13 -0
  127. package/dist/types-DwWE6xOF.js.map +1 -0
  128. package/dist/utils/abi/index.d.ts +5 -3
  129. package/dist/utils/abi/index.js +6 -26
  130. package/dist/utils/abi/marketplace/index.d.ts +2 -805
  131. package/dist/utils/abi/marketplace/index.js +3 -11
  132. package/dist/utils/abi/primary-sale/index.d.ts +2 -1054
  133. package/dist/utils/abi/primary-sale/index.js +3 -9
  134. package/dist/utils/abi/token/index.d.ts +2 -1125
  135. package/dist/utils/abi/token/index.js +3 -11
  136. package/dist/utils/index.d.ts +8 -91
  137. package/dist/utils/index.js +11 -57
  138. package/dist/utils-BPYfgDSL.js +44 -0
  139. package/dist/utils-BPYfgDSL.js.map +1 -0
  140. package/dist/utils-CW2NA5KG.js +216 -0
  141. package/dist/utils-CW2NA5KG.js.map +1 -0
  142. package/dist/wagmi-CDzEQbfk.js +166 -0
  143. package/dist/wagmi-CDzEQbfk.js.map +1 -0
  144. package/dist/{x2y2-3W5BBMZC.js → x2y2-DD17tT91.js} +5 -5
  145. package/dist/x2y2-DD17tT91.js.map +1 -0
  146. package/dist/{zora-6EY6FUH6.js → zora-BpSG9UzS.js} +5 -5
  147. package/dist/zora-BpSG9UzS.js.map +1 -0
  148. package/eslint/use-client.js +0 -6
  149. package/package.json +36 -35
  150. package/src/index.ts +1 -2
  151. package/src/react/_internal/api/__mocks__/builder.msw.ts +5 -3
  152. package/src/react/_internal/api/__mocks__/indexer.msw.ts +9 -8
  153. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +4 -6
  154. package/src/react/_internal/api/__mocks__/metadata.msw.ts +1 -1
  155. package/src/react/_internal/api/builder.gen.ts +6 -7
  156. package/src/react/_internal/api/get-query-client.ts +2 -2
  157. package/src/react/_internal/api/index.ts +2 -2
  158. package/src/react/_internal/api/marketplace.gen.ts +505 -26
  159. package/src/react/_internal/api/query-keys.ts +13 -6
  160. package/src/react/_internal/api/services.ts +42 -52
  161. package/src/react/_internal/index.ts +1 -1
  162. package/src/react/_internal/types.ts +10 -23
  163. package/src/react/_internal/utils.ts +1 -2
  164. package/src/react/_internal/wagmi/__tests__/create-config.test.ts +5 -5
  165. package/src/react/_internal/wagmi/create-config.ts +23 -9
  166. package/src/react/_internal/wagmi/get-connectors.ts +10 -5
  167. package/src/react/_internal/wallet/__tests__/wallet.test.ts +1 -1
  168. package/src/react/_internal/wallet/wallet.ts +18 -18
  169. package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +181 -2
  170. package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +54 -6
  171. package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +8 -5
  172. package/src/react/hooks/__tests__/useBalanceOfCollectible.test.tsx +1 -1
  173. package/src/react/hooks/__tests__/useCancelOrder.test.tsx +4 -4
  174. package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +1 -1
  175. package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +225 -0
  176. package/src/react/hooks/__tests__/useCollectible.test.tsx +14 -16
  177. package/src/react/hooks/__tests__/useCollection.test.tsx +4 -4
  178. package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +1 -27
  179. package/src/react/hooks/__tests__/useCollectionDetails.test.tsx +1 -1
  180. package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +4 -4
  181. package/src/react/hooks/__tests__/useComparePrices.test.tsx +7 -6
  182. package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +1 -1
  183. package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +2 -2
  184. package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +5 -5
  185. package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +2 -2
  186. package/src/react/hooks/__tests__/useCurrency.test.tsx +5 -3
  187. package/src/react/hooks/__tests__/useFilters.test.tsx +1 -1
  188. package/src/react/hooks/__tests__/useFloorOrder.test.tsx +4 -4
  189. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +5 -6
  190. package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +1 -1
  191. package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +1 -1
  192. package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +1 -1
  193. package/src/react/hooks/__tests__/useGetTokenSuppliesMap.test.tsx +104 -0
  194. package/src/react/hooks/__tests__/useHighestOffer.test.tsx +4 -20
  195. package/src/react/hooks/__tests__/useInventory.test.tsx +1 -37
  196. package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +11 -13
  197. package/src/react/hooks/__tests__/useListCollectibles.test.tsx +5 -5
  198. package/src/react/hooks/__tests__/useListCollectiblesPaginated.test.tsx +10 -15
  199. package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +13 -15
  200. package/src/react/hooks/__tests__/useListCollections.test.tsx +4 -4
  201. package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +3 -2
  202. package/src/react/hooks/__tests__/useListMarketCardData.test.tsx +301 -0
  203. package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +1 -1
  204. package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +111 -0
  205. package/src/react/hooks/__tests__/useLowestListing.test.tsx +1 -1
  206. package/src/react/hooks/__tests__/useMarketCurrencies.test.tsx +1 -1
  207. package/src/react/hooks/__tests__/useRoyalty.test.tsx +0 -23
  208. package/src/react/hooks/index.ts +27 -17
  209. package/src/react/hooks/options/index.ts +0 -1
  210. package/src/react/hooks/useAutoSelectFeeOption.tsx +1 -1
  211. package/src/react/hooks/useBalanceOfCollectible.tsx +14 -10
  212. package/src/react/hooks/useCancelTransactionSteps.tsx +7 -3
  213. package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +67 -0
  214. package/src/react/hooks/useCollectible.tsx +64 -49
  215. package/src/react/hooks/useCollection.tsx +60 -11
  216. package/src/react/hooks/useCollectionBalanceDetails.tsx +20 -27
  217. package/src/react/hooks/useCollectionDetails.ts +69 -0
  218. package/src/react/hooks/useCollectionDetailsPolling.tsx +10 -2
  219. package/src/react/hooks/useComparePrices.tsx +18 -21
  220. package/src/react/hooks/useConvertPriceToUSD.tsx +20 -37
  221. package/src/react/hooks/useCountListingsForCollectible.tsx +64 -52
  222. package/src/react/hooks/useCountOfCollectables.tsx +61 -67
  223. package/src/react/hooks/useCountOfPrimarySaleItems.tsx +13 -0
  224. package/src/react/hooks/useCountOffersForCollectible.tsx +64 -52
  225. package/src/react/hooks/useCurrency.tsx +56 -64
  226. package/src/react/hooks/useERC721SaleMintedTokens.tsx +67 -0
  227. package/src/react/hooks/useFilterState.tsx +1 -2
  228. package/src/react/hooks/useFloorOrder.tsx +65 -37
  229. package/src/react/hooks/useGenerateCancelTransaction.tsx +17 -15
  230. package/src/react/hooks/useGenerateListingTransaction.tsx +16 -6
  231. package/src/react/hooks/useGenerateOfferTransaction.tsx +16 -7
  232. package/src/react/hooks/useGenerateSellTransaction.tsx +19 -15
  233. package/src/react/hooks/useGetReceiptFromHash.tsx +32 -3
  234. package/src/react/hooks/useGetTokenRanges.tsx +31 -0
  235. package/src/react/hooks/useGetTokenSuppliesMap.tsx +73 -0
  236. package/src/react/hooks/useHighestOffer.tsx +68 -4
  237. package/src/react/hooks/useInventory.tsx +8 -6
  238. package/src/react/hooks/useList1155ShopCardData.tsx +103 -0
  239. package/src/react/hooks/useList721ShopCardData.tsx +160 -0
  240. package/src/react/hooks/useListBalances.tsx +7 -10
  241. package/src/react/hooks/useListCollectibleActivities.tsx +89 -49
  242. package/src/react/hooks/useListCollectibles.tsx +78 -26
  243. package/src/react/hooks/useListCollectiblesPaginated.tsx +96 -63
  244. package/src/react/hooks/useListCollectionActivities.tsx +84 -49
  245. package/src/react/hooks/useListCollections.tsx +72 -18
  246. package/src/react/hooks/useListListingsForCollectible.tsx +90 -49
  247. package/src/react/hooks/useListMarketCardData.tsx +157 -0
  248. package/src/react/hooks/useListOffersForCollectible.tsx +11 -15
  249. package/src/react/hooks/useListPrimarySaleItems.ts +102 -0
  250. package/src/react/hooks/useListShopCardData.tsx +70 -0
  251. package/src/react/hooks/useListTokenMetadata.tsx +73 -0
  252. package/src/react/hooks/useLowestListing.tsx +68 -4
  253. package/src/react/hooks/useMarketCurrencies.tsx +62 -5
  254. package/src/react/hooks/useRoyalty.tsx +57 -13
  255. package/src/react/hooks/useShopCollectibleSaleData.tsx +349 -0
  256. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +134 -0
  257. package/src/react/hooks/useTransferTokens.tsx +1 -1
  258. package/src/react/hooks/util/optimisticCancelUpdates.ts +5 -7
  259. package/src/react/index.ts +5 -3
  260. package/src/react/queries/balanceOfCollectible.ts +1 -1
  261. package/src/react/queries/collectible.ts +66 -0
  262. package/src/react/queries/collection.ts +55 -0
  263. package/src/react/queries/collectionDetails.ts +64 -0
  264. package/src/react/queries/countListingsForCollectible.ts +73 -0
  265. package/src/react/queries/countOfCollectables.ts +83 -0
  266. package/src/react/queries/countOfPrimarySaleItems.ts +48 -0
  267. package/src/react/queries/countOffersForCollectible.ts +73 -0
  268. package/src/react/queries/currency.ts +83 -0
  269. package/src/react/queries/floorOrder.ts +63 -0
  270. package/src/react/queries/getTokenSuppliesMap.ts +77 -0
  271. package/src/react/queries/highestOffer.ts +48 -40
  272. package/src/react/queries/index.ts +7 -4
  273. package/src/react/queries/inventory.ts +38 -4
  274. package/src/react/queries/listBalances.ts +14 -30
  275. package/src/react/queries/listCollectibleActivities.ts +97 -0
  276. package/src/react/queries/listCollectibles.ts +117 -47
  277. package/src/react/queries/listCollectiblesPaginated.ts +87 -0
  278. package/src/react/queries/listCollectionActivities.ts +95 -0
  279. package/src/react/queries/listCollections.ts +55 -10
  280. package/src/react/queries/listListingsForCollectible.ts +82 -0
  281. package/src/react/queries/listTokenMetadata.ts +47 -18
  282. package/src/react/queries/lowestListing.ts +48 -31
  283. package/src/react/queries/marketCurrencies.ts +52 -35
  284. package/src/react/queries/marketplaceConfig.ts +56 -81
  285. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +54 -6
  286. package/src/react/ssr/__tests__/create-ssr-client.test.ts +0 -3
  287. package/src/react/ssr/create-ssr-client.ts +6 -11
  288. package/src/react/types/query.ts +34 -0
  289. package/src/react/ui/components/ModelViewer.tsx +1 -1
  290. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +47 -13
  291. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +1 -1
  292. package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +28 -15
  293. package/src/react/ui/components/_internals/action-button/__tests__/OwnerActions.test.tsx +1 -1
  294. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +15 -9
  295. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +1 -1
  296. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +78 -15
  297. package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +1 -1
  298. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +13 -16
  299. package/src/react/ui/components/_internals/action-button/store.ts +46 -18
  300. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +17 -0
  301. package/src/react/ui/components/marketplace-collectible-card/CollectibleCardSkeleton.tsx +24 -0
  302. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +231 -0
  303. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +76 -0
  304. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +58 -0
  305. package/src/react/ui/components/marketplace-collectible-card/index.ts +3 -0
  306. package/src/react/ui/components/marketplace-collectible-card/types.ts +98 -0
  307. package/src/react/ui/components/marketplace-collectible-card/utils/formatPrice.ts +45 -0
  308. package/src/react/ui/components/marketplace-collectible-card/utils/index.ts +2 -0
  309. package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +39 -0
  310. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +125 -0
  311. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +102 -0
  312. package/src/react/ui/components/marketplace-logos/marketplace-logos.tsx +1 -1
  313. package/src/react/ui/components/{collectible-card/media → media}/Media.tsx +47 -26
  314. package/src/react/ui/components/{collectible-card/media → media}/types.ts +3 -1
  315. package/src/react/ui/index.ts +8 -7
  316. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +554 -0
  317. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +392 -0
  318. package/src/react/ui/modals/BuyModal/__tests__/ERC721ShopModal.test.tsx +272 -0
  319. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx.bak +112 -0
  320. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +117 -13
  321. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +10 -7
  322. package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +157 -0
  323. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +136 -0
  324. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +183 -0
  325. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +121 -0
  326. package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +85 -0
  327. package/src/react/ui/modals/BuyModal/components/ERC721ShopModal.tsx +86 -0
  328. package/src/react/ui/modals/BuyModal/components/Modal.tsx +14 -0
  329. package/src/react/ui/modals/BuyModal/components/types.ts +8 -0
  330. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +5 -5
  331. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +379 -0
  332. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +253 -0
  333. package/src/react/ui/modals/BuyModal/hooks/__tests__/{useFees.test.tsx → useMarketPlatformFee.test.tsx} +10 -11
  334. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +63 -45
  335. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +73 -0
  336. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +196 -0
  337. package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +74 -18
  338. package/src/react/ui/modals/BuyModal/hooks/useMarketPlatformFee.ts +53 -0
  339. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +30 -15
  340. package/src/react/ui/modals/BuyModal/store.ts +147 -13
  341. package/src/react/ui/modals/CreateListingModal/Modal.tsx +1 -1
  342. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +2 -2
  343. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +0 -1
  344. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +4 -3
  345. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +12 -9
  346. package/src/react/ui/modals/CreateListingModal/index.tsx +1 -1
  347. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +2 -2
  348. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +1 -1
  349. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +3 -2
  350. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +0 -1
  351. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +12 -10
  352. package/src/react/ui/modals/MakeOfferModal/index.tsx +1 -1
  353. package/src/react/ui/modals/SellModal/Modal.tsx +3 -3
  354. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +6 -4
  355. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +5 -4
  356. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +0 -1
  357. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +11 -8
  358. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +12 -8
  359. package/src/react/ui/modals/SuccessfulPurchaseModal/index.tsx +34 -28
  360. package/src/react/ui/modals/SuccessfulPurchaseModal/store.ts +71 -0
  361. package/src/react/ui/modals/TransferModal/_store.ts +1 -7
  362. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +2 -3
  363. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +2 -2
  364. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +1 -2
  365. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +107 -112
  366. package/src/react/ui/modals/_internal/components/actionModal/store.ts +45 -12
  367. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +1 -1
  368. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +0 -1
  369. package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +4 -4
  370. package/src/react/ui/modals/_internal/components/quantityInput/QuantityInputBase.tsx +166 -0
  371. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +12 -141
  372. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +1 -1
  373. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx +1 -2
  374. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +0 -1
  375. package/src/react/ui/modals/_internal/components/switchChainModal/__tests__/SwitchChainModal.test.tsx +12 -8
  376. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +35 -33
  377. package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +61 -32
  378. package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +1 -1
  379. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +1 -1
  380. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +0 -1
  381. package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +1 -1
  382. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +1 -1
  383. package/src/react/ui/modals/modal-provider.tsx +3 -4
  384. package/src/types/api-types.ts +36 -36
  385. package/src/types/buyModalErrors.ts +438 -0
  386. package/src/types/index.ts +5 -2
  387. package/src/types/new-marketplace-types.ts +6 -21
  388. package/src/types/sdk-config.ts +19 -24
  389. package/src/types/types.ts +17 -0
  390. package/src/types/waas-types.ts +1 -1
  391. package/src/utils/_internal/error/transaction.ts +36 -1
  392. package/src/utils/abi/index.ts +1 -1
  393. package/src/utils/abi/primary-sale/index.ts +1 -1
  394. package/src/utils/abi/token/index.ts +2 -1
  395. package/src/utils/decode/erc20.ts +1 -1
  396. package/src/utils/index.ts +3 -3
  397. package/test/const.ts +3 -1
  398. package/test/mocks/wallet.ts +1 -1
  399. package/test/test-utils.tsx +3 -4
  400. package/tsconfig.json +1 -1
  401. package/tsdown.config.ts +25 -0
  402. package/.changeset/fluffy-jokes-lay.md +0 -5
  403. package/.changeset/wise-bugs-boil.md +0 -8
  404. package/.ctirc +0 -32
  405. package/dist/alien_swap-2B65TDGT.js.map +0 -1
  406. package/dist/aqua-xyz-WMYQLAIS.js.map +0 -1
  407. package/dist/aura-V22RV5OG.js.map +0 -1
  408. package/dist/blur-GE5QOMCM.js.map +0 -1
  409. package/dist/chunk-2PSNAIAT.js +0 -1
  410. package/dist/chunk-2PSNAIAT.js.map +0 -1
  411. package/dist/chunk-5C6ZZ6WX.js +0 -130
  412. package/dist/chunk-5C6ZZ6WX.js.map +0 -1
  413. package/dist/chunk-5O44EPXZ.js +0 -207
  414. package/dist/chunk-5O44EPXZ.js.map +0 -1
  415. package/dist/chunk-6CTFVBKU.js +0 -1
  416. package/dist/chunk-6CTFVBKU.js.map +0 -1
  417. package/dist/chunk-6OPMUCGX.js +0 -42
  418. package/dist/chunk-6OPMUCGX.js.map +0 -1
  419. package/dist/chunk-FUM4OGOQ.js +0 -1027
  420. package/dist/chunk-FUM4OGOQ.js.map +0 -1
  421. package/dist/chunk-L6KWLCER.js +0 -32
  422. package/dist/chunk-L6KWLCER.js.map +0 -1
  423. package/dist/chunk-LAP2CKLN.js +0 -485
  424. package/dist/chunk-LAP2CKLN.js.map +0 -1
  425. package/dist/chunk-LECCEZAO.js +0 -11
  426. package/dist/chunk-LECCEZAO.js.map +0 -1
  427. package/dist/chunk-N7SQWS2R.js +0 -38
  428. package/dist/chunk-N7SQWS2R.js.map +0 -1
  429. package/dist/chunk-NX52D7NX.js +0 -135
  430. package/dist/chunk-NX52D7NX.js.map +0 -1
  431. package/dist/chunk-OAOONM4S.js +0 -1787
  432. package/dist/chunk-OAOONM4S.js.map +0 -1
  433. package/dist/chunk-Q3ECVC4F.js +0 -811
  434. package/dist/chunk-Q3ECVC4F.js.map +0 -1
  435. package/dist/chunk-QY52UADF.js +0 -107
  436. package/dist/chunk-QY52UADF.js.map +0 -1
  437. package/dist/chunk-TNAR3XEF.js +0 -8729
  438. package/dist/chunk-TNAR3XEF.js.map +0 -1
  439. package/dist/chunk-XABYNWXO.js +0 -549
  440. package/dist/chunk-XABYNWXO.js.map +0 -1
  441. package/dist/chunk-XX4EVWBF.js +0 -1292
  442. package/dist/chunk-XX4EVWBF.js.map +0 -1
  443. package/dist/chunk-YB5UUF2G.js +0 -11
  444. package/dist/chunk-YB5UUF2G.js.map +0 -1
  445. package/dist/chunk-YWGFI4PN.js +0 -217
  446. package/dist/chunk-YWGFI4PN.js.map +0 -1
  447. package/dist/coinbase-NLHJMGAP.js.map +0 -1
  448. package/dist/create-config-DLMvMTkZ.d.ts +0 -8
  449. package/dist/element-2LGTYYSP.js.map +0 -1
  450. package/dist/foundation-BPN66ZTN.js.map +0 -1
  451. package/dist/get-query-client-D46hbjk6.d.ts +0 -5
  452. package/dist/index.css.map +0 -1
  453. package/dist/index.js.map +0 -1
  454. package/dist/looks-rare-MZRSOPT4.js.map +0 -1
  455. package/dist/magic-eden-PUBL6KWW.js.map +0 -1
  456. package/dist/manifold-GA445YJ6.js.map +0 -1
  457. package/dist/marketCurrencies-enNVYwBk.d.ts +0 -277
  458. package/dist/marketplace.gen-D24veUQs.d.ts +0 -1073
  459. package/dist/marketplaceConfig-BwNAbLPw.d.ts +0 -21
  460. package/dist/mintify-UMC5PTKC.js.map +0 -1
  461. package/dist/new-marketplace-types-BCw19X9S.d.ts +0 -102
  462. package/dist/nftx-AX3CY3IE.js.map +0 -1
  463. package/dist/okx-GNVLAE2R.js.map +0 -1
  464. package/dist/open-sea-KI43GVEB.js.map +0 -1
  465. package/dist/rarible-2J3MMZJ7.js.map +0 -1
  466. package/dist/react/_internal/api/index.js.map +0 -1
  467. package/dist/react/_internal/databeat/index.css +0 -2764
  468. package/dist/react/_internal/databeat/index.css.map +0 -1
  469. package/dist/react/_internal/databeat/index.js.map +0 -1
  470. package/dist/react/_internal/index.js.map +0 -1
  471. package/dist/react/_internal/wagmi/index.js.map +0 -1
  472. package/dist/react/hooks/index.css +0 -2764
  473. package/dist/react/hooks/index.css.map +0 -1
  474. package/dist/react/hooks/index.js.map +0 -1
  475. package/dist/react/hooks/options/index.js.map +0 -1
  476. package/dist/react/index.css +0 -2764
  477. package/dist/react/index.css.map +0 -1
  478. package/dist/react/index.js.map +0 -1
  479. package/dist/react/queries/index.js.map +0 -1
  480. package/dist/react/ui/components/collectible-card/index.css +0 -2764
  481. package/dist/react/ui/components/collectible-card/index.css.map +0 -1
  482. package/dist/react/ui/components/collectible-card/index.d.ts +0 -71
  483. package/dist/react/ui/components/collectible-card/index.js +0 -27
  484. package/dist/react/ui/components/collectible-card/index.js.map +0 -1
  485. package/dist/react/ui/components/marketplace-logos/index.js.map +0 -1
  486. package/dist/react/ui/icons/index.js.map +0 -1
  487. package/dist/react/ui/index.css +0 -2764
  488. package/dist/react/ui/index.css.map +0 -1
  489. package/dist/react/ui/index.js.map +0 -1
  490. package/dist/react/ui/modals/_internal/components/actionModal/index.css +0 -2764
  491. package/dist/react/ui/modals/_internal/components/actionModal/index.css.map +0 -1
  492. package/dist/react/ui/modals/_internal/components/actionModal/index.js.map +0 -1
  493. package/dist/sdk-config-qorA0TgF.d.ts +0 -165
  494. package/dist/sequence-TGLUFEPQ.js.map +0 -1
  495. package/dist/services-WrshxCqc.d.ts +0 -23
  496. package/dist/sudo-swap-M2O6E3TE.js.map +0 -1
  497. package/dist/super-rare-UU2U4LIN.js.map +0 -1
  498. package/dist/types/index.js.map +0 -1
  499. package/dist/useCollection-YAdXfVO7.d.ts +0 -61
  500. package/dist/utils/abi/index.js.map +0 -1
  501. package/dist/utils/abi/marketplace/index.js.map +0 -1
  502. package/dist/utils/abi/primary-sale/index.js.map +0 -1
  503. package/dist/utils/abi/token/index.js.map +0 -1
  504. package/dist/utils/index.js.map +0 -1
  505. package/dist/x2y2-3W5BBMZC.js.map +0 -1
  506. package/dist/zora-6EY6FUH6.js.map +0 -1
  507. package/postcss.config.mjs +0 -5
  508. package/src/react/_internal/api/zod-schema.ts +0 -678
  509. package/src/react/hooks/__tests__/__snapshots__/useRoyaltyPercentage.test.tsx.snap +0 -8
  510. package/src/react/hooks/options/collectionOptions.ts +0 -41
  511. package/src/react/hooks/useCheckoutOptions.tsx +0 -65
  512. package/src/react/hooks/useCollectionDetails.tsx +0 -35
  513. package/src/react/hooks/useGetTokenSuppliesMap.ts +0 -28
  514. package/src/react/hooks/useListTokenMetadata.ts +0 -19
  515. package/src/react/queries/getTokenSupplies.ts +0 -38
  516. package/src/react/ui/components/collectible-card/CollectibleCard.tsx +0 -170
  517. package/src/react/ui/components/collectible-card/Footer.tsx +0 -157
  518. package/src/react/ui/components/collectible-card/__tests__/CollectibleCard.test.tsx +0 -94
  519. package/src/react/ui/components/collectible-card/__tests__/Footer.test.tsx +0 -136
  520. package/src/react/ui/components/collectible-card/__tests__/Media.test.tsx +0 -264
  521. package/src/react/ui/components/collectible-card/index.ts +0 -2
  522. package/src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx +0 -130
  523. package/src/react/ui/modals/BuyModal/Modal.tsx +0 -124
  524. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx +0 -104
  525. package/src/react/ui/modals/BuyModal/hooks/useFees.ts +0 -39
  526. package/src/react/ui/modals/SuccessfulPurchaseModal/_store.ts +0 -72
  527. package/tsconfig.tsbuildinfo +0 -1
  528. package/tsup.config.ts +0 -23
  529. /package/src/react/ui/components/{collectible-card/media → media}/MediaSkeleton.tsx +0 -0
  530. /package/src/react/ui/components/{collectible-card/media → media}/utils.ts +0 -0
@@ -1,14 +1,18 @@
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';
11
- import { collectionKeys, getMetadataClient } from '../_internal';
10
+ import {
11
+ collectionKeys,
12
+ getMetadataClient,
13
+ type ValuesOptional,
14
+ } from '../_internal';
15
+ import type { StandardQueryOptions } from '../types/query';
12
16
 
13
17
  const allCollections = (marketplaceConfig: MarketplaceConfig) => {
14
18
  return [
@@ -17,15 +21,17 @@ const allCollections = (marketplaceConfig: MarketplaceConfig) => {
17
21
  ];
18
22
  };
19
23
 
20
- const fetchListCollections = async ({
21
- marketplaceType,
22
- marketplaceConfig,
23
- config,
24
- }: {
24
+ export interface FetchListCollectionsParams {
25
25
  marketplaceType?: MarketplaceType;
26
26
  marketplaceConfig: MarketplaceConfig;
27
27
  config: SdkConfig;
28
- }) => {
28
+ }
29
+
30
+ /**
31
+ * Fetches list of collections from the metadata API with marketplace filtering
32
+ */
33
+ export async function fetchListCollections(params: FetchListCollectionsParams) {
34
+ const { marketplaceType, marketplaceConfig, config } = params;
29
35
  const metadataClient = getMetadataClient(config);
30
36
 
31
37
  let collections = allCollections(marketplaceConfig);
@@ -65,6 +71,13 @@ const fetchListCollections = async ({
65
71
  );
66
72
 
67
73
  const settled = await Promise.allSettled(promises);
74
+
75
+ // If all promises failed, throw the first error
76
+ if (settled.every((result) => result.status === 'rejected')) {
77
+ const firstError = settled[0] as PromiseRejectedResult;
78
+ throw firstError.reason;
79
+ }
80
+
68
81
  const results = settled
69
82
  .filter(
70
83
  (r): r is PromiseFulfilledResult<ContractInfo[]> =>
@@ -93,8 +106,40 @@ const fetchListCollections = async ({
93
106
  }));
94
107
 
95
108
  return collectionsWithMetadata;
96
- };
109
+ }
110
+
111
+ export type ListCollectionsQueryOptions =
112
+ ValuesOptional<FetchListCollectionsParams> & {
113
+ query?: StandardQueryOptions;
114
+ };
115
+
116
+ export function listCollectionsQueryOptions(
117
+ params: ListCollectionsQueryOptions,
118
+ ) {
119
+ const enabled = Boolean(
120
+ params.marketplaceConfig &&
121
+ params.config &&
122
+ (params.query?.enabled ?? true),
123
+ );
124
+
125
+ return queryOptions({
126
+ queryKey: [...collectionKeys.list, params],
127
+ queryFn: enabled
128
+ ? () =>
129
+ fetchListCollections({
130
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
131
+ marketplaceConfig: params.marketplaceConfig!,
132
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
133
+ config: params.config!,
134
+ marketplaceType: params.marketplaceType,
135
+ })
136
+ : skipToken,
137
+ ...params.query,
138
+ enabled,
139
+ });
140
+ }
97
141
 
142
+ // Keep old function for backward compatibility during migration
98
143
  export const listCollectionsOptions = ({
99
144
  marketplaceType,
100
145
  marketplaceConfig,
@@ -0,0 +1,82 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { Address } from 'viem';
3
+ import type { SdkConfig } from '../../types';
4
+ import type {
5
+ ListCollectibleListingsArgs,
6
+ ListCollectibleListingsReturn,
7
+ ValuesOptional,
8
+ } from '../_internal';
9
+ import { collectableKeys, getMarketplaceClient } from '../_internal';
10
+ import type { StandardQueryOptions } from '../types/query';
11
+
12
+ export interface FetchListListingsForCollectibleParams
13
+ extends Omit<
14
+ ListCollectibleListingsArgs,
15
+ 'chainId' | 'contractAddress' | 'tokenId'
16
+ > {
17
+ chainId: number;
18
+ collectionAddress: Address;
19
+ collectibleId: string;
20
+ config: SdkConfig;
21
+ }
22
+
23
+ /**
24
+ * Fetches listings for a specific collectible from the Marketplace API
25
+ */
26
+ export async function fetchListListingsForCollectible(
27
+ params: FetchListListingsForCollectibleParams,
28
+ ): Promise<ListCollectibleListingsReturn> {
29
+ const {
30
+ collectionAddress,
31
+ chainId,
32
+ collectibleId,
33
+ config,
34
+ ...additionalApiParams
35
+ } = params;
36
+ const marketplaceClient = getMarketplaceClient(config);
37
+
38
+ const apiArgs: ListCollectibleListingsArgs = {
39
+ contractAddress: collectionAddress,
40
+ chainId: String(chainId),
41
+ tokenId: collectibleId,
42
+ ...additionalApiParams,
43
+ };
44
+
45
+ return await marketplaceClient.listCollectibleListings(apiArgs);
46
+ }
47
+
48
+ export type ListListingsForCollectibleQueryOptions =
49
+ ValuesOptional<FetchListListingsForCollectibleParams> & {
50
+ query?: StandardQueryOptions;
51
+ };
52
+
53
+ export function listListingsForCollectibleQueryOptions(
54
+ params: ListListingsForCollectibleQueryOptions,
55
+ ) {
56
+ const enabled = Boolean(
57
+ params.collectionAddress &&
58
+ params.chainId &&
59
+ params.collectibleId &&
60
+ params.config &&
61
+ (params.query?.enabled ?? true),
62
+ );
63
+
64
+ return queryOptions({
65
+ queryKey: [...collectableKeys.listings, params],
66
+ queryFn: () =>
67
+ fetchListListingsForCollectible({
68
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
69
+ chainId: params.chainId!,
70
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
71
+ collectionAddress: params.collectionAddress!,
72
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
73
+ collectibleId: params.collectibleId!,
74
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
75
+ config: params.config!,
76
+ filter: params.filter,
77
+ page: params.page,
78
+ }),
79
+ ...params.query,
80
+ enabled,
81
+ });
82
+ }
@@ -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
+ metadataKeys,
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,15 +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: ['listTokenMetadata', args.chainId, args.contractAddress],
36
- queryFn: () => fetchTokenMetadata(args, config),
52
+ queryKey: [...metadataKeys.tokenMetadata, 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,
37
66
  });
38
- };
67
+ }
@@ -1,52 +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
- extends Omit<GetCollectibleLowestListingArgs, 'contractAddress'> {
13
- collectionAddress: Address;
12
+ export interface FetchLowestListingParams
13
+ extends Omit<GetCollectibleLowestListingArgs, 'contractAddress' | 'chainId'> {
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> {
24
- const marketplaceClient = getMarketplaceClient(args.chainId, config);
25
+ const { collectionAddress, chainId, config, ...additionalApiParams } = params;
25
26
 
26
- const data = await marketplaceClient.getCollectibleLowestListing({
27
- contractAddress: args.collectionAddress,
28
- ...args,
29
- });
27
+ const marketplaceClient = getMarketplaceClient(config);
30
28
 
31
- // let order: Order | undefined;
32
- // if (data.order) {
33
- // order = {
34
- // ...data.order,
35
- // priceAmount: BigInt(data.order.priceAmount),
36
- // priceAmountNet: BigInt(data.order.priceAmountNet),
37
- // };
38
- // }
29
+ const apiArgs: GetCollectibleLowestListingArgs = {
30
+ contractAddress: collectionAddress,
31
+ chainId: String(chainId),
32
+ ...additionalApiParams,
33
+ };
39
34
 
40
- return data.order || null;
35
+ const result = await marketplaceClient.getCollectibleLowestListing(apiArgs);
36
+ return result.order || null;
41
37
  }
42
38
 
43
- export function lowestListingOptions(
44
- args: UseLowestListingArgs,
45
- config: SdkConfig,
46
- ) {
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
+
47
53
  return queryOptions({
48
- enabled: args.query?.enabled ?? true,
49
- queryKey: [...collectableKeys.lowestListings, args],
50
- 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,
51
68
  });
52
69
  }
@@ -6,35 +6,40 @@ 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;
28
- const marketplaceClient = getMarketplaceClient(args.chainId, config);
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;
29
+ const marketplaceClient = getMarketplaceClient(config);
29
30
 
30
- let currencies = await marketplaceClient.listCurrencies().then((resp) =>
31
- resp.currencies.map((currency) => ({
32
- ...currency,
33
- contractAddress: currency.contractAddress || zeroAddress,
34
- })),
35
- );
31
+ let currencies = await marketplaceClient
32
+ .listCurrencies({
33
+ chainId: String(chainId),
34
+ })
35
+ .then((resp) =>
36
+ resp.currencies.map((currency) => ({
37
+ ...currency,
38
+ contractAddress: currency.contractAddress || zeroAddress,
39
+ })),
40
+ );
36
41
 
37
- if (args.collectionAddress) {
42
+ if (collectionAddress) {
38
43
  const queryClient = getQueryClient();
39
44
  const marketplaceConfig = await queryClient.fetchQuery(
40
45
  marketplaceConfigOptions(config),
@@ -42,7 +47,7 @@ const fetchMarketCurrencies = async (
42
47
 
43
48
  const currenciesOptions = marketplaceConfig.market.collections.find(
44
49
  (collection) =>
45
- compareAddress(collection.itemsAddress, args.collectionAddress),
50
+ compareAddress(collection.itemsAddress, collectionAddress),
46
51
  )?.currencyOptions;
47
52
 
48
53
  // Filter currencies based on collection currency options
@@ -53,25 +58,37 @@ const fetchMarketCurrencies = async (
53
58
  }
54
59
  }
55
60
 
56
- if (!includeNativeCurrency) {
61
+ if (!includeNativeCurrencyOption) {
57
62
  currencies = currencies.filter((currency) => !currency.nativeCurrency);
58
63
  }
59
64
 
60
65
  return currencies;
61
- };
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
+ );
62
79
 
63
- export const currenciesOptions = (
64
- args: UseMarketCurrenciesArgs,
65
- config: SdkConfig,
66
- ) => {
67
80
  return queryOptions({
68
- ...args.query,
69
- queryKey: [
70
- ...currencyKeys.lists,
71
- args.chainId,
72
- args.includeNativeCurrency ?? true,
73
- args.collectionAddress,
74
- ],
75
- 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,
76
93
  });
77
- };
94
+ }
@@ -1,129 +1,104 @@
1
1
  import { queryOptions } from '@tanstack/react-query';
2
- import type { ContractType, Env, SdkConfig, ShopConfig } from '../../types';
3
- import {
4
- type MarketCollection,
5
- type MarketPage,
6
- type MarketplaceConfig,
7
- MarketplaceType,
8
- type NewMarketplaceSettings,
9
- type ShopCollection,
10
- type ShopPage,
2
+ import type { ContractType, SdkConfig } from '../../types';
3
+ import type {
4
+ MarketCollection,
5
+ MarketPage,
6
+ MarketplaceConfig,
7
+ ShopCollection,
8
+ ShopPage,
11
9
  } from '../../types/new-marketplace-types';
12
- import { builderRpcApi, configKeys } from '../_internal';
13
- import { BuilderAPI } from '../_internal/api/builder-api';
10
+ import { configKeys, getBuilderClient } from '../_internal';
14
11
  import type { LookupMarketplaceReturn } from '../_internal/api/builder.gen';
15
12
 
16
13
  export const fetchMarketplaceConfig = async ({
17
- projectId,
18
- projectAccessKey,
19
- env,
14
+ config,
20
15
  prefetchedMarketplaceSettings,
21
- tmpShopConfig,
22
16
  }: {
23
- projectId: string;
24
- projectAccessKey: string;
25
- env: Env;
26
- tmpShopConfig?: ShopConfig;
27
- prefetchedMarketplaceSettings?: LookupMarketplaceReturn; //TODO: Is this the right approach?
17
+ config: SdkConfig;
18
+ prefetchedMarketplaceSettings?: LookupMarketplaceReturn;
28
19
  }): Promise<MarketplaceConfig> => {
29
20
  let builderMarketplaceConfig = prefetchedMarketplaceSettings;
21
+
30
22
  if (!builderMarketplaceConfig) {
31
- const baseUrl = builderRpcApi(env);
32
- const builderApi = new BuilderAPI(baseUrl, projectAccessKey);
23
+ const builderApi = getBuilderClient(config);
33
24
  const response = await builderApi.lookupMarketplace({
34
- projectId: Number(projectId),
25
+ projectId: Number(config.projectId),
35
26
  });
36
27
 
37
28
  builderMarketplaceConfig = response;
38
29
  }
39
- const settings = {
40
- publisherId: builderMarketplaceConfig.marketplace.settings.publisherId,
41
- title: builderMarketplaceConfig.marketplace.settings.title,
42
- socials: builderMarketplaceConfig.marketplace.settings.socials,
43
- faviconUrl: builderMarketplaceConfig.marketplace.settings.faviconUrl,
44
- walletOptions: builderMarketplaceConfig.marketplace.settings.walletOptions,
45
- logoUrl: builderMarketplaceConfig.marketplace.settings.logoUrl,
46
- fontUrl: builderMarketplaceConfig.marketplace.settings.fontUrl,
47
- accessKey: builderMarketplaceConfig.marketplace.settings.accessKey,
48
- } satisfies NewMarketplaceSettings;
49
30
 
50
31
  const marketCollections = (
51
32
  builderMarketplaceConfig.marketCollections ?? []
52
33
  ).map((collection) => {
53
34
  return {
54
- chainId: collection.chainId,
55
- bannerUrl: collection.bannerUrl,
35
+ ...collection,
56
36
  contractType: collection.contractType as ContractType,
57
- marketplaceType: MarketplaceType.MARKET,
58
- itemsAddress: collection.itemsAddress,
59
- feePercentage: collection.feePercentage,
60
- currencyOptions: collection.currencyOptions,
61
- filterSettings: collection.filterSettings,
62
- destinationMarketplace: collection.destinationMarketplace,
37
+ marketplaceType: 'market',
63
38
  } satisfies MarketCollection;
64
39
  });
65
40
 
66
- const shopCollections = tmpShopConfig?.collections.map((collection) => {
67
- return {
68
- chainId: collection.chainId,
69
- bannerUrl: collection.bannerUrl,
70
- contractType: collection.contractType,
71
- marketplaceType: MarketplaceType.SHOP,
72
- itemsAddress: collection.address,
73
- filterSettings: undefined,
74
- saleAddress: collection.primarySalesContractAddress,
75
- } satisfies ShopCollection;
76
- });
41
+ const shopCollections = builderMarketplaceConfig.shopCollections.map(
42
+ (collection) => {
43
+ return {
44
+ ...collection,
45
+ marketplaceType: 'shop',
46
+ } satisfies ShopCollection;
47
+ },
48
+ );
77
49
 
78
50
  const market = {
79
- enabled: true,
80
- bannerUrl: builderMarketplaceConfig.marketplace.market.bannerUrl,
81
- ogImage: builderMarketplaceConfig.marketplace.market.ogImage,
51
+ ...builderMarketplaceConfig.marketplace.market,
82
52
  collections: marketCollections,
83
53
  } satisfies MarketPage;
84
54
 
85
55
  const shop = {
86
- enabled: tmpShopConfig !== undefined,
87
- bannerUrl: tmpShopConfig?.bannerUrl ?? '',
88
- ogImage: tmpShopConfig?.ogImage,
56
+ ...builderMarketplaceConfig.marketplace.shop,
89
57
  collections: shopCollections ?? [],
90
58
  } satisfies ShopPage;
91
59
 
92
- return {
93
- projectId: Number(projectId),
94
- settings,
60
+ let marketplaceConfig = {
61
+ projectId: Number(config.projectId),
62
+ settings: builderMarketplaceConfig.marketplace.settings,
95
63
  market,
96
64
  shop,
97
65
  } satisfies MarketplaceConfig;
98
- };
99
66
 
100
- export const marketplaceConfigOptions = (config: SdkConfig) => {
101
- let env: Env = 'production';
102
- if ('_internal' in config && config._internal !== undefined) {
103
- env = config._internal.builderEnv ?? env;
67
+ if (config._internal?.overrides?.marketplaceConfig) {
68
+ const overrides = config._internal.overrides.marketplaceConfig;
69
+ marketplaceConfig = {
70
+ ...marketplaceConfig,
71
+ ...overrides,
72
+ market: {
73
+ ...marketplaceConfig.market,
74
+ ...overrides.market,
75
+ //@ts-expect-error - TODO: Fix this partial type. We need to align new-marketplace-types with builder.gen.ts
76
+ collections:
77
+ overrides.market?.collections ?? marketplaceConfig.market.collections,
78
+ },
79
+ shop: {
80
+ ...marketplaceConfig.shop,
81
+ ...overrides.shop,
82
+ //@ts-expect-error - TODO: Fix this partial type. We need to align new-marketplace-types with builder.gen.ts
83
+ collections:
84
+ overrides.shop?.collections ?? marketplaceConfig.shop.collections,
85
+ },
86
+ };
104
87
  }
105
88
 
106
- let prefetchedMarketplaceSettings: LookupMarketplaceReturn | undefined;
107
- if (
108
- '_internal' in config &&
109
- config._internal?.prefetchedMarketplaceSettings
110
- ) {
111
- prefetchedMarketplaceSettings =
112
- config._internal.prefetchedMarketplaceSettings;
113
- }
89
+ return marketplaceConfig;
90
+ };
114
91
 
115
- const projectId = config.projectId;
116
- const projectAccessKey = config.projectAccessKey;
92
+ export const marketplaceConfigOptions = (config: SdkConfig) => {
93
+ const prefetchedMarketplaceSettings =
94
+ config._internal?.prefetchedMarketplaceSettings;
117
95
 
118
96
  return queryOptions({
119
- queryKey: [...configKeys.marketplace, env, projectId],
97
+ queryKey: [...configKeys.marketplace],
120
98
  queryFn: () =>
121
99
  fetchMarketplaceConfig({
122
- env,
123
- projectId,
124
- projectAccessKey,
100
+ config,
125
101
  prefetchedMarketplaceSettings,
126
- tmpShopConfig: config.tmpShopConfig,
127
102
  }),
128
103
  });
129
104
  };