@0xsequence/marketplace-sdk 0.8.12 → 0.10.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 (487) hide show
  1. package/.storybook/main.ts +63 -0
  2. package/.storybook/preview.ts +24 -0
  3. package/.storybook/vitest.setup.ts +6 -0
  4. package/CHANGELOG.md +158 -21
  5. package/dist/{CartIcon-Bll1rbxv.js → CalendarIcon-CqsuAuCm.js} +30 -77
  6. package/dist/CalendarIcon-CqsuAuCm.js.map +1 -0
  7. package/dist/{types-BIJOaL4j.d.ts → CollectibleCard-Dd-CG6dE.d.ts} +11 -7
  8. package/dist/InfoIcon-v0w_Lu7t.js +53 -0
  9. package/dist/InfoIcon-v0w_Lu7t.js.map +1 -0
  10. package/dist/_internal-C75gOSNo.js +14 -0
  11. package/dist/_internal-C75gOSNo.js.map +1 -0
  12. package/dist/actionModal-CMUeVsFX.js +116 -0
  13. package/dist/actionModal-CMUeVsFX.js.map +1 -0
  14. package/dist/{alien_swap-B_76IMma.js → alien_swap-CYv6YlOF.js} +1 -1
  15. package/dist/{alien_swap-B_76IMma.js.map → alien_swap-CYv6YlOF.js.map} +1 -1
  16. package/dist/{api-1KFxYh7o.js → api-BiMGqWdz.js} +79 -87
  17. package/dist/api-BiMGqWdz.js.map +1 -0
  18. package/dist/{aqua-xyz-CMN_TFY5.js → aqua-xyz-Bzn5baeH.js} +1 -1
  19. package/dist/{aqua-xyz-CMN_TFY5.js.map → aqua-xyz-Bzn5baeH.js.map} +1 -1
  20. package/dist/{aura-Cye_TuHj.js → aura-DzIWh8WT.js} +1 -1
  21. package/dist/{aura-Cye_TuHj.js.map → aura-DzIWh8WT.js.map} +1 -1
  22. package/dist/base-DqaJPvfN.js +22 -0
  23. package/dist/base-DqaJPvfN.js.map +1 -0
  24. package/dist/{blur-DWDMyMpK.js → blur-DSH-Cbpj.js} +1 -1
  25. package/dist/{blur-DWDMyMpK.js.map → blur-DSH-Cbpj.js.map} +1 -1
  26. package/dist/{builder-api-BQvzykoU.js → builder-api-BFuZNOaN.js} +2 -2
  27. package/dist/{builder-api-BQvzykoU.js.map → builder-api-BFuZNOaN.js.map} +1 -1
  28. package/dist/{builder.gen-CxP9NT1p.js → builder.gen-B9wR2nvF.js} +1 -1
  29. package/dist/builder.gen-B9wR2nvF.js.map +1 -0
  30. package/dist/{coinbase-ByA_XRB0.js → coinbase-Df8URNxq.js} +1 -1
  31. package/dist/{coinbase-ByA_XRB0.js.map → coinbase-Df8URNxq.js.map} +1 -1
  32. package/dist/{sdk-config-DJzxVPld.d.ts → create-config-DKJ-F0jc.d.ts} +458 -86
  33. package/dist/{wagmi-DRctYEk6.js → create-config-fQ-jbJD1.js} +33 -16
  34. package/dist/create-config-fQ-jbJD1.js.map +1 -0
  35. package/dist/{element-b77CyXIZ.js → element-Cx6uJu5N.js} +1 -1
  36. package/dist/{element-b77CyXIZ.js.map → element-Cx6uJu5N.js.map} +1 -1
  37. package/dist/{foundation-DbOrKP9Y.js → foundation-D6U4aRLN.js} +1 -1
  38. package/dist/{foundation-DbOrKP9Y.js.map → foundation-D6U4aRLN.js.map} +1 -1
  39. package/dist/get-provider-CYYHfrlg.js +10 -0
  40. package/dist/get-provider-CYYHfrlg.js.map +1 -0
  41. package/dist/get-query-client-D19vvfJo.js +23 -0
  42. package/dist/get-query-client-D19vvfJo.js.map +1 -0
  43. package/dist/hooks-4pxIbLbM.js +4044 -0
  44. package/dist/hooks-4pxIbLbM.js.map +1 -0
  45. package/dist/{index-1bezgsFq.d.ts → index-136YrWDH.d.ts} +929 -255
  46. package/dist/{index-D5v5iluA.d.ts → index-BAhaEfqY.d.ts} +1 -1
  47. package/dist/index-BKBin-rq.d.ts +979 -0
  48. package/dist/index-BUWB_RXp.d.ts +3144 -0
  49. package/dist/{index-Cl7PQOGu.d.ts → index-BhVFc2rX.d.ts} +28 -25
  50. package/dist/{index-DXMfTZ1F.d.ts → index-C5aqo8xu.d.ts} +1 -1
  51. package/dist/{index-BIMIpDiI.d.ts → index-CKrYP7ot.d.ts} +74 -103
  52. package/dist/{index-BEYefG1G.d.ts → index-CUwMH7Ht.d.ts} +5 -5
  53. package/dist/{index-BjIwVzc4.d.ts → index-Cu70Lw-w.d.ts} +238 -238
  54. package/dist/index.css +427 -1
  55. package/dist/index.d.ts +8 -10
  56. package/dist/index.js +15 -11
  57. package/dist/{looks-rare-C1VqNcSM.js → looks-rare-ChBRBY-p.js} +1 -1
  58. package/dist/{looks-rare-C1VqNcSM.js.map → looks-rare-ChBRBY-p.js.map} +1 -1
  59. package/dist/{magic-eden-ea_AGCZr.js → magic-eden-D5U7N1xL.js} +1 -1
  60. package/dist/{magic-eden-ea_AGCZr.js.map → magic-eden-D5U7N1xL.js.map} +1 -1
  61. package/dist/{manifold-8y8J2sjT.js → manifold-CtLF52zU.js} +1 -1
  62. package/dist/{manifold-8y8J2sjT.js.map → manifold-CtLF52zU.js.map} +1 -1
  63. package/dist/{marketplace-nwnZv9Cb.js → marketplace-DmFiyBoS.js} +1 -1
  64. package/dist/{marketplace-nwnZv9Cb.js.map → marketplace-DmFiyBoS.js.map} +1 -1
  65. package/dist/{marketplace-logos-CSeGcPW4.js → marketplace-logos-Cd6W-qOq.js} +21 -21
  66. package/dist/{marketplace-logos-CSeGcPW4.js.map → marketplace-logos-Cd6W-qOq.js.map} +1 -1
  67. package/dist/{marketplace.gen-Dqk8vRmD.js → marketplace.gen-HpnpL5xU.js} +12 -3
  68. package/dist/marketplace.gen-HpnpL5xU.js.map +1 -0
  69. package/dist/{marketplaceConfig-D2MYFqll.js → marketplaceConfig-GQTTmihy.js} +3 -3
  70. package/dist/marketplaceConfig-GQTTmihy.js.map +1 -0
  71. package/dist/{mintify-LA68TzWg.js → mintify-Bi3Bce68.js} +1 -1
  72. package/dist/{mintify-LA68TzWg.js.map → mintify-Bi3Bce68.js.map} +1 -1
  73. package/dist/network-CGD0oKtS.js +15 -0
  74. package/dist/network-CGD0oKtS.js.map +1 -0
  75. package/dist/{nftx-D3Tc8nzd.js → nftx-BDQZjtkX.js} +1 -1
  76. package/dist/{nftx-D3Tc8nzd.js.map → nftx-BDQZjtkX.js.map} +1 -1
  77. package/dist/{okx-hbqg6oIJ.js → okx-D4meadLe.js} +1 -1
  78. package/dist/{okx-hbqg6oIJ.js.map → okx-D4meadLe.js.map} +1 -1
  79. package/dist/{open-sea-BccuK8-t.js → open-sea-DN0hgfVw.js} +1 -1
  80. package/dist/{open-sea-BccuK8-t.js.map → open-sea-DN0hgfVw.js.map} +1 -1
  81. package/dist/options-BBBR8u_4.js +0 -0
  82. package/dist/{primary-sale-Cw95phYC.js → primary-sale-CmWxSfFQ.js} +279 -279
  83. package/dist/primary-sale-CmWxSfFQ.js.map +1 -0
  84. package/dist/provider-DPGUA10G.js +125 -0
  85. package/dist/provider-DPGUA10G.js.map +1 -0
  86. package/dist/queries-Ce_2othB.js +757 -0
  87. package/dist/queries-Ce_2othB.js.map +1 -0
  88. package/dist/{rarible-BgTwwj9g.js → rarible-B0xlD88A.js} +1 -1
  89. package/dist/{rarible-BgTwwj9g.js.map → rarible-B0xlD88A.js.map} +1 -1
  90. package/dist/react/_internal/api/index.d.ts +2 -4
  91. package/dist/react/_internal/api/index.js +9 -6
  92. package/dist/react/_internal/databeat/index.d.ts +2 -73
  93. package/dist/react/_internal/databeat/index.js +4 -21
  94. package/dist/react/_internal/index.d.ts +2 -7
  95. package/dist/react/_internal/index.js +13 -8
  96. package/dist/react/_internal/wagmi/index.d.ts +2 -4
  97. package/dist/react/_internal/wagmi/index.js +6 -4
  98. package/dist/react/hooks/index.d.ts +13 -17
  99. package/dist/react/hooks/index.js +25 -21
  100. package/dist/react/hooks/options/index.d.ts +3 -5
  101. package/dist/react/hooks/options/index.js +15 -10
  102. package/dist/react/index.d.ts +13 -40
  103. package/dist/react/index.js +30 -21
  104. package/dist/react/queries/index.d.ts +9 -8
  105. package/dist/react/queries/index.js +22 -17
  106. package/dist/react/ssr/index.d.ts +7 -9
  107. package/dist/react/ssr/index.js +13 -8
  108. package/dist/react/ssr/index.js.map +1 -1
  109. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +3 -9
  110. package/dist/react/ui/components/marketplace-collectible-card/index.js +29 -20
  111. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -7
  112. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +13 -8
  113. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  114. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  115. package/dist/react/ui/icons/index.js +14 -10
  116. package/dist/react/ui/index.d.ts +3 -9
  117. package/dist/react/ui/index.js +29 -20
  118. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +5 -5
  119. package/dist/react/ui/modals/_internal/components/actionModal/index.js +25 -20
  120. package/dist/{react-BG7o4PId.js → react-DP0M2Wfm.js} +4919 -7839
  121. package/dist/react-DP0M2Wfm.js.map +1 -0
  122. package/dist/{react-BbHBl6gg.css → react-DeDyTgo7.css} +1 -1
  123. package/dist/{react-BbHBl6gg.css.map → react-DeDyTgo7.css.map} +1 -1
  124. package/dist/{sequence-Do3kzb4J.js → sequence-BIrOVRXO.js} +1 -1
  125. package/dist/{sequence-Do3kzb4J.js.map → sequence-BIrOVRXO.js.map} +1 -1
  126. package/dist/{sudo-swap-B6vPKxBz.js → sudo-swap-BPMon-M5.js} +1 -1
  127. package/dist/{sudo-swap-B6vPKxBz.js.map → sudo-swap-BPMon-M5.js.map} +1 -1
  128. package/dist/{super-rare-eCm1SE6O.js → super-rare-kPN6Ua8i.js} +1 -1
  129. package/dist/{super-rare-eCm1SE6O.js.map → super-rare-kPN6Ua8i.js.map} +1 -1
  130. package/dist/{token-CO5llIla.js → token-CHSBPYVG.js} +1540 -761
  131. package/dist/token-CHSBPYVG.js.map +1 -0
  132. package/dist/{transaction-CcVViHEL.js → transaction-CnctdNzS.js} +3 -21
  133. package/dist/transaction-CnctdNzS.js.map +1 -0
  134. package/dist/types/index.d.ts +2 -3
  135. package/dist/types/index.js +3 -3
  136. package/dist/{types-DwWE6xOF.js → types-Yw2ywj6j.js} +1 -1
  137. package/dist/types-Yw2ywj6j.js.map +1 -0
  138. package/dist/utils/abi/index.d.ts +5 -5
  139. package/dist/utils/abi/index.js +5 -5
  140. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  141. package/dist/utils/abi/marketplace/index.js +1 -1
  142. package/dist/utils/abi/primary-sale/index.d.ts +1 -1
  143. package/dist/utils/abi/primary-sale/index.js +1 -1
  144. package/dist/utils/abi/token/index.d.ts +2 -2
  145. package/dist/utils/abi/token/index.js +2 -2
  146. package/dist/utils/index.d.ts +7 -8
  147. package/dist/utils/index.js +13 -10
  148. package/dist/{utils-BFdxaToy.js → utils-9RXDgcBl.js} +86 -93
  149. package/dist/utils-9RXDgcBl.js.map +1 -0
  150. package/dist/{utils-Cat9_pef.js → utils-DjVJ9tov.js} +5 -6
  151. package/dist/utils-DjVJ9tov.js.map +1 -0
  152. package/dist/wagmi-Do_KW5ke.js +0 -0
  153. package/dist/{x2y2-DD17tT91.js → x2y2-BLz-_Q2O.js} +1 -1
  154. package/dist/{x2y2-DD17tT91.js.map → x2y2-BLz-_Q2O.js.map} +1 -1
  155. package/dist/{zora-BpSG9UzS.js → zora-UGhKs-aL.js} +1 -1
  156. package/dist/{zora-BpSG9UzS.js.map → zora-UGhKs-aL.js.map} +1 -1
  157. package/eslint/use-client.js +0 -6
  158. package/eslint.config.mjs +4 -0
  159. package/package.json +47 -35
  160. package/postcss.config.mjs +6 -0
  161. package/src/index.css +5 -4
  162. package/src/index.ts +2 -1
  163. package/src/react/__tests__/provider.test.tsx +4 -3
  164. package/src/react/_internal/api/__mocks__/builder.msw.ts +5 -3
  165. package/src/react/_internal/api/__mocks__/indexer.msw.ts +24 -8
  166. package/src/react/_internal/api/__mocks__/laos.msw.ts +387 -0
  167. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +6 -6
  168. package/src/react/_internal/api/__mocks__/metadata.msw.ts +1 -1
  169. package/src/react/_internal/api/__tests__/laos-api.test.ts +756 -0
  170. package/src/react/_internal/api/builder.gen.ts +6 -6
  171. package/src/react/_internal/api/get-query-client.ts +2 -2
  172. package/src/react/_internal/api/index.ts +2 -2
  173. package/src/react/_internal/api/laos-api.ts +3 -0
  174. package/src/react/_internal/api/marketplace.gen.ts +43 -3
  175. package/src/react/_internal/api/query-keys.ts +21 -6
  176. package/src/react/_internal/api/services.ts +30 -45
  177. package/src/react/_internal/databeat/index.ts +15 -14
  178. package/src/react/_internal/databeat/types.ts +22 -0
  179. package/src/react/_internal/databeat/utils.ts +26 -0
  180. package/src/react/_internal/index.ts +1 -1
  181. package/src/react/_internal/types.ts +10 -23
  182. package/src/react/_internal/utils.ts +4 -5
  183. package/src/react/_internal/wagmi/create-config.ts +43 -19
  184. package/src/react/_internal/wagmi/get-connectors.ts +9 -7
  185. package/src/react/_internal/wallet/__tests__/wallet.test.ts +1 -1
  186. package/src/react/_internal/wallet/wallet.ts +22 -22
  187. package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +20 -0
  188. package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +12 -2
  189. package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +1 -1
  190. package/src/react/hooks/__tests__/useBalanceOfCollectible.laos.test.tsx +367 -0
  191. package/src/react/hooks/__tests__/useBalanceOfCollectible.test.tsx +1 -1
  192. package/src/react/hooks/__tests__/useCancelOrder.test.tsx +4 -4
  193. package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +1 -1
  194. package/src/react/hooks/__tests__/useCheckoutOptions.test.tsx +158 -0
  195. package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +42 -65
  196. package/src/react/hooks/__tests__/useCollectible.test.tsx +14 -16
  197. package/src/react/hooks/__tests__/useCollection.test.tsx +4 -4
  198. package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +16 -25
  199. package/src/react/hooks/__tests__/useCollectionDetails.test.tsx +1 -1
  200. package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +12 -4
  201. package/src/react/hooks/__tests__/useComparePrices.test.tsx +7 -6
  202. package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +4 -4
  203. package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +2 -2
  204. package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +5 -5
  205. package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +2 -2
  206. package/src/react/hooks/__tests__/useCurrency.test.tsx +5 -3
  207. package/src/react/hooks/__tests__/useCurrencyBalance.test.tsx +7 -3
  208. package/src/react/hooks/__tests__/useFilters.test.tsx +3 -3
  209. package/src/react/hooks/__tests__/useFloorOrder.test.tsx +4 -4
  210. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +3 -3
  211. package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +1 -1
  212. package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +1 -1
  213. package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +1 -1
  214. package/src/react/hooks/__tests__/useGetTokenRanges.test.tsx +111 -0
  215. package/src/react/hooks/__tests__/useHighestOffer.test.tsx +4 -4
  216. package/src/react/hooks/__tests__/useInventory.test.tsx +1 -1
  217. package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +11 -13
  218. package/src/react/hooks/__tests__/useListCollectibles.test.tsx +5 -5
  219. package/src/react/hooks/__tests__/useListCollectiblesPaginated.test.tsx +10 -15
  220. package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +13 -15
  221. package/src/react/hooks/__tests__/useListCollections.test.tsx +3 -3
  222. package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +3 -2
  223. package/src/react/hooks/__tests__/useListMarketCardData.test.tsx +301 -0
  224. package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +1 -1
  225. package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +137 -0
  226. package/src/react/hooks/__tests__/useLowestListing.test.tsx +1 -1
  227. package/src/react/hooks/__tests__/useMarketCurrencies.test.tsx +1 -1
  228. package/src/react/hooks/__tests__/useRoyalty.test.tsx +0 -23
  229. package/src/react/hooks/__tests__/useTransferTokens.test.tsx +469 -0
  230. package/src/react/hooks/index.ts +29 -24
  231. package/src/react/hooks/options/index.ts +0 -1
  232. package/src/react/hooks/useAutoSelectFeeOption.tsx +1 -1
  233. package/src/react/hooks/useBalanceOfCollectible.tsx +1 -1
  234. package/src/react/hooks/useCancelTransactionSteps.tsx +2 -2
  235. package/src/react/hooks/useCheckoutOptions.tsx +84 -54
  236. package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +98 -57
  237. package/src/react/hooks/useCollectible.tsx +64 -49
  238. package/src/react/hooks/useCollection.tsx +60 -11
  239. package/src/react/hooks/useCollectionBalanceDetails.tsx +93 -73
  240. package/src/react/hooks/useCollectionDetails.ts +69 -0
  241. package/src/react/hooks/useCollectionDetailsPolling.tsx +7 -3
  242. package/src/react/hooks/useComparePrices.tsx +91 -86
  243. package/src/react/hooks/useConvertPriceToUSD.tsx +83 -86
  244. package/src/react/hooks/useCountListingsForCollectible.tsx +64 -53
  245. package/src/react/hooks/useCountOfCollectables.tsx +60 -69
  246. package/src/react/hooks/useCountOfPrimarySaleItems.tsx +13 -0
  247. package/src/react/hooks/useCountOffersForCollectible.tsx +64 -53
  248. package/src/react/hooks/useCurrency.tsx +56 -64
  249. package/src/react/hooks/useCurrencyBalance.tsx +132 -46
  250. package/src/react/hooks/useERC721SaleMintedTokens.tsx +8 -5
  251. package/src/react/hooks/useFilterState.tsx +1 -2
  252. package/src/react/hooks/useFilters.tsx +154 -111
  253. package/src/react/hooks/useFloorOrder.tsx +65 -40
  254. package/src/react/hooks/useGenerateCancelTransaction.tsx +5 -10
  255. package/src/react/hooks/useGenerateListingTransaction.tsx +1 -1
  256. package/src/react/hooks/useGenerateOfferTransaction.tsx +1 -1
  257. package/src/react/hooks/useGenerateSellTransaction.tsx +5 -10
  258. package/src/react/hooks/useGetCountOfPrimarySaleItems.tsx +48 -0
  259. package/src/react/hooks/useGetReceiptFromHash.tsx +32 -3
  260. package/src/react/hooks/useGetTokenRanges.tsx +92 -0
  261. package/src/react/hooks/useHighestOffer.tsx +68 -4
  262. package/src/react/hooks/useInventory.tsx +1 -1
  263. package/src/react/hooks/useList1155ShopCardData.tsx +57 -82
  264. package/src/react/hooks/useList721ShopCardData.tsx +98 -63
  265. package/src/react/hooks/useListBalances.tsx +1 -1
  266. package/src/react/hooks/useListCollectibleActivities.tsx +89 -50
  267. package/src/react/hooks/useListCollectibles.tsx +81 -16
  268. package/src/react/hooks/useListCollectiblesPaginated.tsx +96 -66
  269. package/src/react/hooks/useListCollectionActivities.tsx +84 -50
  270. package/src/react/hooks/useListCollections.tsx +71 -17
  271. package/src/react/hooks/useListListingsForCollectible.tsx +90 -50
  272. package/src/react/hooks/useListMarketCardData.tsx +3 -2
  273. package/src/react/hooks/useListOffersForCollectible.tsx +9 -14
  274. package/src/react/hooks/useListPrimarySaleItems.tsx +66 -0
  275. package/src/react/hooks/useListShopCardData.tsx +70 -0
  276. package/src/react/hooks/useListTokenMetadata.ts +64 -12
  277. package/src/react/hooks/useListTokenMetadata.tsx +73 -0
  278. package/src/react/hooks/useLowestListing.tsx +68 -4
  279. package/src/react/hooks/useMarketCurrencies.tsx +62 -5
  280. package/src/react/hooks/useOpenConnectModal.tsx +9 -0
  281. package/src/react/hooks/useRoyalty.tsx +57 -13
  282. package/src/react/hooks/useShopCollectibleSaleData.tsx +349 -0
  283. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +3 -7
  284. package/src/react/hooks/useTokenSupplies.ts +81 -0
  285. package/src/react/hooks/useTransferTokens.tsx +2 -2
  286. package/src/react/hooks/util/optimisticCancelUpdates.ts +5 -7
  287. package/src/react/index.ts +5 -3
  288. package/src/react/provider.tsx +73 -9
  289. package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +123 -0
  290. package/src/react/queries/__tests__/inventory.laos.test.ts +496 -0
  291. package/src/react/queries/balanceOfCollectible.ts +8 -5
  292. package/src/react/queries/checkoutOptions.ts +85 -0
  293. package/src/react/queries/checkoutOptionsSalesContract.ts +89 -0
  294. package/src/react/queries/collectible.ts +66 -0
  295. package/src/react/queries/collection.ts +55 -0
  296. package/src/react/queries/collectionBalanceDetails.ts +92 -0
  297. package/src/react/queries/collectionDetails.ts +64 -0
  298. package/src/react/queries/comparePrices.ts +108 -0
  299. package/src/react/queries/convertPriceToUSD.ts +92 -0
  300. package/src/react/queries/countListingsForCollectible.ts +73 -0
  301. package/src/react/queries/countOfCollectables.ts +83 -0
  302. package/src/react/queries/countOfPrimarySaleItems.ts +48 -0
  303. package/src/react/queries/countOffersForCollectible.ts +73 -0
  304. package/src/react/queries/currency.ts +83 -0
  305. package/src/react/queries/filters.ts +138 -0
  306. package/src/react/queries/floorOrder.ts +63 -0
  307. package/src/react/queries/getTokenRanges.ts +62 -0
  308. package/src/react/queries/highestOffer.ts +46 -40
  309. package/src/react/queries/index.ts +10 -4
  310. package/src/react/queries/inventory.ts +10 -4
  311. package/src/react/queries/listBalances.ts +5 -4
  312. package/src/react/queries/listCollectibleActivities.ts +97 -0
  313. package/src/react/queries/listCollectibles.ts +67 -50
  314. package/src/react/queries/listCollectiblesPaginated.ts +87 -0
  315. package/src/react/queries/listCollectionActivities.ts +95 -0
  316. package/src/react/queries/listCollections.ts +53 -10
  317. package/src/react/queries/listListingsForCollectible.ts +82 -0
  318. package/src/react/queries/listTokenMetadata.ts +47 -23
  319. package/src/react/queries/lowestListing.ts +46 -31
  320. package/src/react/queries/marketCurrencies.ts +42 -29
  321. package/src/react/queries/marketplaceConfig.ts +4 -4
  322. package/src/react/queries/primarySaleItems.ts +85 -0
  323. package/src/react/queries/primarySaleItemsCount.ts +64 -0
  324. package/src/react/queries/tokenSupplies.ts +93 -0
  325. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +12 -2
  326. package/src/react/ssr/create-ssr-client.ts +1 -1
  327. package/src/react/types/query.ts +34 -0
  328. package/src/react/ui/components/ModelViewer.tsx +1 -1
  329. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +66 -66
  330. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +22 -4
  331. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +14 -8
  332. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +5 -4
  333. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +3 -0
  334. package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +4 -4
  335. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +20 -18
  336. package/src/react/ui/components/_internals/action-button/store.ts +72 -34
  337. package/src/react/ui/components/_internals/custom-select/CustomSelect.stories.tsx +582 -0
  338. package/src/react/ui/components/_internals/pill/Pill.stories.tsx +83 -0
  339. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +1 -1
  340. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +12 -5
  341. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -4
  342. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +3 -0
  343. package/src/react/ui/components/marketplace-collectible-card/index.ts +1 -1
  344. package/src/react/ui/components/marketplace-collectible-card/types.ts +11 -7
  345. package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +4 -7
  346. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +3 -2
  347. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +7 -6
  348. package/src/react/ui/components/marketplace-logos/marketplace-logos.stories.tsx +199 -0
  349. package/src/react/ui/components/marketplace-logos/marketplace-logos.tsx +1 -1
  350. package/src/react/ui/components/media/Media.stories.tsx +642 -0
  351. package/src/react/ui/components/media/Media.tsx +29 -20
  352. package/src/react/ui/components/media/types.ts +6 -0
  353. package/src/react/ui/index.ts +8 -10
  354. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +15 -0
  355. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +100 -87
  356. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +11 -5
  357. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +10 -2
  358. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +17 -11
  359. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +4 -1
  360. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +1 -1
  361. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +30 -27
  362. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +3 -3
  363. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +11 -2
  364. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +2 -2
  365. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +10 -3
  366. package/src/react/ui/modals/BuyModal/index.tsx +9 -1
  367. package/src/react/ui/modals/BuyModal/store.ts +26 -0
  368. package/src/react/ui/modals/CreateListingModal/Modal.tsx +28 -11
  369. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +2 -2
  370. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +0 -1
  371. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +2 -2
  372. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +7 -6
  373. package/src/react/ui/modals/CreateListingModal/index.tsx +1 -1
  374. package/src/react/ui/modals/CreateListingModal/store.ts +3 -3
  375. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +31 -14
  376. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +1 -1
  377. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +1 -1
  378. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +0 -1
  379. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +7 -7
  380. package/src/react/ui/modals/MakeOfferModal/index.tsx +1 -1
  381. package/src/react/ui/modals/MakeOfferModal/store.ts +3 -3
  382. package/src/react/ui/modals/SellModal/Modal.tsx +14 -11
  383. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +6 -4
  384. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +1 -1
  385. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +0 -1
  386. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +6 -6
  387. package/src/react/ui/modals/SellModal/store.ts +3 -3
  388. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +1 -1
  389. package/src/react/ui/modals/TransferModal/__tests__/__snapshots__/store.test.ts.snap +17 -0
  390. package/src/react/ui/modals/TransferModal/__tests__/store.test.ts +366 -0
  391. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +402 -0
  392. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +52 -50
  393. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +39 -47
  394. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +9 -8
  395. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +33 -37
  396. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +19 -10
  397. package/src/react/ui/modals/TransferModal/index.tsx +28 -31
  398. package/src/react/ui/modals/TransferModal/messages.ts +1 -1
  399. package/src/react/ui/modals/TransferModal/store.ts +122 -0
  400. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +1 -1
  401. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +2 -4
  402. package/src/react/ui/modals/_internal/components/calendar/index.tsx +0 -1
  403. package/src/react/ui/modals/_internal/components/currencyImage/index.tsx +10 -14
  404. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +6 -3
  405. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +23 -18
  406. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +10 -10
  407. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +6 -6
  408. package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +4 -4
  409. package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +13 -5
  410. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +41 -26
  411. package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +68 -59
  412. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +23 -17
  413. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +340 -41
  414. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx +1 -2
  415. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +95 -101
  416. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +72 -14
  417. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +29 -14
  418. package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +2 -2
  419. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
  420. package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +88 -89
  421. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +37 -11
  422. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +0 -1
  423. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +32 -20
  424. package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +92 -63
  425. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +44 -45
  426. package/src/react/ui/modals/_internal/types.ts +2 -2
  427. package/src/react/ui/modals/modal-provider.tsx +2 -3
  428. package/src/types/api-types.ts +36 -36
  429. package/src/types/buyModalErrors.ts +1 -1
  430. package/src/types/index.ts +5 -5
  431. package/src/types/new-marketplace-types.ts +1 -1
  432. package/src/types/sdk-config.ts +8 -2
  433. package/src/types/types.ts +1 -0
  434. package/src/types/waas-types.ts +1 -1
  435. package/src/utils/abi/index.ts +1 -1
  436. package/src/utils/abi/primary-sale/index.ts +1 -1
  437. package/src/utils/abi/token/index.ts +2 -1
  438. package/src/utils/decode/erc20.ts +1 -1
  439. package/src/utils/index.ts +3 -3
  440. package/src/utils/network.ts +15 -0
  441. package/test/const.ts +3 -1
  442. package/test/mocks/wallet.ts +1 -1
  443. package/test/test-utils.tsx +5 -4
  444. package/vitest.shims.d.ts +2 -0
  445. package/vitest.storybook.config.js +33 -0
  446. package/.changeset/fluffy-jokes-lay.md +0 -5
  447. package/.changeset/wise-bugs-boil.md +0 -8
  448. package/dist/CartIcon-Bll1rbxv.js.map +0 -1
  449. package/dist/CollectibleCard-CLQTl0_6.d.ts +0 -8
  450. package/dist/_internal-69NEWNUE.js +0 -34
  451. package/dist/_internal-69NEWNUE.js.map +0 -1
  452. package/dist/api-1KFxYh7o.js.map +0 -1
  453. package/dist/builder-api-DoK3907S.d.ts +0 -12
  454. package/dist/builder.gen-CxP9NT1p.js.map +0 -1
  455. package/dist/index-4-kfOFdx.d.ts +0 -22
  456. package/dist/index-BHiSG-Yi.d.ts +0 -312
  457. package/dist/index-BQW0PUkQ.d.ts +0 -3973
  458. package/dist/index-BfH21xmk.d.ts +0 -117
  459. package/dist/index-CN8puQQJ.d.ts +0 -24
  460. package/dist/index-DafWjEb4.d.ts +0 -65
  461. package/dist/marketplace.gen-Dqk8vRmD.js.map +0 -1
  462. package/dist/marketplaceConfig-D2MYFqll.js.map +0 -1
  463. package/dist/options-DCi6_23w.js +0 -34
  464. package/dist/options-DCi6_23w.js.map +0 -1
  465. package/dist/primary-sale-Cw95phYC.js.map +0 -1
  466. package/dist/queries-DPvwtnO7.js +0 -486
  467. package/dist/queries-DPvwtnO7.js.map +0 -1
  468. package/dist/react-BG7o4PId.js.map +0 -1
  469. package/dist/token-CO5llIla.js.map +0 -1
  470. package/dist/transaction-CcVViHEL.js.map +0 -1
  471. package/dist/types-DwWE6xOF.js.map +0 -1
  472. package/dist/useCollection-C-mclKU0.d.ts +0 -66
  473. package/dist/utils-BFdxaToy.js.map +0 -1
  474. package/dist/utils-Cat9_pef.js.map +0 -1
  475. package/dist/wagmi-DRctYEk6.js.map +0 -1
  476. package/src/react/_internal/api/zod-schema.ts +0 -678
  477. package/src/react/hooks/options/collectionOptions.ts +0 -41
  478. package/src/react/hooks/useCollectionDetails.tsx +0 -50
  479. package/src/react/hooks/useGetTokenSuppliesMap.ts +0 -33
  480. package/src/react/hooks/useListPrimarySaleItems.ts +0 -42
  481. package/src/react/queries/getTokenSupplies.ts +0 -38
  482. package/src/react/ui/modals/TransferModal/_store.ts +0 -72
  483. package/src/react/ui/modals/_internal/stores/accountModal.ts +0 -3
  484. package/tsconfig.tsbuildinfo +0 -1
  485. /package/dist/{abi-BKyRjVcZ.js → abi-BMvgNbKQ.js} +0 -0
  486. /package/dist/{index-C39K_8SG.d.ts → index-CD2bj_xW.d.ts} +0 -0
  487. /package/dist/{index-ij9f8GAA.d.ts → index-DvpBZgor.d.ts} +0 -0
