@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
@@ -6,63 +6,81 @@ import {
6
6
  } from '../../../../_internal';
7
7
  import { useWallet } from '../../../../_internal/wallet/useWallet';
8
8
  import { useConfig } from '../../../../hooks';
9
- import { useFees } from './useFees';
9
+ import { useMarketPlatformFee } from './useMarketPlatformFee';
10
10
 
11
- export const useCheckoutOptions = (input: {
11
+ export type CheckoutOptionsParams = {
12
12
  chainId: number;
13
13
  collectionAddress: Hex;
14
14
  orderId: string;
15
15
  marketplace: MarketplaceKind;
16
- }) => {
16
+ };
17
+
18
+ export const useCheckoutOptions = (
19
+ input: CheckoutOptionsParams | typeof skipToken,
20
+ ) => {
17
21
  const config = useConfig();
18
22
  const { wallet } = useWallet();
19
- const fees = useFees({
20
- chainId: input.chainId,
21
- collectionAddress: input.collectionAddress,
22
- });
23
+
24
+ // If input is skipToken, we don't want to calculate fees
25
+ const fees = useMarketPlatformFee(
26
+ input !== skipToken
27
+ ? {
28
+ chainId: input.chainId,
29
+ collectionAddress: input.collectionAddress,
30
+ }
31
+ : skipToken,
32
+ );
23
33
 
24
34
  return useQuery({
25
- queryKey: [
26
- 'checkoutOptions',
27
- input.chainId,
28
- input.collectionAddress,
29
- input.orderId,
30
- input.marketplace,
31
- ],
32
- queryFn: wallet
33
- ? async () => {
34
- const marketplaceClient = getMarketplaceClient(input.chainId, config);
35
- const response = await marketplaceClient.checkoutOptionsMarketplace({
36
- wallet: await wallet.address(),
37
- orders: [
35
+ queryKey:
36
+ input !== skipToken
37
+ ? [
38
+ 'checkoutOptions',
39
+ input.chainId,
40
+ input.collectionAddress,
41
+ input.orderId,
42
+ input.marketplace,
43
+ ]
44
+ : ['checkoutOptions', 'skip'],
45
+ queryFn:
46
+ wallet && input !== skipToken
47
+ ? async () => {
48
+ const marketplaceClient = getMarketplaceClient(config);
49
+ const response = await marketplaceClient.checkoutOptionsMarketplace(
38
50
  {
39
- contractAddress: input.collectionAddress,
40
- orderId: input.orderId,
41
- marketplace: input.marketplace,
51
+ chainId: String(input.chainId),
52
+ wallet: await wallet.address(),
53
+ orders: [
54
+ {
55
+ contractAddress: input.collectionAddress,
56
+ orderId: input.orderId,
57
+ marketplace: input.marketplace,
58
+ },
59
+ ],
60
+ additionalFee: Number(fees.amount),
42
61
  },
43
- ],
44
- additionalFee: Number(fees.amount),
45
- });
62
+ );
46
63
 
47
- // Get order data
48
- const orderResponse = await marketplaceClient.getOrders({
49
- input: [
50
- {
51
- contractAddress: input.collectionAddress,
52
- orderId: input.orderId,
53
- marketplace: input.marketplace,
54
- },
55
- ],
56
- });
64
+ // Get order data
65
+ const orderResponse = await marketplaceClient.getOrders({
66
+ chainId: String(input.chainId),
67
+ input: [
68
+ {
69
+ contractAddress: input.collectionAddress,
70
+ orderId: input.orderId,
71
+ marketplace: input.marketplace,
72
+ },
73
+ ],
74
+ });
57
75
 
58
- const order = orderResponse.orders[0];
76
+ const order = orderResponse.orders[0];
59
77
 
60
- return {
61
- ...response.options,
62
- order,
63
- };
64
- }
65
- : skipToken,
66
- enabled: !!wallet,
78
+ return {
79
+ ...response.options,
80
+ order,
81
+ };
82
+ }
83
+ : skipToken,
84
+ enabled: !!wallet && input !== skipToken,
67
85
  });
68
86
  };
@@ -0,0 +1,73 @@
1
+ import { useERC1155SaleContractCheckout } from '@0xsequence/checkout';
2
+ import type { Hash } from 'viem';
3
+ import { useAccount } from 'wagmi';
4
+ import type {
5
+ CheckoutOptions,
6
+ CheckoutOptionsItem,
7
+ } from '../../../../_internal';
8
+ import { getQueryClient } from '../../../../_internal';
9
+ import { buyModalStore, useOnError, useOnSuccess, useQuantity } from '../store';
10
+
11
+ interface UseERC1155CheckoutParams {
12
+ chainId: number;
13
+ salesContractAddress: string;
14
+ collectionAddress: string;
15
+ items: Array<CheckoutOptionsItem>;
16
+ checkoutOptions?: CheckoutOptions;
17
+ customProviderCallback?: (
18
+ onSuccess: (txHash: string) => void,
19
+ onError: (error: Error) => void,
20
+ onClose: () => void,
21
+ ) => void;
22
+ enabled?: boolean;
23
+ }
24
+
25
+ export const useERC1155Checkout = ({
26
+ chainId,
27
+ salesContractAddress,
28
+ collectionAddress,
29
+ items,
30
+ checkoutOptions,
31
+ customProviderCallback,
32
+ enabled = true,
33
+ }: UseERC1155CheckoutParams) => {
34
+ const { address: accountAddress } = useAccount();
35
+ const quantity = useQuantity();
36
+ const onSuccess = useOnSuccess();
37
+ const onError = useOnError();
38
+
39
+ const checkout = useERC1155SaleContractCheckout({
40
+ chain: chainId,
41
+ contractAddress: salesContractAddress,
42
+ collectionAddress,
43
+ items: [
44
+ {
45
+ ...items[0],
46
+ quantity: quantity?.toString() || '1',
47
+ },
48
+ ],
49
+ wallet: accountAddress ?? '',
50
+ // Pass checkout options if available
51
+ ...(checkoutOptions && { checkoutOptions }),
52
+ onSuccess: (hash: string) => {
53
+ onSuccess({ hash: hash as Hash });
54
+ },
55
+ onError: (error: Error) => {
56
+ onError(error);
57
+ },
58
+ onClose: () => {
59
+ const queryClient = getQueryClient();
60
+ queryClient.invalidateQueries();
61
+ buyModalStore.send({ type: 'close' });
62
+ },
63
+ customProviderCallback,
64
+ supplementaryAnalyticsInfo: {
65
+ type: 'mint_shop',
66
+ },
67
+ });
68
+
69
+ return {
70
+ ...checkout,
71
+ isEnabled: Boolean(enabled && accountAddress),
72
+ };
73
+ };
@@ -0,0 +1,196 @@
1
+ import type { SelectPaymentSettings } from '@0xsequence/checkout';
2
+ import { skipToken, useQuery } from '@tanstack/react-query';
3
+ import {
4
+ type Address,
5
+ type Hash,
6
+ type Hex,
7
+ encodeFunctionData,
8
+ toHex,
9
+ } from 'viem';
10
+ import { useAccount } from 'wagmi';
11
+ import { BuyModalErrorFactory } from '../../../../../types/buyModalErrors';
12
+ import { ERC721_SALE_ABI } from '../../../../../utils/abi/primary-sale/sequence-721-sales-contract';
13
+ import { getQueryClient } from '../../../../_internal';
14
+ import type { ModalCallbacks } from '../../_internal/types';
15
+ import { buyModalStore, useOnError, useOnSuccess } from '../store';
16
+
17
+ interface ERC721MintArgs {
18
+ to: Address;
19
+ amount: bigint;
20
+ paymentToken: Address;
21
+ price: bigint;
22
+ proof: Hex[];
23
+ }
24
+
25
+ const DEFAULT_PROOF = [toHex(0, { size: 32 })] as Hex[];
26
+
27
+ const encodeERC721MintData = ({
28
+ to,
29
+ amount,
30
+ paymentToken,
31
+ price,
32
+ proof = DEFAULT_PROOF,
33
+ }: ERC721MintArgs): Hex => {
34
+ const totalPrice = price * amount;
35
+
36
+ return encodeFunctionData({
37
+ abi: ERC721_SALE_ABI,
38
+ functionName: 'mint',
39
+ args: [to, amount, paymentToken, totalPrice, proof],
40
+ });
41
+ };
42
+
43
+ interface GetERC721SalePaymentParams {
44
+ chainId: number;
45
+ address: Address;
46
+ salesContractAddress: string;
47
+ collectionAddress: string;
48
+ price: bigint;
49
+ currencyAddress: string;
50
+ callbacks: ModalCallbacks | undefined;
51
+ customCreditCardProviderCallback: ((price: string) => void) | undefined;
52
+ skipNativeBalanceCheck: boolean | undefined;
53
+ nativeTokenAddress: string | undefined;
54
+ checkoutProvider?: string;
55
+ quantity: number;
56
+ }
57
+
58
+ export const getERC721SalePaymentParams = async ({
59
+ chainId,
60
+ address,
61
+ salesContractAddress,
62
+ collectionAddress,
63
+ price,
64
+ currencyAddress,
65
+ callbacks,
66
+ customCreditCardProviderCallback,
67
+ skipNativeBalanceCheck,
68
+ nativeTokenAddress,
69
+ checkoutProvider,
70
+ quantity,
71
+ }: GetERC721SalePaymentParams) => {
72
+ try {
73
+ const purchaseTransactionData = encodeERC721MintData({
74
+ to: address,
75
+ amount: BigInt(quantity),
76
+ paymentToken: currencyAddress as Address,
77
+ price: price,
78
+ proof: DEFAULT_PROOF,
79
+ });
80
+
81
+ const creditCardProviders = customCreditCardProviderCallback
82
+ ? ['custom']
83
+ : checkoutProvider
84
+ ? [checkoutProvider]
85
+ : [];
86
+
87
+ return {
88
+ chain: chainId,
89
+ collectibles: [
90
+ {
91
+ quantity: quantity.toString(),
92
+ decimals: 0,
93
+ },
94
+ ],
95
+ currencyAddress,
96
+ price: price.toString(),
97
+ targetContractAddress: salesContractAddress,
98
+ txData: purchaseTransactionData,
99
+ collectionAddress,
100
+ recipientAddress: address,
101
+ enableMainCurrencyPayment: true,
102
+ enableSwapPayments: true,
103
+ creditCardProviders,
104
+ onSuccess: (hash: string) => {
105
+ callbacks?.onSuccess?.({ hash: hash as Hash });
106
+ },
107
+ onError: callbacks?.onError,
108
+ onClose: () => {
109
+ const queryClient = getQueryClient();
110
+ queryClient.invalidateQueries();
111
+ buyModalStore.send({ type: 'close' });
112
+ },
113
+ skipNativeBalanceCheck,
114
+ supplementaryAnalyticsInfo: {
115
+ type: 'mint_shop',
116
+ },
117
+ nativeTokenAddress,
118
+ ...(customCreditCardProviderCallback && {
119
+ customProviderCallback: () => {
120
+ customCreditCardProviderCallback(price.toString());
121
+ buyModalStore.send({ type: 'close' });
122
+ },
123
+ }),
124
+ } satisfies SelectPaymentSettings;
125
+ } catch (error) {
126
+ // Convert to structured error for better debugging
127
+ throw BuyModalErrorFactory.priceCalculation(
128
+ 'ERC721 payment params calculation',
129
+ [price.toString(), quantity.toString()],
130
+ error instanceof Error ? error.message : 'Unknown error',
131
+ );
132
+ }
133
+ };
134
+
135
+ interface UseERC721SalePaymentParams {
136
+ salesContractAddress: string | undefined;
137
+ collectionAddress: string | undefined;
138
+ price: string | undefined;
139
+ currencyAddress: string | undefined;
140
+ enabled: boolean;
141
+ checkoutProvider?: string;
142
+ chainId: number;
143
+ quantity: number;
144
+ }
145
+
146
+ export const useERC721SalePaymentParams = (
147
+ args: UseERC721SalePaymentParams,
148
+ ) => {
149
+ const {
150
+ salesContractAddress,
151
+ collectionAddress,
152
+ price,
153
+ currencyAddress,
154
+ enabled,
155
+ checkoutProvider,
156
+ chainId,
157
+ quantity,
158
+ } = args;
159
+
160
+ const { address } = useAccount();
161
+ const onSuccess = useOnSuccess();
162
+ const onError = useOnError();
163
+
164
+ const queryEnabled =
165
+ enabled &&
166
+ !!address &&
167
+ !!salesContractAddress &&
168
+ !!collectionAddress &&
169
+ !!price &&
170
+ !!currencyAddress;
171
+
172
+ return useQuery({
173
+ queryKey: ['erc721SalePaymentParams', args],
174
+ queryFn: queryEnabled
175
+ ? () =>
176
+ getERC721SalePaymentParams({
177
+ chainId,
178
+ address,
179
+ salesContractAddress,
180
+ collectionAddress,
181
+ price: BigInt(price),
182
+ currencyAddress,
183
+ callbacks: {
184
+ onSuccess,
185
+ onError,
186
+ },
187
+ customCreditCardProviderCallback: undefined, // Can be added as a prop if needed
188
+ skipNativeBalanceCheck: false, // Can be added as a prop if needed
189
+ nativeTokenAddress: undefined, // Can be added as a prop if needed
190
+
191
+ checkoutProvider,
192
+ quantity,
193
+ })
194
+ : skipToken,
195
+ });
196
+ };
@@ -1,11 +1,21 @@
1
+ import { skipToken } from '@tanstack/react-query';
1
2
  import { useWallet } from '../../../../_internal/wallet/useWallet';
2
- import { useCollectible, useCollection } from '../../../../hooks';
3
- import { useBuyModalProps } from '../store';
3
+ import {
4
+ useCheckoutOptionsSalesContract,
5
+ useCollectible,
6
+ useCollection,
7
+ useCurrency,
8
+ } from '../../../../hooks';
9
+ import { isMarketProps, isShopProps, useBuyModalProps } from '../store';
4
10
  import { useCheckoutOptions } from './useCheckoutOptions';
5
11
 
6
12
  export const useLoadData = () => {
7
- const { chainId, collectionAddress, collectibleId, orderId, marketplace } =
8
- useBuyModalProps();
13
+ const props = useBuyModalProps();
14
+ const { chainId, collectionAddress } = props;
15
+
16
+ const isMarket = isMarketProps(props);
17
+ const isShop = isShopProps(props);
18
+ const collectibleId = isMarket ? props.collectibleId : undefined;
9
19
 
10
20
  const {
11
21
  wallet,
@@ -36,33 +46,79 @@ export const useLoadData = () => {
36
46
  });
37
47
 
38
48
  const {
39
- data: checkoutOptions,
40
- isLoading: checkoutOptionsLoading,
41
- isError: checkoutOptionsError,
42
- // TODO: rename this... its order and checkout options
43
- } = useCheckoutOptions({
49
+ data: currency,
50
+ isLoading: currencyLoading,
51
+ isError: currencyError,
52
+ } = useCurrency({
44
53
  chainId,
45
- collectionAddress,
46
- orderId,
47
- marketplace,
54
+ currencyAddress: isShop ? props.salePrice?.currencyAddress : undefined,
55
+ query: {
56
+ enabled: isShop,
57
+ },
48
58
  });
49
59
 
60
+ const {
61
+ data: marketplaceCheckoutOptions,
62
+ isLoading: marketplaceCheckoutOptionsLoading,
63
+ isError: marketplaceCheckoutOptionsError,
64
+ } = useCheckoutOptions(
65
+ isMarket
66
+ ? {
67
+ chainId,
68
+ collectionAddress,
69
+ orderId: props.orderId,
70
+ marketplace: props.marketplace,
71
+ }
72
+ : skipToken,
73
+ );
74
+
75
+ const {
76
+ data: salesContractCheckoutOptions,
77
+ isLoading: salesContractCheckoutOptionsLoading,
78
+ isError: salesContractCheckoutOptionsError,
79
+ } = useCheckoutOptionsSalesContract(
80
+ isShop
81
+ ? {
82
+ chainId,
83
+ contractAddress: props.salesContractAddress,
84
+ collectionAddress,
85
+ items: props.items.map((item) => ({
86
+ tokenId: item.tokenId ?? '0',
87
+ quantity: item.quantity ?? '1',
88
+ })),
89
+ }
90
+ : skipToken,
91
+ );
92
+
93
+ const shopData = isShop
94
+ ? {
95
+ salesContractAddress: props.salesContractAddress,
96
+ items: props.items,
97
+ salePrice: props.salePrice,
98
+ checkoutOptions: salesContractCheckoutOptions?.options,
99
+ }
100
+ : undefined;
101
+
50
102
  return {
51
103
  collection,
52
104
  collectable,
53
- order: checkoutOptions?.order,
54
- checkoutOptions: checkoutOptions,
105
+ currency,
106
+ order: marketplaceCheckoutOptions?.order,
107
+ checkoutOptions: marketplaceCheckoutOptions,
55
108
  wallet,
109
+ shopData,
56
110
  isLoading:
57
111
  collectionLoading ||
58
112
  collectableLoading ||
59
- checkoutOptionsLoading ||
113
+ (isMarket && marketplaceCheckoutOptionsLoading) ||
114
+ (isShop && (currencyLoading || salesContractCheckoutOptionsLoading)) ||
60
115
  walletLoading,
61
- // TODO: we should have a way to determine what is causing the error
62
116
  isError:
117
+ walletError ||
63
118
  collectionError ||
64
119
  collectableError ||
65
- checkoutOptionsError ||
66
- walletError,
120
+ currencyError ||
121
+ marketplaceCheckoutOptionsError ||
122
+ salesContractCheckoutOptionsError,
67
123
  };
68
124
  };
@@ -0,0 +1,53 @@
1
+ import { skipToken } from '@tanstack/react-query';
2
+ import { avalanche, optimism } from 'viem/chains';
3
+ import { compareAddress } from '../../../../../utils';
4
+ import type { AdditionalFee } from '../../../../_internal';
5
+ import { useMarketplaceConfig } from '../../../../hooks';
6
+
7
+ export type FeesParams = {
8
+ chainId: number;
9
+ collectionAddress: string;
10
+ };
11
+
12
+ export const useMarketPlatformFee = (params: FeesParams | typeof skipToken) => {
13
+ const defaultFee = 2.5;
14
+ const defaultPlatformFeeRecipient =
15
+ '0x858dB1cbF6D09D447C96A11603189b49B2D1C219';
16
+ const avalancheAndOptimismPlatformFeeRecipient =
17
+ '0x400cdab4676c17aec07e8ec748a5fc3b674bca41';
18
+ const { data: marketplaceConfig } = useMarketplaceConfig();
19
+
20
+ // Early return if skipToken is passed
21
+ if (params === skipToken) {
22
+ return {
23
+ amount: '0',
24
+ receiver: defaultPlatformFeeRecipient,
25
+ } satisfies AdditionalFee;
26
+ }
27
+
28
+ const { chainId, collectionAddress } = params;
29
+
30
+ // Find collection in market collections only (not shop collections)
31
+ const marketCollection = marketplaceConfig?.market?.collections?.find(
32
+ (col) =>
33
+ compareAddress(col.itemsAddress, collectionAddress) &&
34
+ String(col.chainId) === String(chainId),
35
+ );
36
+
37
+ const avalancheOrOptimism =
38
+ chainId === avalanche.id || chainId === optimism.id;
39
+ const receiver = avalancheOrOptimism
40
+ ? avalancheAndOptimismPlatformFeeRecipient
41
+ : defaultPlatformFeeRecipient;
42
+
43
+ const percentageToBPS = (percentage: string | number) =>
44
+ (Number(percentage) * 10000) / 100;
45
+
46
+ // Use collection fee if found in market collections, otherwise use default
47
+ const feePercentage = marketCollection?.feePercentage ?? defaultFee;
48
+
49
+ return {
50
+ amount: percentageToBPS(feePercentage).toString(),
51
+ receiver,
52
+ } satisfies AdditionalFee;
53
+ };
@@ -19,11 +19,12 @@ import { useConfig } from '../../../../hooks';
19
19
  import type { ModalCallbacks } from '../../_internal/types';
20
20
  import {
21
21
  buyModalStore,
22
+ isMarketProps,
22
23
  useBuyModalProps,
23
24
  useOnError,
24
25
  useOnSuccess,
25
26
  } from '../store';
26
- import { useFees } from './useFees';
27
+ import { useMarketPlatformFee } from './useMarketPlatformFee';
27
28
 
28
29
  interface GetBuyCollectableParams {
29
30
  chainId: number;
@@ -62,8 +63,9 @@ export const getBuyCollectableParams = async ({
62
63
  skipNativeBalanceCheck,
63
64
  nativeTokenAddress,
64
65
  }: GetBuyCollectableParams) => {
65
- const marketplaceClient = getMarketplaceClient(chainId, config);
66
+ const marketplaceClient = getMarketplaceClient(config);
66
67
  const { steps } = await marketplaceClient.generateBuyTransaction({
68
+ chainId: String(chainId),
67
69
  collectionAddress,
68
70
  buyer: await wallet.address(),
69
71
  marketplace: marketplace,
@@ -165,6 +167,7 @@ interface usePaymentModalParams {
165
167
  collectable: TokenMetadata | undefined;
166
168
  checkoutOptions: CheckoutOptions | undefined;
167
169
  priceCurrencyAddress: string | undefined;
170
+ enabled: boolean;
168
171
  }
169
172
 
170
173
  export const usePaymentModalParams = (args: usePaymentModalParams) => {
@@ -175,38 +178,50 @@ export const usePaymentModalParams = (args: usePaymentModalParams) => {
175
178
  checkoutOptions,
176
179
  priceCurrencyAddress,
177
180
  quantity,
181
+ enabled,
178
182
  } = args;
179
183
 
180
184
  const buyModalProps = useBuyModalProps();
181
185
  const {
182
186
  chainId,
183
187
  collectionAddress,
184
- collectibleId,
185
- orderId,
186
- customCreditCardProviderCallback,
187
188
  skipNativeBalanceCheck,
188
189
  nativeTokenAddress,
189
190
  } = buyModalProps;
190
191
 
192
+ // Extract Marketplace-specific properties using type guard
193
+ const collectibleId = isMarketProps(buyModalProps)
194
+ ? buyModalProps.collectibleId
195
+ : '';
196
+ const orderId = isMarketProps(buyModalProps) ? buyModalProps.orderId : '';
197
+ const customCreditCardProviderCallback = isMarketProps(buyModalProps)
198
+ ? buyModalProps.customCreditCardProviderCallback
199
+ : undefined;
200
+
191
201
  const config = useConfig();
192
- const fee = useFees({
193
- chainId,
194
- collectionAddress,
195
- });
202
+ const fee = useMarketPlatformFee(
203
+ isMarketProps(buyModalProps)
204
+ ? {
205
+ chainId,
206
+ collectionAddress,
207
+ }
208
+ : skipToken,
209
+ );
196
210
  const onSuccess = useOnSuccess();
197
211
  const onError = useOnError();
198
212
 
199
- const enabled =
213
+ const queryEnabled =
200
214
  !!wallet &&
201
215
  !!marketplace &&
202
216
  !!collectable &&
203
217
  !!checkoutOptions &&
204
218
  !!priceCurrencyAddress &&
205
- !!quantity;
219
+ !!quantity &&
220
+ enabled;
206
221
 
207
222
  return useQuery({
208
223
  queryKey: ['buyCollectableParams', buyModalProps, args, fee],
209
- queryFn: enabled
224
+ queryFn: queryEnabled
210
225
  ? () =>
211
226
  getBuyCollectableParams({
212
227
  chainId,