@0xsequence/marketplace-sdk 1.1.0 → 1.1.1

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 (397) hide show
  1. package/.changeset/honest-peas-arrive.md +5 -0
  2. package/.changeset/real-tips-stick.md +8 -0
  3. package/.changeset/tall-pandas-wear.md +8 -0
  4. package/CHANGELOG.md +24 -2
  5. package/dist/{BellIcon-IpHHEy8h.js → BellIcon-ByhygxBO.js} +2 -2
  6. package/dist/{BellIcon-IpHHEy8h.js.map → BellIcon-ByhygxBO.js.map} +1 -1
  7. package/dist/{CartIcon-C8zbor8H.js → CartIcon-Bt3rQYGk.js} +3 -3
  8. package/dist/{CartIcon-C8zbor8H.js.map → CartIcon-Bt3rQYGk.js.map} +1 -1
  9. package/dist/CollectibleCard-CVpdgXA8.d.ts +8 -0
  10. package/dist/_internal-DkS2VUn5.js.map +1 -1
  11. package/dist/abi-fa-o9gH3.js +134 -0
  12. package/dist/abi-fa-o9gH3.js.map +1 -0
  13. package/dist/{alien_swap-BTJ7mSR-.js → alien_swap-DoY6XfMA.js} +1 -1
  14. package/dist/{alien_swap-BTJ7mSR-.js.map → alien_swap-DoY6XfMA.js.map} +1 -1
  15. package/dist/{api-DuLKn__v.js → api-BoO0V5aJ.js} +8 -3
  16. package/dist/api-BoO0V5aJ.js.map +1 -0
  17. package/dist/{aqua-xyz-BYJ9WSP_.js → aqua-xyz-BBDxnG14.js} +1 -1
  18. package/dist/{aqua-xyz-BYJ9WSP_.js.map → aqua-xyz-BBDxnG14.js.map} +1 -1
  19. package/dist/{aura-D7SUjgro.js → aura-DGx2zwvF.js} +1 -1
  20. package/dist/{aura-D7SUjgro.js.map → aura-DGx2zwvF.js.map} +1 -1
  21. package/dist/{blur-BcnRFCaV.js → blur-D8GKrRrq.js} +1 -1
  22. package/dist/{blur-BcnRFCaV.js.map → blur-D8GKrRrq.js.map} +1 -1
  23. package/dist/{coinbase-ChoX9Hw2.js → coinbase-DOry4PXY.js} +1 -1
  24. package/dist/{coinbase-ChoX9Hw2.js.map → coinbase-DOry4PXY.js.map} +1 -1
  25. package/dist/collectibles-C_H8jMGH.js +358 -0
  26. package/dist/collectibles-C_H8jMGH.js.map +1 -0
  27. package/dist/collections-CKummc-R.js +249 -0
  28. package/dist/collections-CKummc-R.js.map +1 -0
  29. package/dist/{components-CUv-wQr8.js → components-CosnX7F9.js} +5 -5
  30. package/dist/{components-CUv-wQr8.js.map → components-CosnX7F9.js.map} +1 -1
  31. package/dist/{contracts-D72LBOX3.js → contracts-BP_0vX48.js} +3 -3
  32. package/dist/{contracts-D72LBOX3.js.map → contracts-BP_0vX48.js.map} +1 -1
  33. package/dist/{create-config-DV_dtaLt.d.ts → create-config-ZOB7i4ZJ.d.ts} +117 -12
  34. package/dist/{element-Dbcv5qya.js → element-ciybd_VF.js} +1 -1
  35. package/dist/{element-Dbcv5qya.js.map → element-ciybd_VF.js.map} +1 -1
  36. package/dist/filters-V-V8Dn8f.d.ts +60 -0
  37. package/dist/{foundation-QPhUEUy8.js → foundation-Bq4lRz4x.js} +1 -1
  38. package/dist/{foundation-QPhUEUy8.js.map → foundation-Bq4lRz4x.js.map} +1 -1
  39. package/dist/index-BOiHR01C.d.ts +106 -0
  40. package/dist/index-BZIJTQT0.d.ts +121 -0
  41. package/dist/index-BeRV-7AX.d.ts +55 -0
  42. package/dist/{index-BaytncQc.d.ts → index-Bsx6XsC2.d.ts} +58 -55
  43. package/dist/{index-jGgfEHfQ.d.ts → index-BtWMBHeP.d.ts} +13 -9
  44. package/dist/{index-CT8ZorFd.d.ts → index-Bxzjy0d1.d.ts} +1 -1
  45. package/dist/{index-B6aSbaw2.d.ts → index-C-745li7.d.ts} +1 -1
  46. package/dist/{index-BoNNplSx.d.ts → index-C4MUKshG.d.ts} +2 -2
  47. package/dist/{index-DMBMM16q.d.ts → index-CPzvNmq9.d.ts} +35 -35
  48. package/dist/{index-D-UXGo5d.d.ts → index-CS65jqOq.d.ts} +2 -2
  49. package/dist/index-CZUtOTjh.d.ts +1 -0
  50. package/dist/index-CnEbXm_t.d.ts +130 -0
  51. package/dist/{index-CQecU53t.d.ts → index-CxA34wP1.d.ts} +32 -23
  52. package/dist/{index-C768pAfu.d.ts → index-CxpFwGvR.d.ts} +3 -3
  53. package/dist/{index-Bv5XVLjH.d.ts → index-D9LPlmbC.d.ts} +1 -1
  54. package/dist/{index-DJG0kiII.d.ts → index-DFEnA6Wa.d.ts} +28 -17
  55. package/dist/{index-B8vaT3_s.d.ts → index-DNNUeZEq.d.ts} +4 -4
  56. package/dist/{index-CXscCUg7.d.ts → index-DUXfvhxs.d.ts} +12 -12
  57. package/dist/index-DW3njUfb.d.ts +1 -0
  58. package/dist/{index-CMPUveNz.d.ts → index-DWt6yrIG.d.ts} +7 -7
  59. package/dist/index-DewGsFz5.d.ts +1 -0
  60. package/dist/{index-DLUjc7Bx.d.ts → index-DmudgrsN.d.ts} +191 -12
  61. package/dist/{index-DpeWm_vF.d.ts → index-DqXd1EeB.d.ts} +5 -5
  62. package/dist/{index-CM0ZTePs.d.ts → index-DwKr18CI.d.ts} +1 -1
  63. package/dist/{index-D6YMj82n.d.ts → index-NlPMNcqh.d.ts} +100 -100
  64. package/dist/index-Stm5u0I0.d.ts +53 -0
  65. package/dist/index-U-zp70of.d.ts +74 -0
  66. package/dist/index.d.ts +8 -8
  67. package/dist/index.js +8 -8
  68. package/dist/inventory-Dd7TazvZ.js +72 -0
  69. package/dist/inventory-Dd7TazvZ.js.map +1 -0
  70. package/dist/listBalances-BxpxBCvn.js +57 -0
  71. package/dist/listBalances-BxpxBCvn.js.map +1 -0
  72. package/dist/listCollectiblesPaginated-Cy2_qEZA.d.ts +327 -0
  73. package/dist/{listCollections-dTCq00l5.d.ts → listCollections-BB9FxKj2.d.ts} +193 -111
  74. package/dist/{looks-rare-C7cQztTR.js → looks-rare-6H--x3AM.js} +1 -1
  75. package/dist/{looks-rare-C7cQztTR.js.map → looks-rare-6H--x3AM.js.map} +1 -1
  76. package/dist/lowestListing-Cbsi6M1K.d.ts +465 -0
  77. package/dist/{magic-eden-D3r7jiBG.js → magic-eden-BoxEQ1Li.js} +1 -1
  78. package/dist/{magic-eden-D3r7jiBG.js.map → magic-eden-BoxEQ1Li.js.map} +1 -1
  79. package/dist/{manifold-DsX0CBP-.js → manifold-DycKsljb.js} +1 -1
  80. package/dist/{manifold-DsX0CBP-.js.map → manifold-DycKsljb.js.map} +1 -1
  81. package/dist/market-C3HV-awQ.js +209 -0
  82. package/dist/market-C3HV-awQ.js.map +1 -0
  83. package/dist/{marketCurrencies-Bzj8X4TL.d.ts → marketCurrencies-Bpw1bIO0.d.ts} +46 -15
  84. package/dist/marketCurrencies-sKrTX0og.js +53 -0
  85. package/dist/marketCurrencies-sKrTX0og.js.map +1 -0
  86. package/dist/{marketplace-BYY8OloA.js → marketplace-NQB-sEQL.js} +1 -1
  87. package/dist/{marketplace-BYY8OloA.js.map → marketplace-NQB-sEQL.js.map} +1 -1
  88. package/dist/{marketplace-logos-Csv2MBwf.js → marketplace-logos-D4dS1Foy.js} +21 -21
  89. package/dist/{marketplace-logos-Csv2MBwf.js.map → marketplace-logos-D4dS1Foy.js.map} +1 -1
  90. package/dist/{marketplace.gen-w2YvbEEo.js → marketplace.gen-ksUafDqS.js} +56 -5
  91. package/dist/marketplace.gen-ksUafDqS.js.map +1 -0
  92. package/dist/{marketplaceConfig-BTy75Mbf.js → marketplaceConfig-UHQMM9fq.js} +3 -3
  93. package/dist/marketplaceConfig-UHQMM9fq.js.map +1 -0
  94. package/dist/{mintify-DiOoDmO1.js → mintify-Dyqyo8jQ.js} +1 -1
  95. package/dist/{mintify-DiOoDmO1.js.map → mintify-Dyqyo8jQ.js.map} +1 -1
  96. package/dist/{nftx-CP82jNra.js → nftx-2LbFjj9Q.js} +1 -1
  97. package/dist/{nftx-CP82jNra.js.map → nftx-2LbFjj9Q.js.map} +1 -1
  98. package/dist/{okx-p9-4xRjs.js → okx-CBEWJNsR.js} +1 -1
  99. package/dist/{okx-p9-4xRjs.js.map → okx-CBEWJNsR.js.map} +1 -1
  100. package/dist/{open-sea-D2GwAmKS.js → open-sea-Dxntz_PA.js} +1 -1
  101. package/dist/{open-sea-D2GwAmKS.js.map → open-sea-Dxntz_PA.js.map} +1 -1
  102. package/dist/orders-DnFfZAXV.js +462 -0
  103. package/dist/orders-DnFfZAXV.js.map +1 -0
  104. package/dist/{primary-sale-DOmNDq2P.js → primary-sale-1u4QlPdA.js} +1 -1
  105. package/dist/{primary-sale-DOmNDq2P.js.map → primary-sale-1u4QlPdA.js.map} +1 -1
  106. package/dist/primary-sales-Dmsi6bqj.js +114 -0
  107. package/dist/primary-sales-Dmsi6bqj.js.map +1 -0
  108. package/dist/{query-BG-MA1MB.d.ts → query-BWbCsXLY.d.ts} +1 -1
  109. package/dist/{rarible-DqiiW9ki.js → rarible-CS0SupHr.js} +1 -1
  110. package/dist/{rarible-DqiiW9ki.js.map → rarible-CS0SupHr.js.map} +1 -1
  111. package/dist/react/_internal/api/index.d.ts +2 -2
  112. package/dist/react/_internal/api/index.js +3 -3
  113. package/dist/react/_internal/databeat/index.d.ts +1 -1
  114. package/dist/react/_internal/databeat/index.js +28 -17
  115. package/dist/react/_internal/index.d.ts +2 -2
  116. package/dist/react/_internal/index.js +3 -3
  117. package/dist/react/_internal/wagmi/index.d.ts +1 -1
  118. package/dist/react/hooks/config/index.d.ts +8 -8
  119. package/dist/react/hooks/config/index.js +28 -17
  120. package/dist/react/hooks/contracts/index.d.ts +6 -6
  121. package/dist/react/hooks/contracts/index.js +7 -7
  122. package/dist/react/hooks/data/collectibles/index.d.ts +10 -4
  123. package/dist/react/hooks/data/collectibles/index.js +28 -17
  124. package/dist/react/hooks/data/collections/index.d.ts +10 -10
  125. package/dist/react/hooks/data/collections/index.js +28 -17
  126. package/dist/react/hooks/data/index.d.ts +37 -29
  127. package/dist/react/hooks/data/index.js +29 -18
  128. package/dist/react/hooks/data/inventory/index.d.ts +36 -28
  129. package/dist/react/hooks/data/inventory/index.js +28 -17
  130. package/dist/react/hooks/data/market/index.d.ts +11 -5
  131. package/dist/react/hooks/data/market/index.js +28 -17
  132. package/dist/react/hooks/data/orders/index.d.ts +11 -5
  133. package/dist/react/hooks/data/orders/index.js +29 -18
  134. package/dist/react/hooks/data/primary-sales/index.d.ts +36 -28
  135. package/dist/react/hooks/data/primary-sales/index.js +28 -17
  136. package/dist/react/hooks/data/tokens/index.d.ts +4 -4
  137. package/dist/react/hooks/data/tokens/index.js +28 -17
  138. package/dist/react/hooks/index.d.ts +37 -29
  139. package/dist/react/hooks/index.js +29 -18
  140. package/dist/react/hooks/transactions/index.d.ts +2 -2
  141. package/dist/react/hooks/transactions/index.js +28 -17
  142. package/dist/react/hooks/ui/index.d.ts +4 -4
  143. package/dist/react/hooks/ui/index.js +28 -17
  144. package/dist/react/hooks/utils/index.d.ts +36 -28
  145. package/dist/react/hooks/utils/index.js +28 -17
  146. package/dist/react/index.d.ts +37 -29
  147. package/dist/react/index.js +29 -18
  148. package/dist/react/queries/collectibles/index.d.ts +11 -0
  149. package/dist/react/queries/collectibles/index.js +23 -0
  150. package/dist/react/queries/collections/index.d.ts +11 -0
  151. package/dist/react/queries/collections/index.js +20 -0
  152. package/dist/react/queries/index.d.ts +24 -16
  153. package/dist/react/queries/index.js +22 -11
  154. package/dist/react/queries/inventory/index.d.ts +3 -0
  155. package/dist/react/queries/inventory/index.js +22 -0
  156. package/dist/react/queries/market/index.d.ts +6 -0
  157. package/dist/react/queries/market/index.js +22 -0
  158. package/dist/react/queries/orders/index.d.ts +11 -0
  159. package/dist/react/queries/orders/index.js +13 -0
  160. package/dist/react/queries/primary-sales/index.d.ts +4 -0
  161. package/dist/react/queries/primary-sales/index.js +13 -0
  162. package/dist/react/queries/tokens/index.d.ts +5 -0
  163. package/dist/react/queries/tokens/index.js +14 -0
  164. package/dist/react/queries/utils/index.d.ts +4 -0
  165. package/dist/react/queries/utils/index.js +22 -0
  166. package/dist/react/ssr/index.d.ts +7 -7
  167. package/dist/react/ssr/index.js +3 -3
  168. package/dist/react/ssr/index.js.map +1 -1
  169. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.d.ts +2 -2
  170. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.js +11 -11
  171. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.d.ts +5 -5
  172. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.js +28 -17
  173. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +4 -4
  174. package/dist/react/ui/components/marketplace-collectible-card/index.js +28 -17
  175. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -2
  176. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +3 -3
  177. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  178. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  179. package/dist/react/ui/icons/index.js +9 -9
  180. package/dist/react/ui/index.d.ts +4 -4
  181. package/dist/react/ui/index.js +28 -17
  182. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +2 -2
  183. package/dist/react/ui/modals/_internal/components/actionModal/index.js +28 -17
  184. package/dist/react/utils/index.d.ts +3 -3
  185. package/dist/react/utils/index.js +3 -3
  186. package/dist/{react-BLJ4DkPx.js → react-DE852KeT.js} +1365 -172
  187. package/dist/react-DE852KeT.js.map +1 -0
  188. package/dist/{sequence-Bbb-TFKg.js → sequence-paCCener.js} +1 -1
  189. package/dist/{sequence-Bbb-TFKg.js.map → sequence-paCCener.js.map} +1 -1
  190. package/dist/styles/index.css +154 -0
  191. package/dist/{sudo-swap-CEPIM3Js.js → sudo-swap-9rH2EgfT.js} +1 -1
  192. package/dist/{sudo-swap-CEPIM3Js.js.map → sudo-swap-9rH2EgfT.js.map} +1 -1
  193. package/dist/{super-rare-CMEn9PoO.js → super-rare-DHIuWtRw.js} +1 -1
  194. package/dist/{super-rare-CMEn9PoO.js.map → super-rare-DHIuWtRw.js.map} +1 -1
  195. package/dist/{token-CcyLz8Z8.js → token-Cv7l2ZaL.js} +1 -1
  196. package/dist/{token-CcyLz8Z8.js.map → token-Cv7l2ZaL.js.map} +1 -1
  197. package/dist/tokenBalances-ibDerNmM.js +63 -0
  198. package/dist/tokenBalances-ibDerNmM.js.map +1 -0
  199. package/dist/tokenSupplies-Bfe8RHzI.d.ts +272 -0
  200. package/dist/tokens-cGxMadd8.js +194 -0
  201. package/dist/tokens-cGxMadd8.js.map +1 -0
  202. package/dist/types/index.d.ts +1 -1
  203. package/dist/types/index.js +1 -1
  204. package/dist/{types-D6LkVrF0.d.ts → types-D2TJ1dwv.d.ts} +3 -2
  205. package/dist/utils/abi/index.d.ts +5 -5
  206. package/dist/utils/abi/index.js +5 -5
  207. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  208. package/dist/utils/abi/marketplace/index.js +1 -1
  209. package/dist/utils/abi/primary-sale/index.d.ts +1 -1
  210. package/dist/utils/abi/primary-sale/index.js +1 -1
  211. package/dist/utils/abi/token/index.d.ts +1 -1
  212. package/dist/utils/abi/token/index.js +1 -1
  213. package/dist/utils/index.d.ts +7 -7
  214. package/dist/utils/index.js +8 -8
  215. package/dist/utils-BCgNhBFR.js +112 -0
  216. package/dist/utils-BCgNhBFR.js.map +1 -0
  217. package/dist/{utils-BZEkdqWK.js → utils-BfpDVibN.js} +3 -3
  218. package/dist/{utils-BZEkdqWK.js.map → utils-BfpDVibN.js.map} +1 -1
  219. package/dist/{utils-oVZxdK0o.js → utils-BqxcalL2.js} +2 -2
  220. package/dist/{utils-oVZxdK0o.js.map → utils-BqxcalL2.js.map} +1 -1
  221. package/dist/waitForTransactionReceipt-DieAnV52.js +25 -0
  222. package/dist/waitForTransactionReceipt-DieAnV52.js.map +1 -0
  223. package/dist/{x2y2-DNe6JgtG.js → x2y2-45WDooeh.js} +1 -1
  224. package/dist/{x2y2-DNe6JgtG.js.map → x2y2-45WDooeh.js.map} +1 -1
  225. package/dist/{zora-w0Zqxxs4.js → zora-CbeBoLvQ.js} +1 -1
  226. package/dist/{zora-w0Zqxxs4.js.map → zora-CbeBoLvQ.js.map} +1 -1
  227. package/package.json +10 -5
  228. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +2 -0
  229. package/src/react/_internal/api/marketplace.gen.ts +1730 -2383
  230. package/src/react/_internal/api/query-keys.ts +14 -0
  231. package/src/react/_internal/api/services.ts +1 -1
  232. package/src/react/_internal/databeat/types.ts +1 -0
  233. package/src/react/_internal/types.ts +14 -0
  234. package/src/react/_internal/utils.ts +3 -0
  235. package/src/react/hooks/config/useMarketplaceConfig.tsx +1 -1
  236. package/src/react/hooks/data/collectibles/useBalanceOfCollectible.tsx +1 -1
  237. package/src/react/hooks/data/collectibles/useCollectible.tsx +1 -1
  238. package/src/react/hooks/data/collectibles/useCountOfCollectables.tsx +1 -1
  239. package/src/react/hooks/data/collectibles/useListCollectibleActivities.tsx +1 -1
  240. package/src/react/hooks/data/collectibles/useListCollectibles.tsx +1 -1
  241. package/src/react/hooks/data/collectibles/useListCollectiblesPaginated.tsx +1 -1
  242. package/src/react/hooks/data/collectibles/useTokenBalances.tsx +1 -1
  243. package/src/react/hooks/data/collections/useCollection.tsx +1 -1
  244. package/src/react/hooks/data/collections/useCollectionBalanceDetails.tsx +1 -1
  245. package/src/react/hooks/data/collections/useCollectionDetails.ts +1 -1
  246. package/src/react/hooks/data/collections/useListCollectionActivities.tsx +1 -1
  247. package/src/react/hooks/data/collections/useListCollections.tsx +1 -1
  248. package/src/react/hooks/data/inventory/useInventory.tsx +1 -1
  249. package/src/react/hooks/data/market/useCurrency.tsx +1 -1
  250. package/src/react/hooks/data/market/useListMarketCardData.tsx +7 -0
  251. package/src/react/hooks/data/market/useMarketCurrencies.tsx +1 -1
  252. package/src/react/hooks/data/orders/index.ts +4 -0
  253. package/src/react/hooks/data/orders/useCountItemsOrdersForCollection.tsx +90 -0
  254. package/src/react/hooks/data/orders/useCountListingsForCollectible.tsx +1 -1
  255. package/src/react/hooks/data/orders/useCountOffersForCollectible.tsx +1 -1
  256. package/src/react/hooks/data/orders/useFloorOrder.tsx +1 -1
  257. package/src/react/hooks/data/orders/useGetCountOfFilteredOrders.tsx +39 -0
  258. package/src/react/hooks/data/orders/useHighestOffer.tsx +1 -1
  259. package/src/react/hooks/data/orders/useListItemsOrdersForCollection.tsx +93 -0
  260. package/src/react/hooks/data/orders/useListItemsOrdersForCollectionPaginated.tsx +108 -0
  261. package/src/react/hooks/data/orders/useListListingsForCollectible.tsx +1 -1
  262. package/src/react/hooks/data/orders/useListOffersForCollectible.tsx +1 -1
  263. package/src/react/hooks/data/orders/useLowestListing.tsx +1 -1
  264. package/src/react/hooks/data/primary-sales/useGetCountOfPrimarySaleItems.tsx +2 -2
  265. package/src/react/hooks/data/primary-sales/useListPrimarySaleItems.tsx +1 -1
  266. package/src/react/hooks/data/tokens/useGetTokenRanges.tsx +2 -2
  267. package/src/react/hooks/data/tokens/useListBalances.tsx +2 -2
  268. package/src/react/hooks/data/tokens/useListTokenMetadata.tsx +1 -1
  269. package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +1 -1
  270. package/src/react/hooks/data/tokens/useTokenSupplies.ts +1 -1
  271. package/src/react/hooks/transactions/useGenerateCancelTransaction.test.tsx +1 -0
  272. package/src/react/hooks/transactions/useGenerateListingTransaction.test.tsx +13 -0
  273. package/src/react/hooks/transactions/useGenerateOfferTransaction.test.tsx +1 -0
  274. package/src/react/hooks/transactions/useGenerateSellTransaction.test.tsx +6 -0
  275. package/src/react/hooks/ui/useFilterState.tsx +72 -2
  276. package/src/react/hooks/ui/useFilters.tsx +1 -1
  277. package/src/react/hooks/utils/useCheckoutOptions.tsx +2 -2
  278. package/src/react/hooks/utils/useCheckoutOptionsSalesContract.tsx +1 -1
  279. package/src/react/hooks/utils/useComparePrices.tsx +1 -1
  280. package/src/react/hooks/utils/useConvertPriceToUSD.tsx +1 -1
  281. package/src/react/providers/analytics-provider.tsx +45 -0
  282. package/src/react/providers/index.tsx +30 -41
  283. package/src/react/providers/modal-provider.tsx +13 -2
  284. package/src/react/queries/{__tests__ → collectibles/__tests__}/balanceOfCollectible.laos.test.ts +1 -1
  285. package/src/react/queries/{__tests__ → collectibles/__tests__}/tokenBalances.laos.test.ts +1 -1
  286. package/src/react/queries/{balanceOfCollectible.ts → collectibles/balanceOfCollectible.ts} +24 -3
  287. package/src/react/queries/{collectible.ts → collectibles/collectible.ts} +20 -5
  288. package/src/react/queries/{countOfCollectables.ts → collectibles/countOfCollectables.ts} +32 -6
  289. package/src/react/queries/collectibles/index.ts +7 -0
  290. package/src/react/queries/{listCollectibleActivities.ts → collectibles/listCollectibleActivities.ts} +29 -5
  291. package/src/react/queries/{listCollectibles.ts → collectibles/listCollectibles.ts} +28 -9
  292. package/src/react/queries/{listCollectiblesPaginated.ts → collectibles/listCollectiblesPaginated.ts} +22 -5
  293. package/src/react/queries/{tokenBalances.ts → collectibles/tokenBalances.ts} +21 -3
  294. package/src/react/queries/{collection.ts → collections/collection.ts} +19 -5
  295. package/src/react/queries/{collectionBalanceDetails.ts → collections/collectionBalanceDetails.ts} +19 -4
  296. package/src/react/queries/{collectionDetails.ts → collections/collectionDetails.ts} +21 -6
  297. package/src/react/queries/collections/index.ts +5 -0
  298. package/src/react/queries/{listCollectionActivities.ts → collections/listCollectionActivities.ts} +28 -6
  299. package/src/react/queries/{listCollections.ts → collections/listCollections.ts} +17 -6
  300. package/src/react/queries/index.ts +7 -34
  301. package/src/react/queries/{__tests__ → inventory/__tests__}/inventory.laos.test.ts +4 -4
  302. package/src/react/queries/inventory/index.ts +1 -0
  303. package/src/react/queries/{inventory.ts → inventory/inventory.ts} +11 -5
  304. package/src/react/queries/{checkoutOptions.ts → market/checkoutOptions.ts} +28 -6
  305. package/src/react/queries/{checkoutOptionsSalesContract.ts → market/checkoutOptionsSalesContract.ts} +24 -5
  306. package/src/react/queries/{currency.ts → market/currency.ts} +13 -4
  307. package/src/react/queries/{filters.ts → market/filters.ts} +25 -6
  308. package/src/react/queries/market/index.ts +6 -0
  309. package/src/react/queries/{marketCurrencies.ts → market/marketCurrencies.ts} +24 -5
  310. package/src/react/queries/{marketplaceConfig.ts → market/marketplaceConfig.ts} +5 -5
  311. package/src/react/queries/orders/countItemsOrdersForCollection.ts +86 -0
  312. package/src/react/queries/{countListingsForCollectible.ts → orders/countListingsForCollectible.ts} +23 -6
  313. package/src/react/queries/{countOffersForCollectible.ts → orders/countOffersForCollectible.ts} +23 -6
  314. package/src/react/queries/{floorOrder.ts → orders/floorOrder.ts} +15 -4
  315. package/src/react/queries/orders/getCountOfFilteredOrders.ts +88 -0
  316. package/src/react/queries/{highestOffer.ts → orders/highestOffer.ts} +16 -4
  317. package/src/react/queries/orders/index.ts +11 -0
  318. package/src/react/queries/orders/listItemsOrdersForCollection.ts +90 -0
  319. package/src/react/queries/orders/listItemsOrdersForCollectionPaginated.ts +90 -0
  320. package/src/react/queries/{listListingsForCollectible.ts → orders/listListingsForCollectible.ts} +20 -5
  321. package/src/react/queries/{listOffersForCollectible.ts → orders/listOffersForCollectible.ts} +20 -5
  322. package/src/react/queries/{lowestListing.ts → orders/lowestListing.ts} +16 -4
  323. package/src/react/queries/{countOfPrimarySaleItems.ts → primary-sales/countOfPrimarySaleItems.ts} +17 -3
  324. package/src/react/queries/primary-sales/index.ts +3 -0
  325. package/src/react/queries/{primarySaleItems.ts → primary-sales/primarySaleItems.ts} +18 -4
  326. package/src/react/queries/{primarySaleItemsCount.ts → primary-sales/primarySaleItemsCount.ts} +19 -4
  327. package/src/react/queries/{getTokenRanges.ts → tokens/getTokenRanges.ts} +17 -4
  328. package/src/react/queries/tokens/index.ts +5 -0
  329. package/src/react/queries/{listBalances.ts → tokens/listBalances.ts} +18 -3
  330. package/src/react/queries/{listTokenMetadata.ts → tokens/listTokenMetadata.ts} +18 -4
  331. package/src/react/queries/{searchTokenMetadata.ts → tokens/searchTokenMetadata.ts} +18 -4
  332. package/src/react/queries/{tokenSupplies.ts → tokens/tokenSupplies.ts} +16 -4
  333. package/src/react/queries/{comparePrices.ts → utils/comparePrices.ts} +16 -4
  334. package/src/react/queries/{convertPriceToUSD.ts → utils/convertPriceToUSD.ts} +18 -5
  335. package/src/react/queries/utils/index.ts +2 -0
  336. package/src/react/ssr/create-ssr-client.ts +1 -1
  337. package/src/react/ui/components/_internals/ErrorLogBox.tsx +85 -0
  338. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +4 -0
  339. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +4 -0
  340. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +3 -0
  341. package/src/react/ui/components/marketplace-collectible-card/types.ts +1 -0
  342. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +3 -0
  343. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +2 -0
  344. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +65 -3
  345. package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +31 -0
  346. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +20 -1
  347. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +7 -2
  348. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +12 -3
  349. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +11 -2
  350. package/src/react/ui/modals/BuyModal/store.ts +3 -0
  351. package/src/react/ui/modals/CreateListingModal/Modal.tsx +63 -24
  352. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +4 -0
  353. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +18 -12
  354. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +4 -1
  355. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +1 -0
  356. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +55 -8
  357. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +10 -0
  358. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +4 -1
  359. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +15 -26
  360. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +1 -0
  361. package/src/react/ui/modals/SellModal/Modal.tsx +21 -3
  362. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +2 -0
  363. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +3 -1
  364. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +13 -7
  365. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +9 -0
  366. package/src/react/ui/modals/_internal/components/calendarDropdown/TimeSelector.tsx +105 -0
  367. package/src/react/ui/modals/_internal/components/calendarDropdown/index.tsx +45 -12
  368. package/src/react/ui/modals/_internal/components/calendarDropdown/overrides.css +39 -0
  369. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +31 -10
  370. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +18 -9
  371. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +51 -1
  372. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +58 -10
  373. package/src/react/ui/modals/_internal/constants/opensea-currencies.ts +481 -0
  374. package/src/react/utils/waitForTransactionReceipt.ts +26 -32
  375. package/src/styles/index.css +1 -0
  376. package/src/styles/styles.ts +155 -1
  377. package/src/types/index.ts +1 -1
  378. package/src/utils/abi/index.ts +1 -0
  379. package/src/utils/abi/mainModule.ts +158 -0
  380. package/dist/CollectibleCard-C2EWF0zo.d.ts +0 -8
  381. package/dist/api-DuLKn__v.js.map +0 -1
  382. package/dist/filters-zkMJaPey.d.ts +0 -31
  383. package/dist/index-Yobo6icm.d.ts +0 -234
  384. package/dist/listCollectiblesPaginated-Bq0QSOjJ.d.ts +0 -168
  385. package/dist/lowestListing-CB5Te-Q9.d.ts +0 -168
  386. package/dist/marketplace.gen-w2YvbEEo.js.map +0 -1
  387. package/dist/marketplaceConfig-BTy75Mbf.js.map +0 -1
  388. package/dist/queries-EMA5CcwY.js +0 -1399
  389. package/dist/queries-EMA5CcwY.js.map +0 -1
  390. package/dist/react-BLJ4DkPx.js.map +0 -1
  391. package/dist/react-F03jPjPk.css +0 -80
  392. package/dist/react-F03jPjPk.css.map +0 -1
  393. package/dist/tokenSupplies-C470zTT0.d.ts +0 -147
  394. package/dist/waitForTransactionReceipt-B08YZiDY.js +0 -26
  395. package/dist/waitForTransactionReceipt-B08YZiDY.js.map +0 -1
  396. /package/dist/{index-Cg5cFzs-.d.ts → index-6wsMChsg.d.ts} +0 -0
  397. /package/dist/{abi-DYsUABe6.js → queries-KOcILNJO.js} +0 -0
