@0xsequence/marketplace-sdk 1.0.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 (477) 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/.storybook/main.ts +1 -1
  5. package/.storybook/preview.tsx +0 -1
  6. package/CHANGELOG.md +84 -13
  7. package/dist/BellIcon-ByhygxBO.js +45 -0
  8. package/dist/BellIcon-ByhygxBO.js.map +1 -0
  9. package/dist/{BellIcon-Cb9YEUzJ.js → CartIcon-Bt3rQYGk.js} +10 -49
  10. package/dist/CartIcon-Bt3rQYGk.js.map +1 -0
  11. package/dist/CollectibleCard-CVpdgXA8.d.ts +8 -0
  12. package/dist/{_internal-DslqcNC1.js → _internal-DkS2VUn5.js} +1 -1
  13. package/dist/{_internal-DslqcNC1.js.map → _internal-DkS2VUn5.js.map} +1 -1
  14. package/dist/abi-fa-o9gH3.js +134 -0
  15. package/dist/abi-fa-o9gH3.js.map +1 -0
  16. package/dist/{alien_swap-DJ98gZQp.js → alien_swap-DoY6XfMA.js} +1 -1
  17. package/dist/{alien_swap-DJ98gZQp.js.map → alien_swap-DoY6XfMA.js.map} +1 -1
  18. package/dist/{api-BmEQfSQa.js → api-BoO0V5aJ.js} +11 -4
  19. package/dist/api-BoO0V5aJ.js.map +1 -0
  20. package/dist/{aqua-xyz-n1PcCCZ0.js → aqua-xyz-BBDxnG14.js} +1 -1
  21. package/dist/{aqua-xyz-n1PcCCZ0.js.map → aqua-xyz-BBDxnG14.js.map} +1 -1
  22. package/dist/{aura-Bevk_YkS.js → aura-DGx2zwvF.js} +1 -1
  23. package/dist/{aura-Bevk_YkS.js.map → aura-DGx2zwvF.js.map} +1 -1
  24. package/dist/{blur-B5sHErx5.js → blur-D8GKrRrq.js} +1 -1
  25. package/dist/{blur-B5sHErx5.js.map → blur-D8GKrRrq.js.map} +1 -1
  26. package/dist/builder-api-BFuZNOaN.js.map +1 -1
  27. package/dist/builder.gen-B9wR2nvF.js.map +1 -1
  28. package/dist/{coinbase-D30W-lxA.js → coinbase-DOry4PXY.js} +1 -1
  29. package/dist/{coinbase-D30W-lxA.js.map → coinbase-DOry4PXY.js.map} +1 -1
  30. package/dist/collectibles-C_H8jMGH.js +358 -0
  31. package/dist/collectibles-C_H8jMGH.js.map +1 -0
  32. package/dist/collections-CKummc-R.js +249 -0
  33. package/dist/collections-CKummc-R.js.map +1 -0
  34. package/dist/components-CosnX7F9.js +119 -0
  35. package/dist/components-CosnX7F9.js.map +1 -0
  36. package/dist/{contracts-DPHFT2TA.js → contracts-BP_0vX48.js} +4 -5
  37. package/dist/{contracts-DPHFT2TA.js.map → contracts-BP_0vX48.js.map} +1 -1
  38. package/dist/{create-config-6uynwTeb.js → create-config-CIfejoCk.js} +6 -11
  39. package/dist/create-config-CIfejoCk.js.map +1 -0
  40. package/dist/{create-config-lLSrnkbb.d.ts → create-config-ZOB7i4ZJ.d.ts} +135 -37
  41. package/dist/{element-C2NJexro.js → element-ciybd_VF.js} +1 -1
  42. package/dist/{element-C2NJexro.js.map → element-ciybd_VF.js.map} +1 -1
  43. package/dist/filters-V-V8Dn8f.d.ts +60 -0
  44. package/dist/{foundation-QgY1lvUj.js → foundation-Bq4lRz4x.js} +1 -1
  45. package/dist/{foundation-QgY1lvUj.js.map → foundation-Bq4lRz4x.js.map} +1 -1
  46. package/dist/index-BOiHR01C.d.ts +106 -0
  47. package/dist/index-BZIJTQT0.d.ts +121 -0
  48. package/dist/index-BeRV-7AX.d.ts +55 -0
  49. package/dist/{index-DonXiSg2.d.ts → index-Bsx6XsC2.d.ts} +117 -70
  50. package/dist/{index-BGJXqdg6.d.ts → index-BtWMBHeP.d.ts} +13 -9
  51. package/dist/{index-CtF7EE2z.d.ts → index-Bxzjy0d1.d.ts} +1 -1
  52. package/dist/{index-ChSKFOMx.d.ts → index-C-745li7.d.ts} +1 -1
  53. package/dist/{index-CY5UEX4h.d.ts → index-C4MUKshG.d.ts} +2 -2
  54. package/dist/{index-C7xKVIr4.d.ts → index-CPzvNmq9.d.ts} +37 -37
  55. package/dist/{index-ByW08-Z7.d.ts → index-CS65jqOq.d.ts} +2 -2
  56. package/dist/index-CZUtOTjh.d.ts +1 -0
  57. package/dist/index-CnEbXm_t.d.ts +130 -0
  58. package/dist/{index-ThUIs-Sy.d.ts → index-CxA34wP1.d.ts} +37 -23
  59. package/dist/{index-CIkpYltz.d.ts → index-CxpFwGvR.d.ts} +3 -3
  60. package/dist/{index-QxxS6f9r.d.ts → index-D9LPlmbC.d.ts} +1 -1
  61. package/dist/{index-CQnGIGb5.d.ts → index-DFEnA6Wa.d.ts} +44 -33
  62. package/dist/{index-PSPpUxCE.d.ts → index-DNNUeZEq.d.ts} +4 -4
  63. package/dist/{index-Dpyp7fQz.d.ts → index-DUXfvhxs.d.ts} +12 -12
  64. package/dist/index-DW3njUfb.d.ts +1 -0
  65. package/dist/index-DWt6yrIG.d.ts +64 -0
  66. package/dist/index-DewGsFz5.d.ts +1 -0
  67. package/dist/index-DmudgrsN.d.ts +495 -0
  68. package/dist/{index-DNU9xoGK.d.ts → index-DqXd1EeB.d.ts} +5 -5
  69. package/dist/{index-DX0Vm8HY.d.ts → index-DwKr18CI.d.ts} +1 -1
  70. package/dist/{index-D71J5Ghd.d.ts → index-NlPMNcqh.d.ts} +99 -99
  71. package/dist/index-Stm5u0I0.d.ts +53 -0
  72. package/dist/index-U-zp70of.d.ts +74 -0
  73. package/dist/index.d.ts +8 -8
  74. package/dist/index.js +13 -12
  75. package/dist/inventory-Dd7TazvZ.js +72 -0
  76. package/dist/inventory-Dd7TazvZ.js.map +1 -0
  77. package/dist/listBalances-BxpxBCvn.js +57 -0
  78. package/dist/listBalances-BxpxBCvn.js.map +1 -0
  79. package/dist/listCollectiblesPaginated-Cy2_qEZA.d.ts +327 -0
  80. package/dist/{listCollections-Bbzbz7qW.d.ts → listCollections-BB9FxKj2.d.ts} +264 -137
  81. package/dist/{looks-rare-CMVPny4v.js → looks-rare-6H--x3AM.js} +1 -1
  82. package/dist/{looks-rare-CMVPny4v.js.map → looks-rare-6H--x3AM.js.map} +1 -1
  83. package/dist/lowestListing-Cbsi6M1K.d.ts +465 -0
  84. package/dist/{magic-eden-IrWp2ZXk.js → magic-eden-BoxEQ1Li.js} +1 -1
  85. package/dist/{magic-eden-IrWp2ZXk.js.map → magic-eden-BoxEQ1Li.js.map} +1 -1
  86. package/dist/{manifold-DeOE-p2G.js → manifold-DycKsljb.js} +1 -1
  87. package/dist/{manifold-DeOE-p2G.js.map → manifold-DycKsljb.js.map} +1 -1
  88. package/dist/market-C3HV-awQ.js +209 -0
  89. package/dist/market-C3HV-awQ.js.map +1 -0
  90. package/dist/{marketCurrencies-CmOMCCOr.d.ts → marketCurrencies-Bpw1bIO0.d.ts} +46 -15
  91. package/dist/marketCurrencies-sKrTX0og.js +53 -0
  92. package/dist/marketCurrencies-sKrTX0og.js.map +1 -0
  93. package/dist/{marketplace-B5Z8G03R.js → marketplace-NQB-sEQL.js} +1 -1
  94. package/dist/{marketplace-B5Z8G03R.js.map → marketplace-NQB-sEQL.js.map} +1 -1
  95. package/dist/{marketplace-logos-D8t86gsW.js → marketplace-logos-D4dS1Foy.js} +21 -21
  96. package/dist/marketplace-logos-D4dS1Foy.js.map +1 -0
  97. package/dist/{marketplace.gen-JzNYpM0U.js → marketplace.gen-ksUafDqS.js} +56 -5
  98. package/dist/marketplace.gen-ksUafDqS.js.map +1 -0
  99. package/dist/{marketplaceConfig-sNh-MA5M.js → marketplaceConfig-UHQMM9fq.js} +9 -10
  100. package/dist/marketplaceConfig-UHQMM9fq.js.map +1 -0
  101. package/dist/{mintify-DG3GrljJ.js → mintify-Dyqyo8jQ.js} +1 -1
  102. package/dist/{mintify-DG3GrljJ.js.map → mintify-Dyqyo8jQ.js.map} +1 -1
  103. package/dist/{network-DnBEe1Ur.js → network-DtmiMhcg.js} +2 -2
  104. package/dist/network-DtmiMhcg.js.map +1 -0
  105. package/dist/networkconfigToWagmiChain-DbUf6HiO.js +15 -0
  106. package/dist/networkconfigToWagmiChain-DbUf6HiO.js.map +1 -0
  107. package/dist/{nftx-B3LH-ZYM.js → nftx-2LbFjj9Q.js} +1 -1
  108. package/dist/{nftx-B3LH-ZYM.js.map → nftx-2LbFjj9Q.js.map} +1 -1
  109. package/dist/{okx-CRFLrT3Z.js → okx-CBEWJNsR.js} +1 -1
  110. package/dist/{okx-CRFLrT3Z.js.map → okx-CBEWJNsR.js.map} +1 -1
  111. package/dist/{open-sea-cOpfl366.js → open-sea-Dxntz_PA.js} +1 -1
  112. package/dist/{open-sea-cOpfl366.js.map → open-sea-Dxntz_PA.js.map} +1 -1
  113. package/dist/orders-DnFfZAXV.js +462 -0
  114. package/dist/orders-DnFfZAXV.js.map +1 -0
  115. package/dist/{primary-sale-CLjXRrDj.js → primary-sale-1u4QlPdA.js} +1 -1
  116. package/dist/{primary-sale-CLjXRrDj.js.map → primary-sale-1u4QlPdA.js.map} +1 -1
  117. package/dist/primary-sales-Dmsi6bqj.js +114 -0
  118. package/dist/primary-sales-Dmsi6bqj.js.map +1 -0
  119. package/dist/{query-BTe7Wkrs.d.ts → query-BWbCsXLY.d.ts} +1 -1
  120. package/dist/{rarible-guwUx4cn.js → rarible-CS0SupHr.js} +1 -1
  121. package/dist/{rarible-guwUx4cn.js.map → rarible-CS0SupHr.js.map} +1 -1
  122. package/dist/react/_internal/api/index.d.ts +2 -2
  123. package/dist/react/_internal/api/index.js +5 -5
  124. package/dist/react/_internal/databeat/index.d.ts +1 -1
  125. package/dist/react/_internal/databeat/index.js +35 -21
  126. package/dist/react/_internal/index.d.ts +2 -2
  127. package/dist/react/_internal/index.js +9 -8
  128. package/dist/react/_internal/wagmi/index.d.ts +1 -1
  129. package/dist/react/_internal/wagmi/index.js +4 -3
  130. package/dist/react/hooks/config/index.d.ts +8 -8
  131. package/dist/react/hooks/config/index.js +35 -21
  132. package/dist/react/hooks/contracts/index.d.ts +6 -6
  133. package/dist/react/hooks/contracts/index.js +13 -12
  134. package/dist/react/hooks/data/collectibles/index.d.ts +10 -4
  135. package/dist/react/hooks/data/collectibles/index.js +35 -21
  136. package/dist/react/hooks/data/collections/index.d.ts +10 -10
  137. package/dist/react/hooks/data/collections/index.js +35 -21
  138. package/dist/react/hooks/data/index.d.ts +37 -29
  139. package/dist/react/hooks/data/index.js +36 -22
  140. package/dist/react/hooks/data/inventory/index.d.ts +36 -28
  141. package/dist/react/hooks/data/inventory/index.js +35 -21
  142. package/dist/react/hooks/data/market/index.d.ts +11 -11
  143. package/dist/react/hooks/data/market/index.js +35 -21
  144. package/dist/react/hooks/data/orders/index.d.ts +11 -11
  145. package/dist/react/hooks/data/orders/index.js +36 -22
  146. package/dist/react/hooks/data/primary-sales/index.d.ts +36 -28
  147. package/dist/react/hooks/data/primary-sales/index.js +35 -21
  148. package/dist/react/hooks/data/tokens/index.d.ts +4 -4
  149. package/dist/react/hooks/data/tokens/index.js +35 -21
  150. package/dist/react/hooks/index.d.ts +37 -29
  151. package/dist/react/hooks/index.js +36 -22
  152. package/dist/react/hooks/transactions/index.d.ts +2 -2
  153. package/dist/react/hooks/transactions/index.js +35 -21
  154. package/dist/react/hooks/ui/index.d.ts +4 -4
  155. package/dist/react/hooks/ui/index.js +35 -21
  156. package/dist/react/hooks/utils/index.d.ts +37 -29
  157. package/dist/react/hooks/utils/index.js +36 -22
  158. package/dist/react/index.d.ts +37 -29
  159. package/dist/react/index.js +36 -22
  160. package/dist/react/queries/collectibles/index.d.ts +11 -0
  161. package/dist/react/queries/collectibles/index.js +23 -0
  162. package/dist/react/queries/collections/index.d.ts +11 -0
  163. package/dist/react/queries/collections/index.js +20 -0
  164. package/dist/react/queries/index.d.ts +24 -16
  165. package/dist/react/queries/index.js +29 -17
  166. package/dist/react/queries/inventory/index.d.ts +3 -0
  167. package/dist/react/queries/inventory/index.js +22 -0
  168. package/dist/react/queries/market/index.d.ts +6 -0
  169. package/dist/react/queries/market/index.js +22 -0
  170. package/dist/react/queries/orders/index.d.ts +11 -0
  171. package/dist/react/queries/orders/index.js +13 -0
  172. package/dist/react/queries/primary-sales/index.d.ts +4 -0
  173. package/dist/react/queries/primary-sales/index.js +13 -0
  174. package/dist/react/queries/tokens/index.d.ts +5 -0
  175. package/dist/react/queries/tokens/index.js +14 -0
  176. package/dist/react/queries/utils/index.d.ts +4 -0
  177. package/dist/react/queries/utils/index.js +22 -0
  178. package/dist/react/ssr/index.d.ts +7 -7
  179. package/dist/react/ssr/index.js +9 -8
  180. package/dist/react/ssr/index.js.map +1 -1
  181. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.d.ts +3 -0
  182. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.js +22 -0
  183. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.d.ts +54 -0
  184. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.js +40 -0
  185. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +5 -5
  186. package/dist/react/ui/components/marketplace-collectible-card/index.js +35 -21
  187. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -2
  188. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +9 -8
  189. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  190. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  191. package/dist/react/ui/icons/index.js +13 -11
  192. package/dist/react/ui/index.d.ts +5 -5
  193. package/dist/react/ui/index.js +35 -21
  194. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +2 -2
  195. package/dist/react/ui/modals/_internal/components/actionModal/index.js +35 -21
  196. package/dist/react/utils/index.d.ts +3 -3
  197. package/dist/react/utils/index.js +5 -5
  198. package/dist/{react-Ceq8mamy.js → react-DE852KeT.js} +2111 -1002
  199. package/dist/react-DE852KeT.js.map +1 -0
  200. package/dist/{sequence-Dt2Xo7Fa.js → sequence-paCCener.js} +1 -1
  201. package/dist/{sequence-Dt2Xo7Fa.js.map → sequence-paCCener.js.map} +1 -1
  202. package/dist/styles/index.css +200 -24
  203. package/dist/{sudo-swap-CGoARONs.js → sudo-swap-9rH2EgfT.js} +1 -1
  204. package/dist/{sudo-swap-CGoARONs.js.map → sudo-swap-9rH2EgfT.js.map} +1 -1
  205. package/dist/{super-rare-NeQtZjcn.js → super-rare-DHIuWtRw.js} +1 -1
  206. package/dist/{super-rare-NeQtZjcn.js.map → super-rare-DHIuWtRw.js.map} +1 -1
  207. package/dist/{token-D9gZVqbX.js → token-Cv7l2ZaL.js} +1 -1
  208. package/dist/{token-D9gZVqbX.js.map → token-Cv7l2ZaL.js.map} +1 -1
  209. package/dist/tokenBalances-ibDerNmM.js +63 -0
  210. package/dist/tokenBalances-ibDerNmM.js.map +1 -0
  211. package/dist/tokenSupplies-Bfe8RHzI.d.ts +272 -0
  212. package/dist/tokens-cGxMadd8.js +194 -0
  213. package/dist/tokens-cGxMadd8.js.map +1 -0
  214. package/dist/{transaction-CC2KxNF6.js → transaction-DZUW5RHu.js} +2 -8
  215. package/dist/transaction-DZUW5RHu.js.map +1 -0
  216. package/dist/types/index.d.ts +2 -2
  217. package/dist/types/index.js +2 -2
  218. package/dist/{types-G2PWxiJR.js → types-B_-cnkcP.js} +1 -1
  219. package/dist/types-B_-cnkcP.js.map +1 -0
  220. package/dist/{types-BlCa0TVE.d.ts → types-D2TJ1dwv.d.ts} +19 -10
  221. package/dist/utils/abi/index.d.ts +5 -5
  222. package/dist/utils/abi/index.js +5 -5
  223. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  224. package/dist/utils/abi/marketplace/index.js +1 -1
  225. package/dist/utils/abi/primary-sale/index.d.ts +1 -1
  226. package/dist/utils/abi/primary-sale/index.js +1 -1
  227. package/dist/utils/abi/token/index.d.ts +1 -1
  228. package/dist/utils/abi/token/index.js +1 -1
  229. package/dist/utils/index.d.ts +7 -7
  230. package/dist/utils/index.js +12 -11
  231. package/dist/utils-BCgNhBFR.js +112 -0
  232. package/dist/utils-BCgNhBFR.js.map +1 -0
  233. package/dist/{utils-CKJd-CRf.js → utils-BfpDVibN.js} +7 -24
  234. package/dist/utils-BfpDVibN.js.map +1 -0
  235. package/dist/{utils-wquIhK6T.js → utils-BqxcalL2.js} +2 -2
  236. package/dist/utils-BqxcalL2.js.map +1 -0
  237. package/dist/waitForTransactionReceipt-DieAnV52.js +25 -0
  238. package/dist/waitForTransactionReceipt-DieAnV52.js.map +1 -0
  239. package/dist/{x2y2-CQdg24VP.js → x2y2-45WDooeh.js} +1 -1
  240. package/dist/{x2y2-CQdg24VP.js.map → x2y2-45WDooeh.js.map} +1 -1
  241. package/dist/{zora-DdEydy4L.js → zora-CbeBoLvQ.js} +1 -1
  242. package/dist/{zora-DdEydy4L.js.map → zora-CbeBoLvQ.js.map} +1 -1
  243. package/package.json +43 -38
  244. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +2 -0
  245. package/src/react/_internal/api/marketplace.gen.ts +1730 -2383
  246. package/src/react/_internal/api/query-keys.ts +16 -0
  247. package/src/react/_internal/api/services.ts +1 -1
  248. package/src/react/_internal/databeat/types.ts +1 -0
  249. package/src/react/_internal/types.ts +14 -0
  250. package/src/react/_internal/utils.ts +3 -0
  251. package/src/react/_internal/wagmi/__tests__/create-config.test.ts +19 -8
  252. package/src/react/_internal/wagmi/create-config.ts +6 -17
  253. package/src/react/hooks/config/__snapshots__/useMarketplaceConfig.test.tsx.snap +4 -4
  254. package/src/react/hooks/config/useMarketplaceConfig.tsx +1 -1
  255. package/src/react/hooks/data/collectibles/useBalanceOfCollectible.laos.test.tsx +2 -2
  256. package/src/react/hooks/data/collectibles/useBalanceOfCollectible.tsx +1 -1
  257. package/src/react/hooks/data/collectibles/useCollectible.tsx +1 -1
  258. package/src/react/hooks/data/collectibles/useCountOfCollectables.tsx +1 -1
  259. package/src/react/hooks/data/collectibles/useListCollectibleActivities.tsx +1 -1
  260. package/src/react/hooks/data/collectibles/useListCollectibles.tsx +1 -1
  261. package/src/react/hooks/data/collectibles/useListCollectiblesPaginated.tsx +1 -1
  262. package/src/react/hooks/data/collectibles/useTokenBalances.test.tsx +151 -0
  263. package/src/react/hooks/data/collectibles/useTokenBalances.tsx +47 -0
  264. package/src/react/hooks/data/collections/__snapshots__/useListCollections.test.tsx.snap +6 -6
  265. package/src/react/hooks/data/collections/useCollection.tsx +1 -1
  266. package/src/react/hooks/data/collections/useCollectionBalanceDetails.tsx +1 -1
  267. package/src/react/hooks/data/collections/useCollectionDetails.ts +1 -1
  268. package/src/react/hooks/data/collections/useListCollectionActivities.tsx +1 -1
  269. package/src/react/hooks/data/collections/useListCollections.tsx +1 -1
  270. package/src/react/hooks/data/inventory/useInventory.test.tsx +3 -98
  271. package/src/react/hooks/data/inventory/useInventory.tsx +3 -3
  272. package/src/react/hooks/data/market/useCurrency.tsx +1 -1
  273. package/src/react/hooks/data/market/useListMarketCardData.tsx +8 -1
  274. package/src/react/hooks/data/market/useMarketCurrencies.tsx +1 -1
  275. package/src/react/hooks/data/orders/index.ts +4 -0
  276. package/src/react/hooks/data/orders/useCountItemsOrdersForCollection.tsx +90 -0
  277. package/src/react/hooks/data/orders/useCountListingsForCollectible.tsx +1 -1
  278. package/src/react/hooks/data/orders/useCountOffersForCollectible.tsx +1 -1
  279. package/src/react/hooks/data/orders/useFloorOrder.tsx +1 -1
  280. package/src/react/hooks/data/orders/useGetCountOfFilteredOrders.tsx +39 -0
  281. package/src/react/hooks/data/orders/useHighestOffer.tsx +1 -1
  282. package/src/react/hooks/data/orders/useListItemsOrdersForCollection.tsx +93 -0
  283. package/src/react/hooks/data/orders/useListItemsOrdersForCollectionPaginated.tsx +108 -0
  284. package/src/react/hooks/data/orders/useListListingsForCollectible.tsx +1 -1
  285. package/src/react/hooks/data/orders/useListOffersForCollectible.tsx +70 -45
  286. package/src/react/hooks/data/orders/useLowestListing.tsx +1 -1
  287. package/src/react/hooks/data/primary-sales/useGetCountOfPrimarySaleItems.tsx +2 -2
  288. package/src/react/hooks/data/primary-sales/useList1155ShopCardData.tsx +21 -37
  289. package/src/react/hooks/data/primary-sales/useList721ShopCardData.tsx +14 -3
  290. package/src/react/hooks/data/primary-sales/useListPrimarySaleItems.tsx +1 -1
  291. package/src/react/hooks/data/tokens/useGetTokenRanges.tsx +2 -2
  292. package/src/react/hooks/data/tokens/useListBalances.tsx +2 -2
  293. package/src/react/hooks/data/tokens/useListTokenMetadata.tsx +1 -1
  294. package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +5 -2
  295. package/src/react/hooks/data/tokens/useTokenSupplies.ts +1 -1
  296. package/src/react/hooks/transactions/useCancelOrder.test.tsx +7 -4
  297. package/src/react/hooks/transactions/useCancelOrder.tsx +2 -1
  298. package/src/react/hooks/transactions/useCancelTransactionSteps.tsx +2 -2
  299. package/src/react/hooks/transactions/useGenerateCancelTransaction.test.tsx +1 -0
  300. package/src/react/hooks/transactions/useGenerateListingTransaction.test.tsx +13 -0
  301. package/src/react/hooks/transactions/useGenerateOfferTransaction.test.tsx +1 -0
  302. package/src/react/hooks/transactions/useGenerateSellTransaction.test.tsx +6 -0
  303. package/src/react/hooks/transactions/useProcessStep.test.tsx +2 -2
  304. package/src/react/hooks/ui/useFilterState.tsx +72 -2
  305. package/src/react/hooks/ui/useFilters.tsx +1 -1
  306. package/src/react/hooks/utils/__tests__/useEnsureCorrectChain.test.tsx +75 -0
  307. package/src/react/hooks/utils/index.ts +0 -1
  308. package/src/react/hooks/utils/useCheckoutOptions.tsx +2 -2
  309. package/src/react/hooks/utils/useCheckoutOptionsSalesContract.tsx +1 -1
  310. package/src/react/hooks/utils/useComparePrices.tsx +1 -1
  311. package/src/react/hooks/utils/useConvertPriceToUSD.tsx +1 -1
  312. package/src/react/hooks/utils/useEnsureCorrectChain.ts +31 -34
  313. package/src/react/providers/analytics-provider.tsx +45 -0
  314. package/src/react/providers/index.tsx +33 -46
  315. package/src/react/providers/modal-provider.tsx +15 -4
  316. package/src/react/queries/{__tests__ → collectibles/__tests__}/balanceOfCollectible.laos.test.ts +4 -4
  317. package/src/react/queries/collectibles/__tests__/tokenBalances.laos.test.ts +123 -0
  318. package/src/react/queries/{balanceOfCollectible.ts → collectibles/balanceOfCollectible.ts} +26 -4
  319. package/src/react/queries/{collectible.ts → collectibles/collectible.ts} +20 -5
  320. package/src/react/queries/{countOfCollectables.ts → collectibles/countOfCollectables.ts} +32 -6
  321. package/src/react/queries/collectibles/index.ts +7 -0
  322. package/src/react/queries/{listCollectibleActivities.ts → collectibles/listCollectibleActivities.ts} +29 -5
  323. package/src/react/queries/{listCollectibles.ts → collectibles/listCollectibles.ts} +47 -54
  324. package/src/react/queries/{listCollectiblesPaginated.ts → collectibles/listCollectiblesPaginated.ts} +22 -5
  325. package/src/react/queries/collectibles/tokenBalances.ts +103 -0
  326. package/src/react/queries/{collection.ts → collections/collection.ts} +19 -5
  327. package/src/react/queries/{collectionBalanceDetails.ts → collections/collectionBalanceDetails.ts} +19 -4
  328. package/src/react/queries/{collectionDetails.ts → collections/collectionDetails.ts} +21 -6
  329. package/src/react/queries/collections/index.ts +5 -0
  330. package/src/react/queries/{listCollectionActivities.ts → collections/listCollectionActivities.ts} +28 -6
  331. package/src/react/queries/{listCollections.ts → collections/listCollections.ts} +26 -18
  332. package/src/react/queries/index.ts +7 -33
  333. package/src/react/queries/{__tests__ → inventory/__tests__}/inventory.laos.test.ts +10 -7
  334. package/src/react/queries/inventory/index.ts +1 -0
  335. package/src/react/queries/inventory/inventory.ts +169 -0
  336. package/src/react/queries/{checkoutOptions.ts → market/checkoutOptions.ts} +28 -6
  337. package/src/react/queries/{checkoutOptionsSalesContract.ts → market/checkoutOptionsSalesContract.ts} +24 -5
  338. package/src/react/queries/{currency.ts → market/currency.ts} +13 -4
  339. package/src/react/queries/{filters.ts → market/filters.ts} +48 -34
  340. package/src/react/queries/market/index.ts +6 -0
  341. package/src/react/queries/{marketCurrencies.ts → market/marketCurrencies.ts} +24 -5
  342. package/src/react/queries/{marketplaceConfig.ts → market/marketplaceConfig.ts} +11 -7
  343. package/src/react/queries/orders/countItemsOrdersForCollection.ts +86 -0
  344. package/src/react/queries/{countListingsForCollectible.ts → orders/countListingsForCollectible.ts} +23 -6
  345. package/src/react/queries/{countOffersForCollectible.ts → orders/countOffersForCollectible.ts} +23 -6
  346. package/src/react/queries/{floorOrder.ts → orders/floorOrder.ts} +15 -4
  347. package/src/react/queries/orders/getCountOfFilteredOrders.ts +88 -0
  348. package/src/react/queries/{highestOffer.ts → orders/highestOffer.ts} +16 -4
  349. package/src/react/queries/orders/index.ts +11 -0
  350. package/src/react/queries/orders/listItemsOrdersForCollection.ts +90 -0
  351. package/src/react/queries/orders/listItemsOrdersForCollectionPaginated.ts +90 -0
  352. package/src/react/queries/{listListingsForCollectible.ts → orders/listListingsForCollectible.ts} +20 -5
  353. package/src/react/queries/orders/listOffersForCollectible.ts +116 -0
  354. package/src/react/queries/{lowestListing.ts → orders/lowestListing.ts} +16 -4
  355. package/src/react/queries/{countOfPrimarySaleItems.ts → primary-sales/countOfPrimarySaleItems.ts} +17 -3
  356. package/src/react/queries/primary-sales/index.ts +3 -0
  357. package/src/react/queries/{primarySaleItems.ts → primary-sales/primarySaleItems.ts} +18 -4
  358. package/src/react/queries/{primarySaleItemsCount.ts → primary-sales/primarySaleItemsCount.ts} +19 -4
  359. package/src/react/queries/{getTokenRanges.ts → tokens/getTokenRanges.ts} +17 -4
  360. package/src/react/queries/tokens/index.ts +5 -0
  361. package/src/react/queries/{listBalances.ts → tokens/listBalances.ts} +18 -3
  362. package/src/react/queries/{listTokenMetadata.ts → tokens/listTokenMetadata.ts} +18 -4
  363. package/src/react/queries/{searchTokenMetadata.ts → tokens/searchTokenMetadata.ts} +18 -4
  364. package/src/react/queries/{tokenSupplies.ts → tokens/tokenSupplies.ts} +16 -4
  365. package/src/react/queries/{comparePrices.ts → utils/comparePrices.ts} +16 -4
  366. package/src/react/queries/{convertPriceToUSD.ts → utils/convertPriceToUSD.ts} +18 -5
  367. package/src/react/queries/utils/index.ts +2 -0
  368. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +4 -4
  369. package/src/react/ssr/create-ssr-client.ts +1 -1
  370. package/src/react/ui/components/_internals/ErrorLogBox.tsx +85 -0
  371. package/src/react/ui/components/_internals/action-button/ActionButton.stories.tsx +8 -8
  372. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +10 -9
  373. package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +4 -4
  374. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +10 -6
  375. package/src/react/ui/components/_internals/custom-select/__tests__/CustomSelect.test.tsx +1 -1
  376. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +4 -3
  377. package/src/react/ui/components/marketplace-collectible-card/CollectibleCardSkeleton.tsx +13 -2
  378. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -7
  379. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +14 -5
  380. package/src/react/ui/components/marketplace-collectible-card/components/footer/Footer.tsx +179 -0
  381. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/FooterName.tsx +103 -0
  382. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/PriceDisplay.tsx +80 -0
  383. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/SaleDetailsPill.tsx +29 -0
  384. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/TokenTypeBalancePill.tsx +30 -0
  385. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/index.ts +4 -0
  386. package/src/react/ui/components/marketplace-collectible-card/components/footer/index.ts +2 -0
  387. package/src/react/ui/components/marketplace-collectible-card/types.ts +19 -6
  388. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +14 -23
  389. package/src/react/ui/components/marketplace-collectible-card/variants/NonTradableInventoryCard.tsx +42 -0
  390. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +17 -12
  391. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +10 -10
  392. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +3 -3
  393. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx.bak +3 -3
  394. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +6 -6
  395. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +3 -3
  396. package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +5 -5
  397. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +67 -5
  398. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +8 -8
  399. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +2 -2
  400. package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +31 -0
  401. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +20 -1
  402. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +20 -4
  403. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +12 -3
  404. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +11 -2
  405. package/src/react/ui/modals/BuyModal/store.ts +9 -6
  406. package/src/react/ui/modals/CreateListingModal/Modal.tsx +63 -24
  407. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +4 -0
  408. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +20 -13
  409. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +4 -1
  410. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +2 -1
  411. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +141 -96
  412. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +10 -0
  413. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +4 -1
  414. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +17 -27
  415. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +2 -1
  416. package/src/react/ui/modals/SellModal/Modal.tsx +21 -3
  417. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +2 -0
  418. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +5 -2
  419. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +15 -8
  420. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +9 -0
  421. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +20 -9
  422. package/src/react/ui/modals/_internal/components/calendarDropdown/TimeSelector.tsx +105 -0
  423. package/src/react/ui/modals/_internal/components/calendarDropdown/index.tsx +45 -12
  424. package/src/react/ui/modals/_internal/components/calendarDropdown/overrides.css +39 -0
  425. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +31 -10
  426. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +18 -9
  427. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +53 -3
  428. package/src/react/ui/modals/_internal/components/switchChainErrorModal/__tests__/SwitchChainErrorModal.test.tsx +80 -0
  429. package/src/react/ui/modals/_internal/components/switchChainErrorModal/index.tsx +64 -0
  430. package/src/react/ui/modals/_internal/components/switchChainErrorModal/store.ts +42 -0
  431. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +58 -10
  432. package/src/react/ui/modals/_internal/constants/opensea-currencies.ts +481 -0
  433. package/src/react/ui/modals/_internal/types.ts +0 -1
  434. package/src/react/utils/waitForTransactionReceipt.ts +26 -32
  435. package/src/styles/index.css +1 -0
  436. package/src/styles/styles.ts +201 -25
  437. package/src/types/index.ts +1 -1
  438. package/src/types/new-marketplace-types.ts +9 -18
  439. package/src/types/types.ts +1 -1
  440. package/src/utils/abi/index.ts +1 -0
  441. package/src/utils/abi/mainModule.ts +158 -0
  442. package/test/globalSetup.ts +1 -1
  443. package/test/test-utils.tsx +1 -0
  444. package/dist/BellIcon-Cb9YEUzJ.js.map +0 -1
  445. package/dist/CollectibleCard-CYyWzk6u.d.ts +0 -8
  446. package/dist/api-BmEQfSQa.js.map +0 -1
  447. package/dist/create-config-6uynwTeb.js.map +0 -1
  448. package/dist/filters-B8XS4tFH.d.ts +0 -31
  449. package/dist/index-BuY_NKSX.d.ts +0 -222
  450. package/dist/index-D2HohSwO.d.ts +0 -293
  451. package/dist/listCollectiblesPaginated--AgXjajA.d.ts +0 -166
  452. package/dist/lowestListing-BQHfQpfg.d.ts +0 -144
  453. package/dist/marketplace-logos-D8t86gsW.js.map +0 -1
  454. package/dist/marketplace.gen-JzNYpM0U.js.map +0 -1
  455. package/dist/marketplaceConfig-sNh-MA5M.js.map +0 -1
  456. package/dist/network-DnBEe1Ur.js.map +0 -1
  457. package/dist/queries-BYT4GJw3.js +0 -1478
  458. package/dist/queries-BYT4GJw3.js.map +0 -1
  459. package/dist/react-CbqXKOpt.css +0 -80
  460. package/dist/react-CbqXKOpt.css.map +0 -1
  461. package/dist/react-Ceq8mamy.js.map +0 -1
  462. package/dist/tokenSupplies-DXtkRYNO.d.ts +0 -147
  463. package/dist/transaction-CC2KxNF6.js.map +0 -1
  464. package/dist/types-G2PWxiJR.js.map +0 -1
  465. package/dist/utils-CKJd-CRf.js.map +0 -1
  466. package/dist/utils-wquIhK6T.js.map +0 -1
  467. package/dist/waitForTransactionReceipt-DZxAuR9N.js +0 -27
  468. package/dist/waitForTransactionReceipt-DZxAuR9N.js.map +0 -1
  469. package/src/react/hooks/utils/useSwitchChainWithModal.ts +0 -38
  470. package/src/react/queries/inventory.ts +0 -343
  471. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +0 -238
  472. package/src/react/ui/modals/_internal/components/switchChainModal/__tests__/SwitchChainModal.test.tsx +0 -117
  473. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +0 -124
  474. package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +0 -71
  475. /package/dist/{index-q7f-WDBS.d.ts → index-6wsMChsg.d.ts} +0 -0
  476. /package/dist/{abi-Wr_aTZFi.js → queries-KOcILNJO.js} +0 -0
  477. /package/dist/{wagmi-BhP3mdhP.js → wagmi-Bseovd6Q.js} +0 -0
