@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
@@ -1,66 +1,96 @@
1
- import { queryOptions, useQuery } from '@tanstack/react-query';
2
- import type { Hex } from 'viem';
1
+ 'use client';
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import type { Address } from 'viem';
3
5
  import { useAccount } from 'wagmi';
4
- import { z } from 'zod';
5
- import type { SdkConfig } from '../../types';
6
+ import type { MarketplaceKind, Optional } from '../_internal';
6
7
  import {
7
- AddressSchema,
8
- MarketplaceKind,
9
- QueryArgSchema,
10
- getMarketplaceClient,
11
- } from '../_internal';
8
+ type CheckoutOptionsQueryOptions,
9
+ checkoutOptionsQueryOptions,
10
+ type FetchCheckoutOptionsParams,
11
+ } from '../queries/checkoutOptions';
12
12
  import { useConfig } from './useConfig';
13
13
 
14
- const UseCheckoutOptionsSchema = z.object({
15
- chainId: z.number(),
16
- orders: z.array(
17
- z.object({
18
- collectionAddress: AddressSchema,
19
- orderId: z.string(),
20
- marketplace: z.nativeEnum(MarketplaceKind),
21
- }),
22
- ),
23
- query: QueryArgSchema,
24
- });
14
+ export type UseCheckoutOptionsParams = Optional<
15
+ CheckoutOptionsQueryOptions,
16
+ 'config' | 'walletAddress'
17
+ >;
25
18
 