@@ -59,6 +59,7 @@ describe('getERC721SalePaymentParams', () => {
59
59
  nativeTokenAddress: undefined,
60
60
  checkoutProvider: undefined,
61
61
  quantity: 1,
62
+ onRampProvider: undefined,
62
63
  };
63
64
 
64
65
  const result = await getERC721SalePaymentParams(params);
@@ -101,6 +102,7 @@ describe('getERC721SalePaymentParams', () => {
101
102
  nativeTokenAddress: undefined,
102
103
  checkoutProvider: 'stripe',
103
104
  quantity: 1,
105
+ onRampProvider: undefined,
104
106
  };
105
107
 
106
108
  const result = await getERC721SalePaymentParams(params);
@@ -122,6 +124,7 @@ describe('getERC721SalePaymentParams', () => {
122
124
  nativeTokenAddress: undefined,
123
125
  checkoutProvider: undefined,
124
126
  quantity: 1,
127
+ onRampProvider: undefined,
125
128
  };
126
129
 
127
130
  const result = await getERC721SalePaymentParams(params);
@@ -143,6 +146,7 @@ describe('getERC721SalePaymentParams', () => {
143
146
  nativeTokenAddress: undefined,
144
147
  checkoutProvider: undefined,
145
148
  quantity: 5,
149
+ onRampProvider: undefined,
146
150
  };
147
151
 
148
152
  const result = await getERC721SalePaymentParams(params);
@@ -245,7 +249,22 @@ describe('useERC721SalePaymentParams', () => {
245
249
  expect(result.current.data).toBeUndefined();
246
250
  });
247
251
 
248
- it('should use proper query key', () => {
252
+ it('should use proper query key', async () => {
253
+ // Ensure useAccount returns a connected address
254
+ const { useAccount } = vi.mocked(await import('wagmi'));
255
+ useAccount.mockReturnValue({
256
+ address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' as Address,
257
+ isConnected: true,
258
+ isConnecting: false,
259
+ isDisconnected: false,
260
+ isReconnecting: false,
261
+ connector: null,
262
+ addresses: undefined,
263
+ chain: undefined,
264
+ chainId: undefined,
265
+ status: 'connected',
266
+ } as never);
267
+
249
268
  const args = {
250
269
  salesContractAddress: mockSalesContractAddress,
251
270
  collectionAddress: mockCollectionAddress,
@@ -63,8 +63,10 @@ export const useERC1155Checkout = ({
63
63
  wallet: accountAddress ?? '',
64
64
  // Pass checkout options if available
65
65
  ...(checkoutOptions && { checkoutOptions }),
66
- onSuccess: (hash: string) => {
67
- onSuccess({ hash: hash as Hash });
66
+ onSuccess: (txHash?: string) => {
67
+ if (txHash) {
68
+ onSuccess({ hash: txHash as Hash });
69
+ }
68
70
  },
69
71
  onError: (error: Error) => {
70
72
  onError(error);
@@ -89,6 +91,9 @@ export const useERC1155Checkout = ({
89
91
  saleAnalyticsId,
90
92
  },
91
93
  successActionButtons: buyModalProps.successActionButtons,
94
+ ...(buyModalProps.onRampProvider && {
95
+ onRampProvider: buyModalProps.onRampProvider,
96
+ }),
92
97
  });
93
98
 
94
99
  return {
@@ -10,7 +10,10 @@ import {
10
10
  import { useAccount } from 'wagmi';
11
11
  import { BuyModalErrorFactory } from '../../../../../types/buyModalErrors';
12
12
  import { ERC721_SALE_ABI_V0 } from '../../../../../utils/abi';
13
- import { getQueryClient } from '../../../../_internal';
13
+ import {
14
+ getQueryClient,
15
+ type TransactionOnRampProvider,
16
+ } from '../../../../_internal';
14
17
  import type { ActionButton, ModalCallbacks } from '../../_internal/types';
15
18
  import {
16
19
  buyModalStore,
@@ -60,6 +63,7 @@ interface GetERC721SalePaymentParams {
60
63
  checkoutProvider?: string;
61
64
  quantity: number;
62
65
  successActionButtons?: ActionButton[];
66
+ onRampProvider: TransactionOnRampProvider | undefined;
63
67
  }
64
68
 
65
69
  export const getERC721SalePaymentParams = async ({
@@ -76,6 +80,7 @@ export const getERC721SalePaymentParams = async ({
76
80
  checkoutProvider,
77
81
  quantity,
78
82
  successActionButtons,
83
+ onRampProvider,
79
84
  }: GetERC721SalePaymentParams) => {
80
85
  try {
81
86
  const purchaseTransactionData = encodeERC721MintData({
@@ -107,8 +112,10 @@ export const getERC721SalePaymentParams = async ({
107
112
  collectionAddress,
108
113
  recipientAddress: address,
109
114
  creditCardProviders,
110
- onSuccess: (hash: string) => {
111
- callbacks?.onSuccess?.({ hash: hash as Hash });
115
+ onSuccess: (txHash?: string) => {
116
+ if (txHash) {
117
+ callbacks?.onSuccess?.({ hash: txHash as Hash });
118
+ }
112
119
  },
113
120
  onError: callbacks?.onError,
114
121
  onClose: () => {
@@ -130,6 +137,7 @@ export const getERC721SalePaymentParams = async ({
130
137
  },
131
138
  }),
132
139
  successActionButtons,
140
+ onRampProvider,
133
141
  } satisfies SelectPaymentSettings;
134
142
  } catch (error) {
135
143
  // Convert to structured error for better debugging
@@ -201,6 +209,7 @@ export const useERC721SalePaymentParams = (
201
209
  checkoutProvider,
202
210
  quantity,
203
211
  successActionButtons: buyModalProps.successActionButtons,
212
+ onRampProvider: buyModalProps.onRampProvider,
204
213
  })
205
214
  : skipToken,
206
215
  });
@@ -12,6 +12,7 @@ import {
12
12
  type MarketplaceKind,
13
13
  type Step,
14
14
  StepType,
15
+ type TransactionOnRampProvider,
15
16
  WalletKind,
16
17
  } from '../../../../_internal';
17
18
  import { useConfig } from '../../../../hooks';
@@ -44,6 +45,7 @@ interface GetBuyCollectableParams {
44
45
  skipNativeBalanceCheck: boolean | undefined;
45
46
  nativeTokenAddress: string | undefined;
46
47
  buyAnalyticsId: string;
48
+ onRampProvider: TransactionOnRampProvider | undefined;
47
49
  }
48
50
 
49
51
  export const getBuyCollectableParams = async ({
@@ -64,6 +66,7 @@ export const getBuyCollectableParams = async ({
64
66
  skipNativeBalanceCheck,
65
67
  nativeTokenAddress,
66
68
  buyAnalyticsId,
69
+ onRampProvider,
67
70
  }: GetBuyCollectableParams) => {
68
71
  const marketplaceClient = getMarketplaceClient(config);
69
72
  const { steps } = await marketplaceClient.generateBuyTransaction({
@@ -131,8 +134,10 @@ export const getBuyCollectableParams = async ({
131
134
  collectionAddress,
132
135
  recipientAddress: address,
133
136
  creditCardProviders,
134
- onSuccess: (hash: string) => {
135
- callbacks?.onSuccess?.({ hash: hash as Hash });
137
+ onSuccess: (txHash?: string) => {
138
+ if (txHash) {
139
+ callbacks?.onSuccess?.({ hash: txHash as Hash });
140
+ }
136
141
  },
137
142
  supplementaryAnalyticsInfo: {
138
143
  requestId: orderId,
@@ -161,6 +166,7 @@ export const getBuyCollectableParams = async ({
161
166
  contractId: transakContractId,
162
167
  },
163
168
  }),
169
+ onRampProvider,
164
170
  successActionButtons: callbacks?.successActionButtons,
165
171
  } satisfies SelectPaymentSettings;
166
172
  };
@@ -192,6 +198,7 @@ export const usePaymentModalParams = (args: usePaymentModalParams) => {
192
198
  collectionAddress,
193
199
  skipNativeBalanceCheck,
194
200
  nativeTokenAddress,
201
+ onRampProvider,
195
202
  } = buyModalProps;
196
203
 
197
204
  // Extract Marketplace-specific properties using type guard
@@ -251,7 +258,9 @@ export const usePaymentModalParams = (args: usePaymentModalParams) => {
251
258
  skipNativeBalanceCheck,
252
259
  nativeTokenAddress,
253
260
  buyAnalyticsId,
261
+ onRampProvider,
254
262
  })
255
263
  : skipToken,
264
+ retry: false,
256
265
  });
257
266
  };
@@ -6,6 +6,7 @@ import type {
6
6
  CheckoutOptionsItem,
7
7
  MarketplaceKind,
8
8
  Step,
9
+ TransactionOnRampProvider,
9
10
  } from '../../../_internal';
10
11
  import type { useAnalytics } from '../../../_internal/databeat';
11
12
  import { flattenAnalyticsArgs } from '../../../_internal/databeat/utils';
@@ -38,6 +39,8 @@ export type BuyModalBaseProps = {
38
39
  cardType?: CardType;
39
40
  customCreditCardProviderCallback?: PaymentModalProps['customCreditCardProviderCallback'];
40
41
  successActionButtons?: ActionButton[];
42
+ hideQuantitySelector?: boolean;
43
+ onRampProvider?: TransactionOnRampProvider;
41
44
  };
42
45
 
43
46
  // Shop type modal props
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { observer, Show, use$ } from '@legendapp/state/react';
4
4
  import * as dnum from 'dnum';
5
+ import { useState } from 'react';
5
6
  import { parseUnits } from 'viem';
6
7
  import { useAccount } from 'wagmi';
7
8
  import type { FeeOption } from '../../../../types/waas-types';
@@ -12,8 +13,10 @@ import {
12
13
  useCollectible,
13
14
  useCollection,
14
15
  useMarketCurrencies,
16
+ useMarketplaceConfig,
15
17
  } from '../../../hooks';
16
18
  import { useConnectorMetadata } from '../../../hooks/config/useConnectorMetadata';
19
+ import { ErrorLogBox } from '../../components/_internals/ErrorLogBox';
17
20
  import {
18
21
  ActionModal,
19
22
  type ActionModalProps,
@@ -45,10 +48,18 @@ const Modal = observer(() => {
45
48
  chainId,
46
49
  listingPrice,
47
50
  collectibleId,
48
- orderbookKind,
51
+ orderbookKind: orderbookKindProp,
49
52
  callbacks,
50
53
  listingIsBeingProcessed,
51
54
  } = state;
55
+ const { data: marketplaceConfig } = useMarketplaceConfig();
56
+ const [error, setError] = useState<Error | undefined>(undefined);
57
+
58
+ const collectionConfig = marketplaceConfig?.market.collections.find(
59
+ (c) => c.itemsAddress === collectionAddress,
60
+ );
61
+ const orderbookKind =
62
+ orderbookKindProp ?? collectionConfig?.destinationMarketplace;
52
63
  const steps$ = createListingModal$.steps;
53
64
  const { isWaaS } = useConnectorMetadata();
54
65
  const { isVisible: feeOptionsVisible, selectedFeeOption } =
@@ -107,30 +118,40 @@ const Modal = observer(() => {
107
118
  )
108
119
  : 0;
109
120
 
110
- const { isLoading, executeApproval, createListing, tokenApprovalIsLoading } =
111
- useCreateListing({
112
- listingInput: {
113
- contractType: collection?.type as ContractType,
114
- listing: {
115
- tokenId: collectibleId,
116
- quantity: parseUnits(
117
- createListingModal$.quantity.get(),
118
- collectible?.decimals || 0,
119
- ).toString(),
120
- expiry: dateToUnixTime(createListingModal$.expiry.get()),
121
- currencyAddress: listingPrice.currency.contractAddress,
122
- pricePerToken: listingPrice.amountRaw,
123
- },
121
+ const {
122
+ isLoading,
123
+ executeApproval,
124
+ createListing,
125
+ tokenApprovalIsLoading,
126
+ isError: tokenApprovalIsError,
127
+ } = useCreateListing({
128
+ listingInput: {
129
+ contractType: collection?.type as ContractType,
130
+ listing: {
131
+ tokenId: collectibleId,
132
+ quantity: parseUnits(
133
+ createListingModal$.quantity.get(),
134
+ collectible?.decimals || 0,
135
+ ).toString(),
136
+ expiry: dateToUnixTime(createListingModal$.expiry.get()),
137
+ currencyAddress: listingPrice.currency.contractAddress,
138
+ pricePerToken: listingPrice.amountRaw,
124
139
  },
125
- chainId,
126
- collectionAddress,
127
- orderbookKind,
128
- callbacks,
129
- closeMainModal: () => createListingModal$.close(),
130
- steps$: steps$,
131
- });
140
+ },
141
+ chainId,
142
+ collectionAddress,
143
+ orderbookKind,
144
+ callbacks,
145
+ closeMainModal: () => createListingModal$.close(),
146
+ steps$: steps$,
147
+ });
132
148
 
133
- if (collectableIsError || collectionIsError || currenciesIsError) {
149
+ if (
150
+ collectableIsError ||
151
+ collectionIsError ||
152
+ currenciesIsError ||
153
+ tokenApprovalIsError
154
+ ) {
134
155
  return (
135
156
  <ErrorModal
136
157
  isOpen={createListingModal$.isOpen.get()}
@@ -166,18 +187,26 @@ const Modal = observer(() => {
166
187
  });
167
188
  } catch (error) {
168
189
  console.error('Create listing failed:', error);
190
+ setError(error as Error);
169
191
  } finally {
170
192
  createListingModal$.listingIsBeingProcessed.set(false);
171
193
  steps$.transaction.isExecuting.set(false);
172
194
  }
173
195
  };
174
196
 
197
+ const handleApproveToken = async () => {
198
+ await executeApproval().catch((error) => {
199
+ console.error('Approve TOKEN failed:', error);
200
+ setError(error as Error);
201
+ });
202
+ };
203
+
175
204
  const listCtaLabel = getActionLabel('List item for sale');
176
205
 
177
206
  const ctas = [
178
207
  {
179
208
  label: 'Approve TOKEN',
180
- onClick: async () => await executeApproval(),
209
+ onClick: handleApproveToken,
181
210
  hidden: !steps$.approval.exist.get(),
182
211
  pending: steps$?.approval.isExecuting.get(),
183
212
  variant: 'glass' as const,
@@ -237,6 +266,8 @@ const Modal = observer(() => {
237
266
  createListingModal$.listingPrice.currency.set(newCurrency);
238
267
  }}
239
268
  disabled={shouldHideListButton}
269
+ orderbookKind={orderbookKind}
270
+ modalType="listing"
240
271
  />
241
272
 
242
273
  {listingPrice.amountRaw !== '0' && (
@@ -287,6 +318,14 @@ const Modal = observer(() => {
287
318
  titleOnConfirm="Processing listing..."
288
319
  />
289
320
  )}
321
+
322
+ {error && (
323
+ <ErrorLogBox
324
+ title="An error occurred while listing"
325
+ message="Please try again"
326
+ error={error}
327
+ />
328
+ )}
290
329
  </ActionModal>
291
330
  );
292
331
  });
@@ -34,6 +34,8 @@ describe('MakeOfferModal', () => {
34
34
  },
35
35
  isLoading: false,
36
36
  isSuccess: true,
37
+ isError: false,
38
+ error: null,
37
39
  });
38
40
 
39
41
  // Render the modal
@@ -64,6 +66,8 @@ describe('MakeOfferModal', () => {
64
66
  },
65
67
  isLoading: false,
66
68
  isSuccess: true,
69
+ isError: false,
70
+ error: null,
67
71
  });
68
72
 
69
73
  // Render the modal
@@ -52,18 +52,22 @@ export const useCreateListing = ({
52
52
  collectionConfig?.destinationMarketplace ??
53
53
  OrderbookKind.sequence_marketplace_v2;
54
54
 
55
- const { data: tokenApproval, isLoading: tokenApprovalIsLoading } =
56
- useGetTokenApprovalData({
57
- chainId,
58
- tokenId: listingInput.listing.tokenId,
59
- collectionAddress,
60
- currencyAddress: listingInput.listing.currencyAddress,
61
- contractType: listingInput.contractType,
62
- orderbook: orderbookKind,
63
- query: {
64
- enabled: !marketplaceIsLoading,
65
- },
66
- });
55
+ const {
56
+ data: tokenApproval,
57
+ isLoading: tokenApprovalIsLoading,
58
+ isError,
59
+ error,
60
+ } = useGetTokenApprovalData({
61
+ chainId,
62
+ tokenId: listingInput.listing.tokenId,
63
+ collectionAddress,
64
+ currencyAddress: listingInput.listing.currencyAddress,
65
+ contractType: listingInput.contractType,
66
+ orderbook: orderbookKind,
67
+ query: {
68
+ enabled: !marketplaceIsLoading,
69
+ },
70
+ });
67
71
 
68
72
  useEffect(() => {
69
73
  if (tokenApproval?.step && !tokenApprovalIsLoading) {
@@ -88,5 +92,7 @@ export const useCreateListing = ({
88
92
  createListing,
89
93
  tokenApprovalStepExists: tokenApproval?.step !== null,
90
94
  tokenApprovalIsLoading,
95
+ isError,
96
+ error,
91
97
  };
92
98
  };
@@ -43,7 +43,7 @@ export const useGetTokenApprovalData = (
43
43
  const isEnabled =
44
44
  address && (params.query?.enabled ?? true) && !!params.currencyAddress;
45
45
 
46
- const { data, isLoading, isSuccess } = useQuery({
46
+ const { data, isLoading, isSuccess, isError, error } = useQuery({
47
47
  queryKey: ['token-approval-data', params, address],
48
48
  queryFn: isEnabled
49
49
  ? async () => {
@@ -55,6 +55,7 @@ export const useGetTokenApprovalData = (
55
55
  contractType: params.contractType,
56
56
  orderbook: params.orderbook,
57
57
  listing,
58
+ additionalFees: [],
58
59
  } satisfies GenerateListingTransactionArgs;
59
60
  const steps = await marketplaceClient
60
61
  .generateListingTransaction(args)
@@ -80,5 +81,7 @@ export const useGetTokenApprovalData = (
80
81
  data,
81
82
  isLoading,
82
83
  isSuccess,
84
+ isError,
85
+ error,
83
86
  };
84
87
  };
@@ -78,6 +78,7 @@ export const useTransactionSteps = ({
78
78
  ...listingInput.listing,
79
79
  expiry: new Date(Number(listingInput.listing.expiry) * 1000),
80
80
  },
81
+ additionalFees: [],
81
82
  });
82
83
 
83
84
  return steps;
@@ -7,14 +7,16 @@ import { parseUnits } from 'viem';
7
7
  import type { FeeOption } from '../../../../types/waas-types';
8
8
  import { dateToUnixTime } from '../../../../utils/date';
9
9
  import { getNetwork } from '../../../../utils/network';
10
- import { ContractType } from '../../../_internal';
10
+ import { ContractType, OrderbookKind } from '../../../_internal';
11
11
  import {
12
12
  useCollectible,
13
13
  useCollection,
14
14
  useLowestListing,
15
15
  useMarketCurrencies,
16
+ useMarketplaceConfig,
16
17
  } from '../../../hooks';
17
18
  import { useConnectorMetadata } from '../../../hooks/config/useConnectorMetadata';
19
+ import { ErrorLogBox } from '../../components/_internals/ErrorLogBox';
18
20
  import { ActionModal } from '../_internal/components/actionModal/ActionModal';
19
21
  import { ErrorModal } from '../_internal/components/actionModal/ErrorModal';
20
22
  import ExpirationDateSelect from '../_internal/components/expirationDateSelect';
@@ -45,11 +47,21 @@ const Modal = observer(() => {
45
47
  offerPriceChanged,
46
48
  invalidQuantity,
47
49
  collectibleId,
48
- orderbookKind,
50
+ orderbookKind: orderbookKindProp,
49
51
  callbacks,
50
52
  } = state;
53
+ const { data: marketplaceConfig } = useMarketplaceConfig();
54
+ const [error, setError] = useState<Error | undefined>(undefined);
55
+
56
+ const collectionConfig = marketplaceConfig?.market.collections.find(
57
+ (c) => c.itemsAddress === collectionAddress,
58
+ );
59
+ const orderbookKind =
60
+ orderbookKindProp ?? collectionConfig?.destinationMarketplace;
51
61
  const steps$ = makeOfferModal$.steps;
52
62
  const [insufficientBalance, setInsufficientBalance] = useState(false);
63
+ const [openseaLowestPriceCriteriaMet, setOpenseaLowestPriceCriteriaMet] =
64
+ useState(true);
53
65
  const {
54
66
  data: collectible,
55
67
  isLoading: collectableIsLoading,
@@ -93,7 +105,12 @@ const Modal = observer(() => {
93
105
  const modalLoading =
94
106
  collectableIsLoading || collectionIsLoading || currenciesLoading;
95
107
 
96
- const { isLoading, executeApproval, makeOffer } = useMakeOffer({
108
+ const {
109
+ isLoading,
110
+ executeApproval,
111
+ makeOffer,
112
+ isError: approvalIsError,
113
+ } = useMakeOffer({
97
114
  offerInput: {
98
115
  contractType: collection?.type as ContractType,
99
116
  offer: {
@@ -109,8 +126,8 @@ const Modal = observer(() => {
109
126
  },
110
127
  chainId,
111
128
  collectionAddress,
112
- orderbookKind,
113
129
  callbacks,
130
+ orderbookKind,
114
131
  closeMainModal: () => makeOfferModal$.close(),
115
132
  steps$: steps$,
116
133
  });
@@ -126,7 +143,12 @@ const Modal = observer(() => {
126
143
  },
127
144
  });
128
145
 
129
- if (collectableIsError || collectionIsError || currenciesIsError) {
146
+ if (
147
+ collectableIsError ||
148
+ collectionIsError ||
149
+ currenciesIsError ||
150
+ approvalIsError
151
+ ) {
130
152
  return (
131
153
  <ErrorModal
132
154
  isOpen={makeOfferModal$.isOpen.get()}
@@ -164,18 +186,26 @@ const Modal = observer(() => {
164
186
  });
165
187
  } catch (error) {
166
188
  console.error('Make offer failed:', error);
189
+ setError(error as Error);
167
190
  } finally {
168
191
  makeOfferModal$.offerIsBeingProcessed.set(false);
169
192
  steps$.transaction.isExecuting.set(false);
170
193
  }
171
194
  };
172
195
 
196
+ const handleApproveToken = async () => {
197
+ await executeApproval().catch((error) => {
198
+ console.error('Approve TOKEN failed:', error);
199
+ setError(error as Error);
200
+ });
201
+ };
202
+
173
203
  const offerCtaLabel = getActionLabel('Make offer');
174
204
 
175
205
  const ctas = [
176
206
  {
177
207
  label: 'Approve TOKEN',
178
- onClick: async () => await executeApproval(),
208
+ onClick: handleApproveToken,
179
209
  hidden: !steps$.approval.exist.get(),
180
210
  pending: steps$.approval.isExecuting.get(),
181
211
  variant: 'glass' as const,
@@ -184,7 +214,9 @@ const Modal = observer(() => {
184
214
  isLoading ||
185
215
  insufficientBalance ||
186
216
  offerPrice.amountRaw === '0' ||
187
- !offerPriceChanged,
217
+ !offerPriceChanged ||
218
+ (orderbookKind === OrderbookKind.opensea &&
219
+ !openseaLowestPriceCriteriaMet),
188
220
  },
189
221
  {
190
222
  label: offerCtaLabel,
@@ -198,7 +230,9 @@ const Modal = observer(() => {
198
230
  offerPrice.amountRaw === '0' ||
199
231
  insufficientBalance ||
200
232
  isLoading ||
201
- invalidQuantity,
233
+ invalidQuantity ||
234
+ (orderbookKind === OrderbookKind.opensea &&
235
+ !openseaLowestPriceCriteriaMet),
202
236
  },
203
237
  ];
204
238
 
@@ -240,6 +274,11 @@ const Modal = observer(() => {
240
274
  enabled: true,
241
275
  callback: (state) => setInsufficientBalance(state),
242
276
  }}
277
+ setOpenseaLowestPriceCriteriaMet={(state) =>
278
+ setOpenseaLowestPriceCriteriaMet(state)
279
+ }
280
+ orderbookKind={orderbookKind}
281
+ modalType="offer"
243
282
  disabled={shouldHideOfferButton}
244
283
  />
245
284
 
@@ -298,6 +337,14 @@ const Modal = observer(() => {
298
337
  titleOnConfirm="Processing offer..."
299
338
  />
300
339
  )}
340
+
341
+ {error && (
342
+ <ErrorLogBox
343
+ title="An error occurred while making an offer"
344
+ message="Please try again"
345
+ error={error}
346
+ />
347
+ )}
301
348
  </ActionModal>
302
349
  );
303
350
  });
@@ -45,6 +45,8 @@ describe('MakeOfferModal', () => {
45
45
  data: { step: null }, // No approval needed by default
46
46
  isLoading: false,
47
47
  isSuccess: true,
48
+ isError: false,
49
+ error: null,
48
50
  });
49
51
  });
50
52
 
@@ -80,6 +82,8 @@ describe('MakeOfferModal', () => {
80
82
  }, // Approval needed
81
83
  isLoading: false,
82
84
  isSuccess: true,
85
+ isError: false,
86
+ error: null,
83
87
  });
84
88
 
85
89
  // Render the modal
@@ -107,6 +111,8 @@ describe('MakeOfferModal', () => {
107
111
  data: { step: null },
108
112
  isLoading: false,
109
113
  isSuccess: true,
114
+ isError: false,
115
+ error: null,
110
116
  });
111
117
  });
112
118
 
@@ -123,6 +129,8 @@ describe('MakeOfferModal', () => {
123
129
  }, // Approval needed
124
130
  isLoading: false,
125
131
  isSuccess: true,
132
+ isError: false,
133
+ error: null,
126
134
  });
127
135
 
128
136
  makeOfferModal$.open(defaultArgs);
@@ -150,6 +158,8 @@ describe('MakeOfferModal', () => {
150
158
  data: { step: null }, // No approval needed
151
159
  isLoading: false,
152
160
  isSuccess: true,
161
+ isError: false,
162
+ error: null,
153
163
  });
154
164
 
155
165
  makeOfferModal$.open(defaultArgs);
@@ -42,7 +42,7 @@ export const useGetTokenApprovalData = (
42
42
 
43
43
  const isEnabled = address && params.query?.enabled !== false;
44
44
 
45
- const { data, isLoading, isSuccess } = useQuery({
45
+ const { data, isLoading, isSuccess, isError, error } = useQuery({
46
46
  queryKey: ['token-approval-data', params.currencyAddress],
47
47
  queryFn: isEnabled
48
48
  ? async () => {
@@ -54,6 +54,7 @@ export const useGetTokenApprovalData = (
54
54
  contractType: params.contractType,
55
55
  orderbook: params.orderbook,
56
56
  offer,
57
+ additionalFees: [],
57
58
  } satisfies GenerateOfferTransactionArgs;
58
59
  const steps = await marketplaceClient
59
60
  .generateOfferTransaction(args)
@@ -81,5 +82,7 @@ export const useGetTokenApprovalData = (
81
82
  data,
82
83
  isLoading,
83
84
  isSuccess,
85
+ isError,
86
+ error,
84
87
  };
85
88
  };