@@ -0,0 +1,123 @@
1
+ import { server } from '@test';
2
+ import { afterEach, describe, expect, it } from 'vitest';
3
+ import {
4
+ laosHandlers,
5
+ mockTokenBalancesResponse,
6
+ } from '../../../_internal/api/__mocks__/laos.msw';
7
+ import { fetchTokenBalances } from '../tokenBalances';
8
+
9
+ describe('fetchTokenBalances with LAOS', () => {
10
+ const mockConfig = {
11
+ projectAccessKey: 'test-key',
12
+ projectId: '1',
13
+ chainId: 11155111,
14
+ apiUrl: 'https://marketplace-api.sequence.app',
15
+ isDev: false,
16
+ };
17
+
18
+ afterEach(() => {
19
+ server.resetHandlers();
20
+ });
21
+
22
+ it('should use LAOS API when isLaos721=true', async () => {
23
+ server.use(...laosHandlers);
24
+
25
+ const result = await fetchTokenBalances(
26
+ {
27
+ collectionAddress: '0x1234567890123456789012345678901234567890',
28
+ userAddress: '0xuser1234567890123456789012345678901234567890',
29
+ chainId: 11155111,
30
+ isLaos721: true,
31
+ },
32
+ mockConfig,
33
+ );
34
+
35
+ // Should return array of balances from LAOS API response
36
+ expect(result).toEqual(mockTokenBalancesResponse.balances);
37
+ expect(result[0]?.balance).toBe('5');
38
+ expect(result[0]?.contractInfo?.type).toBe('LAOS-ERC-721');
39
+ expect(result[0]?.tokenMetadata?.name).toBe('Test Token 1');
40
+ });
41
+
42
+ it('should handle LAOS API errors', async () => {
43
+ server.use(...laosHandlers);
44
+
45
+ await expect(
46
+ fetchTokenBalances(
47
+ {
48
+ collectionAddress: '0x1234567890123456789012345678901234567890',
49
+ userAddress: '0x0000000000000000000000000000000000000001', // Special address for 500 error
50
+ chainId: 11155111,
51
+ isLaos721: true,
52
+ },
53
+ mockConfig,
54
+ ),
55
+ ).rejects.toThrow('Failed to get token balances: Internal Server Error');
56
+ });
57
+
58
+ it('should return empty array when LAOS API returns empty balances', async () => {
59
+ server.use(...laosHandlers);
60
+
61
+ const result = await fetchTokenBalances(
62
+ {
63
+ collectionAddress: '0x1234567890123456789012345678901234567890',
64
+ userAddress: '0x0000000000000000000000000000000000000003', // Special address for empty response
65
+ chainId: 11155111,
66
+ isLaos721: true,
67
+ },
68
+ mockConfig,
69
+ );
70
+
71
+ expect(result).toEqual([]);
72
+ });
73
+
74
+ it('should include metadata in LAOS response', async () => {
75
+ server.use(...laosHandlers);
76
+
77
+ const result = await fetchTokenBalances(
78
+ {
79
+ collectionAddress: '0x1234567890123456789012345678901234567890',
80
+ userAddress: '0xuser1234567890123456789012345678901234567890',
81
+ chainId: 11155111,
82
+ isLaos721: true,
83
+ },
84
+ mockConfig,
85
+ );
86
+
87
+ expect(result[0]?.tokenMetadata).toBeDefined();
88
+ expect(result[0]?.tokenMetadata?.name).toBe('Test Token 1');
89
+ expect(result[0]?.tokenMetadata?.description).toBe(
90
+ 'A test token for LAOS testing',
91
+ );
92
+ expect(result[0]?.tokenMetadata?.image).toBe(
93
+ 'https://example.com/token1.png',
94
+ );
95
+ expect(result[0]?.tokenMetadata?.attributes).toEqual([
96
+ {
97
+ trait_type: 'Rarity',
98
+ value: 'Common',
99
+ },
100
+ ]);
101
+ });
102
+
103
+ it('should handle different pagination orders', async () => {
104
+ server.use(...laosHandlers);
105
+
106
+ const result = await fetchTokenBalances(
107
+ {
108
+ collectionAddress: '0x1234567890123456789012345678901234567890',
109
+ userAddress: '0xuser1234567890123456789012345678901234567890',
110
+ chainId: 11155111,
111
+ isLaos721: true,
112
+ },
113
+ mockConfig,
114
+ );
115
+
116
+ // Should return array of balances regardless of sort order
117
+ expect(result).toBeDefined();
118
+ expect(Array.isArray(result)).toBe(true);
119
+ expect(result.every((balance) => typeof balance.balance === 'string')).toBe(
120
+ true,
121
+ );
122
+ });
123
+ });
@@ -1,8 +1,8 @@
1
1
  import { queryOptions, skipToken } from '@tanstack/react-query';