26
- export type UseCheckoutOptionsArgs = z.infer<typeof UseCheckoutOptionsSchema>;
19
+ /**
20
+ * Hook to fetch checkout options for marketplace orders
21
+ *
22
+ * Retrieves checkout options including available payment methods, fees, and transaction details
23
+ * for a set of marketplace orders. Requires a connected wallet to calculate wallet-specific options.
24
+ *
25
+ * @param params - Configuration parameters
26
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
27
+ * @param params.orders - Array of orders to checkout containing collection address, order ID, and marketplace
28
+ * @param params.additionalFee - Additional fee to include in checkout (defaults to 0)
29
+ * @param params.query - Optional React Query configuration
30
+ *
31
+ * @returns Query result containing checkout options with payment methods and fees
32
+ *
33
+ * @example
34
+ * Basic usage:
35
+ * ```typescript
36
+ * const { data: checkoutOptions, isLoading } = useCheckoutOptions({
37
+ * chainId: 137,
38
+ * orders: [{
39
+ * collectionAddress: '0x1234...',
40
+ * orderId: '123',
41
+ * marketplace: MarketplaceKind.sequence_marketplace_v2
42
+ * }],
43
+ * additionalFee: 0
44
+ * })
45
+ * ```
46
+ *
47
+ * @example
48
+ * With custom query options:
49
+ * ```typescript
50
+ * const { data: checkoutOptions } = useCheckoutOptions({
51
+ * chainId: 1,
52
+ * orders: orders,
53
+ * query: {
54
+ * enabled: orders.length > 0,
55
+ * staleTime: 30000
56
+ * }
57
+ * })
58
+ * ```
59
+ */
60
+ export function useCheckoutOptions(params: UseCheckoutOptionsParams) {
61
+ const { address } = useAccount();
62
+ const defaultConfig = useConfig();
27
63
 
28
- export type UseCheckoutOptionsReturn = Awaited<
29
- ReturnType<typeof fetchCheckoutOptions>
30
- >;
64
+ const { config = defaultConfig, ...rest } = params;
31
65
 
32
- const fetchCheckoutOptions = async (
33
- args: UseCheckoutOptionsArgs & { walletAddress: Hex },
34
- config: SdkConfig,
35
- ) => {
36
- const marketplaceClient = getMarketplaceClient(config);
37
- return marketplaceClient.checkoutOptionsMarketplace({
38
- chainId: String(args.chainId),
39
- wallet: args.walletAddress,
40
- orders: args.orders.map((order) => ({
41
- contractAddress: order.collectionAddress,
42
- orderId: order.orderId,
43
- marketplace: order.marketplace,
44
- })),
45
- additionalFee: 0, //TODO: add additional fee
66
+ const queryOptions = checkoutOptionsQueryOptions({
67
+ config,
68
+ walletAddress: address as Address,
69
+ ...rest,
46
70
  });
47
- };
48
71
 
49
- export const checkoutOptionsOptions = (
50
- args: UseCheckoutOptionsArgs & { walletAddress: Hex },
51
- config: SdkConfig,
52
- ) => {
53
- return queryOptions({
54
- queryKey: ['checkoutOptions', args],
55
- queryFn: () => fetchCheckoutOptions(args, config),
72
+ return useQuery({
73
+ ...queryOptions,
56
74
  });
57
- };
75
+ }
58
76
 
59
- export const useCheckoutOptions = (args: UseCheckoutOptionsArgs) => {
60
- const { address } = useAccount();
61
- const config = useConfig();
62
- return useQuery(
63
- // biome-ignore lint/style/noNonNullAssertion: <explanation>
64
- checkoutOptionsOptions({ walletAddress: address!, ...args }, config),
65
- );
77
+ export { checkoutOptionsQueryOptions };
78
+
79
+ export type { FetchCheckoutOptionsParams, CheckoutOptionsQueryOptions };
80
+
81
+ // Legacy export for backward compatibility
82
+ export type UseCheckoutOptionsArgs = {
83
+ chainId: number;
84
+ orders: Array<{
85
+ collectionAddress: string;
86
+ orderId: string;
87
+ marketplace: MarketplaceKind;
88
+ }>;
89
+ query?: {
90
+ enabled?: boolean;
91
+ };
66
92
  };
93
+
94
+ export type UseCheckoutOptionsReturn = Awaited<
95
+ ReturnType<typeof import('../queries/checkoutOptions').fetchCheckoutOptions>
96
+ >;
@@ -1,67 +1,108 @@
1
- import { queryOptions, skipToken, useQuery } from '@tanstack/react-query';
2
- import type { Hex } from 'viem';
1
+ 'use client';
2
+
3
+ import { skipToken, useQuery } from '@tanstack/react-query';
4
+ import type { Address } from 'viem';
3
5
  import { useAccount } from 'wagmi';
4
- import type { SdkConfig } from '../../types';
6
+ import type { CheckoutOptionsItem, Optional } from '../_internal';
5
7
  import {
6
- type CheckoutOptionsSalesContractArgs,
7
- getMarketplaceClient,
8
- } from '../_internal';
8
+ type CheckoutOptionsSalesContractQueryOptions,
9
+ checkoutOptionsSalesContractQueryOptions,
10
+ type FetchCheckoutOptionsSalesContractParams,
11
+ type fetchCheckoutOptionsSalesContract,
12
+ } from '../queries/checkoutOptionsSalesContract';
9
13
  import { useConfig } from './useConfig';
10
14
 
11
- type UseCheckoutOptionsSalesContractArgs = Omit<
12
- CheckoutOptionsSalesContractArgs,
13
- 'wallet' | 'chainId'
14
- > & { chainId: number };
15
+ export type UseCheckoutOptionsSalesContractParams = Optional<
16
+ CheckoutOptionsSalesContractQueryOptions,
17
+ 'config' | 'walletAddress'
18
+ >;
15
19
 
16
- const fetchCheckoutOptionsSalesContract = async (
17
- args: CheckoutOptionsSalesContractArgs,
18
- config: SdkConfig,
19
- ) => {
20
- const marketplaceClient = getMarketplaceClient(config);
21
- return marketplaceClient.checkoutOptionsSalesContract({
22
- chainId: args.chainId,
23
- wallet: args.wallet,
24
- contractAddress: args.contractAddress,
25
- collectionAddress: args.collectionAddress,
26
- items: args.items,
27
- });
28
- };
20
+ /**
21
+ * Hook to fetch checkout options for sales contract items
22
+ *
23
+ * Retrieves checkout options including available payment methods, fees, and transaction details
24
+ * for items from a sales contract. Requires a connected wallet to calculate wallet-specific options.
25
+ *
26
+ * @param params - Configuration parameters or skipToken to skip the query
27
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
28
+ * @param params.contractAddress - The sales contract address
29
+ * @param params.collectionAddress - The collection contract address
30
+ * @param params.items - Array of items to purchase with tokenId and quantity
31
+ * @param params.query - Optional React Query configuration
32
+ *
33
+ * @returns Query result containing checkout options with payment methods and fees
34
+ *
35
+ * @example
36
+ * Basic usage:
37
+ * ```typescript
38
+ * const { data: checkoutOptions, isLoading } = useCheckoutOptionsSalesContract({
39
+ * chainId: 137,
40
+ * contractAddress: '0x1234...',
41
+ * collectionAddress: '0x5678...',
42
+ * items: [{
43
+ * tokenId: '1',
44
+ * quantity: '1'
45
+ * }]
46
+ * })
47
+ * ```
48
+ *
49
+ * @example
50
+ * With skipToken to conditionally skip:
51
+ * ```typescript
52
+ * const { data: checkoutOptions } = useCheckoutOptionsSalesContract(
53
+ * items.length > 0 ? {
54
+ * chainId: 1,
55
+ * contractAddress: contractAddress,
56
+ * collectionAddress: collectionAddress,
57
+ * items: items
58
+ * } : skipToken
59
+ * )
60
+ * ```
61
+ */
62
+ export function useCheckoutOptionsSalesContract(
63
+ params: UseCheckoutOptionsSalesContractParams | typeof skipToken,
64
+ ) {
65
+ const { address } = useAccount();
66
+ const defaultConfig = useConfig();
67
+
68
+ const queryOptions = checkoutOptionsSalesContractQueryOptions(
69
+ params === skipToken
70
+ ? {
71
+ config: defaultConfig,
72
+ walletAddress: address as Address,
73
+ chainId: 0,
74
+ contractAddress: '',
75
+ collectionAddress: '',
76
+ items: [],
77
+ query: { enabled: false },
78
+ }
79
+ : {
80
+ config: defaultConfig,
81
+ walletAddress: address as Address,
82
+ ...params,
83
+ },
84
+ );
29
85
 
30
- export const checkoutOptionsSalesContractOptions = (
31
- args:
32
- | (UseCheckoutOptionsSalesContractArgs & { wallet?: Hex })
33
- | typeof skipToken,
34
- config: SdkConfig,
35
- ) => {
36
- return queryOptions({
37
- queryKey: ['checkoutOptionsSalesContract', args],
38
- queryFn:
39
- skipToken === args
40
- ? skipToken
41
- : () =>
42
- fetchCheckoutOptionsSalesContract(
43
- {
44
- chainId: String(args.chainId),
45
- // biome-ignore lint/style/noNonNullAssertion: <explanation>
46
- wallet: args.wallet!,
47
- contractAddress: args.contractAddress,
48
- collectionAddress: args.collectionAddress,
49
- items: args.items,
50
- },
51
- config,
52
- ),
86
+ return useQuery({
87
+ ...queryOptions,
53
88
  });
89
+ }
90
+
91
+ export { checkoutOptionsSalesContractQueryOptions };
92
+
93
+ export type {
94
+ FetchCheckoutOptionsSalesContractParams,
95
+ CheckoutOptionsSalesContractQueryOptions,
54
96
  };
55
97
 
56
- export const useCheckoutOptionsSalesContract = (
57
- args: UseCheckoutOptionsSalesContractArgs | typeof skipToken,
58
- ) => {
59
- const { address } = useAccount();
60
- const config = useConfig();
61
- return useQuery(
62
- checkoutOptionsSalesContractOptions(
63
- skipToken === args ? skipToken : { ...args, wallet: address },
64
- config,
65
- ),
66
- );
98
+ // Legacy exports for backward compatibility
99
+ export type UseCheckoutOptionsSalesContractArgs = {
100
+ chainId: number;
101
+ contractAddress: string;
102
+ collectionAddress: string;
103
+ items: Array<CheckoutOptionsItem>;
67
104
  };
105
+
106
+ export type UseCheckoutOptionsSalesContractReturn = Awaited<
107
+ ReturnType<typeof fetchCheckoutOptionsSalesContract>
108
+ >;
@@ -1,54 +1,69 @@
1
- import { queryOptions, useQuery } from '@tanstack/react-query';
2
- import { z } from 'zod';
3
- import type { SdkConfig } from '../../types';
1
+ 'use client';
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import type { Optional } from '../_internal';
4
5
  import {
5
- AddressSchema,
6
- QueryArgSchema,
7
- collectableKeys,
8
- getMetadataClient,
9
- } from '../_internal';
6
+ type CollectibleQueryOptions,
7
+ collectibleQueryOptions,
8
+ type FetchCollectibleParams,
9
+ } from '../queries/collectible';
10
10
  import { useConfig } from './useConfig';
11
11
 
12
- const UseCollectibleSchema = z.object({
13
- chainId: z.number(),
14
- collectionAddress: AddressSchema,
15
- collectibleId: z.string().optional(),
16
- query: QueryArgSchema,
17
- });
18
-
19
- export type UseCollectibleArgs = z.infer<typeof UseCollectibleSchema>;
20
-
21
- export type UseCollectibleReturn = Awaited<ReturnType<typeof fetchCollectible>>;
22
-
23
- const fetchCollectible = async (
24
- args: UseCollectibleArgs,
25
- config: SdkConfig,
26
- ) => {
27
- const parsedArgs = UseCollectibleSchema.parse(args);
28
- const metadataClient = getMetadataClient(config);
29
- const tokenIds = parsedArgs.collectibleId ? [parsedArgs.collectibleId] : [];
30
-
31
- return metadataClient
32
- .getTokenMetadata({
33
- chainID: parsedArgs.chainId.toString(),
34
- contractAddress: parsedArgs.collectionAddress,
35
- tokenIDs: tokenIds,
36
- })
37
- .then((resp) => resp.tokenMetadata[0]);
38
- };
39
-
40
- export const collectibleOptions = (
41
- args: UseCollectibleArgs,
42
- config: SdkConfig,
43
- ) => {
44
- return queryOptions({
45
- ...args.query,
46
- queryKey: [...collectableKeys.details, args, config],
47
- queryFn: () => fetchCollectible(args, config),
12
+ export type UseCollectibleParams = Optional<CollectibleQueryOptions, 'config'>;
13
+
14
+ /**
15
+ * Hook to fetch metadata for a specific collectible
16
+ *
17
+ * This hook retrieves metadata for an individual NFT from a collection,
18
+ * including properties like name, description, image, attributes, etc.
19
+ *
20
+ * @param params - Configuration parameters
21
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
22
+ * @param params.collectionAddress - The collection contract address
23
+ * @param params.collectibleId - The token ID of the collectible
24
+ * @param params.query - Optional React Query configuration
25
+ *
26
+ * @returns Query result containing the collectible metadata
27
+ *
28
+ * @example
29
+ * Basic usage:
30
+ * ```typescript
31
+ * const { data: collectible, isLoading } = useCollectible({
32
+ * chainId: 137,
33
+ * collectionAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',
34
+ * collectibleId: '12345'
35
+ * })
36
+ * ```
37
+ *
38
+ * @example
39
+ * With custom query options:
40
+ * ```typescript
41
+ * const { data } = useCollectible({
42
+ * chainId: 137,
43
+ * collectionAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',
44
+ * collectibleId: '12345',
45
+ * query: {
46
+ * enabled: Boolean(collectionAddress && tokenId),
47
+ * staleTime: 30_000
48
+ * }
49
+ * })
50
+ * ```
51
+ */
52
+ export function useCollectible(params: UseCollectibleParams) {
53
+ const defaultConfig = useConfig();
54
+
55
+ const { config = defaultConfig, ...rest } = params;
56
+
57
+ const queryOptions = collectibleQueryOptions({
58
+ config,
59
+ ...rest,
48
60
  });
49
- };
50
61
 
51
- export const useCollectible = (args: UseCollectibleArgs) => {
52
- const config = useConfig();
53
- return useQuery(collectibleOptions(args, config));
54
- };
62
+ return useQuery({
63
+ ...queryOptions,
64
+ });
65
+ }
66
+
67
+ export { collectibleQueryOptions };
68
+
69
+ export type { FetchCollectibleParams, CollectibleQueryOptions };
@@ -1,17 +1,66 @@
1
+ 'use client';
2
+
1
3
  import { useQuery } from '@tanstack/react-query';
2
- import type { z } from 'zod';
4
+ import type { Optional } from '../_internal';
3
5
  import {
4
- type UseCollectionSchema,
5
- collectionOptions,
6
- type fetchCollection,
7
- } from './options/collectionOptions';
6
+ type CollectionQueryOptions,
7
+ collectionQueryOptions,
8
+ type FetchCollectionParams,
9
+ } from '../queries/collection';
8
10
  import { useConfig } from './useConfig';
9
11
 
10
- export type UseCollectionArgs = z.input<typeof UseCollectionSchema>;
12
+ export type UseCollectionParams = Optional<CollectionQueryOptions, 'config'>;
13
+
14
+ /**
15
+ * Hook to fetch collection information from the metadata API
16
+ *
17
+ * Retrieves basic contract information including name, symbol, type,
18
+ * and extension data for a given collection contract.
19
+ *
20
+ * @param params - Configuration parameters
21
+ * @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
22
+ * @param params.collectionAddress - The collection contract address
23
+ * @param params.query - Optional React Query configuration
24
+ *
25
+ * @returns Query result containing contract information
26
+ *
27
+ * @example
28
+ * Basic usage:
29
+ * ```typescript
30
+ * const { data, isLoading } = useCollection({
31
+ * chainId: 137,
32
+ * collectionAddress: '0x...'
33
+ * })
34
+ * ```
35
+ *
36
+ * @example
37
+ * With custom query options:
38
+ * ```typescript
39
+ * const { data, isLoading } = useCollection({
40
+ * chainId: 1,
41
+ * collectionAddress: '0x...',
42
+ * query: {
43
+ * refetchInterval: 30000,
44
+ * enabled: userWantsToFetch
45
+ * }
46
+ * })
47
+ * ```
48
+ */
49
+ export function useCollection(params: UseCollectionParams) {
50
+ const defaultConfig = useConfig();
51
+
52
+ const { config = defaultConfig, ...rest } = params;
53
+
54
+ const queryOptions = collectionQueryOptions({
55
+ config,
56
+ ...rest,
57
+ });
58
+
59
+ return useQuery({
60
+ ...queryOptions,
61
+ });
62
+ }
11
63
 
12
- export type UseCollectionReturn = Awaited<ReturnType<typeof fetchCollection>>;
64
+ export { collectionQueryOptions };
13
65
 
14
- export const useCollection = (args: UseCollectionArgs) => {
15
- const config = useConfig();
16
- return useQuery(collectionOptions(args, config));
17
- };
66
+ export type { FetchCollectionParams, CollectionQueryOptions };