@0xsequence/marketplace-sdk 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/CHANGELOG.md +58 -5
  2. package/dist/{BellIcon-IpHHEy8h.js → BellIcon-DMKEumAz.js} +2 -2
  3. package/dist/BellIcon-DMKEumAz.js.map +1 -0
  4. package/dist/{CartIcon-C8zbor8H.js → CartIcon-UyB4NYKt.js} +3 -3
  5. package/dist/CartIcon-UyB4NYKt.js.map +1 -0
  6. package/dist/CollectibleCard-z05qWzKE.d.ts +8 -0
  7. package/dist/_internal-DkS2VUn5.js.map +1 -1
  8. package/dist/abi-fa-o9gH3.js +134 -0
  9. package/dist/abi-fa-o9gH3.js.map +1 -0
  10. package/dist/{alien_swap-BTJ7mSR-.js → alien_swap-Cq8LuElo.js} +1 -1
  11. package/dist/{alien_swap-BTJ7mSR-.js.map → alien_swap-Cq8LuElo.js.map} +1 -1
  12. package/dist/{api-DuLKn__v.js → api-GwTR0dBA.js} +13 -49
  13. package/dist/api-GwTR0dBA.js.map +1 -0
  14. package/dist/{aqua-xyz-BYJ9WSP_.js → aqua-xyz-0yye_c-Z.js} +1 -1
  15. package/dist/{aqua-xyz-BYJ9WSP_.js.map → aqua-xyz-0yye_c-Z.js.map} +1 -1
  16. package/dist/{aura-D7SUjgro.js → aura-TaxFvTFQ.js} +1 -1
  17. package/dist/{aura-D7SUjgro.js.map → aura-TaxFvTFQ.js.map} +1 -1
  18. package/dist/{blur-BcnRFCaV.js → blur-BupOTobO.js} +1 -1
  19. package/dist/{blur-BcnRFCaV.js.map → blur-BupOTobO.js.map} +1 -1
  20. package/dist/{builder-api-BFuZNOaN.js → builder-api-m4JAA6ee.js} +3 -3
  21. package/dist/builder-api-m4JAA6ee.js.map +1 -0
  22. package/dist/{builder.gen-B9wR2nvF.js → builder.gen--XD71cNL.js} +2 -2
  23. package/dist/builder.gen--XD71cNL.js.map +1 -0
  24. package/dist/{coinbase-ChoX9Hw2.js → coinbase-DTgZ4wDT.js} +1 -1
  25. package/dist/{coinbase-ChoX9Hw2.js.map → coinbase-DTgZ4wDT.js.map} +1 -1
  26. package/dist/collectibles-CZ6i8sXK.js +324 -0
  27. package/dist/collectibles-CZ6i8sXK.js.map +1 -0
  28. package/dist/collections-5NcU-7ZR.js +331 -0
  29. package/dist/collections-5NcU-7ZR.js.map +1 -0
  30. package/dist/{components-CUv-wQr8.js → components-CY8kx2kb.js} +13 -9
  31. package/dist/components-CY8kx2kb.js.map +1 -0
  32. package/dist/{contracts-D72LBOX3.js → contracts-DRJHF89h.js} +5 -4
  33. package/dist/{contracts-D72LBOX3.js.map → contracts-DRJHF89h.js.map} +1 -1
  34. package/dist/{create-config-CIfejoCk.js → create-config-BxyfYCEk.js} +6 -5
  35. package/dist/create-config-BxyfYCEk.js.map +1 -0
  36. package/dist/{create-config-DV_dtaLt.d.ts → create-config-CFBeD8CB.d.ts} +149 -57
  37. package/dist/{element-Dbcv5qya.js → element-D4dDznlu.js} +1 -1
  38. package/dist/{element-Dbcv5qya.js.map → element-D4dDznlu.js.map} +1 -1
  39. package/dist/filters-B5niI_fX.d.ts +60 -0
  40. package/dist/{foundation-QPhUEUy8.js → foundation-GHZOKAzN.js} +1 -1
  41. package/dist/{foundation-QPhUEUy8.js.map → foundation-GHZOKAzN.js.map} +1 -1
  42. package/dist/index-8scPf0CS.d.ts +55 -0
  43. package/dist/index-9qsplZ8r.d.ts +18 -0
  44. package/dist/index-BIuYTMc2.d.ts +122 -0
  45. package/dist/{index-BoNNplSx.d.ts → index-BNrz99xy.d.ts} +3 -3
  46. package/dist/{index-BaytncQc.d.ts → index-BYQOPS8e.d.ts} +108 -51
  47. package/dist/{index-CXscCUg7.d.ts → index-BkZ7SPLc.d.ts} +19 -29
  48. package/dist/{index-D6YMj82n.d.ts → index-BnUku_aF.d.ts} +109 -114
  49. package/dist/index-BtDAHMW_.d.ts +50 -0
  50. package/dist/index-C-c_M_sE.d.ts +107 -0
  51. package/dist/index-CKefEBrI.d.ts +1 -0
  52. package/dist/{index-CMPUveNz.d.ts → index-CNIiC8Z_.d.ts} +11 -8
  53. package/dist/{index-DLUjc7Bx.d.ts → index-CbERNN3s.d.ts} +201 -12
  54. package/dist/{index-C768pAfu.d.ts → index-CsfxsN0t.d.ts} +4 -4
  55. package/dist/{index-CQecU53t.d.ts → index-DASjaiJL.d.ts} +119 -24
  56. package/dist/{index-CT8ZorFd.d.ts → index-DD7Vc4cE.d.ts} +2 -2
  57. package/dist/{index-DpeWm_vF.d.ts → index-DIc8OqWV.d.ts} +7 -6
  58. package/dist/index-DVI_vggD.d.ts +171 -0
  59. package/dist/index-DgsCqh_P.d.ts +1 -0
  60. package/dist/{index-DMBMM16q.d.ts → index-DqxQeYT2.d.ts} +39 -36
  61. package/dist/{index-D-UXGo5d.d.ts → index-Dsf9FRtr.d.ts} +19 -3
  62. package/dist/{index-DJG0kiII.d.ts → index-DxAReMEO.d.ts} +45 -34
  63. package/dist/index-UXRoZmd_.d.ts +70 -0
  64. package/dist/{index-CM0ZTePs.d.ts → index-isFvc5gd.d.ts} +2 -2
  65. package/dist/{index-jGgfEHfQ.d.ts → index-j3nuJWyJ.d.ts} +18 -10
  66. package/dist/{index-B6aSbaw2.d.ts → index-nVb7o0hc.d.ts} +2 -2
  67. package/dist/{index-Bv5XVLjH.d.ts → index-pbE88Tt7.d.ts} +2 -2
  68. package/dist/index-xpO4AQyS.d.ts +1 -0
  69. package/dist/index.d.ts +8 -8
  70. package/dist/index.js +13 -13
  71. package/dist/inventory--t6Zu55O.js +75 -0
  72. package/dist/inventory--t6Zu55O.js.map +1 -0
  73. package/dist/listCollectiblesPaginated-BlE5mSzh.d.ts +327 -0
  74. package/dist/listCollections-DWyqFSQ3.d.ts +828 -0
  75. package/dist/{looks-rare-C7cQztTR.js → looks-rare-2HBhMpOf.js} +1 -1
  76. package/dist/{looks-rare-C7cQztTR.js.map → looks-rare-2HBhMpOf.js.map} +1 -1
  77. package/dist/lowestListing-DsunDO1c.d.ts +475 -0
  78. package/dist/{magic-eden-D3r7jiBG.js → magic-eden-BYdTp-uk.js} +1 -1
  79. package/dist/{magic-eden-D3r7jiBG.js.map → magic-eden-BYdTp-uk.js.map} +1 -1
  80. package/dist/{manifold-DsX0CBP-.js → manifold-yE0x6ZmO.js} +1 -1
  81. package/dist/{manifold-DsX0CBP-.js.map → manifold-yE0x6ZmO.js.map} +1 -1
  82. package/dist/market-DuBpFsDg.js +219 -0
  83. package/dist/market-DuBpFsDg.js.map +1 -0
  84. package/dist/{marketCurrencies-Bzj8X4TL.d.ts → marketCurrencies-BgwmbGFk.d.ts} +57 -15
  85. package/dist/marketCurrencies-Bolonndy.js +59 -0
  86. package/dist/marketCurrencies-Bolonndy.js.map +1 -0
  87. package/dist/{marketplace-BYY8OloA.js → marketplace-NQB-sEQL.js} +1 -1
  88. package/dist/{marketplace-BYY8OloA.js.map → marketplace-NQB-sEQL.js.map} +1 -1
  89. package/dist/{marketplace-logos-Csv2MBwf.js → marketplace-logos-Cz9RrtQo.js} +21 -21
  90. package/dist/marketplace-logos-Cz9RrtQo.js.map +1 -0
  91. package/dist/{marketplace.gen-w2YvbEEo.js → marketplace.gen-906FrJQJ.js} +75 -5
  92. package/dist/marketplace.gen-906FrJQJ.js.map +1 -0
  93. package/dist/{marketplaceConfig-BTy75Mbf.js → marketplaceConfig-Bqjo7NYO.js} +9 -5
  94. package/dist/marketplaceConfig-Bqjo7NYO.js.map +1 -0
  95. package/dist/{mintify-DiOoDmO1.js → mintify-BXQx3mZB.js} +1 -1
  96. package/dist/{mintify-DiOoDmO1.js.map → mintify-BXQx3mZB.js.map} +1 -1
  97. package/dist/{network-DtmiMhcg.js → network-DwdZ_5-7.js} +2 -2
  98. package/dist/network-DwdZ_5-7.js.map +1 -0
  99. package/dist/{networkconfigToWagmiChain-DbUf6HiO.js → networkconfigToWagmiChain-Ct-hGq8M.js} +4 -3
  100. package/dist/networkconfigToWagmiChain-Ct-hGq8M.js.map +1 -0
  101. package/dist/{nftx-CP82jNra.js → nftx-B929_3Ce.js} +1 -1
  102. package/dist/{nftx-CP82jNra.js.map → nftx-B929_3Ce.js.map} +1 -1
  103. package/dist/{okx-p9-4xRjs.js → okx-sZ0-Udny.js} +1 -1
  104. package/dist/{okx-p9-4xRjs.js.map → okx-sZ0-Udny.js.map} +1 -1
  105. package/dist/{open-sea-D2GwAmKS.js → open-sea-DO9PhTrz.js} +1 -1
  106. package/dist/{open-sea-D2GwAmKS.js.map → open-sea-DO9PhTrz.js.map} +1 -1
  107. package/dist/orders-DH76ym2e.js +469 -0
  108. package/dist/orders-DH76ym2e.js.map +1 -0
  109. package/dist/{primary-sale-DOmNDq2P.js → primary-sale-1u4QlPdA.js} +1 -1
  110. package/dist/{primary-sale-DOmNDq2P.js.map → primary-sale-1u4QlPdA.js.map} +1 -1
  111. package/dist/primary-sales-CECrqatg.js +156 -0
  112. package/dist/primary-sales-CECrqatg.js.map +1 -0
  113. package/dist/{query-BG-MA1MB.d.ts → query-brXxOcH0.d.ts} +1 -1
  114. package/dist/{rarible-DqiiW9ki.js → rarible-Ccb2hs7y.js} +1 -1
  115. package/dist/{rarible-DqiiW9ki.js.map → rarible-Ccb2hs7y.js.map} +1 -1
  116. package/dist/react/_internal/api/index.d.ts +2 -2
  117. package/dist/react/_internal/api/index.js +6 -6
  118. package/dist/react/_internal/databeat/index.d.ts +1 -1
  119. package/dist/react/_internal/databeat/index.js +32 -22
  120. package/dist/react/_internal/index.d.ts +2 -2
  121. package/dist/react/_internal/index.js +8 -8
  122. package/dist/react/_internal/wagmi/index.d.ts +1 -1
  123. package/dist/react/_internal/wagmi/index.js +3 -3
  124. package/dist/react/hooks/config/index.d.ts +8 -8
  125. package/dist/react/hooks/config/index.js +32 -22
  126. package/dist/react/hooks/contracts/index.d.ts +6 -6
  127. package/dist/react/hooks/contracts/index.js +12 -12
  128. package/dist/react/hooks/data/collectibles/index.d.ts +10 -4
  129. package/dist/react/hooks/data/collectibles/index.js +32 -22
  130. package/dist/react/hooks/data/collections/index.d.ts +11 -11
  131. package/dist/react/hooks/data/collections/index.js +33 -23
  132. package/dist/react/hooks/data/index.d.ts +37 -29
  133. package/dist/react/hooks/data/index.js +33 -23
  134. package/dist/react/hooks/data/inventory/index.d.ts +36 -28
  135. package/dist/react/hooks/data/inventory/index.js +32 -22
  136. package/dist/react/hooks/data/market/index.d.ts +11 -5
  137. package/dist/react/hooks/data/market/index.js +32 -22
  138. package/dist/react/hooks/data/orders/index.d.ts +11 -5
  139. package/dist/react/hooks/data/orders/index.js +33 -23
  140. package/dist/react/hooks/data/primary-sales/index.d.ts +37 -29
  141. package/dist/react/hooks/data/primary-sales/index.js +33 -23
  142. package/dist/react/hooks/data/tokens/index.d.ts +4 -4
  143. package/dist/react/hooks/data/tokens/index.js +32 -22
  144. package/dist/react/hooks/index.d.ts +37 -29
  145. package/dist/react/hooks/index.js +33 -23
  146. package/dist/react/hooks/transactions/index.d.ts +2 -2
  147. package/dist/react/hooks/transactions/index.js +32 -22
  148. package/dist/react/hooks/ui/index.d.ts +4 -4
  149. package/dist/react/hooks/ui/index.js +32 -22
  150. package/dist/react/hooks/utils/index.d.ts +36 -28
  151. package/dist/react/hooks/utils/index.js +32 -22
  152. package/dist/react/index.d.ts +37 -29
  153. package/dist/react/index.js +33 -23
  154. package/dist/react/queries/collectibles/index.d.ts +11 -0
  155. package/dist/react/queries/collectibles/index.js +22 -0
  156. package/dist/react/queries/collections/index.d.ts +11 -0
  157. package/dist/react/queries/collections/index.js +20 -0
  158. package/dist/react/queries/index.d.ts +24 -16
  159. package/dist/react/queries/index.js +26 -16
  160. package/dist/react/queries/inventory/index.d.ts +3 -0
  161. package/dist/react/queries/inventory/index.js +22 -0
  162. package/dist/react/queries/market/index.d.ts +6 -0
  163. package/dist/react/queries/market/index.js +22 -0
  164. package/dist/react/queries/orders/index.d.ts +11 -0
  165. package/dist/react/queries/orders/index.js +13 -0
  166. package/dist/react/queries/primary-sales/index.d.ts +4 -0
  167. package/dist/react/queries/primary-sales/index.js +13 -0
  168. package/dist/react/queries/tokens/index.d.ts +5 -0
  169. package/dist/react/queries/tokens/index.js +13 -0
  170. package/dist/react/queries/utils/index.d.ts +4 -0
  171. package/dist/react/queries/utils/index.js +22 -0
  172. package/dist/react/ssr/index.d.ts +7 -7
  173. package/dist/react/ssr/index.js +8 -8
  174. package/dist/react/ssr/index.js.map +1 -1
  175. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.d.ts +2 -2
  176. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.js +16 -16
  177. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.d.ts +7 -10
  178. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.js +32 -22
  179. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +4 -4
  180. package/dist/react/ui/components/marketplace-collectible-card/index.js +32 -22
  181. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -2
  182. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +8 -8
  183. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  184. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  185. package/dist/react/ui/icons/index.js +12 -12
  186. package/dist/react/ui/index.d.ts +4 -4
  187. package/dist/react/ui/index.js +32 -22
  188. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +2 -2
  189. package/dist/react/ui/modals/_internal/components/actionModal/index.js +32 -22
  190. package/dist/react/utils/index.d.ts +3 -3
  191. package/dist/react/utils/index.js +6 -6
  192. package/dist/{react-BLJ4DkPx.js → react-CBsgOdVP.js} +1540 -474
  193. package/dist/react-CBsgOdVP.js.map +1 -0
  194. package/dist/{sequence-Bbb-TFKg.js → sequence-CRdb1yEs.js} +1 -1
  195. package/dist/{sequence-Bbb-TFKg.js.map → sequence-CRdb1yEs.js.map} +1 -1
  196. package/dist/styles/index.css +155 -1
  197. package/dist/{sudo-swap-CEPIM3Js.js → sudo-swap-BIklG2gq.js} +1 -1
  198. package/dist/{sudo-swap-CEPIM3Js.js.map → sudo-swap-BIklG2gq.js.map} +1 -1
  199. package/dist/{super-rare-CMEn9PoO.js → super-rare-h8645_5E.js} +1 -1
  200. package/dist/{super-rare-CMEn9PoO.js.map → super-rare-h8645_5E.js.map} +1 -1
  201. package/dist/{token-CcyLz8Z8.js → token-Cv7l2ZaL.js} +1 -1
  202. package/dist/{token-CcyLz8Z8.js.map → token-Cv7l2ZaL.js.map} +1 -1
  203. package/dist/tokenBalances-CouzNX4j.js +57 -0
  204. package/dist/tokenBalances-CouzNX4j.js.map +1 -0
  205. package/dist/tokenSupplies-C3zJll0M.d.ts +265 -0
  206. package/dist/tokens-BvIRUCGG.js +225 -0
  207. package/dist/tokens-BvIRUCGG.js.map +1 -0
  208. package/dist/transaction-DZUW5RHu.js.map +1 -1
  209. package/dist/types/index.d.ts +1 -1
  210. package/dist/types/index.js +2 -2
  211. package/dist/types-B_-cnkcP.js.map +1 -1
  212. package/dist/{types-D6LkVrF0.d.ts → types-CMDwfhfR.d.ts} +6 -5
  213. package/dist/utils/abi/index.d.ts +5 -5
  214. package/dist/utils/abi/index.js +5 -5
  215. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  216. package/dist/utils/abi/marketplace/index.js +1 -1
  217. package/dist/utils/abi/primary-sale/index.d.ts +1 -1
  218. package/dist/utils/abi/primary-sale/index.js +1 -1
  219. package/dist/utils/abi/token/index.d.ts +1 -1
  220. package/dist/utils/abi/token/index.js +1 -1
  221. package/dist/utils/index.d.ts +7 -7
  222. package/dist/utils/index.js +11 -11
  223. package/dist/{utils-BZEkdqWK.js → utils-9ToOvt-c.js} +50 -7
  224. package/dist/utils-9ToOvt-c.js.map +1 -0
  225. package/dist/{utils-oVZxdK0o.js → utils-B6di6O-C.js} +2 -2
  226. package/dist/utils-B6di6O-C.js.map +1 -0
  227. package/dist/utils-BCYTEOvy.js +122 -0
  228. package/dist/utils-BCYTEOvy.js.map +1 -0
  229. package/dist/waitForTransactionReceipt-CbSeUSXe.js +26 -0
  230. package/dist/waitForTransactionReceipt-CbSeUSXe.js.map +1 -0
  231. package/dist/{x2y2-DNe6JgtG.js → x2y2-OvF__ugj.js} +1 -1
  232. package/dist/{x2y2-DNe6JgtG.js.map → x2y2-OvF__ugj.js.map} +1 -1
  233. package/dist/{zora-w0Zqxxs4.js → zora-DzCeu-eE.js} +1 -1
  234. package/dist/{zora-w0Zqxxs4.js.map → zora-DzCeu-eE.js.map} +1 -1
  235. package/package.json +46 -41
  236. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +15 -0
  237. package/src/react/_internal/api/index.ts +0 -1
  238. package/src/react/_internal/api/marketplace.gen.ts +1774 -2383
  239. package/src/react/_internal/api/query-keys.ts +23 -0
  240. package/src/react/_internal/api/services.ts +1 -1
  241. package/src/react/_internal/databeat/types.ts +1 -0
  242. package/src/react/_internal/types.ts +14 -0
  243. package/src/react/_internal/utils.ts +3 -0
  244. package/src/react/hooks/config/useMarketplaceConfig.tsx +1 -1
  245. package/src/react/hooks/data/collectibles/useBalanceOfCollectible.tsx +1 -10
  246. package/src/react/hooks/data/collectibles/useCollectible.tsx +1 -1
  247. package/src/react/hooks/data/collectibles/useCountOfCollectables.tsx +1 -1
  248. package/src/react/hooks/data/collectibles/useListCollectibleActivities.tsx +1 -1
  249. package/src/react/hooks/data/collectibles/useListCollectibles.tsx +2 -17
  250. package/src/react/hooks/data/collectibles/useListCollectiblesPaginated.tsx +1 -1
  251. package/src/react/hooks/data/collectibles/useTokenBalances.tsx +1 -10
  252. package/src/react/hooks/data/collections/index.ts +2 -0
  253. package/src/react/hooks/data/collections/useCollection.tsx +1 -1
  254. package/src/react/hooks/data/collections/useCollectionActiveListingsCurrencies.test.tsx +112 -0
  255. package/src/react/hooks/data/collections/useCollectionActiveListingsCurrencies.tsx +74 -0
  256. package/src/react/hooks/data/collections/useCollectionActiveOffersCurrencies.test.tsx +110 -0
  257. package/src/react/hooks/data/collections/useCollectionActiveOffersCurrencies.tsx +74 -0
  258. package/src/react/hooks/data/collections/useCollectionBalanceDetails.tsx +1 -1
  259. package/src/react/hooks/data/collections/useCollectionDetails.ts +1 -1
  260. package/src/react/hooks/data/collections/useListCollectionActivities.tsx +1 -1
  261. package/src/react/hooks/data/collections/useListCollections.tsx +1 -1
  262. package/src/react/hooks/data/inventory/useInventory.tsx +2 -11
  263. package/src/react/hooks/data/market/useCurrency.tsx +1 -1
  264. package/src/react/hooks/data/market/useListMarketCardData.tsx +7 -0
  265. package/src/react/hooks/data/market/useMarketCurrencies.test.tsx +31 -2
  266. package/src/react/hooks/data/market/useMarketCurrencies.tsx +1 -1
  267. package/src/react/hooks/data/orders/index.ts +4 -0
  268. package/src/react/hooks/data/orders/useCountItemsOrdersForCollection.tsx +90 -0
  269. package/src/react/hooks/data/orders/useCountListingsForCollectible.tsx +1 -1
  270. package/src/react/hooks/data/orders/useCountOffersForCollectible.tsx +1 -1
  271. package/src/react/hooks/data/orders/useFloorOrder.tsx +1 -1
  272. package/src/react/hooks/data/orders/useGetCountOfFilteredOrders.tsx +39 -0
  273. package/src/react/hooks/data/orders/useHighestOffer.tsx +1 -1
  274. package/src/react/hooks/data/orders/useListItemsOrdersForCollection.tsx +93 -0
  275. package/src/react/hooks/data/orders/useListItemsOrdersForCollectionPaginated.tsx +108 -0
  276. package/src/react/hooks/data/orders/useListListingsForCollectible.tsx +1 -1
  277. package/src/react/hooks/data/orders/useListOffersForCollectible.tsx +1 -1
  278. package/src/react/hooks/data/orders/useLowestListing.tsx +1 -1
  279. package/src/react/hooks/data/primary-sales/index.ts +1 -0
  280. package/src/react/hooks/data/primary-sales/useGetCountOfPrimarySaleItems.tsx +2 -2
  281. package/src/react/hooks/data/primary-sales/useListPrimarySaleItems.tsx +1 -1
  282. package/src/react/hooks/data/primary-sales/usePrimarySaleItem.tsx +71 -0
  283. package/src/react/hooks/data/tokens/useGetTokenRanges.tsx +2 -2
  284. package/src/react/hooks/data/tokens/useListBalances.tsx +3 -12
  285. package/src/react/hooks/data/tokens/useListTokenMetadata.tsx +1 -1
  286. package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +1 -1
  287. package/src/react/hooks/data/tokens/useTokenSupplies.ts +2 -14
  288. package/src/react/hooks/transactions/useGenerateCancelTransaction.test.tsx +1 -0
  289. package/src/react/hooks/transactions/useGenerateListingTransaction.test.tsx +13 -0
  290. package/src/react/hooks/transactions/useGenerateOfferTransaction.test.tsx +3 -0
  291. package/src/react/hooks/transactions/useGenerateSellTransaction.test.tsx +6 -0
  292. package/src/react/hooks/transactions/useProcessStep.test.tsx +8 -6
  293. package/src/react/hooks/transactions/useProcessStep.ts +8 -6
  294. package/src/react/hooks/ui/useFilterState.tsx +72 -2
  295. package/src/react/hooks/ui/useFilters.tsx +1 -1
  296. package/src/react/hooks/utils/useCheckoutOptions.tsx +2 -2
  297. package/src/react/hooks/utils/useCheckoutOptionsSalesContract.tsx +1 -1
  298. package/src/react/hooks/utils/useComparePrices.test.tsx +1 -1
  299. package/src/react/hooks/utils/useComparePrices.tsx +1 -1
  300. package/src/react/hooks/utils/useConvertPriceToUSD.tsx +1 -1
  301. package/src/react/providers/analytics-provider.tsx +45 -0
  302. package/src/react/providers/index.tsx +30 -41
  303. package/src/react/providers/modal-provider.tsx +14 -2
  304. package/src/react/queries/{balanceOfCollectible.ts → collectibles/balanceOfCollectible.ts} +23 -16
  305. package/src/react/queries/{collectible.ts → collectibles/collectible.ts} +20 -5
  306. package/src/react/queries/{countOfCollectables.ts → collectibles/countOfCollectables.ts} +32 -6
  307. package/src/react/queries/collectibles/index.ts +7 -0
  308. package/src/react/queries/{listCollectibleActivities.ts → collectibles/listCollectibleActivities.ts} +29 -5
  309. package/src/react/queries/{listCollectibles.ts → collectibles/listCollectibles.ts} +22 -56
  310. package/src/react/queries/{listCollectiblesPaginated.ts → collectibles/listCollectiblesPaginated.ts} +22 -5
  311. package/src/react/queries/{tokenBalances.ts → collectibles/tokenBalances.ts} +20 -16
  312. package/src/react/queries/collections/activeListingsCurrencies.ts +84 -0
  313. package/src/react/queries/collections/activeOffersCurrencies.ts +84 -0
  314. package/src/react/queries/{collection.ts → collections/collection.ts} +19 -5
  315. package/src/react/queries/{collectionBalanceDetails.ts → collections/collectionBalanceDetails.ts} +19 -4
  316. package/src/react/queries/{collectionDetails.ts → collections/collectionDetails.ts} +21 -6
  317. package/src/react/queries/collections/index.ts +7 -0
  318. package/src/react/queries/{listCollectionActivities.ts → collections/listCollectionActivities.ts} +28 -6
  319. package/src/react/queries/{listCollections.ts → collections/listCollections.ts} +17 -6
  320. package/src/react/queries/index.ts +7 -34
  321. package/src/react/queries/inventory/index.ts +1 -0
  322. package/src/react/queries/{inventory.ts → inventory/inventory.ts} +13 -14
  323. package/src/react/queries/{checkoutOptions.ts → market/checkoutOptions.ts} +28 -6
  324. package/src/react/queries/{checkoutOptionsSalesContract.ts → market/checkoutOptionsSalesContract.ts} +24 -5
  325. package/src/react/queries/{currency.ts → market/currency.ts} +13 -4
  326. package/src/react/queries/{filters.ts → market/filters.ts} +25 -6
  327. package/src/react/queries/market/index.ts +6 -0
  328. package/src/react/queries/{marketCurrencies.ts → market/marketCurrencies.ts} +32 -6
  329. package/src/react/queries/{marketplaceConfig.ts → market/marketplaceConfig.ts} +5 -5
  330. package/src/react/queries/orders/countItemsOrdersForCollection.ts +86 -0
  331. package/src/react/queries/{countListingsForCollectible.ts → orders/countListingsForCollectible.ts} +23 -6
  332. package/src/react/queries/{countOffersForCollectible.ts → orders/countOffersForCollectible.ts} +23 -6
  333. package/src/react/queries/{floorOrder.ts → orders/floorOrder.ts} +15 -4
  334. package/src/react/queries/orders/getCountOfFilteredOrders.ts +88 -0
  335. package/src/react/queries/{highestOffer.ts → orders/highestOffer.ts} +16 -4
  336. package/src/react/queries/orders/index.ts +11 -0
  337. package/src/react/queries/orders/listItemsOrdersForCollection.ts +90 -0
  338. package/src/react/queries/orders/listItemsOrdersForCollectionPaginated.ts +90 -0
  339. package/src/react/queries/{listListingsForCollectible.ts → orders/listListingsForCollectible.ts} +20 -5
  340. package/src/react/queries/{listOffersForCollectible.ts → orders/listOffersForCollectible.ts} +20 -5
  341. package/src/react/queries/{lowestListing.ts → orders/lowestListing.ts} +16 -4
  342. package/src/react/queries/{countOfPrimarySaleItems.ts → primary-sales/countOfPrimarySaleItems.ts} +17 -3
  343. package/src/react/queries/primary-sales/index.ts +4 -0
  344. package/src/react/queries/primary-sales/primarySaleItem.ts +80 -0
  345. package/src/react/queries/{primarySaleItems.ts → primary-sales/primarySaleItems.ts} +18 -4
  346. package/src/react/queries/{primarySaleItemsCount.ts → primary-sales/primarySaleItemsCount.ts} +19 -4
  347. package/src/react/queries/{getTokenRanges.ts → tokens/getTokenRanges.ts} +17 -4
  348. package/src/react/queries/tokens/index.ts +5 -0
  349. package/src/react/queries/{listBalances.ts → tokens/listBalances.ts} +17 -22
  350. package/src/react/queries/{listTokenMetadata.ts → tokens/listTokenMetadata.ts} +18 -4
  351. package/src/react/queries/{searchTokenMetadata.ts → tokens/searchTokenMetadata.ts} +18 -4
  352. package/src/react/queries/{tokenSupplies.ts → tokens/tokenSupplies.ts} +17 -34
  353. package/src/react/queries/{comparePrices.ts → utils/comparePrices.ts} +29 -5
  354. package/src/react/queries/{convertPriceToUSD.ts → utils/convertPriceToUSD.ts} +18 -5
  355. package/src/react/queries/utils/index.ts +2 -0
  356. package/src/react/ssr/create-ssr-client.ts +1 -1
  357. package/src/react/ui/components/_internals/ErrorLogBox.tsx +85 -0
  358. package/src/react/ui/components/_internals/action-button/ActionButton.stories.tsx +2 -0
  359. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +4 -0
  360. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +4 -0
  361. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +3 -0
  362. package/src/react/ui/components/marketplace-collectible-card/components/footer/Footer.tsx +4 -18
  363. package/src/react/ui/components/marketplace-collectible-card/types.ts +1 -0
  364. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +5 -2
  365. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +2 -2
  366. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +3 -0
  367. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +1 -0
  368. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +65 -3
  369. package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +31 -0
  370. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +20 -1
  371. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +7 -2
  372. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +12 -3
  373. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +11 -25
  374. package/src/react/ui/modals/BuyModal/store.ts +3 -0
  375. package/src/react/ui/modals/CreateListingModal/Modal.tsx +63 -24
  376. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +4 -0
  377. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +18 -12
  378. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +4 -1
  379. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +1 -0
  380. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +77 -10
  381. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +12 -0
  382. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +6 -1
  383. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +15 -26
  384. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +3 -0
  385. package/src/react/ui/modals/SellModal/Modal.tsx +21 -3
  386. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +2 -0
  387. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +3 -1
  388. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +13 -7
  389. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +9 -0
  390. package/src/react/ui/modals/_internal/components/calendarDropdown/TimeSelector.tsx +105 -0
  391. package/src/react/ui/modals/_internal/components/calendarDropdown/index.tsx +45 -12
  392. package/src/react/ui/modals/_internal/components/calendarDropdown/overrides.css +39 -0
  393. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +34 -10
  394. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +18 -9
  395. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +2 -0
  396. package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +1 -1
  397. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +198 -11
  398. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +58 -10
  399. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/utils.test.ts +2 -0
  400. package/src/react/utils/waitForTransactionReceipt.ts +26 -32
  401. package/src/styles/index.css +1 -0
  402. package/src/styles/styles.ts +156 -2
  403. package/src/types/index.ts +1 -1
  404. package/src/utils/abi/index.ts +1 -0
  405. package/src/utils/abi/mainModule.ts +158 -0
  406. package/src/utils/networkconfigToWagmiChain.ts +7 -0
  407. package/src/utils/price.ts +58 -0
  408. package/test/const.ts +2 -0
  409. package/test/server-setup.ts +0 -2
  410. package/dist/BellIcon-IpHHEy8h.js.map +0 -1
  411. package/dist/CartIcon-C8zbor8H.js.map +0 -1
  412. package/dist/CollectibleCard-C2EWF0zo.d.ts +0 -8
  413. package/dist/api-DuLKn__v.js.map +0 -1
  414. package/dist/builder-api-BFuZNOaN.js.map +0 -1
  415. package/dist/builder.gen-B9wR2nvF.js.map +0 -1
  416. package/dist/components-CUv-wQr8.js.map +0 -1
  417. package/dist/create-config-CIfejoCk.js.map +0 -1
  418. package/dist/filters-zkMJaPey.d.ts +0 -31
  419. package/dist/index-B8vaT3_s.d.ts +0 -18
  420. package/dist/index-Yobo6icm.d.ts +0 -234
  421. package/dist/listCollectiblesPaginated-Bq0QSOjJ.d.ts +0 -168
  422. package/dist/listCollections-dTCq00l5.d.ts +0 -669
  423. package/dist/lowestListing-CB5Te-Q9.d.ts +0 -168
  424. package/dist/marketplace-logos-Csv2MBwf.js.map +0 -1
  425. package/dist/marketplace.gen-w2YvbEEo.js.map +0 -1
  426. package/dist/marketplaceConfig-BTy75Mbf.js.map +0 -1
  427. package/dist/network-DtmiMhcg.js.map +0 -1
  428. package/dist/networkconfigToWagmiChain-DbUf6HiO.js.map +0 -1
  429. package/dist/queries-EMA5CcwY.js +0 -1399
  430. package/dist/queries-EMA5CcwY.js.map +0 -1
  431. package/dist/react-BLJ4DkPx.js.map +0 -1
  432. package/dist/react-F03jPjPk.css +0 -80
  433. package/dist/react-F03jPjPk.css.map +0 -1
  434. package/dist/tokenSupplies-C470zTT0.d.ts +0 -147
  435. package/dist/utils-BZEkdqWK.js.map +0 -1
  436. package/dist/utils-oVZxdK0o.js.map +0 -1
  437. package/dist/waitForTransactionReceipt-B08YZiDY.js +0 -26
  438. package/dist/waitForTransactionReceipt-B08YZiDY.js.map +0 -1
  439. package/src/react/_internal/api/__mocks__/laos.msw.ts +0 -387
  440. package/src/react/_internal/api/__tests__/laos-api.test.ts +0 -756
  441. package/src/react/_internal/api/laos-api.ts +0 -106
  442. package/src/react/hooks/data/collectibles/useBalanceOfCollectible.laos.test.tsx +0 -367
  443. package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +0 -123
  444. package/src/react/queries/__tests__/inventory.laos.test.ts +0 -499
  445. package/src/react/queries/__tests__/tokenBalances.laos.test.ts +0 -123
  446. /package/dist/{index-Cg5cFzs-.d.ts → index-CCggO_hw.d.ts} +0 -0
  447. /package/dist/{abi-DYsUABe6.js → queries-CyajGg_O.js} +0 -0
