@0xsequence/marketplace-sdk 0.9.0 → 1.0.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 (539) hide show
  1. package/.storybook/ConnectionStatus.tsx +289 -0
  2. package/.storybook/main.ts +82 -0
  3. package/.storybook/preview.tsx +106 -0
  4. package/.storybook/vitest.setup.ts +6 -0
  5. package/CHANGELOG.md +135 -8
  6. package/compile-tailwind.js +54 -0
  7. package/dist/{CalendarIcon-DbQ7Vxcw.js → BellIcon-Cb9YEUzJ.js} +27 -27
  8. package/dist/BellIcon-Cb9YEUzJ.js.map +1 -0
  9. package/dist/CollectibleCard-CYyWzk6u.d.ts +8 -0
  10. package/dist/{_internal-BgWcRIak.js → _internal-DslqcNC1.js} +1 -1
  11. package/dist/{_internal-BgWcRIak.js.map → _internal-DslqcNC1.js.map} +1 -1
  12. package/dist/{alien_swap-B_76IMma.js → alien_swap-DJ98gZQp.js} +1 -1
  13. package/dist/{alien_swap-B_76IMma.js.map → alien_swap-DJ98gZQp.js.map} +1 -1
  14. package/dist/{api-DTIan01C.js → api-BmEQfSQa.js} +17 -14
  15. package/dist/api-BmEQfSQa.js.map +1 -0
  16. package/dist/{aqua-xyz-CMN_TFY5.js → aqua-xyz-n1PcCCZ0.js} +1 -1
  17. package/dist/{aqua-xyz-CMN_TFY5.js.map → aqua-xyz-n1PcCCZ0.js.map} +1 -1
  18. package/dist/{aura-Cye_TuHj.js → aura-Bevk_YkS.js} +1 -1
  19. package/dist/{aura-Cye_TuHj.js.map → aura-Bevk_YkS.js.map} +1 -1
  20. package/dist/{blur-DWDMyMpK.js → blur-B5sHErx5.js} +1 -1
  21. package/dist/{blur-DWDMyMpK.js.map → blur-B5sHErx5.js.map} +1 -1
  22. package/dist/builder-api-BFuZNOaN.js.map +1 -1
  23. package/dist/builder.gen-B9wR2nvF.js.map +1 -1
  24. package/dist/{coinbase-ByA_XRB0.js → coinbase-D30W-lxA.js} +1 -1
  25. package/dist/{coinbase-ByA_XRB0.js.map → coinbase-D30W-lxA.js.map} +1 -1
  26. package/dist/contracts-DPHFT2TA.js +97 -0
  27. package/dist/contracts-DPHFT2TA.js.map +1 -0
  28. package/dist/{wagmi-CDzEQbfk.js → create-config-6uynwTeb.js} +20 -10
  29. package/dist/create-config-6uynwTeb.js.map +1 -0
  30. package/dist/{new-marketplace-types-Bfis0U4J.d.ts → create-config-lLSrnkbb.d.ts} +554 -166
  31. package/dist/{element-b77CyXIZ.js → element-C2NJexro.js} +1 -1
  32. package/dist/{element-b77CyXIZ.js.map → element-C2NJexro.js.map} +1 -1
  33. package/dist/filters-B8XS4tFH.d.ts +31 -0
  34. package/dist/{foundation-DbOrKP9Y.js → foundation-QgY1lvUj.js} +1 -1
  35. package/dist/{foundation-DbOrKP9Y.js.map → foundation-QgY1lvUj.js.map} +1 -1
  36. package/dist/index-BGJXqdg6.d.ts +131 -0
  37. package/dist/index-BuY_NKSX.d.ts +222 -0
  38. package/dist/{index-21LE7OhL.d.ts → index-ByW08-Z7.d.ts} +6 -3
  39. package/dist/index-C7xKVIr4.d.ts +447 -0
  40. package/dist/index-CIkpYltz.d.ts +61 -0
  41. package/dist/index-CQnGIGb5.d.ts +346 -0
  42. package/dist/{index-DaE5ZNHb.d.ts → index-CY5UEX4h.d.ts} +5 -5
  43. package/dist/{index-DXMfTZ1F.d.ts → index-ChSKFOMx.d.ts} +1 -1
  44. package/dist/{index-D5v5iluA.d.ts → index-CtF7EE2z.d.ts} +1 -1
  45. package/dist/index-D2HohSwO.d.ts +293 -0
  46. package/dist/index-D71J5Ghd.d.ts +813 -0
  47. package/dist/{index-ByznONYE.d.ts → index-DNU9xoGK.d.ts} +28 -64
  48. package/dist/index-DX0Vm8HY.d.ts +2541 -0
  49. package/dist/index-DonXiSg2.d.ts +902 -0
  50. package/dist/index-Dpyp7fQz.d.ts +298 -0
  51. package/dist/index-PSPpUxCE.d.ts +18 -0
  52. package/dist/{index-BL9RUSEK.d.ts → index-QxxS6f9r.d.ts} +1 -1
  53. package/dist/index-ThUIs-Sy.d.ts +306 -0
  54. package/dist/index.d.ts +8 -10
  55. package/dist/index.js +12 -9
  56. package/dist/listCollectiblesPaginated--AgXjajA.d.ts +166 -0
  57. package/dist/listCollections-Bbzbz7qW.d.ts +624 -0
  58. package/dist/{looks-rare-C1VqNcSM.js → looks-rare-CMVPny4v.js} +1 -1
  59. package/dist/{looks-rare-C1VqNcSM.js.map → looks-rare-CMVPny4v.js.map} +1 -1
  60. package/dist/lowestListing-BQHfQpfg.d.ts +144 -0
  61. package/dist/{magic-eden-ea_AGCZr.js → magic-eden-IrWp2ZXk.js} +1 -1
  62. package/dist/{magic-eden-ea_AGCZr.js.map → magic-eden-IrWp2ZXk.js.map} +1 -1
  63. package/dist/{manifold-8y8J2sjT.js → manifold-DeOE-p2G.js} +1 -1
  64. package/dist/{manifold-8y8J2sjT.js.map → manifold-DeOE-p2G.js.map} +1 -1
  65. package/dist/marketCurrencies-CmOMCCOr.d.ts +122 -0
  66. package/dist/{marketplace-nwnZv9Cb.js → marketplace-B5Z8G03R.js} +1 -1
  67. package/dist/{marketplace-nwnZv9Cb.js.map → marketplace-B5Z8G03R.js.map} +1 -1
  68. package/dist/{marketplace-logos-CSeGcPW4.js → marketplace-logos-D8t86gsW.js} +21 -21
  69. package/dist/{marketplace-logos-CSeGcPW4.js.map → marketplace-logos-D8t86gsW.js.map} +1 -1
  70. package/dist/{marketplace.gen-BSDIX7NZ.js → marketplace.gen-JzNYpM0U.js} +3 -3
  71. package/dist/marketplace.gen-JzNYpM0U.js.map +1 -0
  72. package/dist/{marketplaceConfig-C6X1SUik.js → marketplaceConfig-sNh-MA5M.js} +15 -4
  73. package/dist/marketplaceConfig-sNh-MA5M.js.map +1 -0
  74. package/dist/{mintify-LA68TzWg.js → mintify-DG3GrljJ.js} +1 -1
  75. package/dist/{mintify-LA68TzWg.js.map → mintify-DG3GrljJ.js.map} +1 -1
  76. package/dist/network-DnBEe1Ur.js +15 -0
  77. package/dist/network-DnBEe1Ur.js.map +1 -0
  78. package/dist/{nftx-D3Tc8nzd.js → nftx-B3LH-ZYM.js} +1 -1
  79. package/dist/{nftx-D3Tc8nzd.js.map → nftx-B3LH-ZYM.js.map} +1 -1
  80. package/dist/{okx-hbqg6oIJ.js → okx-CRFLrT3Z.js} +1 -1
  81. package/dist/{okx-hbqg6oIJ.js.map → okx-CRFLrT3Z.js.map} +1 -1
  82. package/dist/{open-sea-BccuK8-t.js → open-sea-cOpfl366.js} +1 -1
  83. package/dist/{open-sea-BccuK8-t.js.map → open-sea-cOpfl366.js.map} +1 -1
  84. package/dist/primary-sale-CLjXRrDj.js +3048 -0
  85. package/dist/primary-sale-CLjXRrDj.js.map +1 -0
  86. package/dist/queries-BYT4GJw3.js +1478 -0
  87. package/dist/queries-BYT4GJw3.js.map +1 -0
  88. package/dist/query-BTe7Wkrs.d.ts +31 -0
  89. package/dist/{rarible-BgTwwj9g.js → rarible-guwUx4cn.js} +1 -1
  90. package/dist/{rarible-BgTwwj9g.js.map → rarible-guwUx4cn.js.map} +1 -1
  91. package/dist/react/_internal/api/index.d.ts +2 -4
  92. package/dist/react/_internal/api/index.js +5 -4
  93. package/dist/react/_internal/databeat/index.d.ts +2 -73
  94. package/dist/react/_internal/databeat/index.js +21 -18
  95. package/dist/react/_internal/index.d.ts +2 -7
  96. package/dist/react/_internal/index.js +8 -6
  97. package/dist/react/_internal/wagmi/index.d.ts +2 -4
  98. package/dist/react/_internal/wagmi/index.js +4 -3
  99. package/dist/react/hooks/config/index.d.ts +9 -0
  100. package/dist/react/hooks/config/index.js +26 -0
  101. package/dist/react/hooks/contracts/index.d.ts +7 -0
  102. package/dist/react/hooks/contracts/index.js +16 -0
  103. package/dist/react/hooks/data/collectibles/index.d.ts +5 -0
  104. package/dist/react/hooks/data/collectibles/index.js +26 -0
  105. package/dist/react/hooks/data/collections/index.d.ts +11 -0
  106. package/dist/react/hooks/data/collections/index.js +26 -0
  107. package/dist/react/hooks/data/index.d.ts +29 -0
  108. package/dist/react/hooks/data/index.js +26 -0
  109. package/dist/react/hooks/data/inventory/index.d.ts +29 -0
  110. package/dist/react/hooks/data/inventory/index.js +26 -0
  111. package/dist/react/hooks/data/market/index.d.ts +12 -0
  112. package/dist/react/hooks/data/market/index.js +26 -0
  113. package/dist/react/hooks/data/orders/index.d.ts +11 -0
  114. package/dist/react/hooks/data/orders/index.js +26 -0
  115. package/dist/react/hooks/data/primary-sales/index.d.ts +29 -0
  116. package/dist/react/hooks/data/primary-sales/index.js +26 -0
  117. package/dist/react/hooks/data/tokens/index.d.ts +5 -0
  118. package/dist/react/hooks/data/tokens/index.js +26 -0
  119. package/dist/react/hooks/index.d.ts +29 -18
  120. package/dist/react/hooks/index.js +22 -19
  121. package/dist/react/hooks/transactions/index.d.ts +3 -0
  122. package/dist/react/hooks/transactions/index.js +26 -0
  123. package/dist/react/hooks/ui/index.d.ts +5 -0
  124. package/dist/react/hooks/ui/index.js +26 -0
  125. package/dist/react/hooks/utils/index.d.ts +29 -0
  126. package/dist/react/hooks/utils/index.js +26 -0
  127. package/dist/react/index.d.ts +29 -18
  128. package/dist/react/index.js +22 -19
  129. package/dist/react/queries/index.d.ts +16 -8
  130. package/dist/react/queries/index.js +17 -15
  131. package/dist/react/ssr/index.d.ts +7 -9
  132. package/dist/react/ssr/index.js +8 -6
  133. package/dist/react/ssr/index.js.map +1 -1
  134. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +4 -8
  135. package/dist/react/ui/components/marketplace-collectible-card/index.js +21 -18
  136. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -7
  137. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +8 -6
  138. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  139. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  140. package/dist/react/ui/icons/index.js +11 -9
  141. package/dist/react/ui/index.d.ts +4 -8
  142. package/dist/react/ui/index.js +21 -18
  143. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +1 -25
  144. package/dist/react/ui/modals/_internal/components/actionModal/index.js +22 -19
  145. package/dist/react/utils/index.d.ts +19 -0
  146. package/dist/react/utils/index.js +9 -0
  147. package/dist/{react-BbHBl6gg.css → react-CbqXKOpt.css} +1 -1
  148. package/dist/{react-BbHBl6gg.css.map → react-CbqXKOpt.css.map} +1 -1
  149. package/dist/{react-DAIicQPT.js → react-Ceq8mamy.js} +11203 -7647
  150. package/dist/react-Ceq8mamy.js.map +1 -0
  151. package/dist/{sequence-Do3kzb4J.js → sequence-Dt2Xo7Fa.js} +1 -1
  152. package/dist/{sequence-Do3kzb4J.js.map → sequence-Dt2Xo7Fa.js.map} +1 -1
  153. package/dist/{index.css → styles/index.css} +679 -127
  154. package/dist/{sudo-swap-B6vPKxBz.js → sudo-swap-CGoARONs.js} +1 -1
  155. package/dist/{sudo-swap-B6vPKxBz.js.map → sudo-swap-CGoARONs.js.map} +1 -1
  156. package/dist/{super-rare-eCm1SE6O.js → super-rare-NeQtZjcn.js} +1 -1
  157. package/dist/{super-rare-eCm1SE6O.js.map → super-rare-NeQtZjcn.js.map} +1 -1
  158. package/dist/{token-Da4TdyUk.js → token-D9gZVqbX.js} +1 -1
  159. package/dist/{token-Da4TdyUk.js.map → token-D9gZVqbX.js.map} +1 -1
  160. package/dist/tokenSupplies-DXtkRYNO.d.ts +147 -0
  161. package/dist/{transaction-CcVViHEL.js → transaction-CC2KxNF6.js} +2 -17
  162. package/dist/transaction-CC2KxNF6.js.map +1 -0
  163. package/dist/types/index.d.ts +2 -3
  164. package/dist/types/index.js +2 -2
  165. package/dist/{CollectibleCard-C8Ae64Ab.d.ts → types-BlCa0TVE.d.ts} +9 -11
  166. package/dist/{types-DwWE6xOF.js → types-G2PWxiJR.js} +1 -1
  167. package/dist/{types-DwWE6xOF.js.map → types-G2PWxiJR.js.map} +1 -1
  168. package/dist/utils/abi/index.d.ts +5 -5
  169. package/dist/utils/abi/index.js +5 -5
  170. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  171. package/dist/utils/abi/marketplace/index.js +1 -1
  172. package/dist/utils/abi/primary-sale/index.d.ts +2 -2
  173. package/dist/utils/abi/primary-sale/index.js +2 -2
  174. package/dist/utils/abi/token/index.d.ts +1 -1
  175. package/dist/utils/abi/token/index.js +1 -1
  176. package/dist/utils/index.d.ts +7 -8
  177. package/dist/utils/index.js +11 -9
  178. package/dist/{utils-CW2NA5KG.js → utils-CKJd-CRf.js} +4 -11
  179. package/dist/utils-CKJd-CRf.js.map +1 -0
  180. package/dist/{utils-BPYfgDSL.js → utils-wquIhK6T.js} +5 -6
  181. package/dist/utils-wquIhK6T.js.map +1 -0
  182. package/dist/waitForTransactionReceipt-DZxAuR9N.js +27 -0
  183. package/dist/waitForTransactionReceipt-DZxAuR9N.js.map +1 -0
  184. package/dist/{x2y2-DD17tT91.js → x2y2-CQdg24VP.js} +1 -1
  185. package/dist/{x2y2-DD17tT91.js.map → x2y2-CQdg24VP.js.map} +1 -1
  186. package/dist/{zora-BpSG9UzS.js → zora-DdEydy4L.js} +1 -1
  187. package/dist/{zora-BpSG9UzS.js.map → zora-DdEydy4L.js.map} +1 -1
  188. package/eslint.config.mjs +4 -0
  189. package/package.json +55 -39
  190. package/postcss.config.mjs +73 -0
  191. package/public/mockServiceWorker.js +344 -0
  192. package/src/index.ts +1 -0
  193. package/src/react/_internal/api/__mocks__/builder.msw.ts +6 -0
  194. package/src/react/_internal/api/__mocks__/indexer.msw.ts +16 -0
  195. package/src/react/_internal/api/__mocks__/laos.msw.ts +387 -0
  196. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +2 -0
  197. package/src/react/_internal/api/__mocks__/metadata.msw.ts +12 -1
  198. package/src/react/_internal/api/__tests__/laos-api.test.ts +756 -0
  199. package/src/react/_internal/api/builder.gen.ts +11 -7
  200. package/src/react/_internal/api/laos-api.ts +3 -0
  201. package/src/react/_internal/api/marketplace.gen.ts +5 -3
  202. package/src/react/_internal/api/query-keys.ts +12 -4
  203. package/src/react/_internal/api/services.ts +2 -14
  204. package/src/react/_internal/databeat/index.ts +15 -14
  205. package/src/react/_internal/databeat/types.ts +23 -0
  206. package/src/react/_internal/databeat/utils.ts +26 -0
  207. package/src/react/_internal/query-meta.ts +3 -0
  208. package/src/react/_internal/utils.ts +6 -4
  209. package/src/react/_internal/wagmi/create-config.ts +29 -14
  210. package/src/react/_internal/wagmi/get-connectors.ts +1 -1
  211. package/src/react/hooks/{__tests__ → config}/__snapshots__/useMarketplaceConfig.test.tsx.snap +6 -0
  212. package/src/react/hooks/config/index.ts +3 -0
  213. package/src/react/hooks/{useConfig.tsx → config/useConfig.tsx} +2 -2
  214. package/src/react/hooks/config/useConnectorMetadata.tsx +16 -0
  215. package/src/react/hooks/{__tests__ → config}/useMarketplaceConfig.test.tsx +1 -1
  216. package/src/react/hooks/{useMarketplaceConfig.tsx → config/useMarketplaceConfig.tsx} +2 -2
  217. package/src/react/hooks/contracts/index.ts +1 -0
  218. package/src/react/hooks/contracts/useSalesContractABI.ts +174 -0
  219. package/src/react/hooks/data/collectibles/index.ts +6 -0
  220. package/src/react/hooks/data/collectibles/useBalanceOfCollectible.laos.test.tsx +367 -0
  221. package/src/react/hooks/{__tests__ → data/collectibles}/useBalanceOfCollectible.test.tsx +2 -2
  222. package/src/react/hooks/{useBalanceOfCollectible.tsx → data/collectibles/useBalanceOfCollectible.tsx} +4 -4
  223. package/src/react/hooks/{__tests__ → data/collectibles}/useCollectible.test.tsx +3 -3
  224. package/src/react/hooks/{useCollectible.tsx → data/collectibles/useCollectible.tsx} +3 -3
  225. package/src/react/hooks/{__tests__ → data/collectibles}/useCountOfCollectables.test.tsx +4 -4
  226. package/src/react/hooks/{useCountOfCollectables.tsx → data/collectibles/useCountOfCollectables.tsx} +3 -3
  227. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectibleActivities.test.tsx +3 -3
  228. package/src/react/hooks/{useListCollectibleActivities.tsx → data/collectibles/useListCollectibleActivities.tsx} +3 -3
  229. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectibles.test.tsx +5 -6
  230. package/src/react/hooks/{useListCollectibles.tsx → data/collectibles/useListCollectibles.tsx} +3 -3
  231. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectiblesPaginated.test.tsx +4 -4
  232. package/src/react/hooks/{useListCollectiblesPaginated.tsx → data/collectibles/useListCollectiblesPaginated.tsx} +3 -3
  233. package/src/react/hooks/{__tests__ → data/collections}/__snapshots__/useListCollections.test.tsx.snap +10 -0
  234. package/src/react/hooks/data/collections/index.ts +6 -0
  235. package/src/react/hooks/{__tests__ → data/collections}/useCollection.test.tsx +2 -3
  236. package/src/react/hooks/{useCollection.tsx → data/collections/useCollection.tsx} +3 -3
  237. package/src/react/hooks/{__tests__ → data/collections}/useCollectionBalanceDetails.test.tsx +19 -2
  238. package/src/react/hooks/data/collections/useCollectionBalanceDetails.tsx +106 -0
  239. package/src/react/hooks/{__tests__ → data/collections}/useCollectionDetails.test.tsx +2 -2
  240. package/src/react/hooks/{useCollectionDetails.ts → data/collections/useCollectionDetails.ts} +3 -3
  241. package/src/react/hooks/{__tests__ → data/collections}/useCollectionDetailsPolling.test.tsx +14 -6
  242. package/src/react/hooks/{useCollectionDetailsPolling.tsx → data/collections/useCollectionDetailsPolling.tsx} +5 -9
  243. package/src/react/hooks/{__tests__ → data/collections}/useListCollectionActivities.test.tsx +5 -5
  244. package/src/react/hooks/{useListCollectionActivities.tsx → data/collections/useListCollectionActivities.tsx} +3 -3
  245. package/src/react/hooks/{__tests__ → data/collections}/useListCollections.test.tsx +5 -4
  246. package/src/react/hooks/data/collections/useListCollections.tsx +80 -0
  247. package/src/react/hooks/data/index.ts +6 -0
  248. package/src/react/hooks/data/inventory/index.ts +1 -0
  249. package/src/react/hooks/{__tests__ → data/inventory}/useInventory.test.tsx +4 -4
  250. package/src/react/hooks/{useInventory.tsx → data/inventory/useInventory.tsx} +7 -4
  251. package/src/react/hooks/data/market/index.ts +3 -0
  252. package/src/react/hooks/{__tests__ → data/market}/useCurrency.test.tsx +4 -4
  253. package/src/react/hooks/{useCurrency.tsx → data/market/useCurrency.tsx} +3 -3
  254. package/src/react/hooks/{__tests__ → data/market}/useListMarketCardData.test.tsx +10 -14
  255. package/src/react/hooks/{useListMarketCardData.tsx → data/market/useListMarketCardData.tsx} +8 -7
  256. package/src/react/hooks/{__tests__ → data/market}/useMarketCurrencies.test.tsx +5 -5
  257. package/src/react/hooks/{useMarketCurrencies.tsx → data/market/useMarketCurrencies.tsx} +3 -3
  258. package/src/react/hooks/data/orders/index.ts +7 -0
  259. package/src/react/hooks/{__tests__ → data/orders}/useCountListingsForCollectible.test.tsx +2 -2
  260. package/src/react/hooks/{useCountListingsForCollectible.tsx → data/orders/useCountListingsForCollectible.tsx} +3 -3
  261. package/src/react/hooks/{__tests__ → data/orders}/useCountOffersForCollectible.test.tsx +2 -2
  262. package/src/react/hooks/{useCountOffersForCollectible.tsx → data/orders/useCountOffersForCollectible.tsx} +3 -3
  263. package/src/react/hooks/{__tests__ → data/orders}/useFloorOrder.test.tsx +3 -3
  264. package/src/react/hooks/{useFloorOrder.tsx → data/orders/useFloorOrder.tsx} +3 -3
  265. package/src/react/hooks/{__tests__ → data/orders}/useHighestOffer.test.tsx +3 -3
  266. package/src/react/hooks/{useHighestOffer.tsx → data/orders/useHighestOffer.tsx} +3 -3
  267. package/src/react/hooks/{__tests__ → data/orders}/useListListingsForCollectible.test.tsx +6 -6
  268. package/src/react/hooks/{useListListingsForCollectible.tsx → data/orders/useListListingsForCollectible.tsx} +3 -3
  269. package/src/react/hooks/{__tests__ → data/orders}/useListOffersForCollectible.test.tsx +5 -5
  270. package/src/react/hooks/{useListOffersForCollectible.tsx → data/orders/useListOffersForCollectible.tsx} +4 -4
  271. package/src/react/hooks/{__tests__ → data/orders}/useLowestListing.test.tsx +5 -5
  272. package/src/react/hooks/{useLowestListing.tsx → data/orders/useLowestListing.tsx} +3 -3
  273. package/src/react/hooks/data/primary-sales/index.ts +6 -0
  274. package/src/react/hooks/{useCountOfPrimarySaleItems.tsx → data/primary-sales/useCountOfPrimarySaleItems.tsx} +2 -2
  275. package/src/react/hooks/data/primary-sales/useErc721SalesData.tsx +184 -0
  276. package/src/react/hooks/data/primary-sales/useGetCountOfPrimarySaleItems.tsx +48 -0
  277. package/src/react/hooks/{useList1155ShopCardData.tsx → data/primary-sales/useList1155ShopCardData.tsx} +17 -8
  278. package/src/react/hooks/data/primary-sales/useList721ShopCardData.tsx +183 -0
  279. package/src/react/hooks/data/primary-sales/useListPrimarySaleItems.tsx +66 -0
  280. package/src/react/hooks/data/tokens/index.ts +5 -0
  281. package/src/react/hooks/{__tests__ → data/tokens}/useCurrencyBalance.test.tsx +9 -5
  282. package/src/react/hooks/data/tokens/useCurrencyBalance.tsx +137 -0
  283. package/src/react/hooks/data/tokens/useGetTokenRanges.test.tsx +111 -0
  284. package/src/react/hooks/data/tokens/useGetTokenRanges.tsx +94 -0
  285. package/src/react/hooks/{__tests__ → data/tokens}/useListBalances.test.tsx +2 -2
  286. package/src/react/hooks/{useListBalances.tsx → data/tokens/useListBalances.tsx} +5 -5
  287. package/src/react/hooks/data/tokens/useListTokenMetadata.test.tsx +137 -0
  288. package/src/react/hooks/{useListTokenMetadata.tsx → data/tokens/useListTokenMetadata.tsx} +3 -3
  289. package/src/react/hooks/data/tokens/useSearchTokenMetadata.test.tsx +284 -0
  290. package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +186 -0
  291. package/src/react/hooks/data/tokens/useTokenSupplies.ts +81 -0
  292. package/src/react/hooks/index.ts +18 -50
  293. package/src/react/hooks/transactions/index.ts +9 -0
  294. package/src/react/hooks/{__tests__ → transactions}/useCancelOrder.test.tsx +53 -85
  295. package/src/react/hooks/{useCancelOrder.tsx → transactions/useCancelOrder.tsx} +4 -4
  296. package/src/react/hooks/{__tests__/useCancelTransactionSteps.test.tsx → transactions/useCancelTransactionSteps.test.tsx.bak} +3 -52
  297. package/src/react/hooks/transactions/useCancelTransactionSteps.tsx +193 -0
  298. package/src/react/hooks/{__tests__ → transactions}/useGenerateCancelTransaction.test.tsx +2 -2
  299. package/src/react/hooks/{useGenerateCancelTransaction.tsx → transactions/useGenerateCancelTransaction.tsx} +5 -5
  300. package/src/react/hooks/{__tests__ → transactions}/useGenerateListingTransaction.test.tsx +2 -2
  301. package/src/react/hooks/{useGenerateListingTransaction.tsx → transactions/useGenerateListingTransaction.tsx} +5 -5
  302. package/src/react/hooks/{__tests__ → transactions}/useGenerateOfferTransaction.test.tsx +7 -45
  303. package/src/react/hooks/{useGenerateOfferTransaction.tsx → transactions/useGenerateOfferTransaction.tsx} +7 -7
  304. package/src/react/hooks/{__tests__ → transactions}/useGenerateSellTransaction.test.tsx +3 -7
  305. package/src/react/hooks/{useGenerateSellTransaction.tsx → transactions/useGenerateSellTransaction.tsx} +4 -4
  306. package/src/react/hooks/transactions/useOrderSteps.tsx +189 -0
  307. package/src/react/hooks/transactions/useProcessStep.test.tsx +272 -0
  308. package/src/react/hooks/transactions/useProcessStep.ts +95 -0
  309. package/src/react/hooks/transactions/useTransferTokens.test.tsx +469 -0
  310. package/src/react/hooks/{useTransferTokens.tsx → transactions/useTransferTokens.tsx} +5 -5
  311. package/src/react/hooks/ui/index.ts +3 -0
  312. package/src/react/hooks/{useFilterState.tsx → ui/useFilterState.tsx} +1 -1
  313. package/src/react/hooks/{__tests__ → ui}/useFilters.test.tsx +2 -3
  314. package/src/react/hooks/ui/useFilters.tsx +178 -0
  315. package/src/react/hooks/ui/useOpenConnectModal.tsx +9 -0
  316. package/src/react/hooks/util/optimisticCancelUpdates.ts +1 -0
  317. package/src/react/hooks/utils/index.ts +9 -0
  318. package/src/react/hooks/{__tests__ → utils}/useAutoSelectFeeOption.test.tsx +7 -3
  319. package/src/react/hooks/{useAutoSelectFeeOption.tsx → utils/useAutoSelectFeeOption.tsx} +2 -2
  320. package/src/react/hooks/utils/useCheckoutOptions.test.tsx +162 -0
  321. package/src/react/hooks/utils/useCheckoutOptions.tsx +98 -0
  322. package/src/react/hooks/{__tests__ → utils}/useCheckoutOptionsSalesContract.test.tsx +42 -61
  323. package/src/react/hooks/utils/useCheckoutOptionsSalesContract.tsx +108 -0
  324. package/src/react/hooks/{__tests__ → utils}/useComparePrices.test.tsx +1 -1
  325. package/src/react/hooks/utils/useComparePrices.tsx +102 -0
  326. package/src/react/hooks/{__tests__ → utils}/useConvertPriceToUSD.test.tsx +4 -4
  327. package/src/react/hooks/utils/useConvertPriceToUSD.tsx +96 -0
  328. package/src/react/hooks/utils/useEnsureCorrectChain.ts +74 -0
  329. package/src/react/hooks/{__tests__ → utils}/useRoyalty.test.tsx +1 -1
  330. package/src/react/hooks/{useRoyalty.tsx → utils/useRoyalty.tsx} +3 -3
  331. package/src/react/hooks/utils/useSwitchChainWithModal.ts +38 -0
  332. package/src/react/index.ts +1 -2
  333. package/src/react/providers/index.tsx +110 -0
  334. package/src/react/providers/modal-provider.tsx +43 -0
  335. package/src/react/{__tests__ → providers}/provider.test.tsx +5 -4
  336. package/src/react/providers/shadow-root.tsx +63 -0
  337. package/src/react/providers/theme-provider.tsx +29 -0
  338. package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +123 -0
  339. package/src/react/queries/__tests__/inventory.laos.test.ts +496 -0
  340. package/src/react/queries/balanceOfCollectible.ts +7 -4
  341. package/src/react/queries/checkoutOptions.ts +85 -0
  342. package/src/react/queries/checkoutOptionsSalesContract.ts +89 -0
  343. package/src/react/queries/collectionBalanceDetails.ts +92 -0
  344. package/src/react/queries/comparePrices.ts +108 -0
  345. package/src/react/queries/convertPriceToUSD.ts +92 -0
  346. package/src/react/{hooks/useFilters.tsx → queries/filters.ts} +51 -48
  347. package/src/react/queries/getTokenRanges.ts +62 -0
  348. package/src/react/queries/index.ts +22 -0
  349. package/src/react/queries/inventory.ts +6 -0
  350. package/src/react/queries/listBalances.ts +4 -3
  351. package/src/react/queries/listCollections.ts +7 -3
  352. package/src/react/queries/listTokenMetadata.ts +2 -2
  353. package/src/react/queries/marketplaceConfig.ts +11 -2
  354. package/src/react/queries/primarySaleItems.ts +80 -0
  355. package/src/react/queries/primarySaleItemsCount.ts +64 -0
  356. package/src/react/queries/searchTokenMetadata.ts +87 -0
  357. package/src/react/queries/tokenSupplies.ts +101 -0
  358. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +6 -0
  359. package/src/react/ssr/__tests__/create-ssr-client.test.ts +1 -1
  360. package/src/react/ui/components/_internals/action-button/ActionButton.stories.tsx +296 -0
  361. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +66 -66
  362. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +56 -18
  363. package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +4 -11
  364. package/src/react/ui/components/_internals/action-button/__tests__/OwnerActions.test.tsx +5 -12
  365. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +32 -16
  366. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +7 -7
  367. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +4 -1
  368. package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +4 -4
  369. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +15 -11
  370. package/src/react/ui/components/_internals/action-button/store.ts +44 -34
  371. package/src/react/ui/components/_internals/custom-select/CustomSelect.stories.tsx +582 -0
  372. package/src/react/ui/components/_internals/pill/Pill.stories.tsx +83 -0
  373. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +11 -4
  374. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -4
  375. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +4 -3
  376. package/src/react/ui/components/marketplace-collectible-card/types.ts +7 -5
  377. package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +4 -7
  378. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +1 -1
  379. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +11 -4
  380. package/src/react/ui/components/marketplace-logos/marketplace-logos.stories.tsx +199 -0
  381. package/src/react/ui/components/media/Media.stories.tsx +642 -0
  382. package/src/react/ui/components/media/Media.tsx +24 -19
  383. package/src/react/ui/components/media/types.ts +6 -0
  384. package/src/react/ui/index.ts +1 -1
  385. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +25 -25
  386. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +8 -2
  387. package/src/react/ui/modals/BuyModal/__tests__/ERC721ShopModal.test.tsx +1 -1
  388. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +7 -1
  389. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +9 -1
  390. package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +5 -5
  391. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +8 -8
  392. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +44 -19
  393. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +3 -0
  394. package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +4 -4
  395. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +18 -30
  396. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +43 -27
  397. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +13 -2
  398. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +7 -7
  399. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +17 -3
  400. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +19 -8
  401. package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +5 -9
  402. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +23 -15
  403. package/src/react/ui/modals/BuyModal/index.tsx +9 -1
  404. package/src/react/ui/modals/BuyModal/store.ts +28 -0
  405. package/src/react/ui/modals/CreateListingModal/Modal.tsx +39 -16
  406. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +3 -24
  407. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +5 -9
  408. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +43 -83
  409. package/src/react/ui/modals/CreateListingModal/store.ts +3 -3
  410. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +34 -17
  411. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +88 -62
  412. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +9 -7
  413. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +2 -2
  414. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +47 -84
  415. package/src/react/ui/modals/MakeOfferModal/store.ts +3 -3
  416. package/src/react/ui/modals/SellModal/Modal.tsx +18 -17
  417. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +8 -30
  418. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +7 -7
  419. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +39 -65
  420. package/src/react/ui/modals/SellModal/store.ts +3 -3
  421. package/src/react/ui/modals/TransferModal/__tests__/__snapshots__/store.test.ts.snap +17 -0
  422. package/src/react/ui/modals/TransferModal/__tests__/store.test.ts +366 -0
  423. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +412 -0
  424. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +51 -48
  425. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +54 -44
  426. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +9 -8
  427. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +31 -35
  428. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +22 -13
  429. package/src/react/ui/modals/TransferModal/index.tsx +36 -53
  430. package/src/react/ui/modals/TransferModal/messages.ts +1 -1
  431. package/src/react/ui/modals/TransferModal/store.ts +122 -0
  432. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +116 -136
  433. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +15 -44
  434. package/src/react/ui/modals/_internal/components/actionModal/index.ts +0 -1
  435. package/src/react/ui/modals/_internal/components/calendar/index.tsx +0 -1
  436. package/src/react/ui/modals/_internal/components/currencyImage/index.tsx +10 -14
  437. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +14 -5
  438. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +24 -18
  439. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +10 -10
  440. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +8 -8
  441. package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +13 -5
  442. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +42 -27
  443. package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +164 -65
  444. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +174 -20
  445. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +341 -42
  446. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +95 -101
  447. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +72 -14
  448. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +30 -14
  449. package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +2 -2
  450. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
  451. package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +88 -89
  452. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +36 -10
  453. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +25 -26
  454. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +35 -21
  455. package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +91 -62
  456. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +62 -48
  457. package/src/react/ui/modals/_internal/hooks/useSelectWaasFeeOptions.ts +3 -5
  458. package/src/react/ui/modals/_internal/types.ts +8 -2
  459. package/src/react/utils/index.ts +1 -0
  460. package/src/react/utils/waitForTransactionReceipt.ts +49 -0
  461. package/src/{index.css → styles/index.css} +6 -5
  462. package/src/styles/styles.ts +3275 -0
  463. package/src/types/sdk-config.ts +8 -1
  464. package/src/utils/_internal/error/transaction.ts +0 -10
  465. package/src/utils/abi/primary-sale/index.ts +4 -2
  466. package/src/utils/abi/primary-sale/{sequence-1155-sales-contract.ts → sequence-1155-sales-contract-v0.ts} +67 -58
  467. package/src/utils/abi/primary-sale/sequence-1155-sales-contract-v1.ts +546 -0
  468. package/src/utils/abi/primary-sale/{sequence-721-sales-contract.ts → sequence-721-sales-contract-v0.ts} +1 -1
  469. package/src/utils/abi/primary-sale/sequence-721-sales-contract-v1.ts +394 -0
  470. package/src/utils/network.ts +15 -0
  471. package/test/const.ts +1 -1
  472. package/test/globalSetup.ts +39 -11
  473. package/test/handlers.ts +465 -0
  474. package/test/index.ts +1 -0
  475. package/test/server-setup.ts +23 -0
  476. package/test/setup.ts +1 -1
  477. package/test/test-utils.tsx +46 -36
  478. package/tsconfig.json +1 -1
  479. package/tsdown.config.ts +12 -7
  480. package/vitest.shims.d.ts +2 -0
  481. package/vitest.storybook.config.js +33 -0
  482. package/dist/CalendarIcon-DbQ7Vxcw.js.map +0 -1
  483. package/dist/api-DTIan01C.js.map +0 -1
  484. package/dist/builder-api-C_zj5mr3.d.ts +0 -12
  485. package/dist/index-BQsgAvtX.d.ts +0 -2938
  486. package/dist/index-BUVWziLP.d.ts +0 -60
  487. package/dist/index-CLy8y5hm.d.ts +0 -1057
  488. package/dist/index-COt10OgI.d.ts +0 -24
  489. package/dist/index-DPNWNa7t.d.ts +0 -414
  490. package/dist/index-DsfCs3-x.d.ts +0 -122
  491. package/dist/index-DvpBZgor.d.ts +0 -1
  492. package/dist/index-dUb6wb4Y.d.ts +0 -22
  493. package/dist/marketplace.gen-BSDIX7NZ.js.map +0 -1
  494. package/dist/marketplaceConfig-C6X1SUik.js.map +0 -1
  495. package/dist/primary-sale-C55ALnfQ.js +0 -1264
  496. package/dist/primary-sale-C55ALnfQ.js.map +0 -1
  497. package/dist/queries-CUU65uYZ.js +0 -599
  498. package/dist/queries-CUU65uYZ.js.map +0 -1
  499. package/dist/react/hooks/options/index.d.ts +0 -4
  500. package/dist/react/hooks/options/index.js +0 -11
  501. package/dist/react-DAIicQPT.js.map +0 -1
  502. package/dist/transaction-CcVViHEL.js.map +0 -1
  503. package/dist/utils-BPYfgDSL.js.map +0 -1
  504. package/dist/utils-CW2NA5KG.js.map +0 -1
  505. package/dist/wagmi-CDzEQbfk.js.map +0 -1
  506. package/src/react/_internal/wallet/__tests__/wallet.test.ts +0 -416
  507. package/src/react/_internal/wallet/useWallet.ts +0 -52
  508. package/src/react/_internal/wallet/wallet.ts +0 -313
  509. package/src/react/hooks/__tests__/useGetTokenSuppliesMap.test.tsx +0 -104
  510. package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +0 -111
  511. package/src/react/hooks/options/index.ts +0 -1
  512. package/src/react/hooks/useCancelTransactionSteps.tsx +0 -249
  513. package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +0 -67
  514. package/src/react/hooks/useCollectionBalanceDetails.tsx +0 -79
  515. package/src/react/hooks/useComparePrices.tsx +0 -96
  516. package/src/react/hooks/useConvertPriceToUSD.tsx +0 -82
  517. package/src/react/hooks/useCurrencyBalance.tsx +0 -51
  518. package/src/react/hooks/useERC721SaleMintedTokens.tsx +0 -67
  519. package/src/react/hooks/useGetTokenRanges.tsx +0 -31
  520. package/src/react/hooks/useGetTokenSuppliesMap.tsx +0 -73
  521. package/src/react/hooks/useList1155SaleSupplies.tsx +0 -62
  522. package/src/react/hooks/useList721ShopCardData.tsx +0 -160
  523. package/src/react/hooks/useListCollections.tsx +0 -80
  524. package/src/react/hooks/useListPrimarySaleItems.ts +0 -102
  525. package/src/react/hooks/useListShopCardData.tsx +0 -70
  526. package/src/react/hooks/useShopCollectibleSaleData.tsx +0 -349
  527. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +0 -134
  528. package/src/react/provider.tsx +0 -43
  529. package/src/react/queries/getTokenSuppliesMap.ts +0 -77
  530. package/src/react/ui/modals/TransferModal/_store.ts +0 -66
  531. package/src/react/ui/modals/_internal/components/actionModal/store.ts +0 -57
  532. package/src/react/ui/modals/_internal/components/quantityInput/QuantityInputBase.tsx +0 -166
  533. package/src/react/ui/modals/_internal/stores/accountModal.ts +0 -3
  534. package/src/react/ui/modals/modal-provider.tsx +0 -25
  535. package/test/mocks/wallet.ts +0 -63
  536. /package/dist/{abi-BKyRjVcZ.js → abi-Wr_aTZFi.js} +0 -0
  537. /package/dist/{index-C39K_8SG.d.ts → index-q7f-WDBS.d.ts} +0 -0
  538. /package/dist/{options-B4QN7Xou.js → wagmi-BhP3mdhP.js} +0 -0
  539. /package/src/react/hooks/{useGetReceiptFromHash.tsx → utils/useGetReceiptFromHash.tsx} +0 -0