2
2
  import type { Address } from 'viem';
3
3
  import type { UseQueryParameters } from 'wagmi/query';
4
- import type { SdkConfig } from '../../types';
5
- import { collectableKeys, getIndexerClient, LaosAPI } from '../_internal';
4
+ import type { SdkConfig } from '../../../types';
5
+ import { collectableKeys, getIndexerClient, LaosAPI } from '../../_internal';
6
6
 
7
7
  export type UseBalanceOfCollectibleArgs = {
8
8
  collectionAddress: Address;
@@ -10,6 +10,7 @@ export type UseBalanceOfCollectibleArgs = {
10
10
  userAddress: Address | undefined;
11
11
  chainId: number;
12
12
  isLaos721?: boolean;
13
+ includeMetadata?: boolean;
13
14
  query?: UseQueryParameters;
14
15
  };
15
16
 
@@ -44,7 +45,7 @@ export async function fetchBalanceOfCollectible(
44
45
  accountAddress: args.userAddress,
45
46
  contractAddress: args.collectionAddress,
46
47
  tokenID: args.collectableId,
47
- includeMetadata: false,
48
+ includeMetadata: args.includeMetadata ?? false,
48
49
  metadataOptions: {
49
50
  verifiedOnly: true,
50
51
  includeContracts: [args.collectionAddress],
@@ -53,6 +54,27 @@ export async function fetchBalanceOfCollectible(
53
54
  .then((res) => res.balances[0] || null);
54
55
  }
55
56
 
57
+ export function getBalanceOfCollectibleQueryKey(
58
+ args: UseBalanceOfCollectibleArgs,
59
+ ) {
60
+ const apiArgs = {
61
+ chainId: args.chainId,
62
+ accountAddress: args.userAddress,
63
+ contractAddress: args.collectionAddress,
64
+ tokenID: args.collectableId,
65
+ includeMetadata: args.includeMetadata,
66
+ metadataOptions: args.userAddress
67
+ ? {
68
+ verifiedOnly: true,
69
+ includeContracts: [args.collectionAddress],
70
+ }
71
+ : undefined,
72
+ isLaos721: args.isLaos721,
73
+ };
74
+
75
+ return [...collectableKeys.userBalances, apiArgs] as const;
76
+ }
77
+
56
78
  /**
57
79
  * Creates a tanstack query options object for the balance query
58
80
  *
@@ -66,7 +88,7 @@ export function balanceOfCollectibleOptions(
66
88
  ) {
67
89
  const enabled = !!args.userAddress && (args.query?.enabled ?? true);
68
90
  return queryOptions({
69
- queryKey: [...collectableKeys.userBalances, args],
91
+ queryKey: getBalanceOfCollectibleQueryKey(args),
70
92
  queryFn: enabled
71
93
  ? () =>
72
94
  fetchBalanceOfCollectible(
@@ -1,9 +1,13 @@
1
1
  import type { GetTokenMetadataArgs } from '@0xsequence/metadata';
2
2
  import { queryOptions } from '@tanstack/react-query';
3
- import type { SdkConfig } from '../../types';
4
- import { getMetadataClient, type ValuesOptional } from '../_internal';
5
- import { collectableKeys } from '../_internal/api/query-keys';
6
- import type { StandardQueryOptions } from '../types/query';
3
+ import type { SdkConfig } from '../../../types';
4
+ import {
5
+ getMetadataClient,
6
+ type QueryKeyArgs,
7
+ type ValuesOptional,
8
+ } from '../../_internal';
9
+ import { collectableKeys } from '../../_internal/api/query-keys';
10
+ import type { StandardQueryOptions } from '../../types/query';
7
11
 
8
12
  export interface FetchCollectibleParams
9
13
  extends Omit<
@@ -38,6 +42,17 @@ export type CollectibleQueryOptions = ValuesOptional<FetchCollectibleParams> & {
38
42
  query?: StandardQueryOptions;
39
43
  };
40
44
 
45
+ export function getCollectibleQueryKey(params: CollectibleQueryOptions) {
46
+ const apiArgs = {
47
+ chainID: String(params.chainId),
48
+ contractAddress: params.collectionAddress,
49
+ // biome-ignore lint/style/noNonNullAssertion: Dont need to validate here
50
+ tokenIDs: [params.collectibleId!],
51
+ } satisfies QueryKeyArgs<GetTokenMetadataArgs>;
52
+
53
+ return [...collectableKeys.details, apiArgs] as const;
54
+ }
55
+
41
56
  export function collectibleQueryOptions(params: CollectibleQueryOptions) {
42
57
  const enabled = Boolean(
43
58
  params.collectionAddress &&
@@ -48,7 +63,7 @@ export function collectibleQueryOptions(params: CollectibleQueryOptions) {
48
63
  );
49
64
 
50
65
  return queryOptions({
51
- queryKey: [...collectableKeys.details, params],
66
+ queryKey: getCollectibleQueryKey(params),
52
67
  queryFn: () =>
53
68
  fetchCollectible({
54
69
  // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
@@ -1,14 +1,18 @@
1
1
  import { queryOptions } from '@tanstack/react-query';
2
- import type { SdkConfig } from '../../types';
3
- import { getMarketplaceClient, type ValuesOptional } from '../_internal';
2
+ import type { SdkConfig } from '../../../types';
3
+ import {
4
+ getMarketplaceClient,
5
+ type QueryKeyArgs,
6
+ type ValuesOptional,
7
+ } from '../../_internal';
4
8
  import type {
5
9
  CollectiblesFilter,
6
10
  GetCountOfAllCollectiblesArgs,
7
11
  GetCountOfFilteredCollectiblesArgs,
8
12
  OrderSide,
9
- } from '../_internal/api/marketplace.gen';
10
- import { collectableKeys } from '../_internal/api/query-keys';
11
- import type { StandardQueryOptions } from '../types/query';
13
+ } from '../../_internal/api/marketplace.gen';
14
+ import { collectableKeys } from '../../_internal/api/query-keys';
15
+ import type { StandardQueryOptions } from '../../types/query';
12
16
 
13
17
  export interface FetchCountOfCollectablesParams {
14
18
  chainId: number;
@@ -54,6 +58,28 @@ export type CountOfCollectablesQueryOptions =
54
58
  query?: StandardQueryOptions;
55
59
  };
56
60
 
61
+ export function getCountOfCollectablesQueryKey(
62
+ params: CountOfCollectablesQueryOptions,
63
+ ) {
64
+ if (params.filter && params.side) {
65
+ const apiArgs = {
66
+ chainId: String(params.chainId),
67
+ contractAddress: params.collectionAddress,
68
+ filter: params.filter,
69
+ side: params.side,
70
+ } satisfies QueryKeyArgs<GetCountOfFilteredCollectiblesArgs>;
71
+
72
+ return [...collectableKeys.counts, apiArgs] as const;
73
+ }
74
+
75
+ const apiArgs = {
76
+ chainId: String(params.chainId),
77
+ contractAddress: params.collectionAddress,
78
+ } satisfies QueryKeyArgs<GetCountOfAllCollectiblesArgs>;
79
+
80
+ return [...collectableKeys.counts, apiArgs] as const;
81
+ }
82
+
57
83
  export function countOfCollectablesQueryOptions(
58
84
  params: CountOfCollectablesQueryOptions,
59
85
  ) {
@@ -65,7 +91,7 @@ export function countOfCollectablesQueryOptions(
65
91
  );
66
92
 
67
93
  return queryOptions({
68
- queryKey: [...collectableKeys.counts, params],
94
+ queryKey: getCountOfCollectablesQueryKey(params),
69
95
  queryFn: () =>
70
96
  fetchCountOfCollectables({
71
97
  // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
@@ -0,0 +1,7 @@
1
+ export * from './balanceOfCollectible';
2
+ export * from './collectible';
3
+ export * from './countOfCollectables';
4
+ export * from './listCollectibleActivities';
5
+ export * from './listCollectibles';
6
+ export * from './listCollectiblesPaginated';
7
+ export * from './tokenBalances';
@@ -1,14 +1,15 @@
1
1
  import { queryOptions } from '@tanstack/react-query';
2
2
  import type { Address } from 'viem';
3
- import type { Page, SdkConfig } from '../../types';
3
+ import type { Page, SdkConfig } from '../../../types';
4
4
  import type {
5
5
  ListCollectibleActivitiesArgs,
6
6
  ListCollectibleActivitiesReturn,
7
+ QueryKeyArgs,
7
8
  SortBy,
8
9
  ValuesOptional,
9
- } from '../_internal';
10
- import { collectableKeys, getMarketplaceClient } from '../_internal';
11
- import type { StandardQueryOptions } from '../types/query';
10
+ } from '../../_internal';
11
+ import { collectableKeys, getMarketplaceClient } from '../../_internal';
12
+ import type { StandardQueryOptions } from '../../types/query';
12
13
 
13
14
  export interface FetchListCollectibleActivitiesParams
14
15
  extends Omit<
@@ -64,6 +65,29 @@ export type ListCollectibleActivitiesQueryOptions =
64
65
  query?: StandardQueryOptions;
65
66
  };
66
67
 
68
+ export function getListCollectibleActivitiesQueryKey(
69
+ params: ListCollectibleActivitiesQueryOptions,
70
+ ) {
71
+ // TODO: Do we actually want to do the page like this?
72
+ const page =
73
+ params.page || params.pageSize || params.sort
74
+ ? {
75
+ page: params.page ?? 1,
76
+ pageSize: params.pageSize ?? 10,
77
+ sort: params.sort,
78
+ }
79
+ : undefined;
80
+
81
+ const apiArgs = {
82
+ chainId: String(params.chainId),
83
+ contractAddress: params.collectionAddress,
84
+ tokenId: params.tokenId,
85
+ page: page,
86
+ } satisfies QueryKeyArgs<ListCollectibleActivitiesArgs>;
87
+
88
+ return [...collectableKeys.collectibleActivities, apiArgs] as const;
89
+ }
90
+
67
91
  export function listCollectibleActivitiesQueryOptions(
68
92
  params: ListCollectibleActivitiesQueryOptions,
69
93
  ) {
@@ -76,7 +100,7 @@ export function listCollectibleActivitiesQueryOptions(
76
100
  );
77
101
 
78
102
  return queryOptions({
79
- queryKey: [...collectableKeys.collectibleActivities, params],
103
+ queryKey: getListCollectibleActivitiesQueryKey(params),
80
104
  queryFn: () =>
81
105
  fetchListCollectibleActivities({
82
106
  // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
@@ -1,30 +1,36 @@
1
1
  import { infiniteQueryOptions } from '@tanstack/react-query';
2
2
  import type { Address } from 'viem';
3
- import type { MarketplaceConfig, Page, SdkConfig } from '../../types';
4
- import type { MarketplaceType } from '../../types/types';
5
- import { compareAddress } from '../../utils';
3
+ import type { Page, SdkConfig } from '../../../types';
4
+ import type { CardType } from '../../../types/types';
5
+ import { compareAddress } from '../../../utils';
6
6
  import type {
7
7
  ListCollectiblesArgs,
8
8
  ListCollectiblesReturn,
9
+ QueryKeyArgs,
9
10
  ValuesOptional,
10
- } from '../_internal';
11
+ } from '../../_internal';
11
12
  import {
12
13
  type CollectibleOrder,
13
14
  collectableKeys,
14
15
  getMarketplaceClient,
16
+ MetadataStatus,
15
17
  OrderSide,
16
- } from '../_internal';
17
- import { fetchMarketplaceConfig } from '../queries/marketplaceConfig';
18
- import type { StandardInfiniteQueryOptions } from '../types/query';
19
- import { fetchBalances, type UseListBalancesArgs } from './listBalances';
18
+ } from '../../_internal';
19
+ import type { StandardInfiniteQueryOptions } from '../../types/query';
20
+ import { fetchMarketplaceConfig } from '../market/marketplaceConfig';
21
+ import {
22
+ fetchBalances,
23
+ type UseListBalancesArgs,
24
+ } from '../tokens/listBalances';
20
25
 
21
26
  export interface FetchListCollectiblesParams
22
27
  extends Omit<ListCollectiblesArgs, 'chainId' | 'contractAddress'> {
23
28
  chainId: number;
24
29
  collectionAddress: Address;
25
30
  isLaos721?: boolean;
26
- marketplaceType?: MarketplaceType;
31
+ cardType?: CardType;
27
32
  config: SdkConfig;
33
+ enabled?: boolean;
28
34
  }
29
35
 
30
36
  /**
@@ -32,11 +38,26 @@ export interface FetchListCollectiblesParams
32
38
  */
33
39
  export async function fetchListCollectibles(
34
40
  params: FetchListCollectiblesParams,
35
- marketplaceConfig: MarketplaceConfig,
36
41
  page: Page,
37
42
  ): Promise<ListCollectiblesReturn> {
38
43
  const { collectionAddress, chainId, config, ...additionalApiParams } = params;
39
44
  const marketplaceClient = getMarketplaceClient(config);
45
+ const marketplaceConfig = await fetchMarketplaceConfig({ config });
46
+ const isMarketCollection = marketplaceConfig?.market.collections.some(
47
+ (collection) => compareAddress(collection.itemsAddress, collectionAddress),
48
+ );
49
+
50
+ // If it's not a market collection, return an empty list. those collections are not compatible with the ListCollectibles endpoint.
51
+ if (params.enabled === false || !isMarketCollection) {
52
+ return {
53
+ collectibles: [],
54
+ page: {
55
+ page: 1,
56
+ pageSize: 30,
57
+ more: false,
58
+ },
59
+ };
60
+ }
40
61
 
41
62
  const apiArgs: ListCollectiblesArgs = {
42
63
  contractAddress: collectionAddress,
@@ -45,43 +66,6 @@ export async function fetchListCollectibles(
45
66
  ...additionalApiParams,
46
67
  };
47
68
 
48
- if (params.marketplaceType === 'shop') {
49
- const shopCollection = marketplaceConfig.shop.collections.find(
50
- (collection) =>
51
- compareAddress(collection.itemsAddress, params.collectionAddress),
52
- );
53
-
54
- if (!shopCollection) {
55
- return { collectibles: [] };
56
- }
57
-
58
- const primarySaleItemsList = await marketplaceClient.listPrimarySaleItems(
59
- {
60
- chainId: params.chainId.toString(),
61
- primarySaleContractAddress: shopCollection.saleAddress as Address,
62
- },
63
- marketplaceConfig,
64
- );
65
-
66
- return {
67
- collectibles: primarySaleItemsList.primarySaleItems.map((item) => ({
68
- metadata: item.metadata,
69
- primarySale: {
70
- price: {
71
- amount: item.primarySaleItem.priceAmount,
72
- formatted: item.primarySaleItem.priceAmountFormatted,
73
- decimals: item.primarySaleItem.priceDecimals,
74
- currencyAddress: item.primarySaleItem.currencyAddress,
75
- },
76
- startDate: item.primarySaleItem.startDate,
77
- endDate: item.primarySaleItem.endDate,
78
- supplyCap: item.primarySaleItem.supply,
79
- itemType: item.primarySaleItem.itemType,
80
- },
81
- })),
82
- };
83
- }
84
-
85
69
  if (params.isLaos721 && params.side === OrderSide.listing) {
86
70
  try {
87
71
  const fetchBalancesArgs = {
@@ -107,6 +91,7 @@ export async function fetchListCollectibles(
107
91
  description: balance.tokenMetadata.description,
108
92
  video: balance.tokenMetadata.video,
109
93
  audio: balance.tokenMetadata.audio,
94
+ status: MetadataStatus.AVAILABLE,
110
95
  },
111
96
  };
112
97
  },
@@ -130,6 +115,19 @@ export type ListCollectiblesQueryOptions =
130
115
  query?: StandardInfiniteQueryOptions;
131
116
  };
132
117
 
118
+ export function getListCollectiblesQueryKey(
119
+ params: ListCollectiblesQueryOptions,
120
+ ) {
121
+ const apiArgs = {
122
+ chainId: String(params.chainId),
123
+ contractAddress: params.collectionAddress,
124
+ side: params.side,
125
+ filter: params.filter,
126
+ } satisfies QueryKeyArgs<Omit<ListCollectiblesArgs, 'page'>>;
127
+
128
+ return [...collectableKeys.lists, apiArgs] as const;
129
+ }
130
+
133
131
  export function listCollectiblesQueryOptions(
134
132
  params: ListCollectiblesQueryOptions,
135
133
  ) {
@@ -142,12 +140,8 @@ export function listCollectiblesQueryOptions(
142
140
  );
143
141
 
144
142
  return infiniteQueryOptions({
145
- queryKey: [...collectableKeys.lists, params],
143
+ queryKey: getListCollectiblesQueryKey(params),
146
144
  queryFn: async ({ pageParam }) => {
147
- const marketplaceConfig = await fetchMarketplaceConfig({
148
- // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
149
- config: params.config!,
150
- });
151
145
  return fetchListCollectibles(
152
146
  {
153
147
  // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
@@ -160,9 +154,8 @@ export function listCollectiblesQueryOptions(
160
154
  side: params.side!,
161
155
  filter: params.filter,
162
156
  isLaos721: params.isLaos721,
163
- marketplaceType: params.marketplaceType,
157
+ cardType: params.cardType,
164
158
  },
165
- marketplaceConfig,
166
159
  pageParam,
167
160
  );
168
161
  },
@@ -1,13 +1,14 @@
1
1
  import { queryOptions } from '@tanstack/react-query';
2
2
  import type { Address } from 'viem';
3
- import type { Page, SdkConfig } from '../../types';
3
+ import type { Page, SdkConfig } from '../../../types';
4
4
  import type {
5
5
  ListCollectiblesArgs,
6
6
  ListCollectiblesReturn,
7
+ QueryKeyArgs,
7
8
  ValuesOptional,
8
- } from '../_internal';
9
- import { collectableKeys, getMarketplaceClient } from '../_internal';
10
- import type { StandardQueryOptions } from '../types/query';
9
+ } from '../../_internal';
10
+ import { collectableKeys, getMarketplaceClient } from '../../_internal';
11
+ import type { StandardQueryOptions } from '../../types/query';
11
12
 
12
13
  export interface FetchListCollectiblesPaginatedParams
13
14
  extends Omit<ListCollectiblesArgs, 'chainId' | 'contractAddress' | 'page'> {
@@ -54,6 +55,22 @@ export type ListCollectiblesPaginatedQueryOptions =
54
55
  query?: StandardQueryOptions;
55
56
  };
56
57
 
58
+ export function getListCollectiblesPaginatedQueryKey(
59
+ params: ListCollectiblesPaginatedQueryOptions,
60
+ ) {
61
+ const apiArgs = {
62
+ chainId: String(params.chainId),
63
+ contractAddress: params.collectionAddress,
64
+ side: params.side,
65
+ filter: params.filter,
66
+ page: params.page
67
+ ? { page: params.page, pageSize: params.pageSize ?? 30 }
68
+ : undefined,
69
+ } satisfies QueryKeyArgs<ListCollectiblesArgs>;
70
+
71
+ return [...collectableKeys.lists, 'paginated', apiArgs] as const;
72
+ }
73
+
57
74
  export function listCollectiblesPaginatedQueryOptions(
58
75
  params: ListCollectiblesPaginatedQueryOptions,
59
76
  ) {
@@ -66,7 +83,7 @@ export function listCollectiblesPaginatedQueryOptions(
66
83
  );
67
84
 
68
85
  return queryOptions({
69
- queryKey: [...collectableKeys.lists, 'paginated', params],
86
+ queryKey: getListCollectiblesPaginatedQueryKey(params),
70
87
  queryFn: () =>
71
88
  fetchListCollectiblesPaginated({
72
89
  // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
@@ -0,0 +1,103 @@
1
+ import { queryOptions, skipToken } from '@tanstack/react-query';
2
+ import type { Address } from 'viem';
3
+ import type { UseQueryParameters } from 'wagmi/query';
4
+ import type { SdkConfig } from '../../../types';
5
+ import { collectableKeys, getIndexerClient, LaosAPI } from '../../_internal';
6
+
7
+ export type UseTokenBalancesArgs = {
8
+ collectionAddress: Address;
9
+ userAddress: Address | undefined;
10
+ chainId: number;
11
+ isLaos721?: boolean;
12
+ includeMetadata?: boolean;
13
+ query?: UseQueryParameters;
14
+ };
15
+
16
+ /**
17
+ * Fetches the token balances for a user
18
+ *
19
+ * @param args - Arguments for the API call
20
+ * @param config - SDK configuration
21
+ * @returns The balance data
22
+ */
23
+ export async function fetchTokenBalances(
24
+ args: Omit<UseTokenBalancesArgs, 'userAddress'> & {
25
+ userAddress: Address;
26
+ },
27
+ config: SdkConfig,
28
+ ) {
29
+ if (args.isLaos721) {
30
+ const laosApi = new LaosAPI();
31
+ const response = await laosApi.getTokenBalances({
32
+ chainId: args.chainId.toString(),
33
+ contractAddress: args.collectionAddress,
34
+ accountAddress: args.userAddress,
35
+ includeMetadata: true,
36
+ });
37
+
38
+ return response.balances || [];
39
+ }
40
+
41
+ const indexerClient = getIndexerClient(args.chainId, config);
42
+ return indexerClient
43
+ .getTokenBalances({
44
+ accountAddress: args.userAddress,
45
+ contractAddress: args.collectionAddress,
46
+ includeMetadata: args.includeMetadata ?? false,
47
+ metadataOptions: {
48
+ verifiedOnly: true,
49
+ includeContracts: [args.collectionAddress],
50
+ },
51
+ })
52
+ .then((res) => res.balances || []);
53
+ }
54
+
55
+ export function getTokenBalancesQueryKey(args: UseTokenBalancesArgs) {
56
+ const apiArgs = {
57
+ chainId: args.chainId,
58
+ accountAddress: args.userAddress,
59
+ contractAddress: args.collectionAddress,
60
+ includeMetadata: args.includeMetadata,
61
+ metadataOptions: args.userAddress
62
+ ? {
63
+ verifiedOnly: true,
64
+ includeContracts: [args.collectionAddress],
65
+ }
66
+ : undefined,
67
+ isLaos721: args.isLaos721,
68
+ };
69
+
70
+ return [...collectableKeys.userBalances, apiArgs] as const;
71
+ }
72
+
73
+ /**
74
+ * Creates a tanstack query options object for the token balances query
75
+ *
76
+ * @param args - The query arguments
77
+ * @param config - SDK configuration
78
+ * @returns Query options configuration
79
+ */
80
+ export function tokenBalancesOptions(
81
+ args: UseTokenBalancesArgs,
82
+ config: SdkConfig,
83
+ ) {
84
+ const enabled =
85
+ !!args.userAddress &&
86
+ !!args.collectionAddress &&
87
+ (args.query?.enabled ?? true);
88
+
89
+ return queryOptions({
90
+ queryKey: getTokenBalancesQueryKey(args),
91
+ queryFn: enabled
92
+ ? () =>
93
+ fetchTokenBalances(
94
+ {
95
+ ...args,
96
+ // biome-ignore lint/style/noNonNullAssertion: this is guaranteed by the userAddress check above
97
+ userAddress: args.userAddress!,
98
+ },
99
+ config,
100
+ )
101
+ : skipToken,
102
+ });
103
+ }