@@ -1,17 +1,11 @@
1
1
  'use client';
2
2
 
3
3
  import { Skeleton, Text } from '@0xsequence/design-system';
4
- import { addDays } from 'date-fns';
4
+ import { addDays, endOfDay } from 'date-fns';
5
5
  import { useState } from 'react';
6
6
  import { cn } from '../../../../../../utils';
7
7
  import CalendarDropdown from '../calendarDropdown';
8
8
 
9
- const setToEndOfDay = (date: Date): Date => {
10
- const endOfDay = new Date(date);
11
- endOfDay.setHours(23, 59, 59, 999);
12
- return endOfDay;
13
- };
14
-
15
9
  export const PRESET_RANGES = {
16
10
  TODAY: {
17
11
  label: 'Today',
@@ -68,11 +62,26 @@ const ExpirationDateSelect = function ExpirationDateSelect({
68
62
  }
69
63
 
70
64
  const baseDate = new Date();
71
- const newDate =
65
+ const targetDate =
72
66
  presetRange.value === 'today'
73
- ? setToEndOfDay(baseDate)
67
+ ? baseDate
74
68
  : addDays(baseDate, presetRange.offset);
75
69
 
70
+ // For "today", set to end of day. For other presets, preserve current time
71
+ const newDate =
72
+ presetRange.value === 'today'
73
+ ? endOfDay(targetDate)
74
+ : (() => {
75
+ const preservedTimeDate = new Date(targetDate);
76
+ preservedTimeDate.setHours(
77
+ date.getHours(),
78
+ date.getMinutes(),
79
+ date.getSeconds(),
80
+ date.getMilliseconds(),
81
+ );
82
+ return preservedTimeDate;
83
+ })();
84
+
76
85
  onDateChange(newDate);
77
86
  }
78
87
 
@@ -19,6 +19,8 @@ describe('FloorPriceText', () => {
19
19
  nativeCurrency: true,
20
20
  createdAt: '',
21
21
  updatedAt: '',
22
+ openseaListing: true,
23
+ openseaOffer: true,
22
24
  };
23
25
 
24
26
  const mockProps = {
@@ -68,7 +68,7 @@ export default function FloorPriceText({
68
68
  }
69
69
 
70
70
  return (
71
- <div className="flex w-full items-center justify-between gap-2">
71
+ <div className="flex w-full flex-wrap items-center justify-between gap-2">
72
72
  <Text className="text-left font-body font-medium text-muted text-xs">
73
73
  {floorPriceDifferenceText}
74
74
  </Text>
@@ -1,11 +1,22 @@
1
1
  'use client';
2
2
 
3
- import { NumericInput, Text } from '@0xsequence/design-system';
3
+ import {
4
+ InfoIcon,
5
+ NumericInput,
6
+ Text,
7
+ Tooltip,
8
+ } from '@0xsequence/design-system';
4
9
  import { useEffect, useRef, useState } from 'react';
5
- import { type Address, parseUnits } from 'viem';
10
+ import { type Address, formatUnits, parseUnits } from 'viem';
6
11
  import { useAccount } from 'wagmi';
7
- import type { Currency, Price } from '../../../../../../types';
8
- import { cn } from '../../../../../../utils';
12
+ import {
13
+ type Currency,
14
+ OrderbookKind,
15
+ type Price,
16
+ } from '../../../../../../types';
17
+ import { calculateTotalOfferCost, cn } from '../../../../../../utils';
18
+ import { validateOpenseaOfferDecimals } from '../../../../../../utils/price';
19
+ import { useConvertPriceToUSD } from '../../../../../hooks';
9
20
  import { useCurrencyBalance } from '../../../../../hooks/data/tokens/useCurrencyBalance';
10
21
  import CurrencyImage from '../currencyImage';
11
22
  import CurrencyOptionsSelect from '../currencyOptionsSelect';
@@ -23,6 +34,13 @@ type PriceInputProps = {
23
34
  callback: (state: boolean) => void;
24
35
  };
25
36
  disabled?: boolean;
37
+ orderbookKind?: OrderbookKind;
38
+ setOpenseaLowestPriceCriteriaMet?: (state: boolean) => void;
39
+ modalType?: 'listing' | 'offer';
40
+ // Fee data for enhanced balance checking in offers
41
+ feeData?: {
42
+ royaltyPercentage?: number;
43
+ };
26
44
  };
27
45
 
28
46
  export default function PriceInput({
@@ -35,6 +53,10 @@ export default function PriceInput({
35
53
  secondCurrencyAsDefault,
36
54
  includeNativeCurrency,
37
55
  disabled,
56
+ orderbookKind,
57
+ setOpenseaLowestPriceCriteriaMet,
58
+ modalType,
59
+ feeData,
38
60
  }: PriceInputProps) {
39
61
  const { address: accountAddress } = useAccount();
40
62
  const inputRef = useRef<HTMLInputElement>(null);
@@ -49,6 +71,20 @@ export default function PriceInput({
49
71
  }
50
72
  };
51
73
 
74
+ const { data: conversion, isLoading: isConversionLoading } =
75
+ useConvertPriceToUSD({
76
+ chainId,
77
+ currencyAddress: currencyAddress as Address,
78
+ amountRaw: priceAmountRaw,
79
+ query: {
80
+ enabled:
81
+ orderbookKind === OrderbookKind.opensea &&
82
+ !!currencyAddress &&
83
+ !!priceAmountRaw &&
84
+ !!setOpenseaLowestPriceCriteriaMet,
85
+ },
86
+ });
87
+
52
88
  useEffect(() => {
53
89
  if (inputRef.current) {
54
90
  inputRef.current.focus();
@@ -60,20 +96,88 @@ export default function PriceInput({
60
96
  chainId,
61
97
  userAddress: accountAddress,
62
98
  });
99
+ const getTotalRequiredBalance = () => {
100
+ if (!priceAmountRaw || !currencyDecimals) return BigInt(0);
101
+
102
+ const offerAmountRaw = BigInt(priceAmountRaw);
103
+
104
+ // For offers, include fees in balance calculation
105
+ if (modalType === 'offer' && feeData) {
106
+ return calculateTotalOfferCost(
107
+ offerAmountRaw,
108
+ currencyDecimals,
109
+ feeData.royaltyPercentage || 0,
110
+ );
111
+ }
112
+
113
+ return offerAmountRaw;
114
+ };
63
115
 
64
116
  const balanceError =
65
117
  !!checkBalance?.enabled &&
66
118
  !!isBalanceSuccess &&
67
119
  !!priceAmountRaw &&
68
120
  !!currencyDecimals &&
69
- BigInt(priceAmountRaw) > BigInt(balance?.value || 0n);
121
+ getTotalRequiredBalance() > BigInt(balance?.value || 0n);
122
+
123
+ const hasEnoughForBaseOffer =
124
+ !!isBalanceSuccess &&
125
+ !!priceAmountRaw &&
126
+ BigInt(priceAmountRaw) <= BigInt(balance?.value || 0n);
127
+
128
+ const getRoyaltyFeeAmount = () => {
129
+ if (!priceAmountRaw || !currencyDecimals || !feeData?.royaltyPercentage) {
130
+ return null;
131
+ }
132
+
133
+ const offerAmount = BigInt(priceAmountRaw);
134
+ const royaltyFeeAmount =
135
+ (offerAmount * BigInt(Math.round(feeData.royaltyPercentage * 100))) /
136
+ BigInt(10000);
137
+
138
+ return formatUnits(royaltyFeeAmount, currencyDecimals);
139
+ };
140
+
141
+ const royaltyFeeFormatted = getRoyaltyFeeAmount();
142
+
143
+ const RoyaltyFeeTooltip = ({ children }: { children: React.ReactNode }) => (
144
+ <Tooltip
145
+ message={
146
+ <div className="flex flex-col gap-1">
147
+ <Text className="font-body font-medium text-xs">
148
+ A royalty fee is a percentage of each resale
149
+ </Text>
150
+ <Text className="font-body font-medium text-xs">
151
+ price that automatically compensates the original
152
+ </Text>
153
+ <Text className="font-body font-medium text-xs">
154
+ creator every time their collectible changes hands.
155
+ </Text>
156
+ </div>
157
+ }
158
+ >
159
+ {children}
160
+ </Tooltip>
161
+ );
162
+
163
+ const openseaLowestPriceCriteriaMet =
164
+ orderbookKind === OrderbookKind.opensea &&
165
+ !!conversion?.usdAmount &&
166
+ conversion.usdAmount >= 0.01;
70
167
 
71
168
  if (checkBalance?.enabled) {
72
169
  checkBalance.callback(balanceError);
73
170
  }
74
171
 
172
+ if (setOpenseaLowestPriceCriteriaMet) {
173
+ setOpenseaLowestPriceCriteriaMet(openseaLowestPriceCriteriaMet);
174
+ }
175
+
75
176
  const [value, setValue] = useState('0');
76
177
  const prevCurrencyDecimals = useRef(currencyDecimals);
178
+ const [openseaDecimalError, setOpenseaDecimalError] = useState<string | null>(
179
+ null,
180
+ );
77
181
 
78
182
  // Handle currency changes and adjust the raw amount accordingly
79
183
  useEffect(() => {
@@ -105,6 +209,24 @@ export default function PriceInput({
105
209
 
106
210
  if (!price || !onPriceChange) return;
107
211
 
212
+ // Validate OpenSea decimal constraints for offers
213
+ if (orderbookKind === OrderbookKind.opensea && modalType === 'offer') {
214
+ const validation = validateOpenseaOfferDecimals(newValue);
215
+ if (!validation.isValid) {
216
+ setOpenseaDecimalError(validation.errorMessage || null);
217
+ try {
218
+ const parsedAmount = parseUnits(newValue, Number(currencyDecimals));
219
+ const updatedPrice = { ...price, amountRaw: parsedAmount.toString() };
220
+ onPriceChange(updatedPrice);
221
+ } catch {
222
+ const updatedPrice = { ...price, amountRaw: '0' };
223
+ onPriceChange(updatedPrice);
224
+ }
225
+ return;
226
+ }
227
+ setOpenseaDecimalError(null);
228
+ }
229
+
108
230
  try {
109
231
  const parsedAmount = parseUnits(newValue, Number(currencyDecimals));
110
232
  const updatedPrice = { ...price, amountRaw: parsedAmount.toString() };
@@ -143,6 +265,8 @@ export default function PriceInput({
143
265
  chainId={chainId}
144
266
  secondCurrencyAsDefault={secondCurrencyAsDefault}
145
267
  includeNativeCurrency={includeNativeCurrency}
268
+ orderbookKind={orderbookKind}
269
+ modalType={modalType}
146
270
  />
147
271
  }
148
272
  value={value}
@@ -151,13 +275,76 @@ export default function PriceInput({
151
275
  </div>
152
276
 
153
277
  {balanceError && (
154
- <Text
155
- className="-bottom-5 absolute font-body font-medium text-xs"
156
- color="negative"
157
- >
158
- Insufficient balance
159
- </Text>
278
+ <div className="mt-2">
279
+ <Text className="font-body font-medium text-xs" color="negative">
280
+ {modalType === 'offer' &&
281
+ hasEnoughForBaseOffer &&
282
+ royaltyFeeFormatted &&
283
+ Number(royaltyFeeFormatted) > 0 ? (
284
+ <RoyaltyFeeTooltip>
285
+ <div className="flex items-center gap-1">
286
+ <InfoIcon className="h-4 w-4 text-negative" />
287
+ <Text
288
+ className="font-body font-medium text-xs"
289
+ color="negative"
290
+ >
291
+ You need {royaltyFeeFormatted} {currency?.symbol} for
292
+ royalty fees
293
+ </Text>
294
+ </div>
295
+ </RoyaltyFeeTooltip>
296
+ ) : (
297
+ 'Insufficient balance'
298
+ )}
299
+ </Text>
300
+ </div>
160
301
  )}
302
+
303
+ {!balanceError &&
304
+ modalType === 'offer' &&
305
+ royaltyFeeFormatted &&
306
+ Number(royaltyFeeFormatted) > 0 && (
307
+ <div className="mt-2">
308
+ <RoyaltyFeeTooltip>
309
+ <div className="flex items-center gap-1">
310
+ <InfoIcon className="h-4 w-4 text-text-50" />
311
+
312
+ <Text className="font-body font-medium text-xs" color="text50">
313
+ Total:{' '}
314
+ {(Number(value) + Number(royaltyFeeFormatted))
315
+ .toFixed(6)
316
+ .replace(/\.?0+$/, '')}{' '}
317
+ {currency?.symbol} (includes {royaltyFeeFormatted}{' '}
318
+ {currency?.symbol} royalty fee)
319
+ </Text>
320
+ </div>
321
+ </RoyaltyFeeTooltip>
322
+ </div>
323
+ )}
324
+
325
+ {!balanceError &&
326
+ priceAmountRaw !== '0' &&
327
+ !openseaLowestPriceCriteriaMet &&
328
+ orderbookKind === OrderbookKind.opensea &&
329
+ !isConversionLoading &&
330
+ modalType === 'offer' &&
331
+ !openseaDecimalError && (
332
+ <Text
333
+ className="-bottom-5 absolute font-body font-medium text-xs"
334
+ color="negative"
335
+ >
336
+ Lowest price must be at least $0.01
337
+ </Text>
338
+ )}
339
+
340
+ {!balanceError &&
341
+ openseaDecimalError &&
342
+ orderbookKind === OrderbookKind.opensea &&
343
+ modalType === 'offer' && (
344
+ <Text className="font-body font-medium text-xs" color="negative">
345
+ {openseaDecimalError}
346
+ </Text>
347
+ )}
161
348
  </div>
162
349
  );
163
350
  }
@@ -1,6 +1,13 @@
1
1
  'use client';
2
2
 
3
- import { Image, Skeleton, Text } from '@0xsequence/design-system';
3
+ import {
4
+ ChevronRightIcon,
5
+ Image,
6
+ Skeleton,
7
+ Text,
8
+ Tooltip,
9
+ } from '@0xsequence/design-system';
10
+ import { useEffect, useState } from 'react';
4
11
  import type { Address } from 'viem';
5
12
  import { DEFAULT_MARKETPLACE_FEE_PERCENTAGE } from '../../../../../../consts';
6
13
  import type { Price } from '../../../../../../types';
@@ -40,28 +47,50 @@ export default function TransactionDetails({
40
47
  collectionAddress,
41
48
  collectibleId,
42
49
  });
50
+ const [overflow, setOverflow] = useState({
51
+ status: false,
52
+ amount: '0',
53
+ });
43
54
 
44
55
  const priceLoading = !price || marketplaceConfigLoading || royaltyLoading;
45
56
 
46
- let formattedAmount = '0';
57
+ const [formattedAmount, setFormattedAmount] = useState('0');
47
58
 
48
- if (price) {
49
- const fees: number[] = [];
59
+ useEffect(() => {
60
+ if (!price || royaltyLoading || marketplaceConfigLoading) return;
50
61
 
62
+ const fees: number[] = [];
51
63
  if (royalty !== null) {
52
64
  fees.push(Number(royalty.percentage));
53
65
  }
54
-
55
66
  if (marketplaceFeePercentage > 0) {
56
67
  fees.push(marketplaceFeePercentage);
57
68
  }
58
-
59
- formattedAmount = calculateEarningsAfterFees(
69
+ const newFormattedAmount = calculateEarningsAfterFees(
60
70
  BigInt(price.amountRaw),
61
71
  price.currency.decimals,
62
72
  fees,
63
73
  );
64
- }
74
+ setFormattedAmount(newFormattedAmount);
75
+ }, [
76
+ price,
77
+ royalty,
78
+ marketplaceFeePercentage,
79
+ royaltyLoading,
80
+ marketplaceConfigLoading,
81
+ ]);
82
+
83
+ useEffect(() => {
84
+ if (formattedAmount.length > 15) {
85
+ setOverflow((prev) =>
86
+ prev.status
87
+ ? prev
88
+ : { status: true, amount: formattedAmount.slice(0, 15) },
89
+ );
90
+ } else {
91
+ setOverflow({ status: false, amount: formattedAmount });
92
+ }
93
+ }, [formattedAmount]);
65
94
 
66
95
  return (
67
96
  <div className="flex w-full items-center justify-between">
@@ -75,8 +104,27 @@ export default function TransactionDetails({
75
104
  <Skeleton className="h-4 w-24 animate-shimmer" />
76
105
  ) : (
77
106
  <Text className="font-body font-medium text-xs" color={'text100'}>
78
- {showPlaceholderPrice ? '0' : formattedAmount}{' '}
79
- {price.currency.symbol}
107
+ {showPlaceholderPrice ? (
108
+ <Text className="font-body font-medium text-xs" color={'text100'}>
109
+ 0 {price.currency.symbol}
110
+ </Text>
111
+ ) : overflow.status ? (
112
+ <Tooltip message={`${formattedAmount} ${price.currency.symbol}`}>
113
+ <div className="flex items-center">
114
+ <ChevronRightIcon className="h-3 w-3 text-text-100" />
115
+ <Text
116
+ className="font-body font-medium text-xs"
117
+ color={'text100'}
118
+ >
119
+ {overflow.amount} {price.currency.symbol}
120
+ </Text>
121
+ </div>
122
+ </Tooltip>
123
+ ) : (
124
+ <Text className="font-body font-medium text-xs" color={'text100'}>
125
+ {formattedAmount} {price.currency.symbol}
126
+ </Text>
127
+ )}
80
128
  </Text>
81
129
  )}
82
130
  </div>
@@ -113,6 +113,8 @@ describe('Transaction Status Modal Utils', () => {
113
113
  createdAt: '2024-01-21T00:00:00Z',
114
114
  updatedAt: '2024-01-21T00:00:00Z',
115
115
  status: CurrencyStatus.active,
116
+ openseaListing: true,
117
+ openseaOffer: true,
116
118
  },
117
119
  },
118
120
  }),
@@ -1,49 +1,43 @@
1
1
  import type { TransactionReceipt } from '@0xsequence/indexer';
2
- import {
3
- type Hex,
4
- TransactionReceiptNotFoundError,
5
- WaitForTransactionReceiptTimeoutError,
6
- } from 'viem';
2
+ import { type Hex, TransactionReceiptNotFoundError } from 'viem';
7
3
  import type { SdkConfig } from '../../types';
8
4
  import { getIndexerClient } from '../_internal/api';
9
5
 
10
- const ONE_MIN = 60 * 1000;
11
- const THREE_MIN = 3 * ONE_MIN;
6
+ const MAX_RETRIES = 3;
7
+ const MAX_BLOCK_WAIT = 30;
12
8
 
13
9
  export const waitForTransactionReceipt = async ({
14
10
  txHash,
15
11
  chainId,
16
12
  sdkConfig,
17
- timeout = THREE_MIN,
13
+ maxBlockWait = MAX_BLOCK_WAIT,
18
14
  }: {
19
15
  txHash: Hex;
20
16
  chainId: number;
21
17
  sdkConfig: SdkConfig;
22
- timeout?: number;
18
+ maxBlockWait?: number;
23
19
  }): Promise<TransactionReceipt> => {
24
20
  const indexer = getIndexerClient(chainId, sdkConfig);
25
- return Promise.race([
26
- new Promise<TransactionReceipt>((resolve, reject) => {
27
- indexer.subscribeReceipts(
28
- {
29
- filter: {
30
- txnHash: txHash,
31
- },
32
- },
33
- {
34
- onMessage: ({ receipt }) => {
35
- resolve(receipt);
36
- },
37
- onError: () => {
38
- reject(TransactionReceiptNotFoundError);
39
- },
40
- },
21
+ let retries = 0;
22
+
23
+ while (retries < MAX_RETRIES) {
24
+ try {
25
+ const result = await indexer.fetchTransactionReceipt({
26
+ txnHash: txHash,
27
+ maxBlockWait,
28
+ });
29
+ return result.receipt;
30
+ } catch (error) {
31
+ retries++;
32
+ console.error(
33
+ `Failed to fetch transaction receipt (attempt ${retries}/${MAX_RETRIES}):`,
34
+ error,
41
35
  );
42
- }),
43
- new Promise<TransactionReceipt>((_, reject) => {
44
- setTimeout(() => {
45
- reject(WaitForTransactionReceiptTimeoutError);
46
- }, timeout);
47
- }),
48
- ]);
36
+ if (retries >= MAX_RETRIES) {
37
+ throw TransactionReceiptNotFoundError;
38
+ }
39
+ }
40
+ }
41
+
42
+ throw TransactionReceiptNotFoundError;
49
43
  };
@@ -1,6 +1,7 @@
1
1
  @import "tailwindcss";
2
2
  @import "@0xsequence/design-system/preset";
3
3
  @import "react-day-picker/style.css";
4
+ @import "../react/ui/modals/_internal/components/calendarDropdown/overrides.css";
4
5
 
5
6
  @source "../";
6
7