@@ -0,0 +1,1478 @@
1
+ import { FilterCondition } from "./builder.gen-B9wR2nvF.js";
2
+ import { LaosAPI, balanceQueries, collectableKeys, collectionKeys, currencyKeys, getIndexerClient, getMarketplaceClient, getMetadataClient, getQueryClient, tokenKeys } from "./api-BmEQfSQa.js";
3
+ import { OrderSide } from "./marketplace.gen-JzNYpM0U.js";
4
+ import { compareAddress } from "./utils-CKJd-CRf.js";
5
+ import { fetchMarketplaceConfig, marketplaceConfigOptions } from "./marketplaceConfig-sNh-MA5M.js";
6
+ import { infiniteQueryOptions, queryOptions, skipToken } from "@tanstack/react-query";
7
+ import { formatUnits, zeroAddress } from "viem";
8
+
9
+ //#region src/react/queries/balanceOfCollectible.ts
10
+ /**
11
+ * Fetches the balance of a specific collectible for a user
12
+ *
13
+ * @param args - Arguments for the API call
14
+ * @param config - SDK configuration
15
+ * @returns The balance data
16
+ */
17
+ async function fetchBalanceOfCollectible(args, config) {
18
+ if (args.isLaos721) {
19
+ const laosApi = new LaosAPI();
20
+ const response = await laosApi.getTokenBalances({
21
+ chainId: args.chainId.toString(),
22
+ contractAddress: args.collectionAddress,
23
+ accountAddress: args.userAddress,
24
+ includeMetadata: true
25
+ });
26
+ return response.balances[0] || null;
27
+ }
28
+ const indexerClient = getIndexerClient(args.chainId, config);
29
+ return indexerClient.getTokenBalances({
30
+ accountAddress: args.userAddress,
31
+ contractAddress: args.collectionAddress,
32
+ tokenID: args.collectableId,
33
+ includeMetadata: false,
34
+ metadataOptions: {
35
+ verifiedOnly: true,
36
+ includeContracts: [args.collectionAddress]
37
+ }
38
+ }).then((res) => res.balances[0] || null);
39
+ }
40
+ /**
41
+ * Creates a tanstack query options object for the balance query
42
+ *
43
+ * @param args - The query arguments
44
+ * @param config - SDK configuration
45
+ * @returns Query options configuration
46
+ */
47
+ function balanceOfCollectibleOptions(args, config) {
48
+ const enabled = !!args.userAddress && (args.query?.enabled ?? true);
49
+ return queryOptions({
50
+ queryKey: [...collectableKeys.userBalances, args],
51
+ queryFn: enabled ? () => fetchBalanceOfCollectible({
52
+ ...args,
53
+ userAddress: args.userAddress
54
+ }, config) : skipToken
55
+ });
56
+ }
57
+
58
+ //#endregion
59
+ //#region src/react/queries/collectible.ts
60
+ /**
61
+ * Fetches collectible metadata from the metadata API
62
+ */
63
+ async function fetchCollectible(params) {
64
+ const { collectionAddress, collectibleId, chainId, config } = params;
65
+ const metadataClient = getMetadataClient(config);
66
+ const apiArgs = {
67
+ contractAddress: collectionAddress,
68
+ chainID: String(chainId),
69
+ tokenIDs: [collectibleId]
70
+ };
71
+ const result = await metadataClient.getTokenMetadata(apiArgs);
72
+ return result.tokenMetadata[0];
73
+ }
74
+ function collectibleQueryOptions(params) {
75
+ const enabled = Boolean(params.collectionAddress && params.collectibleId && params.chainId && params.config && (params.query?.enabled ?? true));
76
+ return queryOptions({
77
+ queryKey: [...collectableKeys.details, params],
78
+ queryFn: () => fetchCollectible({
79
+ chainId: params.chainId,
80
+ collectionAddress: params.collectionAddress,
81
+ collectibleId: params.collectibleId,
82
+ config: params.config
83
+ }),
84
+ ...params.query,
85
+ enabled
86
+ });
87
+ }
88
+
89
+ //#endregion
90
+ //#region src/react/queries/countOfCollectables.ts
91
+ /**
92
+ * Fetches count of collectibles from the marketplace API
93
+ */
94
+ async function fetchCountOfCollectables(params) {
95
+ const { collectionAddress, chainId, config, filter, side } = params;
96
+ const client = getMarketplaceClient(config);
97
+ if (filter && side) {
98
+ const apiArgs$1 = {
99
+ contractAddress: collectionAddress,
100
+ chainId: String(chainId),
101
+ filter,
102
+ side
103
+ };
104
+ const result$1 = await client.getCountOfFilteredCollectibles(apiArgs$1);
105
+ return result$1.count;
106
+ }
107
+ const apiArgs = {
108
+ contractAddress: collectionAddress,
109
+ chainId: String(chainId)
110
+ };
111
+ const result = await client.getCountOfAllCollectibles(apiArgs);
112
+ return result.count;
113
+ }
114
+ function countOfCollectablesQueryOptions(params) {
115
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.config && (params.query?.enabled ?? true));
116
+ return queryOptions({
117
+ queryKey: [...collectableKeys.counts, params],
118
+ queryFn: () => fetchCountOfCollectables({
119
+ chainId: params.chainId,
120
+ collectionAddress: params.collectionAddress,
121
+ config: params.config,
122
+ filter: params.filter,
123
+ side: params.side
124
+ }),
125
+ ...params.query,
126
+ enabled
127
+ });
128
+ }
129
+
130
+ //#endregion
131
+ //#region src/react/queries/listCollectibleActivities.ts
132
+ /**
133
+ * Fetches collectible activities from the Marketplace API
134
+ */
135
+ async function fetchListCollectibleActivities(params) {
136
+ const { collectionAddress, chainId, config, page, pageSize, sort,...additionalApiParams } = params;
137
+ const marketplaceClient = getMarketplaceClient(config);
138
+ const pageParams = page || pageSize || sort ? {
139
+ page: page ?? 1,
140
+ pageSize: pageSize ?? 10,
141
+ sort
142
+ } : void 0;
143
+ const apiArgs = {
144
+ contractAddress: collectionAddress,
145
+ chainId: String(chainId),
146
+ page: pageParams,
147
+ ...additionalApiParams
148
+ };
149
+ return await marketplaceClient.listCollectibleActivities(apiArgs);
150
+ }
151
+ function listCollectibleActivitiesQueryOptions(params) {
152
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.tokenId && params.config && (params.query?.enabled ?? true));
153
+ return queryOptions({
154
+ queryKey: [...collectableKeys.collectibleActivities, params],
155
+ queryFn: () => fetchListCollectibleActivities({
156
+ chainId: params.chainId,
157
+ collectionAddress: params.collectionAddress,
158
+ config: params.config,
159
+ tokenId: params.tokenId,
160
+ page: params.page,
161
+ pageSize: params.pageSize,
162
+ sort: params.sort
163
+ }),
164
+ ...params.query,
165
+ enabled
166
+ });
167
+ }
168
+
169
+ //#endregion
170
+ //#region src/react/queries/listBalances.ts
171
+ async function fetchBalances(args, config, page) {
172
+ if (args.isLaos721 && args.accountAddress) {
173
+ const laosClient = new LaosAPI();
174
+ return laosClient.getTokenBalances({
175
+ chainId: args.chainId.toString(),
176
+ accountAddress: args.accountAddress,
177
+ contractAddress: args.contractAddress,
178
+ includeMetadata: args.includeMetadata,
179
+ page: { sort: [{
180
+ column: "CREATED_AT",
181
+ order: "DESC"
182
+ }] }
183
+ });
184
+ }
185
+ const indexerClient = getIndexerClient(args.chainId, config);
186
+ return indexerClient.getTokenBalances({
187
+ ...args,
188
+ tokenID: args.tokenId,
189
+ page
190
+ });
191
+ }
192
+ /**
193
+ * Creates a tanstack infinite query options object for the balances query
194
+ *
195
+ * @param args - The query arguments
196
+ * @param config - SDK configuration
197
+ * @returns Query options configuration
198
+ */
199
+ function listBalancesOptions(args, config) {
200
+ return infiniteQueryOptions({
201
+ ...args.query,
202
+ queryKey: [
203
+ ...balanceQueries.lists,
204
+ args,
205
+ config
206
+ ],
207
+ queryFn: ({ pageParam }) => fetchBalances(args, config, pageParam),
208
+ initialPageParam: {
209
+ page: 1,
210
+ pageSize: 30
211
+ },
212
+ getNextPageParam: (lastPage) => lastPage.page.after
213
+ });
214
+ }
215
+
216
+ //#endregion
217
+ //#region src/react/queries/listCollectibles.ts
218
+ /**
219
+ * Fetches a list of collectibles with pagination support from the Marketplace API
220
+ */
221
+ async function fetchListCollectibles(params, marketplaceConfig, page) {
222
+ const { collectionAddress, chainId, config,...additionalApiParams } = params;
223
+ const marketplaceClient = getMarketplaceClient(config);
224
+ const apiArgs = {
225
+ contractAddress: collectionAddress,
226
+ chainId: String(chainId),
227
+ page,
228
+ ...additionalApiParams
229
+ };
230
+ if (params.marketplaceType === "shop") {
231
+ const shopCollection = marketplaceConfig.shop.collections.find((collection) => compareAddress(collection.itemsAddress, params.collectionAddress));
232
+ if (!shopCollection) return { collectibles: [] };
233
+ const primarySaleItemsList = await marketplaceClient.listPrimarySaleItems({
234
+ chainId: params.chainId.toString(),
235
+ primarySaleContractAddress: shopCollection.saleAddress
236
+ }, marketplaceConfig);
237
+ return { collectibles: primarySaleItemsList.primarySaleItems.map((item) => ({
238
+ metadata: item.metadata,
239
+ primarySale: {
240
+ price: {
241
+ amount: item.primarySaleItem.priceAmount,
242
+ formatted: item.primarySaleItem.priceAmountFormatted,
243
+ decimals: item.primarySaleItem.priceDecimals,
244
+ currencyAddress: item.primarySaleItem.currencyAddress
245
+ },
246
+ startDate: item.primarySaleItem.startDate,
247
+ endDate: item.primarySaleItem.endDate,
248
+ supplyCap: item.primarySaleItem.supply,
249
+ itemType: item.primarySaleItem.itemType
250
+ }
251
+ })) };
252
+ }
253
+ if (params.isLaos721 && params.side === OrderSide.listing) try {
254
+ const fetchBalancesArgs = {
255
+ chainId: params.chainId,
256
+ accountAddress: params.filter?.inAccounts?.[0],
257
+ contractAddress: params.collectionAddress,
258
+ page,
259
+ includeMetadata: true,
260
+ isLaos721: true
261
+ };
262
+ const balances = await fetchBalances(fetchBalancesArgs, config, page);
263
+ const collectibles = balances.balances.map((balance) => {
264
+ if (!balance.tokenMetadata) throw new Error("Token metadata not found");
265
+ return { metadata: {
266
+ tokenId: balance.tokenID ?? "",
267
+ attributes: balance.tokenMetadata.attributes,
268
+ image: balance.tokenMetadata.image,
269
+ name: balance.tokenMetadata.name,
270
+ description: balance.tokenMetadata.description,
271
+ video: balance.tokenMetadata.video,
272
+ audio: balance.tokenMetadata.audio
273
+ } };
274
+ });
275
+ return {
276
+ collectibles,
277
+ page: balances.page
278
+ };
279
+ } catch (error) {
280
+ console.error(error);
281
+ }
282
+ return await marketplaceClient.listCollectibles(apiArgs);
283
+ }
284
+ function listCollectiblesQueryOptions(params) {
285
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.side && params.config && (params.query?.enabled ?? true));
286
+ return infiniteQueryOptions({
287
+ queryKey: [...collectableKeys.lists, params],
288
+ queryFn: async ({ pageParam }) => {
289
+ const marketplaceConfig = await fetchMarketplaceConfig({ config: params.config });
290
+ return fetchListCollectibles({
291
+ chainId: params.chainId,
292
+ collectionAddress: params.collectionAddress,
293
+ config: params.config,
294
+ side: params.side,
295
+ filter: params.filter,
296
+ isLaos721: params.isLaos721,
297
+ marketplaceType: params.marketplaceType
298
+ }, marketplaceConfig, pageParam);
299
+ },
300
+ initialPageParam: {
301
+ page: 1,
302
+ pageSize: 30
303
+ },
304
+ getNextPageParam: (lastPage) => lastPage.page?.more ? lastPage.page : void 0,
305
+ ...params.query,
306
+ enabled
307
+ });
308
+ }
309
+
310
+ //#endregion
311
+ //#region src/react/queries/listCollectiblesPaginated.ts
312
+ /**
313
+ * Fetches a list of collectibles with pagination support from the Marketplace API
314
+ */
315
+ async function fetchListCollectiblesPaginated(params) {
316
+ const { collectionAddress, chainId, config, page = 1, pageSize = 30,...additionalApiParams } = params;
317
+ const marketplaceClient = getMarketplaceClient(config);
318
+ const pageParams = {
319
+ page,
320
+ pageSize
321
+ };
322
+ const apiArgs = {
323
+ contractAddress: collectionAddress,
324
+ chainId: String(chainId),
325
+ page: pageParams,
326
+ ...additionalApiParams
327
+ };
328
+ return await marketplaceClient.listCollectibles(apiArgs);
329
+ }
330
+ function listCollectiblesPaginatedQueryOptions(params) {
331
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.side && params.config && (params.query?.enabled ?? true));
332
+ return queryOptions({
333
+ queryKey: [
334
+ ...collectableKeys.lists,
335
+ "paginated",
336
+ params
337
+ ],
338
+ queryFn: () => fetchListCollectiblesPaginated({
339
+ chainId: params.chainId,
340
+ collectionAddress: params.collectionAddress,
341
+ config: params.config,
342
+ side: params.side,
343
+ filter: params.filter,
344
+ page: params.page,
345
+ pageSize: params.pageSize
346
+ }),
347
+ ...params.query,
348
+ enabled
349
+ });
350
+ }
351
+
352
+ //#endregion
353
+ //#region src/react/queries/collection.ts
354
+ /**
355
+ * Fetches collection information from the metadata API
356
+ */
357
+ async function fetchCollection(params) {
358
+ const { collectionAddress, chainId, config } = params;
359
+ const metadataClient = getMetadataClient(config);
360
+ const result = await metadataClient.getContractInfo({
361
+ chainID: chainId.toString(),
362
+ contractAddress: collectionAddress
363
+ });
364
+ return result.contractInfo;
365
+ }
366
+ function collectionQueryOptions(params) {
367
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.config && (params.query?.enabled ?? true));
368
+ return queryOptions({
369
+ queryKey: [...collectionKeys.detail, params],
370
+ queryFn: () => fetchCollection({
371
+ chainId: params.chainId,
372
+ collectionAddress: params.collectionAddress,
373
+ config: params.config
374
+ }),
375
+ ...params.query,
376
+ enabled
377
+ });
378
+ }
379
+
380
+ //#endregion
381
+ //#region src/react/queries/collectionBalanceDetails.ts
382
+ /**
383
+ * Fetches detailed balance information for multiple accounts from the Indexer API
384
+ */
385
+ async function fetchCollectionBalanceDetails(params) {
386
+ const { chainId, filter, config } = params;
387
+ const indexerClient = getIndexerClient(chainId, config);
388
+ const promises = filter.accountAddresses.map((accountAddress) => indexerClient.getTokenBalancesDetails({ filter: {
389
+ accountAddresses: [accountAddress],
390
+ contractWhitelist: filter.contractWhitelist,
391
+ omitNativeBalances: filter.omitNativeBalances
392
+ } }));
393
+ const responses = await Promise.all(promises);
394
+ const mergedResponse = responses.reduce((acc, curr) => {
395
+ if (!curr) return acc;
396
+ return {
397
+ page: curr.page,
398
+ nativeBalances: [...acc.nativeBalances || [], ...curr.nativeBalances || []],
399
+ balances: [...acc.balances || [], ...curr.balances || []]
400
+ };
401
+ }, {
402
+ page: {},
403
+ nativeBalances: [],
404
+ balances: []
405
+ });
406
+ if (!mergedResponse) throw new Error("Failed to fetch collection balance details");
407
+ return mergedResponse;
408
+ }
409
+ function collectionBalanceDetailsQueryOptions(params) {
410
+ const enabled = Boolean(params.chainId && params.filter?.accountAddresses?.length && params.config && (params.query?.enabled ?? true));
411
+ return queryOptions({
412
+ queryKey: [
413
+ "balances",
414
+ "collectionBalanceDetails",
415
+ params
416
+ ],
417
+ queryFn: () => fetchCollectionBalanceDetails({
418
+ chainId: params.chainId,
419
+ filter: params.filter,
420
+ config: params.config
421
+ }),
422
+ ...params.query,
423
+ enabled
424
+ });
425
+ }
426
+
427
+ //#endregion
428
+ //#region src/react/queries/collectionDetails.ts
429
+ /**
430
+ * Fetches collection details from the marketplace API
431
+ */
432
+ async function fetchCollectionDetails(params) {
433
+ const { collectionAddress, chainId, config,...additionalApiParams } = params;
434
+ const marketplaceClient = getMarketplaceClient(config);
435
+ const apiArgs = {
436
+ contractAddress: collectionAddress,
437
+ chainId: String(chainId),
438
+ ...additionalApiParams
439
+ };
440
+ const result = await marketplaceClient.getCollectionDetail(apiArgs);
441
+ return result.collection;
442
+ }
443
+ function collectionDetailsQueryOptions(params) {
444
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.config && (params.query?.enabled ?? true));
445
+ return queryOptions({
446
+ queryKey: [...collectionKeys.detail, params],
447
+ queryFn: () => fetchCollectionDetails({
448
+ chainId: params.chainId,
449
+ collectionAddress: params.collectionAddress,
450
+ config: params.config
451
+ }),
452
+ ...params.query,
453
+ enabled
454
+ });
455
+ }
456
+
457
+ //#endregion
458
+ //#region src/react/queries/listCollectionActivities.ts
459
+ /**
460
+ * Fetches collection activities from the Marketplace API
461
+ */
462
+ async function fetchListCollectionActivities(params) {
463
+ const { collectionAddress, chainId, config, page, pageSize, sort,...additionalApiParams } = params;
464
+ const marketplaceClient = getMarketplaceClient(config);
465
+ const pageParams = page || pageSize || sort ? {
466
+ page: page ?? 1,
467
+ pageSize: pageSize ?? 10,
468
+ sort
469
+ } : void 0;
470
+ const apiArgs = {
471
+ contractAddress: collectionAddress,
472
+ chainId: String(chainId),
473
+ page: pageParams,
474
+ ...additionalApiParams
475
+ };
476
+ return await marketplaceClient.listCollectionActivities(apiArgs);
477
+ }
478
+ function listCollectionActivitiesQueryOptions(params) {
479
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.config && (params.query?.enabled ?? true));
480
+ return queryOptions({
481
+ queryKey: [...collectionKeys.collectionActivities, params],
482
+ queryFn: () => fetchListCollectionActivities({
483
+ chainId: params.chainId,
484
+ collectionAddress: params.collectionAddress,
485
+ config: params.config,
486
+ page: params.page,
487
+ pageSize: params.pageSize,
488
+ sort: params.sort
489
+ }),
490
+ ...params.query,
491
+ enabled
492
+ });
493
+ }
494
+
495
+ //#endregion
496
+ //#region src/react/queries/listCollections.ts
497
+ const allCollections = (marketplaceConfig) => {
498
+ return [...marketplaceConfig.market.collections, ...marketplaceConfig.shop.collections];
499
+ };
500
+ /**
501
+ * Fetches collections from the metadata API with marketplace config filtering
502
+ */
503
+ async function fetchListCollections(params) {
504
+ const { marketplaceType, marketplaceConfig, config } = params;
505
+ const metadataClient = getMetadataClient(config);
506
+ let collections = allCollections(marketplaceConfig);
507
+ if (!collections?.length) return [];
508
+ if (marketplaceType) collections = collections.filter((collection) => collection.marketplaceType === marketplaceType);
509
+ const collectionsByChain = collections.reduce((acc, curr) => {
510
+ const { chainId, itemsAddress } = curr;
511
+ if (!acc[chainId]) acc[chainId] = [];
512
+ acc[chainId].push(itemsAddress);
513
+ return acc;
514
+ }, {});
515
+ const promises = Object.entries(collectionsByChain).map(([chainId, addresses]) => metadataClient.getContractInfoBatch({
516
+ chainID: chainId,
517
+ contractAddresses: addresses
518
+ }).then((resp) => Object.values(resp.contractInfoMap)));
519
+ const settled = await Promise.allSettled(promises);
520
+ if (settled.every((result) => result.status === "rejected")) {
521
+ const firstError = settled[0];
522
+ throw firstError.reason;
523
+ }
524
+ const results = settled.filter((r) => r.status === "fulfilled").flatMap((r) => r.value);
525
+ const collectionsWithMetadata = collections.map((collection) => {
526
+ const metadata = results.find((result) => compareAddress(result.address, collection.itemsAddress));
527
+ return {
528
+ collection,
529
+ metadata
530
+ };
531
+ }).filter((item) => item.metadata !== void 0).map(({ collection, metadata }) => ({
532
+ ...collection,
533
+ ...metadata
534
+ }));
535
+ return collectionsWithMetadata;
536
+ }
537
+ function listCollectionsQueryOptions(params) {
538
+ const enabled = Boolean(params.marketplaceConfig && params.config && (params.query?.enabled ?? true));
539
+ return queryOptions({
540
+ queryKey: [...collectionKeys.list, params],
541
+ queryFn: enabled ? () => fetchListCollections({
542
+ marketplaceConfig: params.marketplaceConfig,
543
+ config: params.config,
544
+ marketplaceType: params.marketplaceType
545
+ }) : skipToken,
546
+ ...params.query,
547
+ enabled
548
+ });
549
+ }
550
+ const listCollectionsOptions = ({ marketplaceType, marketplaceConfig, config }) => {
551
+ return queryOptions({
552
+ queryKey: [...collectionKeys.list, {
553
+ marketplaceType,
554
+ marketplaceConfig,
555
+ config
556
+ }],
557
+ queryFn: marketplaceConfig ? () => fetchListCollections({
558
+ marketplaceConfig,
559
+ config,
560
+ marketplaceType
561
+ }) : skipToken,
562
+ enabled: Boolean(marketplaceConfig)
563
+ });
564
+ };
565
+
566
+ //#endregion
567
+ //#region src/react/queries/currency.ts
568
+ /**
569
+ * Fetches currency details from the marketplace API
570
+ */
571
+ async function fetchCurrency(params) {
572
+ const { chainId, currencyAddress, config } = params;
573
+ const queryClient = getQueryClient();
574
+ let currencies = queryClient.getQueryData([...currencyKeys.lists, chainId]);
575
+ if (!currencies) {
576
+ const marketplaceClient = getMarketplaceClient(config);
577
+ currencies = await marketplaceClient.listCurrencies({ chainId: String(chainId) }).then((resp) => resp.currencies);
578
+ }
579
+ if (!currencies?.length) throw new Error("No currencies returned");
580
+ const currency = currencies.find((currency$1) => currency$1.contractAddress.toLowerCase() === currencyAddress.toLowerCase());
581
+ if (!currency) throw new Error("Currency not found");
582
+ return currency;
583
+ }
584
+ function currencyQueryOptions(params) {
585
+ const enabled = Boolean(params.chainId && params.currencyAddress && params.config && (params.query?.enabled ?? true));
586
+ return queryOptions({
587
+ queryKey: [...currencyKeys.details, params],
588
+ queryFn: params.chainId && params.currencyAddress ? () => fetchCurrency({
589
+ chainId: params.chainId,
590
+ currencyAddress: params.currencyAddress,
591
+ config: params.config
592
+ }) : skipToken,
593
+ ...params.query,
594
+ enabled
595
+ });
596
+ }
597
+
598
+ //#endregion
599
+ //#region src/react/queries/marketCurrencies.ts
600
+ /**
601
+ * Fetches supported currencies for a marketplace
602
+ */
603
+ async function fetchMarketCurrencies(params) {
604
+ const { chainId, includeNativeCurrency, collectionAddress, config } = params;
605
+ const includeNativeCurrencyOption = includeNativeCurrency ?? true;
606
+ const marketplaceClient = getMarketplaceClient(config);
607
+ let currencies = await marketplaceClient.listCurrencies({ chainId: String(chainId) }).then((resp) => resp.currencies.map((currency) => ({
608
+ ...currency,
609
+ contractAddress: currency.contractAddress || zeroAddress
610
+ })));
611
+ if (collectionAddress) {
612
+ const queryClient = getQueryClient();
613
+ const marketplaceConfig = await queryClient.fetchQuery(marketplaceConfigOptions(config));
614
+ const currenciesOptions = marketplaceConfig.market.collections.find((collection) => compareAddress(collection.itemsAddress, collectionAddress))?.currencyOptions;
615
+ if (currenciesOptions) currencies = currencies.filter((currency) => currenciesOptions.includes(currency.contractAddress));
616
+ }
617
+ if (!includeNativeCurrencyOption) currencies = currencies.filter((currency) => !currency.nativeCurrency);
618
+ return currencies;
619
+ }
620
+ function marketCurrenciesQueryOptions(params) {
621
+ const enabled = Boolean(params.chainId && params.config && (params.query?.enabled ?? true));
622
+ return queryOptions({
623
+ queryKey: [...currencyKeys.lists, params],
624
+ queryFn: () => fetchMarketCurrencies({
625
+ chainId: params.chainId,
626
+ config: params.config,
627
+ includeNativeCurrency: params.includeNativeCurrency,
628
+ collectionAddress: params.collectionAddress
629
+ }),
630
+ ...params.query,
631
+ enabled
632
+ });
633
+ }
634
+
635
+ //#endregion
636
+ //#region src/react/queries/countListingsForCollectible.ts
637
+ /**
638
+ * Fetches count of listings for a collectible from the marketplace API
639
+ */
640
+ async function fetchCountListingsForCollectible(params) {
641
+ const { collectionAddress, chainId, collectibleId, config, filter } = params;
642
+ const client = getMarketplaceClient(config);
643
+ const apiArgs = {
644
+ contractAddress: collectionAddress,
645
+ chainId: String(chainId),
646
+ tokenId: collectibleId,
647
+ filter
648
+ };
649
+ const result = await client.getCountOfListingsForCollectible(apiArgs);
650
+ return result.count;
651
+ }
652
+ function countListingsForCollectibleQueryOptions(params) {
653
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.collectibleId && params.config && (params.query?.enabled ?? true));
654
+ return queryOptions({
655
+ queryKey: [...collectableKeys.listingsCount, params],
656
+ queryFn: () => fetchCountListingsForCollectible({
657
+ chainId: params.chainId,
658
+ collectionAddress: params.collectionAddress,
659
+ collectibleId: params.collectibleId,
660
+ config: params.config,
661
+ filter: params.filter
662
+ }),
663
+ ...params.query,
664
+ enabled
665
+ });
666
+ }
667
+
668
+ //#endregion
669
+ //#region src/react/queries/countOffersForCollectible.ts
670
+ /**
671
+ * Fetches count of offers for a collectible from the marketplace API
672
+ */
673
+ async function fetchCountOffersForCollectible(params) {
674
+ const { collectionAddress, chainId, collectibleId, config, filter } = params;
675
+ const client = getMarketplaceClient(config);
676
+ const apiArgs = {
677
+ contractAddress: collectionAddress,
678
+ chainId: String(chainId),
679
+ tokenId: collectibleId,
680
+ filter
681
+ };
682
+ const result = await client.getCountOfOffersForCollectible(apiArgs);
683
+ return result.count;
684
+ }
685
+ function countOffersForCollectibleQueryOptions(params) {
686
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.collectibleId && params.config && (params.query?.enabled ?? true));
687
+ return queryOptions({
688
+ queryKey: [...collectableKeys.offersCount, params],
689
+ queryFn: () => fetchCountOffersForCollectible({
690
+ chainId: params.chainId,
691
+ collectionAddress: params.collectionAddress,
692
+ collectibleId: params.collectibleId,
693
+ config: params.config,
694
+ filter: params.filter
695
+ }),
696
+ ...params.query,
697
+ enabled
698
+ });
699
+ }
700
+
701
+ //#endregion
702
+ //#region src/react/queries/floorOrder.ts
703
+ /**
704
+ * Fetches the floor order for a collection from the marketplace API
705
+ */
706
+ async function fetchFloorOrder(params) {
707
+ const { collectionAddress, chainId, config,...additionalApiParams } = params;
708
+ const marketplaceClient = getMarketplaceClient(config);
709
+ const apiArgs = {
710
+ contractAddress: collectionAddress,
711
+ chainId: String(chainId),
712
+ ...additionalApiParams
713
+ };
714
+ const result = await marketplaceClient.getFloorOrder(apiArgs);
715
+ return result.collectible;
716
+ }
717
+ function floorOrderQueryOptions(params) {
718
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.config && (params.query?.enabled ?? true));
719
+ return queryOptions({
720
+ queryKey: [...collectableKeys.floorOrders, params],
721
+ queryFn: () => fetchFloorOrder({
722
+ chainId: params.chainId,
723
+ collectionAddress: params.collectionAddress,
724
+ config: params.config,
725
+ ...params.filter && { filter: params.filter } || {}
726
+ }),
727
+ ...params.query,
728
+ enabled
729
+ });
730
+ }
731
+
732
+ //#endregion
733
+ //#region src/react/queries/highestOffer.ts
734
+ /**
735
+ * Fetches the highest offer for a collectible from the marketplace API
736
+ */
737
+ async function fetchHighestOffer(params) {
738
+ const { collectionAddress, chainId, config,...additionalApiParams } = params;
739
+ const marketplaceClient = getMarketplaceClient(config);
740
+ const apiArgs = {
741
+ contractAddress: collectionAddress,
742
+ chainId: String(chainId),
743
+ ...additionalApiParams
744
+ };
745
+ const result = await marketplaceClient.getCollectibleHighestOffer(apiArgs);
746
+ return result.order ?? null;
747
+ }
748
+ function highestOfferQueryOptions(params) {
749
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.tokenId && params.config && (params.query?.enabled ?? true));
750
+ return queryOptions({
751
+ queryKey: [...collectableKeys.highestOffers, params],
752
+ queryFn: () => fetchHighestOffer({
753
+ chainId: params.chainId,
754
+ collectionAddress: params.collectionAddress,
755
+ tokenId: params.tokenId,
756
+ config: params.config
757
+ }),
758
+ ...params.query,
759
+ enabled
760
+ });
761
+ }
762
+
763
+ //#endregion
764
+ //#region src/react/queries/listListingsForCollectible.ts
765
+ /**
766
+ * Fetches listings for a specific collectible from the Marketplace API
767
+ */
768
+ async function fetchListListingsForCollectible(params) {
769
+ const { collectionAddress, chainId, collectibleId, config,...additionalApiParams } = params;
770
+ const marketplaceClient = getMarketplaceClient(config);
771
+ const apiArgs = {
772
+ contractAddress: collectionAddress,
773
+ chainId: String(chainId),
774
+ tokenId: collectibleId,
775
+ ...additionalApiParams
776
+ };
777
+ return await marketplaceClient.listCollectibleListings(apiArgs);
778
+ }
779
+ function listListingsForCollectibleQueryOptions(params) {
780
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.collectibleId && params.config && (params.query?.enabled ?? true));
781
+ return queryOptions({
782
+ queryKey: [...collectableKeys.listings, params],
783
+ queryFn: () => fetchListListingsForCollectible({
784
+ chainId: params.chainId,
785
+ collectionAddress: params.collectionAddress,
786
+ collectibleId: params.collectibleId,
787
+ config: params.config,
788
+ filter: params.filter,
789
+ page: params.page
790
+ }),
791
+ ...params.query,
792
+ enabled
793
+ });
794
+ }
795
+
796
+ //#endregion
797
+ //#region src/react/queries/lowestListing.ts
798
+ /**
799
+ * Fetches the lowest listing for a collectible from the marketplace API
800
+ */
801
+ async function fetchLowestListing(params) {
802
+ const { collectionAddress, chainId, config,...additionalApiParams } = params;
803
+ const marketplaceClient = getMarketplaceClient(config);
804
+ const apiArgs = {
805
+ contractAddress: collectionAddress,
806
+ chainId: String(chainId),
807
+ ...additionalApiParams
808
+ };
809
+ const result = await marketplaceClient.getCollectibleLowestListing(apiArgs);
810
+ return result.order || null;
811
+ }
812
+ function lowestListingQueryOptions(params) {
813
+ const enabled = Boolean(params.collectionAddress && params.chainId && params.tokenId && params.config && (params.query?.enabled ?? true));
814
+ return queryOptions({
815
+ queryKey: [...collectableKeys.lowestListings, params],
816
+ queryFn: () => fetchLowestListing({
817
+ chainId: params.chainId,
818
+ collectionAddress: params.collectionAddress,
819
+ tokenId: params.tokenId,
820
+ config: params.config
821
+ }),
822
+ ...params.query,
823
+ enabled
824
+ });
825
+ }
826
+
827
+ //#endregion
828
+ //#region src/react/queries/checkoutOptions.ts
829
+ /**
830
+ * Fetches checkout options from the Marketplace API
831
+ */
832
+ async function fetchCheckoutOptions(params) {
833
+ const { chainId, walletAddress, orders, config, additionalFee } = params;
834
+ const client = getMarketplaceClient(config);
835
+ const apiArgs = {
836
+ chainId: String(chainId),
837
+ wallet: walletAddress,
838
+ orders: orders.map((order) => ({
839
+ contractAddress: order.collectionAddress,
840
+ orderId: order.orderId,
841
+ marketplace: order.marketplace
842
+ })),
843
+ additionalFee: additionalFee ?? 0
844
+ };
845
+ const result = await client.checkoutOptionsMarketplace(apiArgs);
846
+ return result;
847
+ }
848
+ function checkoutOptionsQueryOptions(params) {
849
+ const enabled = Boolean(params.chainId && params.walletAddress && params.orders?.length && params.config && (params.query?.enabled ?? true));
850
+ return queryOptions({
851
+ queryKey: [
852
+ "checkout",
853
+ "options",
854
+ params
855
+ ],
856
+ queryFn: () => fetchCheckoutOptions({
857
+ chainId: params.chainId,
858
+ walletAddress: params.walletAddress,
859
+ orders: params.orders,
860
+ config: params.config,
861
+ additionalFee: params.additionalFee ?? 0
862
+ }),
863
+ ...params.query,
864
+ enabled
865
+ });
866
+ }
867
+
868
+ //#endregion
869
+ //#region src/react/queries/checkoutOptionsSalesContract.ts
870
+ /**
871
+ * Fetches checkout options for sales contract from the Marketplace API
872
+ */
873
+ async function fetchCheckoutOptionsSalesContract(params) {
874
+ const { chainId, walletAddress, contractAddress, collectionAddress, items, config } = params;
875
+ const client = getMarketplaceClient(config);
876
+ const apiArgs = {
877
+ chainId: String(chainId),
878
+ wallet: walletAddress,
879
+ contractAddress,
880
+ collectionAddress,
881
+ items
882
+ };
883
+ const result = await client.checkoutOptionsSalesContract(apiArgs);
884
+ return result;
885
+ }
886
+ function checkoutOptionsSalesContractQueryOptions(params) {
887
+ const enabled = Boolean(params.chainId && params.walletAddress && params.contractAddress && params.collectionAddress && params.items?.length && params.config && (params.query?.enabled ?? true));
888
+ return queryOptions({
889
+ queryKey: [
890
+ "checkout",
891
+ "options",
892
+ "salesContract",
893
+ params
894
+ ],
895
+ queryFn: () => fetchCheckoutOptionsSalesContract({
896
+ chainId: params.chainId,
897
+ walletAddress: params.walletAddress,
898
+ contractAddress: params.contractAddress,
899
+ collectionAddress: params.collectionAddress,
900
+ items: params.items,
901
+ config: params.config
902
+ }),
903
+ ...params.query,
904
+ enabled
905
+ });
906
+ }
907
+
908
+ //#endregion
909
+ //#region src/react/queries/convertPriceToUSD.ts
910
+ /**
911
+ * Converts a price amount from a specific currency to USD using exchange rates
912
+ */
913
+ async function fetchConvertPriceToUSD(params) {
914
+ const { chainId, currencyAddress, amountRaw, config } = params;
915
+ const queryClient = getQueryClient();
916
+ const currencies = await queryClient.fetchQuery(marketCurrenciesQueryOptions({
917
+ chainId,
918
+ config
919
+ }));
920
+ const currencyDetails = currencies.find((c) => c.contractAddress.toLowerCase() === currencyAddress.toLowerCase());
921
+ if (!currencyDetails) throw new Error("Currency not found");
922
+ const amountDecimal = Number(formatUnits(BigInt(amountRaw), currencyDetails.decimals));
923
+ const usdAmount = amountDecimal * currencyDetails.exchangeRate;
924
+ return {
925
+ usdAmount,
926
+ usdAmountFormatted: usdAmount.toFixed(2)
927
+ };
928
+ }
929
+ function convertPriceToUSDQueryOptions(params) {
930
+ const enabled = Boolean(params.chainId && params.currencyAddress && params.amountRaw && params.config && (params.query?.enabled ?? true));
931
+ return queryOptions({
932
+ queryKey: [
933
+ "currency",
934
+ "convertPriceToUSD",
935
+ params
936
+ ],
937
+ queryFn: () => fetchConvertPriceToUSD({
938
+ chainId: params.chainId,
939
+ currencyAddress: params.currencyAddress,
940
+ amountRaw: params.amountRaw,
941
+ config: params.config
942
+ }),
943
+ ...params.query,
944
+ enabled
945
+ });
946
+ }
947
+
948
+ //#endregion
949
+ //#region src/react/queries/comparePrices.ts
950
+ /**
951
+ * Compares prices between different currencies by converting both to USD
952
+ */
953
+ async function fetchComparePrices(params) {
954
+ const { chainId, priceAmountRaw, priceCurrencyAddress, compareToPriceAmountRaw, compareToPriceCurrencyAddress, config } = params;
955
+ const [priceUSD, compareToPriceUSD] = await Promise.all([fetchConvertPriceToUSD({
956
+ chainId,
957
+ currencyAddress: priceCurrencyAddress,
958
+ amountRaw: priceAmountRaw,
959
+ config
960
+ }), fetchConvertPriceToUSD({
961
+ chainId,
962
+ currencyAddress: compareToPriceCurrencyAddress,
963
+ amountRaw: compareToPriceAmountRaw,
964
+ config
965
+ })]);
966
+ const difference = priceUSD.usdAmount - compareToPriceUSD.usdAmount;
967
+ if (compareToPriceUSD.usdAmount === 0) throw new Error("Cannot compare to zero price");
968
+ const percentageDifference = difference / compareToPriceUSD.usdAmount * 100;
969
+ const isAbove = percentageDifference > 0;
970
+ const isSame = percentageDifference === 0;
971
+ return {
972
+ percentageDifference,
973
+ percentageDifferenceFormatted: Math.abs(percentageDifference).toFixed(2),
974
+ status: isAbove ? "above" : isSame ? "same" : "below"
975
+ };
976
+ }
977
+ function comparePricesQueryOptions(params) {
978
+ const enabled = Boolean(params.chainId && params.priceAmountRaw && params.priceCurrencyAddress && params.compareToPriceAmountRaw && params.compareToPriceCurrencyAddress && params.config && (params.query?.enabled ?? true));
979
+ return queryOptions({
980
+ queryKey: [
981
+ "currency",
982
+ "conversion",
983
+ "compare",
984
+ params
985
+ ],
986
+ queryFn: () => fetchComparePrices({
987
+ chainId: params.chainId,
988
+ priceAmountRaw: params.priceAmountRaw,
989
+ priceCurrencyAddress: params.priceCurrencyAddress,
990
+ compareToPriceAmountRaw: params.compareToPriceAmountRaw,
991
+ compareToPriceCurrencyAddress: params.compareToPriceCurrencyAddress,
992
+ config: params.config
993
+ }),
994
+ ...params.query,
995
+ enabled
996
+ });
997
+ }
998
+
999
+ //#endregion
1000
+ //#region src/react/queries/countOfPrimarySaleItems.ts
1001
+ async function fetchCountOfPrimarySaleItems(args, config) {
1002
+ const marketplaceClient = getMarketplaceClient(config);
1003
+ const { chainId, primarySaleContractAddress, filter } = args;
1004
+ const data = await marketplaceClient.getCountOfPrimarySaleItems({
1005
+ chainId: String(chainId),
1006
+ primarySaleContractAddress,
1007
+ filter
1008
+ });
1009
+ return data.count;
1010
+ }
1011
+ function countOfPrimarySaleItemsOptions(args, config) {
1012
+ return queryOptions({
1013
+ enabled: args.query?.enabled ?? true,
1014
+ queryKey: ["countOfPrimarySaleItems", args],
1015
+ queryFn: () => fetchCountOfPrimarySaleItems(args, config)
1016
+ });
1017
+ }
1018
+
1019
+ //#endregion
1020
+ //#region src/react/queries/filters.ts
1021
+ /**
1022
+ * Fetches collection filters from the Metadata API with optional marketplace filtering
1023
+ */
1024
+ async function fetchFilters(params) {
1025
+ const { chainId, collectionAddress, showAllFilters, excludePropertyValues, config } = params;
1026
+ const metadataClient = getMetadataClient(config);
1027
+ const filters = await metadataClient.getTokenMetadataPropertyFilters({
1028
+ chainID: chainId.toString(),
1029
+ contractAddress: collectionAddress,
1030
+ excludeProperties: [],
1031
+ excludePropertyValues
1032
+ }).then((resp) => resp.filters);
1033
+ if (showAllFilters) return filters;
1034
+ const queryClient = getQueryClient();
1035
+ const marketplaceConfig = await queryClient.fetchQuery(marketplaceConfigOptions(config));
1036
+ const collectionFilters = marketplaceConfig.market.collections.find((c) => compareAddress(c.itemsAddress, collectionAddress))?.filterSettings;
1037
+ if (!collectionFilters?.exclusions || collectionFilters.exclusions.length === 0 || !collectionFilters.filterOrder || collectionFilters.filterOrder.length === 0) return filters;
1038
+ const { filterOrder, exclusions } = collectionFilters;
1039
+ const sortedFilters = filters.toSorted((a, b) => {
1040
+ const aIndex = filterOrder.indexOf(a.name) > -1 ? filterOrder.indexOf(a.name) : filterOrder.length;
1041
+ const bIndex = filterOrder.indexOf(b.name) > -1 ? filterOrder.indexOf(b.name) : filterOrder.length;
1042
+ return aIndex - bIndex;
1043
+ });
1044
+ const filteredResults = sortedFilters.reduce((acc, filter) => {
1045
+ const exclusionRule = exclusions.find((rule) => rule.key === filter.name);
1046
+ if (!exclusionRule) {
1047
+ acc.push(filter);
1048
+ return acc;
1049
+ }
1050
+ if (exclusionRule.condition === FilterCondition.ENTIRE_KEY) return acc;
1051
+ if (exclusionRule.condition === FilterCondition.SPECIFIC_VALUE && exclusionRule.value) {
1052
+ const filteredValues = filter.values?.filter((value) => value !== exclusionRule.value) || [];
1053
+ if (filteredValues.length > 0) acc.push({
1054
+ ...filter,
1055
+ values: filteredValues
1056
+ });
1057
+ }
1058
+ return acc;
1059
+ }, []);
1060
+ return filteredResults;
1061
+ }
1062
+ function filtersQueryOptions(params) {
1063
+ const enabled = Boolean(params.chainId && params.collectionAddress && params.config && (params.query?.enabled ?? true));
1064
+ return queryOptions({
1065
+ queryKey: ["filters", params],
1066
+ queryFn: () => fetchFilters({
1067
+ chainId: params.chainId,
1068
+ collectionAddress: params.collectionAddress,
1069
+ showAllFilters: params.showAllFilters,
1070
+ excludePropertyValues: params.excludePropertyValues,
1071
+ config: params.config
1072
+ }),
1073
+ ...params.query,
1074
+ enabled
1075
+ });
1076
+ }
1077
+
1078
+ //#endregion
1079
+ //#region src/react/queries/getTokenRanges.ts
1080
+ /**
1081
+ * Fetches token ID ranges for a collection from the Indexer API
1082
+ */
1083
+ async function fetchGetTokenRanges(params) {
1084
+ const { chainId, collectionAddress, config } = params;
1085
+ const indexerClient = getIndexerClient(chainId, config);
1086
+ const response = await indexerClient.getTokenIDRanges({ contractAddress: collectionAddress });
1087
+ if (!response) throw new Error("Failed to fetch token ranges");
1088
+ return response;
1089
+ }
1090
+ function getTokenRangesQueryOptions(params) {
1091
+ const enabled = Boolean(params.chainId && params.collectionAddress && params.config && (params.query?.enabled ?? true));
1092
+ return queryOptions({
1093
+ queryKey: [
1094
+ "indexer",
1095
+ "tokenRanges",
1096
+ params
1097
+ ],
1098
+ queryFn: () => fetchGetTokenRanges({
1099
+ chainId: params.chainId,
1100
+ collectionAddress: params.collectionAddress,
1101
+ config: params.config
1102
+ }),
1103
+ ...params.query,
1104
+ enabled
1105
+ });
1106
+ }
1107
+
1108
+ //#endregion
1109
+ //#region src/react/queries/inventory.ts
1110
+ const stateByCollection = /* @__PURE__ */ new Map();
1111
+ const clearInventoryState = () => {
1112
+ stateByCollection.clear();
1113
+ };
1114
+ const getCollectionKey = (args) => `${args.chainId}-${args.collectionAddress}-${args.accountAddress}`;
1115
+ function getOrInitState(collectionKey) {
1116
+ if (!stateByCollection.has(collectionKey)) stateByCollection.set(collectionKey, {
1117
+ seenTokenIds: /* @__PURE__ */ new Set(),
1118
+ marketplaceFinished: false,
1119
+ indexerTokensFetched: false,
1120
+ indexerTokenBalances: /* @__PURE__ */ new Map()
1121
+ });
1122
+ return stateByCollection.get(collectionKey);
1123
+ }
1124
+ function collectibleFromTokenBalance(token) {
1125
+ return {
1126
+ metadata: {
1127
+ tokenId: token.tokenID ?? "",
1128
+ attributes: token.tokenMetadata?.attributes ?? [],
1129
+ image: token.tokenMetadata?.image,
1130
+ name: token.tokenMetadata?.name ?? "",
1131
+ description: token.tokenMetadata?.description,
1132
+ video: token.tokenMetadata?.video,
1133
+ audio: token.tokenMetadata?.audio
1134
+ },
1135
+ contractInfo: token.contractInfo,
1136
+ contractType: token.contractType,
1137
+ balance: token.balance
1138
+ };
1139
+ }
1140
+ async function fetchAllIndexerTokens(chainId, accountAddress, collectionAddress, config, state, isLaos721) {
1141
+ if (isLaos721) {
1142
+ const laosClient = new LaosAPI();
1143
+ const { balances } = await laosClient.getTokenBalances({
1144
+ chainId: chainId.toString(),
1145
+ accountAddress,
1146
+ includeMetadata: true,
1147
+ contractAddress: collectionAddress,
1148
+ page: { sort: [{
1149
+ column: "CREATED_AT",
1150
+ order: "DESC"
1151
+ }] }
1152
+ });
1153
+ for (const balance of balances) if (balance.tokenID) state.indexerTokenBalances.set(balance.tokenID, collectibleFromTokenBalance(balance));
1154
+ state.indexerTokensFetched = true;
1155
+ return;
1156
+ }
1157
+ const indexerClient = getIndexerClient(chainId, config);
1158
+ let page = { pageSize: 50 };
1159
+ while (true) {
1160
+ const { balances, page: nextPage } = await indexerClient.getTokenBalances({
1161
+ accountAddress,
1162
+ contractAddress: collectionAddress,
1163
+ includeMetadata: true,
1164
+ page
1165
+ });
1166
+ for (const balance of balances) if (balance.tokenID) state.indexerTokenBalances.set(balance.tokenID, collectibleFromTokenBalance(balance));
1167
+ if (!nextPage.more) break;
1168
+ page = nextPage;
1169
+ }
1170
+ state.indexerTokensFetched = true;
1171
+ }
1172
+ function processRemainingIndexerTokens(state, page) {
1173
+ const allTokens = Array.from(state.indexerTokenBalances.values());
1174
+ const newTokens = allTokens.filter((token) => !state.seenTokenIds.has(token.metadata.tokenId));
1175
+ const startIndex = (page.page - 1) * page.pageSize;
1176
+ const endIndex = startIndex + page.pageSize;
1177
+ const paginatedTokens = newTokens.slice(startIndex, endIndex);
1178
+ for (const token of paginatedTokens) state.seenTokenIds.add(token.metadata.tokenId);
1179
+ return {
1180
+ collectibles: paginatedTokens,
1181
+ page: {
1182
+ page: page.page,
1183
+ pageSize: page.pageSize,
1184
+ more: endIndex < newTokens.length
1185
+ }
1186
+ };
1187
+ }
1188
+ function processMarketplaceCollectibles(collectibles, state, page) {
1189
+ for (const c of collectibles) state.seenTokenIds.add(c.metadata.tokenId);
1190
+ const enrichedCollectibles = collectibles.map((c) => {
1191
+ const tokenId = c.metadata.tokenId;
1192
+ const indexerData = state.indexerTokenBalances.get(tokenId);
1193
+ return {
1194
+ ...c,
1195
+ balance: indexerData?.balance,
1196
+ contractInfo: indexerData?.contractInfo,
1197
+ contractType: indexerData?.contractType
1198
+ };
1199
+ });
1200
+ const marketplaceTokenIds = new Set(enrichedCollectibles.map((c) => c.metadata.tokenId));
1201
+ const missingTokens = Array.from(state.indexerTokenBalances.entries()).filter(([tokenId]) => !marketplaceTokenIds.has(tokenId)).map(([_, balance]) => balance).slice(0, page.pageSize);
1202
+ return {
1203
+ enrichedCollectibles,
1204
+ missingTokens
1205
+ };
1206
+ }
1207
+ async function fetchInventory(args, config, page) {
1208
+ const { accountAddress, collectionAddress, chainId, isLaos721 } = args;
1209
+ const collectionKey = getCollectionKey(args);
1210
+ const state = getOrInitState(collectionKey);
1211
+ if (!state.indexerTokensFetched) await fetchAllIndexerTokens(chainId, accountAddress, collectionAddress, config, state, isLaos721);
1212
+ if (state.marketplaceFinished) return processRemainingIndexerTokens(state, page);
1213
+ const marketplaceConfig = await fetchMarketplaceConfig({ config });
1214
+ const collectibles = await fetchListCollectibles({
1215
+ chainId,
1216
+ collectionAddress,
1217
+ filter: {
1218
+ inAccounts: [accountAddress],
1219
+ includeEmpty: true
1220
+ },
1221
+ side: OrderSide.listing,
1222
+ config
1223
+ }, marketplaceConfig, page);
1224
+ const { enrichedCollectibles, missingTokens } = processMarketplaceCollectibles(collectibles.collectibles, state, page);
1225
+ if (!collectibles.page?.more) {
1226
+ state.marketplaceFinished = true;
1227
+ return {
1228
+ collectibles: [...enrichedCollectibles, ...missingTokens],
1229
+ page: {
1230
+ page: collectibles.page?.page ?? page.page,
1231
+ pageSize: collectibles.page?.pageSize ?? page.pageSize,
1232
+ more: missingTokens.length > 0
1233
+ }
1234
+ };
1235
+ }
1236
+ return {
1237
+ collectibles: enrichedCollectibles,
1238
+ page: {
1239
+ page: collectibles.page?.page ?? page.page,
1240
+ pageSize: collectibles.page?.pageSize ?? page.pageSize,
1241
+ more: Boolean(collectibles.page?.more)
1242
+ }
1243
+ };
1244
+ }
1245
+ function inventoryOptions(args, config) {
1246
+ const collectionKey = getCollectionKey(args);
1247
+ const enabledQuery = args.query?.enabled ?? true;
1248
+ const enabled = enabledQuery && !!args.accountAddress && !!args.collectionAddress;
1249
+ return infiniteQueryOptions({
1250
+ queryKey: [
1251
+ "inventory",
1252
+ args.accountAddress,
1253
+ args.collectionAddress,
1254
+ args.chainId
1255
+ ],
1256
+ queryFn: ({ pageParam }) => fetchInventory({
1257
+ ...args,
1258
+ isLaos721: args.isLaos721 ?? false
1259
+ }, config, pageParam),
1260
+ initialPageParam: {
1261
+ page: 1,
1262
+ pageSize: 30
1263
+ },
1264
+ getNextPageParam: (lastPage) => lastPage.page?.more ? lastPage.page : void 0,
1265
+ enabled,
1266
+ meta: { onInvalidate: () => {
1267
+ stateByCollection.delete(collectionKey);
1268
+ } }
1269
+ });
1270
+ }
1271
+
1272
+ //#endregion
1273
+ //#region src/react/queries/listTokenMetadata.ts
1274
+ /**
1275
+ * Fetches token metadata from the metadata API
1276
+ */
1277
+ async function fetchListTokenMetadata(params) {
1278
+ const { chainId, contractAddress, tokenIds, config } = params;
1279
+ const metadataClient = getMetadataClient(config);
1280
+ const response = await metadataClient.getTokenMetadata({
1281
+ chainID: chainId.toString(),
1282
+ contractAddress,
1283
+ tokenIDs: tokenIds
1284
+ });
1285
+ return response.tokenMetadata;
1286
+ }
1287
+ function listTokenMetadataQueryOptions(params) {
1288
+ const enabled = Boolean(params.chainId && params.contractAddress && params.tokenIds?.length && params.config && (params.query?.enabled ?? true));
1289
+ return queryOptions({
1290
+ queryKey: [...tokenKeys.metadata, params],
1291
+ queryFn: () => fetchListTokenMetadata({
1292
+ chainId: params.chainId,
1293
+ contractAddress: params.contractAddress,
1294
+ tokenIds: params.tokenIds,
1295
+ config: params.config
1296
+ }),
1297
+ ...params.query,
1298
+ enabled
1299
+ });
1300
+ }
1301
+
1302
+ //#endregion
1303
+ //#region src/react/queries/primarySaleItems.ts
1304
+ /**
1305
+ * Fetches primary sale items from the marketplace API
1306
+ */
1307
+ async function fetchPrimarySaleItems(params) {
1308
+ const { chainId, primarySaleContractAddress, filter, page, config } = params;
1309
+ const marketplaceClient = getMarketplaceClient(config);
1310
+ return marketplaceClient.listPrimarySaleItems({
1311
+ chainId: String(chainId),
1312
+ primarySaleContractAddress,
1313
+ filter,
1314
+ page
1315
+ });
1316
+ }
1317
+ const listPrimarySaleItemsQueryOptions = (params) => {
1318
+ const enabled = Boolean(params.primarySaleContractAddress && params.chainId && params.config && (params.query?.enabled ?? true));
1319
+ const initialPage = params.page || {
1320
+ page: 1,
1321
+ pageSize: 30
1322
+ };
1323
+ return infiniteQueryOptions({
1324
+ queryKey: ["listPrimarySaleItems", params],
1325
+ queryFn: async ({ pageParam }) => {
1326
+ return fetchPrimarySaleItems({
1327
+ chainId: params.chainId,
1328
+ primarySaleContractAddress: params.primarySaleContractAddress,
1329
+ filter: params.filter,
1330
+ page: pageParam,
1331
+ config: params.config
1332
+ });
1333
+ },
1334
+ initialPageParam: initialPage,
1335
+ getNextPageParam: (lastPage) => lastPage.page?.more ? lastPage.page : void 0,
1336
+ ...params.query,
1337
+ enabled
1338
+ });
1339
+ };
1340
+
1341
+ //#endregion
1342
+ //#region src/react/queries/primarySaleItemsCount.ts
1343
+ /**
1344
+ * Fetches the count of primary sale items from the marketplace API
1345
+ */
1346
+ async function fetchPrimarySaleItemsCount(params) {
1347
+ const { chainId, primarySaleContractAddress, filter, config } = params;
1348
+ const marketplaceClient = getMarketplaceClient(config);
1349
+ return marketplaceClient.getCountOfPrimarySaleItems({
1350
+ chainId: String(chainId),
1351
+ primarySaleContractAddress,
1352
+ filter
1353
+ });
1354
+ }
1355
+ const primarySaleItemsCountQueryOptions = (args) => {
1356
+ const enabled = Boolean(args.primarySaleContractAddress && args.chainId && args.config && (args.query?.enabled ?? true));
1357
+ return queryOptions({
1358
+ queryKey: ["primarySaleItemsCount", args],
1359
+ queryFn: () => fetchPrimarySaleItemsCount({
1360
+ chainId: args.chainId,
1361
+ primarySaleContractAddress: args.primarySaleContractAddress,
1362
+ filter: args.filter,
1363
+ config: args.config
1364
+ }),
1365
+ ...args.query,
1366
+ enabled
1367
+ });
1368
+ };
1369
+
1370
+ //#endregion
1371
+ //#region src/react/queries/searchTokenMetadata.ts
1372
+ /**
1373
+ * Fetches token metadata from the metadata API using search filters
1374
+ */
1375
+ async function fetchSearchTokenMetadata(params) {
1376
+ const { chainId, collectionAddress, filter, page, config } = params;
1377
+ const metadataClient = getMetadataClient(config);
1378
+ const response = await metadataClient.searchTokenMetadata({
1379
+ chainID: chainId.toString(),
1380
+ contractAddress: collectionAddress,
1381
+ filter: filter ?? {},
1382
+ page
1383
+ });
1384
+ return {
1385
+ tokenMetadata: response.tokenMetadata,
1386
+ page: response.page
1387
+ };
1388
+ }
1389
+ function searchTokenMetadataQueryOptions(params) {
1390
+ const enabled = Boolean(params.chainId && params.collectionAddress && params.config && (params.query?.enabled ?? true));
1391
+ const initialPageParam = {
1392
+ page: 1,
1393
+ pageSize: 30
1394
+ };
1395
+ return infiniteQueryOptions({
1396
+ queryKey: [
1397
+ ...tokenKeys.metadata,
1398
+ "search",
1399
+ params
1400
+ ],
1401
+ queryFn: ({ pageParam = initialPageParam }) => fetchSearchTokenMetadata({
1402
+ chainId: params.chainId,
1403
+ collectionAddress: params.collectionAddress,
1404
+ filter: params.filter,
1405
+ config: params.config,
1406
+ page: pageParam
1407
+ }),
1408
+ initialPageParam,
1409
+ getNextPageParam: (lastPage) => {
1410
+ if (!lastPage.page?.more) return void 0;
1411
+ return {
1412
+ page: (lastPage.page.page || 1) + 1,
1413
+ pageSize: lastPage.page.pageSize || 20
1414
+ };
1415
+ },
1416
+ ...params.query,
1417
+ enabled
1418
+ });
1419
+ }
1420
+
1421
+ //#endregion
1422
+ //#region src/react/queries/tokenSupplies.ts
1423
+ /**
1424
+ * Fetches token supplies with support for both indexer and LAOS APIs
1425
+ * Uses the more efficient single-contract APIs from both services
1426
+ */
1427
+ async function fetchTokenSupplies(params) {
1428
+ const { chainId, collectionAddress, config, isLaos721,...rest } = params;
1429
+ if (isLaos721) {
1430
+ const laosApi = new LaosAPI();
1431
+ const laosPage = rest.page ? { sort: rest.page.sort?.map((sortBy) => ({
1432
+ column: sortBy.column,
1433
+ order: sortBy.order
1434
+ })) || [] } : void 0;
1435
+ const result$1 = await laosApi.getTokenSupplies({
1436
+ chainId: chainId.toString(),
1437
+ contractAddress: collectionAddress,
1438
+ includeMetadata: rest.includeMetadata,
1439
+ page: laosPage
1440
+ });
1441
+ return result$1;
1442
+ }
1443
+ const indexerClient = getIndexerClient(chainId, config);
1444
+ const apiArgs = {
1445
+ contractAddress: collectionAddress,
1446
+ ...rest
1447
+ };
1448
+ const result = await indexerClient.getTokenSupplies(apiArgs);
1449
+ return result;
1450
+ }
1451
+ function tokenSuppliesQueryOptions(params) {
1452
+ const enabled = Boolean(params.chainId && params.collectionAddress && params.config && (params.query?.enabled ?? true));
1453
+ const initialPageParam = {
1454
+ page: 1,
1455
+ pageSize: 30
1456
+ };
1457
+ const queryFn = async ({ pageParam = initialPageParam }) => fetchTokenSupplies({
1458
+ chainId: params.chainId,
1459
+ collectionAddress: params.collectionAddress,
1460
+ config: params.config,
1461
+ isLaos721: params.isLaos721,
1462
+ includeMetadata: params.includeMetadata,
1463
+ metadataOptions: params.metadataOptions,
1464
+ page: pageParam
1465
+ });
1466
+ return infiniteQueryOptions({
1467
+ queryKey: [...tokenKeys.supplies, params],
1468
+ queryFn,
1469
+ initialPageParam,
1470
+ getNextPageParam: (lastPage) => lastPage.page?.more ? lastPage.page : void 0,
1471
+ ...params.query,
1472
+ enabled
1473
+ });
1474
+ }
1475
+
1476
+ //#endregion
1477
+ export { balanceOfCollectibleOptions, checkoutOptionsQueryOptions, checkoutOptionsSalesContractQueryOptions, clearInventoryState, collectibleQueryOptions, collectionBalanceDetailsQueryOptions, collectionDetailsQueryOptions, collectionQueryOptions, comparePricesQueryOptions, convertPriceToUSDQueryOptions, countListingsForCollectibleQueryOptions, countOfCollectablesQueryOptions, countOfPrimarySaleItemsOptions, countOffersForCollectibleQueryOptions, currencyQueryOptions, fetchBalanceOfCollectible, fetchBalances, fetchCheckoutOptions, fetchCheckoutOptionsSalesContract, fetchCollectible, fetchCollection, fetchCollectionBalanceDetails, fetchCollectionDetails, fetchComparePrices, fetchConvertPriceToUSD, fetchCountListingsForCollectible, fetchCountOfCollectables, fetchCountOfPrimarySaleItems, fetchCountOffersForCollectible, fetchCurrency, fetchFilters, fetchFloorOrder, fetchGetTokenRanges, fetchHighestOffer, fetchInventory, fetchListCollectibleActivities, fetchListCollectibles, fetchListCollectiblesPaginated, fetchListCollectionActivities, fetchListCollections, fetchListListingsForCollectible, fetchListTokenMetadata, fetchLowestListing, fetchMarketCurrencies, fetchPrimarySaleItems, fetchPrimarySaleItemsCount, fetchSearchTokenMetadata, fetchTokenSupplies, filtersQueryOptions, floorOrderQueryOptions, getTokenRangesQueryOptions, highestOfferQueryOptions, inventoryOptions, listBalancesOptions, listCollectibleActivitiesQueryOptions, listCollectiblesPaginatedQueryOptions, listCollectiblesQueryOptions, listCollectionActivitiesQueryOptions, listCollectionsOptions, listCollectionsQueryOptions, listListingsForCollectibleQueryOptions, listPrimarySaleItemsQueryOptions, listTokenMetadataQueryOptions, lowestListingQueryOptions, marketCurrenciesQueryOptions, primarySaleItemsCountQueryOptions, searchTokenMetadataQueryOptions, tokenSuppliesQueryOptions };
1478
+ //# sourceMappingURL=queries-BYT4GJw3.js.map