@@ -0,0 +1,66 @@
1
+ import type { GetTokenMetadataArgs } from '@0xsequence/metadata';
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';
7
+
8
+ export interface FetchCollectibleParams
9
+ extends Omit<
10
+ GetTokenMetadataArgs,
11
+ 'chainID' | 'contractAddress' | 'tokenIDs'
12
+ > {
13
+ chainId: number;
14
+ collectionAddress: string;
15
+ collectibleId: string;
16
+ config: SdkConfig;
17
+ }
18
+
19
+ /**
20
+ * Fetches collectible metadata from the metadata API
21
+ */
22
+ export async function fetchCollectible(params: FetchCollectibleParams) {
23
+ const { collectionAddress, collectibleId, chainId, config } = params;
24
+
25
+ const metadataClient = getMetadataClient(config);
26
+
27
+ const apiArgs: GetTokenMetadataArgs = {
28
+ contractAddress: collectionAddress,
29
+ chainID: String(chainId),
30
+ tokenIDs: [collectibleId],
31
+ };
32
+
33
+ const result = await metadataClient.getTokenMetadata(apiArgs);
34
+ return result.tokenMetadata[0];
35
+ }
36
+
37
+ export type CollectibleQueryOptions = ValuesOptional<FetchCollectibleParams> & {
38
+ query?: StandardQueryOptions;
39
+ };
40
+
41
+ export function collectibleQueryOptions(params: CollectibleQueryOptions) {
42
+ const enabled = Boolean(
43
+ params.collectionAddress &&
44
+ params.collectibleId &&
45
+ params.chainId &&
46
+ params.config &&
47
+ (params.query?.enabled ?? true),
48
+ );
49
+
50
+ return queryOptions({
51
+ queryKey: [...collectableKeys.details, params],
52
+ queryFn: () =>
53
+ fetchCollectible({
54
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
55
+ chainId: params.chainId!,
56
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
57
+ collectionAddress: params.collectionAddress!,
58
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
59
+ collectibleId: params.collectibleId!,
60
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
61
+ config: params.config!,
62
+ }),
63
+ ...params.query,
64
+ enabled,
65
+ });
66
+ }
@@ -0,0 +1,55 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { SdkConfig } from '../../types';
3
+ import { getMetadataClient, type ValuesOptional } from '../_internal';
4
+ import { collectionKeys } from '../_internal/api/query-keys';
5
+ import type { StandardQueryOptions } from '../types/query';
6
+
7
+ export interface FetchCollectionParams {
8
+ chainId: number;
9
+ collectionAddress: string;
10
+ config: SdkConfig;
11
+ }
12
+
13
+ /**
14
+ * Fetches collection information from the metadata API
15
+ */
16
+ export async function fetchCollection(params: FetchCollectionParams) {
17
+ const { collectionAddress, chainId, config } = params;
18
+
19
+ const metadataClient = getMetadataClient(config);
20
+
21
+ const result = await metadataClient.getContractInfo({
22
+ chainID: chainId.toString(),
23
+ contractAddress: collectionAddress,
24
+ });
25
+
26
+ return result.contractInfo;
27
+ }
28
+
29
+ export type CollectionQueryOptions = ValuesOptional<FetchCollectionParams> & {
30
+ query?: StandardQueryOptions;
31
+ };
32
+
33
+ export function collectionQueryOptions(params: CollectionQueryOptions) {
34
+ const enabled = Boolean(
35
+ params.collectionAddress &&
36
+ params.chainId &&
37
+ params.config &&
38
+ (params.query?.enabled ?? true),
39
+ );
40
+
41
+ return queryOptions({
42
+ queryKey: [...collectionKeys.detail, params],
43
+ queryFn: () =>
44
+ fetchCollection({
45
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
46
+ chainId: params.chainId!,
47
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
48
+ collectionAddress: params.collectionAddress!,
49
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
50
+ config: params.config!,
51
+ }),
52
+ ...params.query,
53
+ enabled,
54
+ });
55
+ }
@@ -0,0 +1,92 @@
1
+ import type { GetTokenBalancesDetailsReturn } from '@0xsequence/indexer';
2
+ import { queryOptions } from '@tanstack/react-query';
3
+ import type { Address } from 'viem';
4
+ import type { SdkConfig } from '../../types';
5
+ import { getIndexerClient, type ValuesOptional } from '../_internal';
6
+ import type { StandardQueryOptions } from '../types/query';
7
+
8
+ export interface CollectionBalanceFilter {
9
+ accountAddresses: Array<Address>;
10
+ contractWhitelist?: Array<Address>;
11
+ omitNativeBalances: boolean;
12
+ }
13
+
14
+ export interface FetchCollectionBalanceDetailsParams {
15
+ chainId: number;
16
+ filter: CollectionBalanceFilter;
17
+ config: SdkConfig;
18
+ }
19
+
20
+ /**
21
+ * Fetches detailed balance information for multiple accounts from the Indexer API
22
+ */
23
+ export async function fetchCollectionBalanceDetails(
24
+ params: FetchCollectionBalanceDetailsParams,
25
+ ): Promise<GetTokenBalancesDetailsReturn> {
26
+ const { chainId, filter, config } = params;
27
+
28
+ const indexerClient = getIndexerClient(chainId, config);
29
+
30
+ const promises = filter.accountAddresses.map((accountAddress) =>
31
+ indexerClient.getTokenBalancesDetails({
32
+ filter: {
33
+ accountAddresses: [accountAddress],
34
+ contractWhitelist: filter.contractWhitelist,
35
+ omitNativeBalances: filter.omitNativeBalances,
36
+ },
37
+ }),
38
+ );
39
+
40
+ const responses = await Promise.all(promises);
41
+ const mergedResponse = responses.reduce<GetTokenBalancesDetailsReturn>(
42
+ (acc, curr) => {
43
+ if (!curr) return acc;
44
+ return {
45
+ page: curr.page,
46
+ nativeBalances: [
47
+ ...(acc.nativeBalances || []),
48
+ ...(curr.nativeBalances || []),
49
+ ],
50
+ balances: [...(acc.balances || []), ...(curr.balances || [])],
51
+ };
52
+ },
53
+ { page: {}, nativeBalances: [], balances: [] },
54
+ );
55
+
56
+ if (!mergedResponse) {
57
+ throw new Error('Failed to fetch collection balance details');
58
+ }
59
+
60
+ return mergedResponse;
61
+ }
62
+
63
+ export type CollectionBalanceDetailsQueryOptions =
64
+ ValuesOptional<FetchCollectionBalanceDetailsParams> & {
65
+ query?: StandardQueryOptions;
66
+ };
67
+
68
+ export function collectionBalanceDetailsQueryOptions(
69
+ params: CollectionBalanceDetailsQueryOptions,
70
+ ) {
71
+ const enabled = Boolean(
72
+ params.chainId &&
73
+ params.filter?.accountAddresses?.length &&
74
+ params.config &&
75
+ (params.query?.enabled ?? true),
76
+ );
77
+
78
+ return queryOptions({
79
+ queryKey: ['balances', 'collectionBalanceDetails', params],
80
+ queryFn: () =>
81
+ fetchCollectionBalanceDetails({
82
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
83
+ chainId: params.chainId!,
84
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
85
+ filter: params.filter!,
86
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
87
+ config: params.config!,
88
+ }),
89
+ ...params.query,
90
+ enabled,
91
+ });
92
+ }
@@ -0,0 +1,64 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { SdkConfig } from '../../types';
3
+ import { getMarketplaceClient, type ValuesOptional } from '../_internal';
4
+ import type { GetCollectionDetailArgs } from '../_internal/api/marketplace.gen';
5
+ import { collectionKeys } from '../_internal/api/query-keys';
6
+ import type { StandardQueryOptions } from '../types/query';
7
+
8
+ export interface FetchCollectionDetailsParams
9
+ extends Omit<GetCollectionDetailArgs, 'chainId' | 'contractAddress'> {
10
+ chainId: number;
11
+ collectionAddress: string;
12
+ config: SdkConfig;
13
+ }
14
+
15
+ /**
16
+ * Fetches collection details from the marketplace API
17
+ */
18
+ export async function fetchCollectionDetails(
19
+ params: FetchCollectionDetailsParams,
20
+ ) {
21
+ const { collectionAddress, chainId, config, ...additionalApiParams } = params;
22
+
23
+ const marketplaceClient = getMarketplaceClient(config);
24
+
25
+ const apiArgs: GetCollectionDetailArgs = {
26
+ contractAddress: collectionAddress,
27
+ chainId: String(chainId),
28
+ ...additionalApiParams,
29
+ };
30
+
31
+ const result = await marketplaceClient.getCollectionDetail(apiArgs);
32
+ return result.collection;
33
+ }
34
+
35
+ export type CollectionDetailsQueryOptions =
36
+ ValuesOptional<FetchCollectionDetailsParams> & {
37
+ query?: StandardQueryOptions;
38
+ };
39
+
40
+ export function collectionDetailsQueryOptions(
41
+ params: CollectionDetailsQueryOptions,
42
+ ) {
43
+ const enabled = Boolean(
44
+ params.collectionAddress &&
45
+ params.chainId &&
46
+ params.config &&
47
+ (params.query?.enabled ?? true),
48
+ );
49
+
50
+ return queryOptions({
51
+ queryKey: [...collectionKeys.detail, params],
52
+ queryFn: () =>
53
+ fetchCollectionDetails({
54
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
55
+ chainId: params.chainId!,
56
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
57
+ collectionAddress: params.collectionAddress!,
58
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
59
+ config: params.config!,
60
+ }),
61
+ ...params.query,
62
+ enabled,
63
+ });
64
+ }
@@ -0,0 +1,108 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { Address } from 'viem';
3
+ import type { SdkConfig } from '../../types';
4
+ import type { ValuesOptional } from '../_internal';
5
+ import type { StandardQueryOptions } from '../types/query';
6
+ import { fetchConvertPriceToUSD } from './convertPriceToUSD';
7
+
8
+ export interface FetchComparePricesParams {
9
+ chainId: number;
10
+ // First price details
11
+ priceAmountRaw: string;
12
+ priceCurrencyAddress: Address;
13
+ // Second price details (to compare against)
14
+ compareToPriceAmountRaw: string;
15
+ compareToPriceCurrencyAddress: Address;
16
+ config: SdkConfig;
17
+ }
18
+
19
+ export type ComparePricesReturn = {
20
+ percentageDifference: number;
21
+ percentageDifferenceFormatted: string;
22
+ status: 'above' | 'same' | 'below';
23
+ };
24
+
25
+ /**
26
+ * Compares prices between different currencies by converting both to USD
27
+ */
28
+ export async function fetchComparePrices(
29
+ params: FetchComparePricesParams,
30
+ ): Promise<ComparePricesReturn> {
31
+ const {
32
+ chainId,
33
+ priceAmountRaw,
34
+ priceCurrencyAddress,
35
+ compareToPriceAmountRaw,
36
+ compareToPriceCurrencyAddress,
37
+ config,
38
+ } = params;
39
+
40
+ const [priceUSD, compareToPriceUSD] = await Promise.all([
41
+ fetchConvertPriceToUSD({
42
+ chainId,
43
+ currencyAddress: priceCurrencyAddress,
44
+ amountRaw: priceAmountRaw,
45
+ config,
46
+ }),
47
+ fetchConvertPriceToUSD({
48
+ chainId,
49
+ currencyAddress: compareToPriceCurrencyAddress,
50
+ amountRaw: compareToPriceAmountRaw,
51
+ config,
52
+ }),
53
+ ]);
54
+
55
+ const difference = priceUSD.usdAmount - compareToPriceUSD.usdAmount;
56
+
57
+ if (compareToPriceUSD.usdAmount === 0) {
58
+ throw new Error('Cannot compare to zero price');
59
+ }
60
+
61
+ const percentageDifference = (difference / compareToPriceUSD.usdAmount) * 100;
62
+ const isAbove = percentageDifference > 0;
63
+ const isSame = percentageDifference === 0;
64
+
65
+ return {
66
+ percentageDifference,
67
+ percentageDifferenceFormatted: Math.abs(percentageDifference).toFixed(2),
68
+ status: isAbove ? 'above' : isSame ? 'same' : 'below',
69
+ };
70
+ }
71
+
72
+ export type ComparePricesQueryOptions =
73
+ ValuesOptional<FetchComparePricesParams> & {
74
+ query?: StandardQueryOptions;
75
+ };
76
+
77
+ export function comparePricesQueryOptions(params: ComparePricesQueryOptions) {
78
+ const enabled = Boolean(
79
+ params.chainId &&
80
+ params.priceAmountRaw &&
81
+ params.priceCurrencyAddress &&
82
+ params.compareToPriceAmountRaw &&
83
+ params.compareToPriceCurrencyAddress &&
84
+ params.config &&
85
+ (params.query?.enabled ?? true),
86
+ );
87
+
88
+ return queryOptions({
89
+ queryKey: ['currency', 'conversion', 'compare', params],
90
+ queryFn: () =>
91
+ fetchComparePrices({
92
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
93
+ chainId: params.chainId!,
94
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
95
+ priceAmountRaw: params.priceAmountRaw!,
96
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
97
+ priceCurrencyAddress: params.priceCurrencyAddress!,
98
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
99
+ compareToPriceAmountRaw: params.compareToPriceAmountRaw!,
100
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
101
+ compareToPriceCurrencyAddress: params.compareToPriceCurrencyAddress!,
102
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
103
+ config: params.config!,
104
+ }),
105
+ ...params.query,
106
+ enabled,
107
+ });
108
+ }
@@ -0,0 +1,92 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import { type Address, formatUnits } from 'viem';
3
+ import type { SdkConfig } from '../../types';
4
+ import {
5
+ type Currency,
6
+ getQueryClient,
7
+ type ValuesOptional,
8
+ } from '../_internal';
9
+ import type { StandardQueryOptions } from '../types/query';
10
+ import { marketCurrenciesQueryOptions } from './marketCurrencies';
11
+
12
+ export interface FetchConvertPriceToUSDParams {
13
+ chainId: number;
14
+ currencyAddress: Address;
15
+ amountRaw: string;
16
+ config: SdkConfig;
17
+ }
18
+
19
+ export interface ConvertPriceToUSDReturn {
20
+ usdAmount: number;
21
+ usdAmountFormatted: string;
22
+ }
23
+
24
+ /**
25
+ * Converts a price amount from a specific currency to USD using exchange rates
26
+ */
27
+ export async function fetchConvertPriceToUSD(
28
+ params: FetchConvertPriceToUSDParams,
29
+ ): Promise<ConvertPriceToUSDReturn> {
30
+ const { chainId, currencyAddress, amountRaw, config } = params;
31
+
32
+ const queryClient = getQueryClient();
33
+ const currencies = (await queryClient.fetchQuery(
34
+ marketCurrenciesQueryOptions({
35
+ chainId,
36
+ config,
37
+ }),
38
+ )) as Currency[];
39
+
40
+ const currencyDetails = currencies.find(
41
+ (c: Currency) =>
42
+ c.contractAddress.toLowerCase() === currencyAddress.toLowerCase(),
43
+ );
44
+
45
+ if (!currencyDetails) {
46
+ throw new Error('Currency not found');
47
+ }
48
+
49
+ const amountDecimal = Number(
50
+ formatUnits(BigInt(amountRaw), currencyDetails.decimals),
51
+ );
52
+ const usdAmount = amountDecimal * currencyDetails.exchangeRate;
53
+
54
+ return {
55
+ usdAmount,
56
+ usdAmountFormatted: usdAmount.toFixed(2),
57
+ };
58
+ }
59
+
60
+ export type ConvertPriceToUSDQueryOptions =
61
+ ValuesOptional<FetchConvertPriceToUSDParams> & {
62
+ query?: StandardQueryOptions;
63
+ };
64
+
65
+ export function convertPriceToUSDQueryOptions(
66
+ params: ConvertPriceToUSDQueryOptions,
67
+ ) {
68
+ const enabled = Boolean(
69
+ params.chainId &&
70
+ params.currencyAddress &&
71
+ params.amountRaw &&
72
+ params.config &&
73
+ (params.query?.enabled ?? true),
74
+ );
75
+
76
+ return queryOptions({
77
+ queryKey: ['currency', 'convertPriceToUSD', params],
78
+ queryFn: () =>
79
+ fetchConvertPriceToUSD({
80
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
81
+ chainId: params.chainId!,
82
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
83
+ currencyAddress: params.currencyAddress!,
84
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
85
+ amountRaw: params.amountRaw!,
86
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
87
+ config: params.config!,
88
+ }),
89
+ ...params.query,
90
+ enabled,
91
+ });
92
+ }
@@ -0,0 +1,73 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { SdkConfig } from '../../types';
3
+ import { getMarketplaceClient, type ValuesOptional } from '../_internal';
4
+ import type {
5
+ GetCountOfListingsForCollectibleArgs,
6
+ OrderFilter,
7
+ } from '../_internal/api/marketplace.gen';
8
+ import { collectableKeys } from '../_internal/api/query-keys';
9
+ import type { StandardQueryOptions } from '../types/query';
10
+
11
+ export interface FetchCountListingsForCollectibleParams {
12
+ chainId: number;
13
+ collectionAddress: string;
14
+ collectibleId: string;
15
+ config: SdkConfig;
16
+ filter?: OrderFilter;
17
+ }
18
+
19
+ /**
20
+ * Fetches count of listings for a collectible from the marketplace API
21
+ */
22
+ export async function fetchCountListingsForCollectible(
23
+ params: FetchCountListingsForCollectibleParams,
24
+ ) {
25
+ const { collectionAddress, chainId, collectibleId, config, filter } = params;
26
+
27
+ const client = getMarketplaceClient(config);
28
+
29
+ const apiArgs: GetCountOfListingsForCollectibleArgs = {
30
+ contractAddress: collectionAddress,
31
+ chainId: String(chainId),
32
+ tokenId: collectibleId,
33
+ filter,
34
+ };
35
+
36
+ const result = await client.getCountOfListingsForCollectible(apiArgs);
37
+ return result.count;
38
+ }
39
+
40
+ export type CountListingsForCollectibleQueryOptions =
41
+ ValuesOptional<FetchCountListingsForCollectibleParams> & {
42
+ query?: StandardQueryOptions;
43
+ };
44
+
45
+ export function countListingsForCollectibleQueryOptions(
46
+ params: CountListingsForCollectibleQueryOptions,
47
+ ) {
48
+ const enabled = Boolean(
49
+ params.collectionAddress &&
50
+ params.chainId &&
51
+ params.collectibleId &&
52
+ params.config &&
53
+ (params.query?.enabled ?? true),
54
+ );
55
+
56
+ return queryOptions({
57
+ queryKey: [...collectableKeys.listingsCount, params],
58
+ queryFn: () =>
59
+ fetchCountListingsForCollectible({
60
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
61
+ chainId: params.chainId!,
62
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
63
+ collectionAddress: params.collectionAddress!,
64
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
65
+ collectibleId: params.collectibleId!,
66
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
67
+ config: params.config!,
68
+ filter: params.filter,
69
+ }),
70
+ ...params.query,
71
+ enabled,
72
+ });
73
+ }
@@ -0,0 +1,83 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { SdkConfig } from '../../types';
3
+ import { getMarketplaceClient, type ValuesOptional } from '../_internal';
4
+ import type {
5
+ CollectiblesFilter,
6
+ GetCountOfAllCollectiblesArgs,
7
+ GetCountOfFilteredCollectiblesArgs,
8
+ OrderSide,
9
+ } from '../_internal/api/marketplace.gen';
10
+ import { collectableKeys } from '../_internal/api/query-keys';
11
+ import type { StandardQueryOptions } from '../types/query';
12
+
13
+ export interface FetchCountOfCollectablesParams {
14
+ chainId: number;
15
+ collectionAddress: string;
16
+ config: SdkConfig;
17
+ filter?: CollectiblesFilter;
18
+ side?: OrderSide;
19
+ }
20
+
21
+ /**
22
+ * Fetches count of collectibles from the marketplace API
23
+ */
24
+ export async function fetchCountOfCollectables(
25
+ params: FetchCountOfCollectablesParams,
26
+ ) {
27
+ const { collectionAddress, chainId, config, filter, side } = params;
28
+
29
+ const client = getMarketplaceClient(config);
30
+
31
+ if (filter && side) {
32
+ const apiArgs: GetCountOfFilteredCollectiblesArgs = {
33
+ contractAddress: collectionAddress,
34
+ chainId: String(chainId),
35
+ filter,
36
+ side,
37
+ };
38
+
39
+ const result = await client.getCountOfFilteredCollectibles(apiArgs);
40
+ return result.count;
41
+ }
42
+
43
+ const apiArgs: GetCountOfAllCollectiblesArgs = {
44
+ contractAddress: collectionAddress,
45
+ chainId: String(chainId),
46
+ };
47
+
48
+ const result = await client.getCountOfAllCollectibles(apiArgs);
49
+ return result.count;
50
+ }
51
+
52
+ export type CountOfCollectablesQueryOptions =
53
+ ValuesOptional<FetchCountOfCollectablesParams> & {
54
+ query?: StandardQueryOptions;
55
+ };
56
+
57
+ export function countOfCollectablesQueryOptions(
58
+ params: CountOfCollectablesQueryOptions,
59
+ ) {
60
+ const enabled = Boolean(
61
+ params.collectionAddress &&
62
+ params.chainId &&
63
+ params.config &&
64
+ (params.query?.enabled ?? true),
65
+ );
66
+
67
+ return queryOptions({
68
+ queryKey: [...collectableKeys.counts, params],
69
+ queryFn: () =>
70
+ fetchCountOfCollectables({
71
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
72
+ chainId: params.chainId!,
73
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
74
+ collectionAddress: params.collectionAddress!,
75
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
76
+ config: params.config!,
77
+ filter: params.filter,
78
+ side: params.side,
79
+ }),
80
+ ...params.query,
81
+ enabled,
82
+ });
83
+ }
@@ -0,0 +1,48 @@
1
+ import { queryOptions } from '@tanstack/react-query';
2
+ import type { Address } from 'viem';
3
+ import type { SdkConfig } from '../../types';
4
+ import {
5
+ type GetCountOfPrimarySaleItemsArgs,
6
+ getMarketplaceClient,
7
+ type PrimarySaleItemsFilter,
8
+ } from '../_internal';
9
+
10
+ export interface UseCountOfPrimarySaleItemsArgs
11
+ extends Omit<
12
+ GetCountOfPrimarySaleItemsArgs,
13
+ 'chainId' | 'primarySaleContractAddress'
14
+ > {
15
+ chainId: number;
16
+ primarySaleContractAddress: Address;
17
+ filter?: PrimarySaleItemsFilter;
18
+ query?: {
19
+ enabled?: boolean;
20
+ };
21
+ }
22
+
23
+ export async function fetchCountOfPrimarySaleItems(
24
+ args: UseCountOfPrimarySaleItemsArgs,
25
+ config: SdkConfig,
26
+ ) {
27
+ const marketplaceClient = getMarketplaceClient(config);
28
+
29
+ const { chainId, primarySaleContractAddress, filter } = args;
30
+ const data = await marketplaceClient.getCountOfPrimarySaleItems({
31
+ chainId: String(chainId),
32
+ primarySaleContractAddress,
33
+ filter,
34
+ });
35
+
36
+ return data.count;
37
+ }
38
+
39
+ export function countOfPrimarySaleItemsOptions(
40
+ args: UseCountOfPrimarySaleItemsArgs,
41
+ config: SdkConfig,
42
+ ) {
43
+ return queryOptions({
44
+ enabled: args.query?.enabled ?? true,
45
+ queryKey: ['countOfPrimarySaleItems', args],
46
+ queryFn: () => fetchCountOfPrimarySaleItems(args, config),
47
+ });
48
+ }