@0xsequence/marketplace-sdk 0.10.0 → 1.1.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 (530) hide show
  1. package/.storybook/ConnectionStatus.tsx +289 -0
  2. package/.storybook/main.ts +20 -1
  3. package/.storybook/preview.tsx +105 -0
  4. package/CHANGELOG.md +116 -9
  5. package/compile-tailwind.js +54 -0
  6. package/dist/BellIcon-IpHHEy8h.js +45 -0
  7. package/dist/BellIcon-IpHHEy8h.js.map +1 -0
  8. package/dist/{CalendarIcon-CqsuAuCm.js → CartIcon-C8zbor8H.js} +50 -42
  9. package/dist/CartIcon-C8zbor8H.js.map +1 -0
  10. package/dist/CollectibleCard-C2EWF0zo.d.ts +8 -0
  11. package/dist/{_internal-C75gOSNo.js → _internal-DkS2VUn5.js} +10 -2
  12. package/dist/_internal-DkS2VUn5.js.map +1 -0
  13. package/dist/{alien_swap-CYv6YlOF.js → alien_swap-BTJ7mSR-.js} +1 -1
  14. package/dist/{alien_swap-CYv6YlOF.js.map → alien_swap-BTJ7mSR-.js.map} +1 -1
  15. package/dist/{api-BiMGqWdz.js → api-DuLKn__v.js} +26 -4
  16. package/dist/api-DuLKn__v.js.map +1 -0
  17. package/dist/{aqua-xyz-Bzn5baeH.js → aqua-xyz-BYJ9WSP_.js} +1 -1
  18. package/dist/{aqua-xyz-Bzn5baeH.js.map → aqua-xyz-BYJ9WSP_.js.map} +1 -1
  19. package/dist/{aura-DzIWh8WT.js → aura-D7SUjgro.js} +1 -1
  20. package/dist/{aura-DzIWh8WT.js.map → aura-D7SUjgro.js.map} +1 -1
  21. package/dist/{blur-DSH-Cbpj.js → blur-BcnRFCaV.js} +1 -1
  22. package/dist/{blur-DSH-Cbpj.js.map → blur-BcnRFCaV.js.map} +1 -1
  23. package/dist/builder-api-BFuZNOaN.js.map +1 -1
  24. package/dist/builder.gen-B9wR2nvF.js.map +1 -1
  25. package/dist/{coinbase-Df8URNxq.js → coinbase-ChoX9Hw2.js} +1 -1
  26. package/dist/{coinbase-Df8URNxq.js.map → coinbase-ChoX9Hw2.js.map} +1 -1
  27. package/dist/components-CUv-wQr8.js +119 -0
  28. package/dist/components-CUv-wQr8.js.map +1 -0
  29. package/dist/contracts-D72LBOX3.js +96 -0
  30. package/dist/contracts-D72LBOX3.js.map +1 -0
  31. package/dist/{create-config-fQ-jbJD1.js → create-config-CIfejoCk.js} +6 -11
  32. package/dist/create-config-CIfejoCk.js.map +1 -0
  33. package/dist/{create-config-DKJ-F0jc.d.ts → create-config-DV_dtaLt.d.ts} +267 -247
  34. package/dist/{element-Cx6uJu5N.js → element-Dbcv5qya.js} +1 -1
  35. package/dist/{element-Cx6uJu5N.js.map → element-Dbcv5qya.js.map} +1 -1
  36. package/dist/filters-zkMJaPey.d.ts +31 -0
  37. package/dist/{foundation-D6U4aRLN.js → foundation-QPhUEUy8.js} +1 -1
  38. package/dist/{foundation-D6U4aRLN.js.map → foundation-QPhUEUy8.js.map} +1 -1
  39. package/dist/{index-C5aqo8xu.d.ts → index-B6aSbaw2.d.ts} +1 -1
  40. package/dist/index-B8vaT3_s.d.ts +18 -0
  41. package/dist/index-BaytncQc.d.ts +946 -0
  42. package/dist/{index-CUwMH7Ht.d.ts → index-BoNNplSx.d.ts} +2 -2
  43. package/dist/{index-136YrWDH.d.ts → index-Bv5XVLjH.d.ts} +1 -1
  44. package/dist/index-C768pAfu.d.ts +61 -0
  45. package/dist/index-CM0ZTePs.d.ts +2541 -0
  46. package/dist/index-CMPUveNz.d.ts +64 -0
  47. package/dist/index-CQecU53t.d.ts +311 -0
  48. package/dist/{index-BAhaEfqY.d.ts → index-CT8ZorFd.d.ts} +1 -1
  49. package/dist/index-CXscCUg7.d.ts +298 -0
  50. package/dist/{index-BhVFc2rX.d.ts → index-D-UXGo5d.d.ts} +4 -4
  51. package/dist/index-D6YMj82n.d.ts +813 -0
  52. package/dist/index-DJG0kiII.d.ts +346 -0
  53. package/dist/index-DLUjc7Bx.d.ts +316 -0
  54. package/dist/index-DMBMM16q.d.ts +447 -0
  55. package/dist/{index-CKrYP7ot.d.ts → index-DpeWm_vF.d.ts} +14 -22
  56. package/dist/index-Yobo6icm.d.ts +234 -0
  57. package/dist/index-jGgfEHfQ.d.ts +131 -0
  58. package/dist/index.d.ts +8 -8
  59. package/dist/index.js +13 -13
  60. package/dist/listCollectiblesPaginated-Bq0QSOjJ.d.ts +168 -0
  61. package/dist/listCollections-dTCq00l5.d.ts +669 -0
  62. package/dist/{looks-rare-ChBRBY-p.js → looks-rare-C7cQztTR.js} +1 -1
  63. package/dist/{looks-rare-ChBRBY-p.js.map → looks-rare-C7cQztTR.js.map} +1 -1
  64. package/dist/lowestListing-CB5Te-Q9.d.ts +168 -0
  65. package/dist/{magic-eden-D5U7N1xL.js → magic-eden-D3r7jiBG.js} +1 -1
  66. package/dist/{magic-eden-D5U7N1xL.js.map → magic-eden-D3r7jiBG.js.map} +1 -1
  67. package/dist/{manifold-CtLF52zU.js → manifold-DsX0CBP-.js} +1 -1
  68. package/dist/{manifold-CtLF52zU.js.map → manifold-DsX0CBP-.js.map} +1 -1
  69. package/dist/marketCurrencies-Bzj8X4TL.d.ts +122 -0
  70. package/dist/{marketplace-DmFiyBoS.js → marketplace-BYY8OloA.js} +1 -1
  71. package/dist/{marketplace-DmFiyBoS.js.map → marketplace-BYY8OloA.js.map} +1 -1
  72. package/dist/{marketplace-logos-Cd6W-qOq.js → marketplace-logos-Csv2MBwf.js} +21 -21
  73. package/dist/marketplace-logos-Csv2MBwf.js.map +1 -0
  74. package/dist/{marketplace.gen-HpnpL5xU.js → marketplace.gen-w2YvbEEo.js} +2 -2
  75. package/dist/marketplace.gen-w2YvbEEo.js.map +1 -0
  76. package/dist/{marketplaceConfig-GQTTmihy.js → marketplaceConfig-BTy75Mbf.js} +20 -10
  77. package/dist/marketplaceConfig-BTy75Mbf.js.map +1 -0
  78. package/dist/{mintify-Bi3Bce68.js → mintify-DiOoDmO1.js} +1 -1
  79. package/dist/{mintify-Bi3Bce68.js.map → mintify-DiOoDmO1.js.map} +1 -1
  80. package/dist/{network-CGD0oKtS.js → network-DtmiMhcg.js} +2 -2
  81. package/dist/network-DtmiMhcg.js.map +1 -0
  82. package/dist/networkconfigToWagmiChain-DbUf6HiO.js +15 -0
  83. package/dist/networkconfigToWagmiChain-DbUf6HiO.js.map +1 -0
  84. package/dist/{nftx-BDQZjtkX.js → nftx-CP82jNra.js} +1 -1
  85. package/dist/{nftx-BDQZjtkX.js.map → nftx-CP82jNra.js.map} +1 -1
  86. package/dist/{okx-D4meadLe.js → okx-p9-4xRjs.js} +1 -1
  87. package/dist/{okx-D4meadLe.js.map → okx-p9-4xRjs.js.map} +1 -1
  88. package/dist/{open-sea-DN0hgfVw.js → open-sea-D2GwAmKS.js} +1 -1
  89. package/dist/{open-sea-DN0hgfVw.js.map → open-sea-D2GwAmKS.js.map} +1 -1
  90. package/dist/primary-sale-DOmNDq2P.js +3048 -0
  91. package/dist/primary-sale-DOmNDq2P.js.map +1 -0
  92. package/dist/queries-EMA5CcwY.js +1399 -0
  93. package/dist/queries-EMA5CcwY.js.map +1 -0
  94. package/dist/query-BG-MA1MB.d.ts +31 -0
  95. package/dist/{rarible-B0xlD88A.js → rarible-DqiiW9ki.js} +1 -1
  96. package/dist/{rarible-B0xlD88A.js.map → rarible-DqiiW9ki.js.map} +1 -1
  97. package/dist/react/_internal/api/index.d.ts +1 -1
  98. package/dist/react/_internal/api/index.js +4 -6
  99. package/dist/react/_internal/databeat/index.d.ts +1 -1
  100. package/dist/react/_internal/databeat/index.js +27 -4
  101. package/dist/react/_internal/index.d.ts +1 -1
  102. package/dist/react/_internal/index.js +8 -10
  103. package/dist/react/_internal/wagmi/index.d.ts +1 -1
  104. package/dist/react/_internal/wagmi/index.js +4 -4
  105. package/dist/react/hooks/config/index.d.ts +9 -0
  106. package/dist/react/hooks/config/index.js +29 -0
  107. package/dist/react/hooks/contracts/index.d.ts +7 -0
  108. package/dist/react/hooks/contracts/index.js +17 -0
  109. package/dist/react/hooks/data/collectibles/index.d.ts +5 -0
  110. package/dist/react/hooks/data/collectibles/index.js +29 -0
  111. package/dist/react/hooks/data/collections/index.d.ts +11 -0
  112. package/dist/react/hooks/data/collections/index.js +29 -0
  113. package/dist/react/hooks/data/index.d.ts +29 -0
  114. package/dist/react/hooks/data/index.js +29 -0
  115. package/dist/react/hooks/data/inventory/index.d.ts +29 -0
  116. package/dist/react/hooks/data/inventory/index.js +29 -0
  117. package/dist/react/hooks/data/market/index.d.ts +6 -0
  118. package/dist/react/hooks/data/market/index.js +29 -0
  119. package/dist/react/hooks/data/orders/index.d.ts +5 -0
  120. package/dist/react/hooks/data/orders/index.js +29 -0
  121. package/dist/react/hooks/data/primary-sales/index.d.ts +29 -0
  122. package/dist/react/hooks/data/primary-sales/index.js +29 -0
  123. package/dist/react/hooks/data/tokens/index.d.ts +5 -0
  124. package/dist/react/hooks/data/tokens/index.js +29 -0
  125. package/dist/react/hooks/index.d.ts +29 -13
  126. package/dist/react/hooks/index.js +25 -23
  127. package/dist/react/hooks/transactions/index.d.ts +3 -0
  128. package/dist/react/hooks/transactions/index.js +29 -0
  129. package/dist/react/hooks/ui/index.d.ts +5 -0
  130. package/dist/react/hooks/ui/index.js +29 -0
  131. package/dist/react/hooks/utils/index.d.ts +29 -0
  132. package/dist/react/hooks/utils/index.js +29 -0
  133. package/dist/react/index.d.ts +29 -13
  134. package/dist/react/index.js +25 -28
  135. package/dist/react/queries/index.d.ts +16 -9
  136. package/dist/react/queries/index.js +18 -20
  137. package/dist/react/ssr/index.d.ts +7 -7
  138. package/dist/react/ssr/index.js +9 -11
  139. package/dist/react/ssr/index.js.map +1 -1
  140. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.d.ts +3 -0
  141. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.js +22 -0
  142. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.d.ts +54 -0
  143. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.js +29 -0
  144. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +5 -4
  145. package/dist/react/ui/components/marketplace-collectible-card/index.js +24 -27
  146. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -2
  147. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +9 -11
  148. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  149. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  150. package/dist/react/ui/icons/index.js +13 -13
  151. package/dist/react/ui/index.d.ts +5 -4
  152. package/dist/react/ui/index.js +24 -27
  153. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +3 -27
  154. package/dist/react/ui/modals/_internal/components/actionModal/index.js +25 -24
  155. package/dist/react/utils/index.d.ts +19 -0
  156. package/dist/react/utils/index.js +9 -0
  157. package/dist/react-BLJ4DkPx.js +12410 -0
  158. package/dist/react-BLJ4DkPx.js.map +1 -0
  159. package/dist/{react-DeDyTgo7.css → react-F03jPjPk.css} +1 -1
  160. package/dist/{react-DeDyTgo7.css.map → react-F03jPjPk.css.map} +1 -1
  161. package/dist/{sequence-BIrOVRXO.js → sequence-Bbb-TFKg.js} +1 -1
  162. package/dist/{sequence-BIrOVRXO.js.map → sequence-Bbb-TFKg.js.map} +1 -1
  163. package/dist/{index.css → styles/index.css} +314 -153
  164. package/dist/{sudo-swap-BPMon-M5.js → sudo-swap-CEPIM3Js.js} +1 -1
  165. package/dist/{sudo-swap-BPMon-M5.js.map → sudo-swap-CEPIM3Js.js.map} +1 -1
  166. package/dist/{super-rare-kPN6Ua8i.js → super-rare-CMEn9PoO.js} +1 -1
  167. package/dist/{super-rare-kPN6Ua8i.js.map → super-rare-CMEn9PoO.js.map} +1 -1
  168. package/dist/{token-CHSBPYVG.js → token-CcyLz8Z8.js} +1 -1
  169. package/dist/{token-CHSBPYVG.js.map → token-CcyLz8Z8.js.map} +1 -1
  170. package/dist/tokenSupplies-C470zTT0.d.ts +147 -0
  171. package/dist/{transaction-CnctdNzS.js → transaction-DZUW5RHu.js} +21 -24
  172. package/dist/transaction-DZUW5RHu.js.map +1 -0
  173. package/dist/types/index.d.ts +2 -2
  174. package/dist/types/index.js +2 -2
  175. package/dist/{types-Yw2ywj6j.js → types-B_-cnkcP.js} +1 -1
  176. package/dist/types-B_-cnkcP.js.map +1 -0
  177. package/dist/{CollectibleCard-Dd-CG6dE.d.ts → types-D6LkVrF0.d.ts} +18 -13
  178. package/dist/utils/abi/index.d.ts +5 -5
  179. package/dist/utils/abi/index.js +5 -5
  180. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  181. package/dist/utils/abi/marketplace/index.js +1 -1
  182. package/dist/utils/abi/primary-sale/index.d.ts +2 -2
  183. package/dist/utils/abi/primary-sale/index.js +2 -2
  184. package/dist/utils/abi/token/index.d.ts +1 -1
  185. package/dist/utils/abi/token/index.js +1 -1
  186. package/dist/utils/index.d.ts +7 -7
  187. package/dist/utils/index.js +12 -12
  188. package/dist/{utils-9RXDgcBl.js → utils-BZEkdqWK.js} +7 -24
  189. package/dist/utils-BZEkdqWK.js.map +1 -0
  190. package/dist/{utils-DjVJ9tov.js → utils-oVZxdK0o.js} +2 -2
  191. package/dist/utils-oVZxdK0o.js.map +1 -0
  192. package/dist/waitForTransactionReceipt-B08YZiDY.js +26 -0
  193. package/dist/waitForTransactionReceipt-B08YZiDY.js.map +1 -0
  194. package/dist/{x2y2-BLz-_Q2O.js → x2y2-DNe6JgtG.js} +1 -1
  195. package/dist/{x2y2-BLz-_Q2O.js.map → x2y2-DNe6JgtG.js.map} +1 -1
  196. package/dist/{zora-UGhKs-aL.js → zora-w0Zqxxs4.js} +1 -1
  197. package/dist/{zora-UGhKs-aL.js.map → zora-w0Zqxxs4.js.map} +1 -1
  198. package/package.json +50 -47
  199. package/postcss.config.mjs +72 -5
  200. package/public/mockServiceWorker.js +344 -0
  201. package/src/react/_internal/api/__mocks__/builder.msw.ts +6 -0
  202. package/src/react/_internal/api/__mocks__/metadata.msw.ts +12 -1
  203. package/src/react/_internal/api/builder.gen.ts +11 -7
  204. package/src/react/_internal/api/marketplace.gen.ts +1 -1
  205. package/src/react/_internal/api/query-keys.ts +2 -0
  206. package/src/react/_internal/databeat/index.ts +1 -1
  207. package/src/react/_internal/databeat/types.ts +1 -0
  208. package/src/react/_internal/query-meta.ts +3 -0
  209. package/src/react/_internal/utils.ts +2 -0
  210. package/src/react/_internal/wagmi/__tests__/create-config.test.ts +19 -8
  211. package/src/react/_internal/wagmi/create-config.ts +7 -18
  212. package/src/react/_internal/wagmi/get-connectors.ts +1 -1
  213. package/src/react/hooks/{__tests__ → config}/__snapshots__/useMarketplaceConfig.test.tsx.snap +10 -4
  214. package/src/react/hooks/config/index.ts +3 -0
  215. package/src/react/hooks/{useConfig.tsx → config/useConfig.tsx} +2 -2
  216. package/src/react/hooks/config/useConnectorMetadata.tsx +16 -0
  217. package/src/react/hooks/{__tests__ → config}/useMarketplaceConfig.test.tsx +1 -1
  218. package/src/react/hooks/{useMarketplaceConfig.tsx → config/useMarketplaceConfig.tsx} +2 -2
  219. package/src/react/hooks/contracts/index.ts +1 -0
  220. package/src/react/hooks/contracts/useSalesContractABI.ts +174 -0
  221. package/src/react/hooks/data/collectibles/index.ts +6 -0
  222. package/src/react/hooks/{__tests__ → data/collectibles}/useBalanceOfCollectible.laos.test.tsx +6 -6
  223. package/src/react/hooks/{__tests__ → data/collectibles}/useBalanceOfCollectible.test.tsx +2 -2
  224. package/src/react/hooks/{useBalanceOfCollectible.tsx → data/collectibles/useBalanceOfCollectible.tsx} +4 -4
  225. package/src/react/hooks/{__tests__ → data/collectibles}/useCollectible.test.tsx +3 -3
  226. package/src/react/hooks/{useCollectible.tsx → data/collectibles/useCollectible.tsx} +3 -3
  227. package/src/react/hooks/{__tests__ → data/collectibles}/useCountOfCollectables.test.tsx +4 -4
  228. package/src/react/hooks/{useCountOfCollectables.tsx → data/collectibles/useCountOfCollectables.tsx} +3 -3
  229. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectibleActivities.test.tsx +3 -3
  230. package/src/react/hooks/{useListCollectibleActivities.tsx → data/collectibles/useListCollectibleActivities.tsx} +3 -3
  231. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectibles.test.tsx +5 -6
  232. package/src/react/hooks/{useListCollectibles.tsx → data/collectibles/useListCollectibles.tsx} +3 -3
  233. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectiblesPaginated.test.tsx +4 -4
  234. package/src/react/hooks/{useListCollectiblesPaginated.tsx → data/collectibles/useListCollectiblesPaginated.tsx} +3 -3
  235. package/src/react/hooks/data/collectibles/useTokenBalances.test.tsx +151 -0
  236. package/src/react/hooks/data/collectibles/useTokenBalances.tsx +47 -0
  237. package/src/react/hooks/{__tests__ → data/collections}/__snapshots__/useListCollections.test.tsx.snap +16 -6
  238. package/src/react/hooks/data/collections/index.ts +6 -0
  239. package/src/react/hooks/{__tests__ → data/collections}/useCollection.test.tsx +2 -3
  240. package/src/react/hooks/{useCollection.tsx → data/collections/useCollection.tsx} +3 -3
  241. package/src/react/hooks/{__tests__ → data/collections}/useCollectionBalanceDetails.test.tsx +2 -2
  242. package/src/react/hooks/{useCollectionBalanceDetails.tsx → data/collections/useCollectionBalanceDetails.tsx} +3 -3
  243. package/src/react/hooks/{__tests__ → data/collections}/useCollectionDetails.test.tsx +2 -2
  244. package/src/react/hooks/{useCollectionDetails.ts → data/collections/useCollectionDetails.ts} +3 -3
  245. package/src/react/hooks/{__tests__ → data/collections}/useCollectionDetailsPolling.test.tsx +3 -3
  246. package/src/react/hooks/{useCollectionDetailsPolling.tsx → data/collections/useCollectionDetailsPolling.tsx} +4 -4
  247. package/src/react/hooks/{__tests__ → data/collections}/useListCollectionActivities.test.tsx +5 -5
  248. package/src/react/hooks/{useListCollectionActivities.tsx → data/collections/useListCollectionActivities.tsx} +3 -3
  249. package/src/react/hooks/{__tests__ → data/collections}/useListCollections.test.tsx +5 -4
  250. package/src/react/hooks/{useListCollections.tsx → data/collections/useListCollections.tsx} +4 -4
  251. package/src/react/hooks/data/index.ts +6 -0
  252. package/src/react/hooks/data/inventory/index.ts +1 -0
  253. package/src/react/hooks/{__tests__ → data/inventory}/useInventory.test.tsx +7 -102
  254. package/src/react/hooks/data/inventory/useInventory.tsx +21 -0
  255. package/src/react/hooks/data/market/index.ts +3 -0
  256. package/src/react/hooks/{__tests__ → data/market}/useCurrency.test.tsx +4 -4
  257. package/src/react/hooks/{useCurrency.tsx → data/market/useCurrency.tsx} +3 -3
  258. package/src/react/hooks/{__tests__ → data/market}/useListMarketCardData.test.tsx +10 -14
  259. package/src/react/hooks/{useListMarketCardData.tsx → data/market/useListMarketCardData.tsx} +7 -7
  260. package/src/react/hooks/{__tests__ → data/market}/useMarketCurrencies.test.tsx +5 -5
  261. package/src/react/hooks/{useMarketCurrencies.tsx → data/market/useMarketCurrencies.tsx} +3 -3
  262. package/src/react/hooks/data/orders/index.ts +7 -0
  263. package/src/react/hooks/{__tests__ → data/orders}/useCountListingsForCollectible.test.tsx +2 -2
  264. package/src/react/hooks/{useCountListingsForCollectible.tsx → data/orders/useCountListingsForCollectible.tsx} +3 -3
  265. package/src/react/hooks/{__tests__ → data/orders}/useCountOffersForCollectible.test.tsx +2 -2
  266. package/src/react/hooks/{useCountOffersForCollectible.tsx → data/orders/useCountOffersForCollectible.tsx} +3 -3
  267. package/src/react/hooks/{__tests__ → data/orders}/useFloorOrder.test.tsx +3 -3
  268. package/src/react/hooks/{useFloorOrder.tsx → data/orders/useFloorOrder.tsx} +3 -3
  269. package/src/react/hooks/{__tests__ → data/orders}/useHighestOffer.test.tsx +3 -3
  270. package/src/react/hooks/{useHighestOffer.tsx → data/orders/useHighestOffer.tsx} +3 -3
  271. package/src/react/hooks/{__tests__ → data/orders}/useListListingsForCollectible.test.tsx +6 -6
  272. package/src/react/hooks/{useListListingsForCollectible.tsx → data/orders/useListListingsForCollectible.tsx} +3 -3
  273. package/src/react/hooks/{__tests__ → data/orders}/useListOffersForCollectible.test.tsx +5 -5
  274. package/src/react/hooks/data/orders/useListOffersForCollectible.tsx +80 -0
  275. package/src/react/hooks/{__tests__ → data/orders}/useLowestListing.test.tsx +5 -5
  276. package/src/react/hooks/{useLowestListing.tsx → data/orders/useLowestListing.tsx} +3 -3
  277. package/src/react/hooks/data/primary-sales/index.ts +6 -0
  278. package/src/react/hooks/{useCountOfPrimarySaleItems.tsx → data/primary-sales/useCountOfPrimarySaleItems.tsx} +2 -2
  279. package/src/react/hooks/data/primary-sales/useErc721SalesData.tsx +184 -0
  280. package/src/react/hooks/{useGetCountOfPrimarySaleItems.tsx → data/primary-sales/useGetCountOfPrimarySaleItems.tsx} +4 -4
  281. package/src/react/hooks/{useList1155ShopCardData.tsx → data/primary-sales/useList1155ShopCardData.tsx} +30 -39
  282. package/src/react/hooks/data/primary-sales/useList721ShopCardData.tsx +194 -0
  283. package/src/react/hooks/{useListPrimarySaleItems.tsx → data/primary-sales/useListPrimarySaleItems.tsx} +3 -3
  284. package/src/react/hooks/data/tokens/index.ts +5 -0
  285. package/src/react/hooks/{__tests__ → data/tokens}/useCurrencyBalance.test.tsx +2 -2
  286. package/src/react/hooks/{__tests__ → data/tokens}/useGetTokenRanges.test.tsx +3 -3
  287. package/src/react/hooks/{useGetTokenRanges.tsx → data/tokens/useGetTokenRanges.tsx} +6 -4
  288. package/src/react/hooks/{__tests__ → data/tokens}/useListBalances.test.tsx +2 -2
  289. package/src/react/hooks/{useListBalances.tsx → data/tokens/useListBalances.tsx} +5 -5
  290. package/src/react/hooks/{__tests__ → data/tokens}/useListTokenMetadata.test.tsx +3 -3
  291. package/src/react/hooks/{useListTokenMetadata.tsx → data/tokens/useListTokenMetadata.tsx} +3 -3
  292. package/src/react/hooks/data/tokens/useSearchTokenMetadata.test.tsx +284 -0
  293. package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +189 -0
  294. package/src/react/hooks/{useTokenSupplies.ts → data/tokens/useTokenSupplies.ts} +5 -5
  295. package/src/react/hooks/index.ts +18 -52
  296. package/src/react/hooks/transactions/index.ts +9 -0
  297. package/src/react/hooks/{__tests__ → transactions}/useCancelOrder.test.tsx +59 -88
  298. package/src/react/hooks/{useCancelOrder.tsx → transactions/useCancelOrder.tsx} +6 -5
  299. package/src/react/hooks/{__tests__/useCancelTransactionSteps.test.tsx → transactions/useCancelTransactionSteps.test.tsx.bak} +3 -52
  300. package/src/react/hooks/transactions/useCancelTransactionSteps.tsx +193 -0
  301. package/src/react/hooks/{__tests__ → transactions}/useGenerateCancelTransaction.test.tsx +2 -2
  302. package/src/react/hooks/{useGenerateCancelTransaction.tsx → transactions/useGenerateCancelTransaction.tsx} +5 -5
  303. package/src/react/hooks/{__tests__ → transactions}/useGenerateListingTransaction.test.tsx +2 -2
  304. package/src/react/hooks/{useGenerateListingTransaction.tsx → transactions/useGenerateListingTransaction.tsx} +5 -5
  305. package/src/react/hooks/{__tests__ → transactions}/useGenerateOfferTransaction.test.tsx +7 -45
  306. package/src/react/hooks/{useGenerateOfferTransaction.tsx → transactions/useGenerateOfferTransaction.tsx} +7 -7
  307. package/src/react/hooks/{__tests__ → transactions}/useGenerateSellTransaction.test.tsx +3 -7
  308. package/src/react/hooks/{useGenerateSellTransaction.tsx → transactions/useGenerateSellTransaction.tsx} +4 -4
  309. package/src/react/hooks/transactions/useOrderSteps.tsx +189 -0
  310. package/src/react/hooks/transactions/useProcessStep.test.tsx +272 -0
  311. package/src/react/hooks/transactions/useProcessStep.ts +95 -0
  312. package/src/react/hooks/{__tests__ → transactions}/useTransferTokens.test.tsx +2 -2
  313. package/src/react/hooks/{useTransferTokens.tsx → transactions/useTransferTokens.tsx} +3 -3
  314. package/src/react/hooks/ui/index.ts +3 -0
  315. package/src/react/hooks/{useFilterState.tsx → ui/useFilterState.tsx} +1 -1
  316. package/src/react/hooks/{__tests__ → ui}/useFilters.test.tsx +1 -2
  317. package/src/react/hooks/{useFilters.tsx → ui/useFilters.tsx} +3 -3
  318. package/src/react/hooks/{useOpenConnectModal.tsx → ui/useOpenConnectModal.tsx} +1 -1
  319. package/src/react/hooks/util/optimisticCancelUpdates.ts +1 -0
  320. package/src/react/hooks/utils/__tests__/useEnsureCorrectChain.test.tsx +75 -0
  321. package/src/react/hooks/utils/index.ts +8 -0
  322. package/src/react/hooks/{__tests__ → utils}/useAutoSelectFeeOption.test.tsx +7 -3
  323. package/src/react/hooks/{useAutoSelectFeeOption.tsx → utils/useAutoSelectFeeOption.tsx} +2 -2
  324. package/src/react/hooks/{__tests__ → utils}/useCheckoutOptions.test.tsx +9 -5
  325. package/src/react/hooks/{useCheckoutOptions.tsx → utils/useCheckoutOptions.tsx} +6 -4
  326. package/src/react/hooks/{__tests__ → utils}/useCheckoutOptionsSalesContract.test.tsx +8 -4
  327. package/src/react/hooks/{useCheckoutOptionsSalesContract.tsx → utils/useCheckoutOptionsSalesContract.tsx} +3 -3
  328. package/src/react/hooks/{__tests__ → utils}/useComparePrices.test.tsx +1 -1
  329. package/src/react/hooks/{useComparePrices.tsx → utils/useComparePrices.tsx} +3 -5
  330. package/src/react/hooks/{__tests__ → utils}/useConvertPriceToUSD.test.tsx +2 -2
  331. package/src/react/hooks/{useConvertPriceToUSD.tsx → utils/useConvertPriceToUSD.tsx} +3 -3
  332. package/src/react/hooks/utils/useEnsureCorrectChain.ts +71 -0
  333. package/src/react/hooks/{__tests__ → utils}/useRoyalty.test.tsx +1 -1
  334. package/src/react/hooks/{useRoyalty.tsx → utils/useRoyalty.tsx} +3 -3
  335. package/src/react/index.ts +1 -2
  336. package/src/react/{provider.tsx → providers/index.tsx} +18 -17
  337. package/src/react/providers/modal-provider.tsx +43 -0
  338. package/src/react/{__tests__ → providers}/provider.test.tsx +1 -1
  339. package/src/react/providers/shadow-root.tsx +63 -0
  340. package/src/react/providers/theme-provider.tsx +29 -0
  341. package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +3 -3
  342. package/src/react/queries/__tests__/inventory.laos.test.ts +6 -3
  343. package/src/react/queries/__tests__/tokenBalances.laos.test.ts +123 -0
  344. package/src/react/queries/balanceOfCollectible.ts +2 -1
  345. package/src/react/queries/filters.ts +23 -28
  346. package/src/react/queries/index.ts +20 -0
  347. package/src/react/queries/inventory.ts +63 -243
  348. package/src/react/queries/listCollectibles.ts +22 -48
  349. package/src/react/queries/listCollections.ts +10 -13
  350. package/src/react/queries/listOffersForCollectible.ts +101 -0
  351. package/src/react/queries/marketplaceConfig.ts +16 -3
  352. package/src/react/queries/primarySaleItems.ts +2 -7
  353. package/src/react/queries/searchTokenMetadata.ts +87 -0
  354. package/src/react/queries/tokenBalances.ts +85 -0
  355. package/src/react/queries/tokenSupplies.ts +26 -18
  356. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +10 -4
  357. package/src/react/ssr/__tests__/create-ssr-client.test.ts +1 -1
  358. package/src/react/ui/components/_internals/action-button/ActionButton.stories.tsx +296 -0
  359. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +6 -9
  360. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +34 -14
  361. package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +8 -15
  362. package/src/react/ui/components/_internals/action-button/__tests__/OwnerActions.test.tsx +5 -12
  363. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +32 -16
  364. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +2 -3
  365. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +7 -7
  366. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +2 -3
  367. package/src/react/ui/components/_internals/custom-select/__tests__/CustomSelect.test.tsx +1 -1
  368. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +4 -3
  369. package/src/react/ui/components/marketplace-collectible-card/CollectibleCardSkeleton.tsx +13 -2
  370. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +4 -7
  371. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +18 -8
  372. package/src/react/ui/components/marketplace-collectible-card/components/footer/Footer.tsx +179 -0
  373. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/FooterName.tsx +103 -0
  374. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/PriceDisplay.tsx +80 -0
  375. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/SaleDetailsPill.tsx +29 -0
  376. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/TokenTypeBalancePill.tsx +30 -0
  377. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/index.ts +4 -0
  378. package/src/react/ui/components/marketplace-collectible-card/components/footer/index.ts +2 -0
  379. package/src/react/ui/components/marketplace-collectible-card/types.ts +21 -8
  380. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +11 -23
  381. package/src/react/ui/components/marketplace-collectible-card/variants/NonTradableInventoryCard.tsx +42 -0
  382. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +19 -13
  383. package/src/react/ui/index.ts +1 -1
  384. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +20 -35
  385. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +5 -5
  386. package/src/react/ui/modals/BuyModal/__tests__/ERC721ShopModal.test.tsx +1 -1
  387. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx.bak +3 -3
  388. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +6 -6
  389. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +3 -3
  390. package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +10 -10
  391. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +10 -10
  392. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +40 -22
  393. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +2 -2
  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 +14 -1
  397. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +13 -2
  398. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +5 -5
  399. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +19 -3
  400. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +18 -7
  401. package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +5 -9
  402. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +16 -15
  403. package/src/react/ui/modals/BuyModal/store.ts +8 -6
  404. package/src/react/ui/modals/CreateListingModal/Modal.tsx +11 -5
  405. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +3 -24
  406. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +2 -1
  407. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +5 -9
  408. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +44 -84
  409. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +91 -93
  410. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +88 -62
  411. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +9 -7
  412. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +4 -3
  413. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +48 -85
  414. package/src/react/ui/modals/SellModal/Modal.tsx +7 -9
  415. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +8 -30
  416. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +9 -8
  417. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +2 -1
  418. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +39 -65
  419. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +28 -18
  420. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +33 -15
  421. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +3 -3
  422. package/src/react/ui/modals/TransferModal/index.tsx +9 -23
  423. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +130 -139
  424. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +15 -44
  425. package/src/react/ui/modals/_internal/components/actionModal/index.ts +0 -1
  426. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +9 -3
  427. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +1 -1
  428. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +2 -2
  429. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +3 -3
  430. package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +97 -7
  431. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +30 -11
  432. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +2 -2
  433. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +1 -1
  434. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +1 -1
  435. package/src/react/ui/modals/_internal/components/switchChainErrorModal/__tests__/SwitchChainErrorModal.test.tsx +80 -0
  436. package/src/react/ui/modals/_internal/components/switchChainErrorModal/index.tsx +64 -0
  437. package/src/react/ui/modals/_internal/components/switchChainErrorModal/store.ts +42 -0
  438. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +25 -26
  439. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +3 -1
  440. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +19 -4
  441. package/src/react/ui/modals/_internal/hooks/useSelectWaasFeeOptions.ts +3 -5
  442. package/src/react/ui/modals/_internal/types.ts +6 -1
  443. package/src/react/utils/index.ts +1 -0
  444. package/src/react/utils/waitForTransactionReceipt.ts +49 -0
  445. package/src/{index.css → styles/index.css} +1 -1
  446. package/src/styles/styles.ts +3297 -0
  447. package/src/types/new-marketplace-types.ts +9 -18
  448. package/src/types/sdk-config.ts +2 -0
  449. package/src/types/types.ts +1 -1
  450. package/src/utils/_internal/error/transaction.ts +0 -10
  451. package/src/utils/abi/primary-sale/index.ts +4 -2
  452. package/src/utils/abi/primary-sale/{sequence-1155-sales-contract.ts → sequence-1155-sales-contract-v0.ts} +67 -58
  453. package/src/utils/abi/primary-sale/sequence-1155-sales-contract-v1.ts +546 -0
  454. package/src/utils/abi/primary-sale/{sequence-721-sales-contract.ts → sequence-721-sales-contract-v0.ts} +1 -1
  455. package/src/utils/abi/primary-sale/sequence-721-sales-contract-v1.ts +394 -0
  456. package/test/const.ts +1 -1
  457. package/test/globalSetup.ts +39 -11
  458. package/test/handlers.ts +465 -0
  459. package/test/index.ts +1 -0
  460. package/test/server-setup.ts +23 -0
  461. package/test/setup.ts +1 -1
  462. package/test/test-utils.tsx +47 -38
  463. package/tsconfig.json +1 -1
  464. package/tsdown.config.ts +12 -7
  465. package/.storybook/preview.ts +0 -24
  466. package/dist/CalendarIcon-CqsuAuCm.js.map +0 -1
  467. package/dist/InfoIcon-v0w_Lu7t.js +0 -53
  468. package/dist/InfoIcon-v0w_Lu7t.js.map +0 -1
  469. package/dist/_internal-C75gOSNo.js.map +0 -1
  470. package/dist/actionModal-CMUeVsFX.js +0 -116
  471. package/dist/actionModal-CMUeVsFX.js.map +0 -1
  472. package/dist/api-BiMGqWdz.js.map +0 -1
  473. package/dist/base-DqaJPvfN.js +0 -22
  474. package/dist/base-DqaJPvfN.js.map +0 -1
  475. package/dist/create-config-fQ-jbJD1.js.map +0 -1
  476. package/dist/get-provider-CYYHfrlg.js +0 -10
  477. package/dist/get-provider-CYYHfrlg.js.map +0 -1
  478. package/dist/get-query-client-D19vvfJo.js +0 -23
  479. package/dist/get-query-client-D19vvfJo.js.map +0 -1
  480. package/dist/hooks-4pxIbLbM.js +0 -4044
  481. package/dist/hooks-4pxIbLbM.js.map +0 -1
  482. package/dist/index-BKBin-rq.d.ts +0 -979
  483. package/dist/index-BUWB_RXp.d.ts +0 -3144
  484. package/dist/index-Cu70Lw-w.d.ts +0 -1057
  485. package/dist/index-DvpBZgor.d.ts +0 -1
  486. package/dist/marketplace-logos-Cd6W-qOq.js.map +0 -1
  487. package/dist/marketplace.gen-HpnpL5xU.js.map +0 -1
  488. package/dist/marketplaceConfig-GQTTmihy.js.map +0 -1
  489. package/dist/network-CGD0oKtS.js.map +0 -1
  490. package/dist/primary-sale-CmWxSfFQ.js +0 -1264
  491. package/dist/primary-sale-CmWxSfFQ.js.map +0 -1
  492. package/dist/provider-DPGUA10G.js +0 -125
  493. package/dist/provider-DPGUA10G.js.map +0 -1
  494. package/dist/queries-Ce_2othB.js +0 -757
  495. package/dist/queries-Ce_2othB.js.map +0 -1
  496. package/dist/react/hooks/options/index.d.ts +0 -3
  497. package/dist/react/hooks/options/index.js +0 -16
  498. package/dist/react-DP0M2Wfm.js +0 -5431
  499. package/dist/react-DP0M2Wfm.js.map +0 -1
  500. package/dist/transaction-CnctdNzS.js.map +0 -1
  501. package/dist/types-Yw2ywj6j.js.map +0 -1
  502. package/dist/utils-9RXDgcBl.js.map +0 -1
  503. package/dist/utils-DjVJ9tov.js.map +0 -1
  504. package/dist/wagmi-Do_KW5ke.js +0 -0
  505. package/src/react/_internal/wallet/__tests__/wallet.test.ts +0 -416
  506. package/src/react/_internal/wallet/useWallet.ts +0 -52
  507. package/src/react/_internal/wallet/wallet.ts +0 -313
  508. package/src/react/hooks/options/index.ts +0 -1
  509. package/src/react/hooks/useCancelTransactionSteps.tsx +0 -249
  510. package/src/react/hooks/useERC721SaleMintedTokens.tsx +0 -70
  511. package/src/react/hooks/useInventory.tsx +0 -18
  512. package/src/react/hooks/useList1155SaleSupplies.tsx +0 -62
  513. package/src/react/hooks/useList721ShopCardData.tsx +0 -165
  514. package/src/react/hooks/useListOffersForCollectible.tsx +0 -55
  515. package/src/react/hooks/useListShopCardData.tsx +0 -70
  516. package/src/react/hooks/useListTokenMetadata.ts +0 -71
  517. package/src/react/hooks/useShopCollectibleSaleData.tsx +0 -349
  518. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +0 -130
  519. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +0 -238
  520. package/src/react/ui/modals/_internal/components/actionModal/store.ts +0 -57
  521. package/src/react/ui/modals/_internal/components/switchChainModal/__tests__/SwitchChainModal.test.tsx +0 -117
  522. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +0 -124
  523. package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +0 -71
  524. package/src/react/ui/modals/modal-provider.tsx +0 -25
  525. package/test/mocks/wallet.ts +0 -63
  526. /package/dist/{abi-BMvgNbKQ.js → abi-DYsUABe6.js} +0 -0
  527. /package/dist/{index-CD2bj_xW.d.ts → index-Cg5cFzs-.d.ts} +0 -0
  528. /package/dist/{options-BBBR8u_4.js → wagmi-Bseovd6Q.js} +0 -0
  529. /package/src/react/hooks/{useCurrencyBalance.tsx → data/tokens/useCurrencyBalance.tsx} +0 -0
  530. /package/src/react/hooks/{useGetReceiptFromHash.tsx → utils/useGetReceiptFromHash.tsx} +0 -0
@@ -1,5 +1,6 @@
1
1
  import { queryOptions } from '@tanstack/react-query';
2
- import type { ContractType, SdkConfig } from '../../types';
2
+ import type { Address } from 'viem';
3
+ import type { ContractType, OrderbookKind, SdkConfig } from '../../types';
3
4
  import type {
4
5
  MarketCollection,
5
6
  MarketPage,
@@ -9,6 +10,7 @@ import type {
9
10
  } from '../../types/new-marketplace-types';
10
11
  import { configKeys, getBuilderClient } from '../_internal';
11
12
  import type { LookupMarketplaceReturn } from '../_internal/api/builder.gen';
13
+ import { persistentQueryMeta } from '../_internal/query-meta';
12
14
 
13
15
  export const fetchMarketplaceConfig = async ({
14
16
  config,
@@ -34,7 +36,10 @@ export const fetchMarketplaceConfig = async ({
34
36
  return {
35
37
  ...collection,
36
38
  contractType: collection.contractType as ContractType,
37
- marketplaceType: 'market',
39
+ destinationMarketplace:
40
+ collection.destinationMarketplace as OrderbookKind,
41
+ itemsAddress: collection.itemsAddress as Address,
42
+ cardType: 'market',
38
43
  } satisfies MarketCollection;
39
44
  });
40
45
 
@@ -42,7 +47,9 @@ export const fetchMarketplaceConfig = async ({
42
47
  (collection) => {
43
48
  return {
44
49
  ...collection,
45
- marketplaceType: 'shop',
50
+ itemsAddress: collection.itemsAddress as Address,
51
+ saleAddress: collection.saleAddress as Address,
52
+ cardType: 'shop',
46
53
  } satisfies ShopCollection;
47
54
  },
48
55
  );
@@ -100,5 +107,11 @@ export const marketplaceConfigOptions = (config: SdkConfig) => {
100
107
  config,
101
108
  prefetchedMarketplaceSettings,
102
109
  }),
110
+ gcTime: Number.POSITIVE_INFINITY,
111
+ staleTime: Number.POSITIVE_INFINITY,
112
+ refetchOnMount: false,
113
+ refetchOnReconnect: false,
114
+ refetchOnWindowFocus: false,
115
+ meta: persistentQueryMeta,
103
116
  });
104
117
  };
@@ -53,7 +53,7 @@ export const listPrimarySaleItemsQueryOptions = (
53
53
  );
54
54
 
55
55
  type PageParam = { page: number; pageSize: number };
56
- const initialPage: PageParam = { page: 1, pageSize: 30 };
56
+ const initialPage: PageParam = params.page || { page: 1, pageSize: 30 };
57
57
 
58
58
  return infiniteQueryOptions({
59
59
  queryKey: ['listPrimarySaleItems', params],
@@ -71,12 +71,7 @@ export const listPrimarySaleItemsQueryOptions = (
71
71
  },
72
72
  initialPageParam: initialPage,
73
73
  getNextPageParam: (lastPage) =>
74
- lastPage.page?.more
75
- ? {
76
- page: (lastPage.page?.page || 1) + 1,
77
- pageSize: lastPage.page?.pageSize || 30,
78
- }
79
- : undefined,
74
+ lastPage.page?.more ? lastPage.page : undefined,
80
75
  ...params.query,
81
76
  enabled,
82
77
  });
@@ -0,0 +1,87 @@
1
+ import type {
2
+ Filter,
3
+ Page,
4
+ SearchTokenMetadataReturn,
5
+ } from '@0xsequence/metadata';
6
+ import { infiniteQueryOptions } from '@tanstack/react-query';
7
+ import type { SdkConfig } from '../../types';
8
+ import {
9
+ getMetadataClient,
10
+ tokenKeys,
11
+ type ValuesOptional,
12
+ } from '../_internal';
13
+ import type { StandardQueryOptions } from '../types/query';
14
+
15
+ export interface FetchSearchTokenMetadataParams {
16
+ chainId: number;
17
+ collectionAddress: string;
18
+ filter?: Filter;
19
+ page?: Page;
20
+ config: SdkConfig;
21
+ }
22
+
23
+ /**
24
+ * Fetches token metadata from the metadata API using search filters
25
+ */
26
+ export async function fetchSearchTokenMetadata(
27
+ params: FetchSearchTokenMetadataParams,
28
+ ): Promise<SearchTokenMetadataReturn> {
29
+ const { chainId, collectionAddress, filter, page, config } = params;
30
+ const metadataClient = getMetadataClient(config);
31
+
32
+ const response = await metadataClient.searchTokenMetadata({
33
+ chainID: chainId.toString(),
34
+ contractAddress: collectionAddress,
35
+ filter: filter ?? {},
36
+ page,
37
+ });
38
+
39
+ return {
40
+ tokenMetadata: response.tokenMetadata,
41
+ page: response.page,
42
+ };
43
+ }
44
+
45
+ export type SearchTokenMetadataQueryOptions =
46
+ ValuesOptional<FetchSearchTokenMetadataParams> & {
47
+ query?: StandardQueryOptions;
48
+ };
49
+
50
+ export function searchTokenMetadataQueryOptions(
51
+ params: SearchTokenMetadataQueryOptions,
52
+ ) {
53
+ const enabled = Boolean(
54
+ params.chainId &&
55
+ params.collectionAddress &&
56
+ params.config &&
57
+ (params.query?.enabled ?? true),
58
+ );
59
+
60
+ const initialPageParam = { page: 1, pageSize: 30 };
61
+
62
+ return infiniteQueryOptions({
63
+ queryKey: [...tokenKeys.metadata, 'search', params],
64
+ queryFn: ({ pageParam = initialPageParam }) =>
65
+ fetchSearchTokenMetadata({
66
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
67
+ chainId: params.chainId!,
68
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
69
+ collectionAddress: params.collectionAddress!,
70
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
71
+ filter: params.filter!,
72
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
73
+ config: params.config!,
74
+ page: pageParam,
75
+ }),
76
+ initialPageParam,
77
+ getNextPageParam: (lastPage) => {
78
+ if (!lastPage.page?.more) return undefined;
79
+ return {
80
+ page: (lastPage.page.page || 1) + 1,
81
+ pageSize: lastPage.page.pageSize || 20,
82
+ };
83
+ },
84
+ ...params.query,
85
+ enabled,
86
+ });
87
+ }
@@ -0,0 +1,85 @@
1
+ import { queryOptions, skipToken } from '@tanstack/react-query';
2
+ import type { Address } from 'viem';
3
+ import type { UseQueryParameters } from 'wagmi/query';
4
+ import type { SdkConfig } from '../../types';
5
+ import { collectableKeys, getIndexerClient, LaosAPI } from '../_internal';
6
+
7
+ export type UseTokenBalancesArgs = {
8
+ collectionAddress: Address;
9
+ userAddress: Address | undefined;
10
+ chainId: number;
11
+ isLaos721?: boolean;
12
+ includeMetadata?: boolean;
13
+ query?: UseQueryParameters;
14
+ };
15
+
16
+ /**
17
+ * Fetches the token balances for a user
18
+ *
19
+ * @param args - Arguments for the API call
20
+ * @param config - SDK configuration
21
+ * @returns The balance data
22
+ */
23
+ export async function fetchTokenBalances(
24
+ args: Omit<UseTokenBalancesArgs, 'userAddress'> & {
25
+ userAddress: Address;
26
+ },
27
+ config: SdkConfig,
28
+ ) {
29
+ if (args.isLaos721) {
30
+ const laosApi = new LaosAPI();
31
+ const response = await laosApi.getTokenBalances({
32
+ chainId: args.chainId.toString(),
33
+ contractAddress: args.collectionAddress,
34
+ accountAddress: args.userAddress,
35
+ includeMetadata: true,
36
+ });
37
+
38
+ return response.balances || [];
39
+ }
40
+
41
+ const indexerClient = getIndexerClient(args.chainId, config);
42
+ return indexerClient
43
+ .getTokenBalances({
44
+ accountAddress: args.userAddress,
45
+ contractAddress: args.collectionAddress,
46
+ includeMetadata: args.includeMetadata ?? false,
47
+ metadataOptions: {
48
+ verifiedOnly: true,
49
+ includeContracts: [args.collectionAddress],
50
+ },
51
+ })
52
+ .then((res) => res.balances || []);
53
+ }
54
+
55
+ /**
56
+ * Creates a tanstack query options object for the token balances query
57
+ *
58
+ * @param args - The query arguments
59
+ * @param config - SDK configuration
60
+ * @returns Query options configuration
61
+ */
62
+ export function tokenBalancesOptions(
63
+ args: UseTokenBalancesArgs,
64
+ config: SdkConfig,
65
+ ) {
66
+ const enabled =
67
+ !!args.userAddress &&
68
+ !!args.collectionAddress &&
69
+ (args.query?.enabled ?? true);
70
+
71
+ return queryOptions({
72
+ queryKey: [...collectableKeys.userBalances, args],
73
+ queryFn: enabled
74
+ ? () =>
75
+ fetchTokenBalances(
76
+ {
77
+ ...args,
78
+ // biome-ignore lint/style/noNonNullAssertion: this is guaranteed by the userAddress check above
79
+ userAddress: args.userAddress!,
80
+ },
81
+ config,
82
+ )
83
+ : skipToken,
84
+ });
85
+ }
@@ -1,5 +1,5 @@
1
- import type { GetTokenSuppliesArgs } from '@0xsequence/indexer';
2
- import { queryOptions } from '@tanstack/react-query';
1
+ import type { GetTokenSuppliesArgs, Page } from '@0xsequence/indexer';
2
+ import { infiniteQueryOptions } from '@tanstack/react-query';
3
3
  import type { SdkConfig } from '../../types';
4
4
  import {
5
5
  getIndexerClient,
@@ -7,7 +7,7 @@ import {
7
7
  tokenKeys,
8
8
  type ValuesOptional,
9
9
  } from '../_internal';
10
- import type { StandardQueryOptions } from '../types/query';
10
+ import type { StandardInfiniteQueryOptions } from '../types/query';
11
11
 
12
12
  export interface FetchTokenSuppliesParams
13
13
  extends Omit<GetTokenSuppliesArgs, 'contractAddress'> {
@@ -15,6 +15,7 @@ export interface FetchTokenSuppliesParams
15
15
  collectionAddress: string;
16
16
  config: SdkConfig;
17
17
  isLaos721?: boolean;
18
+ page?: Page;
18
19
  }
19
20
 
20
21
  /**
@@ -61,7 +62,7 @@ export async function fetchTokenSupplies(params: FetchTokenSuppliesParams) {
61
62
 
62
63
  export type TokenSuppliesQueryOptions =
63
64
  ValuesOptional<FetchTokenSuppliesParams> & {
64
- query?: StandardQueryOptions;
65
+ query?: StandardInfiniteQueryOptions;
65
66
  };
66
67
 
67
68
  export function tokenSuppliesQueryOptions(params: TokenSuppliesQueryOptions) {
@@ -72,21 +73,28 @@ export function tokenSuppliesQueryOptions(params: TokenSuppliesQueryOptions) {
72
73
  (params.query?.enabled ?? true),
73
74
  );
74
75
 
75
- return queryOptions({
76
+ const initialPageParam = { page: 1, pageSize: 30 } as Page;
77
+
78
+ const queryFn = async ({ pageParam = initialPageParam }) =>
79
+ fetchTokenSupplies({
80
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
81
+ chainId: params.chainId!,
82
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
83
+ collectionAddress: params.collectionAddress!,
84
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
85
+ config: params.config!,
86
+ isLaos721: params.isLaos721,
87
+ includeMetadata: params.includeMetadata,
88
+ metadataOptions: params.metadataOptions,
89
+ page: pageParam,
90
+ });
91
+
92
+ return infiniteQueryOptions({
76
93
  queryKey: [...tokenKeys.supplies, params],
77
- queryFn: () =>
78
- fetchTokenSupplies({
79
- // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
80
- chainId: params.chainId!,
81
- // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
82
- collectionAddress: params.collectionAddress!,
83
- // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
84
- config: params.config!,
85
- isLaos721: params.isLaos721,
86
- includeMetadata: params.includeMetadata,
87
- metadataOptions: params.metadataOptions,
88
- page: params.page,
89
- }),
94
+ queryFn,
95
+ initialPageParam,
96
+ getNextPageParam: (lastPage) =>
97
+ lastPage.page?.more ? lastPage.page : undefined,
90
98
  ...params.query,
91
99
  enabled,
92
100
  });
@@ -7,6 +7,7 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
7
7
  "collections": [
8
8
  {
9
9
  "bannerUrl": "https://example.com/market-banner.png",
10
+ "cardType": "market",
10
11
  "chainId": 1,
11
12
  "contractType": "ERC721",
12
13
  "createdAt": "2025-03-16T13:04:16.098Z",
@@ -31,12 +32,13 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
31
32
  },
32
33
  "id": 1,
33
34
  "itemsAddress": "0x0000000000000000000000000000000000000000",
34
- "marketplaceType": "market",
35
+ "private": false,
35
36
  "projectId": 1,
36
37
  "updatedAt": "2025-03-16T13:04:16.098Z",
37
38
  },
38
39
  {
39
40
  "bannerUrl": "https://example.com/collection-banner.png",
41
+ "cardType": "market",
40
42
  "chainId": 137,
41
43
  "contractType": "ERC1155",
42
44
  "createdAt": "2025-03-16T13:04:16.098Z",
@@ -65,7 +67,7 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
65
67
  },
66
68
  "id": 2,
67
69
  "itemsAddress": "0x1234567890123456789012345678901234567890",
68
- "marketplaceType": "market",
70
+ "private": false,
69
71
  "projectId": 1,
70
72
  "updatedAt": "2025-03-16T13:04:16.098Z",
71
73
  },
@@ -103,12 +105,14 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
103
105
  "collections": [
104
106
  {
105
107
  "bannerUrl": "https://example.com/shop-banner.png",
108
+ "cardType": "shop",
106
109
  "chainId": 1,
107
110
  "createdAt": "2025-03-16T13:04:16.098Z",
111
+ "customTokenIds": [],
108
112
  "id": 1,
109
113
  "itemsAddress": "0x0000000000000000000000000000000000000000",
110
- "marketplaceType": "shop",
111
114
  "name": "Mock Shop Collection",
115
+ "private": false,
112
116
  "projectId": 1,
113
117
  "saleAddress": "0x0000000000000000000000000000000000000000",
114
118
  "saleBannerUrl": "https://example.com/shop-sale-banner.png",
@@ -121,12 +125,14 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
121
125
  },
122
126
  {
123
127
  "bannerUrl": "https://example.com/polygon-shop-banner.png",
128
+ "cardType": "shop",
124
129
  "chainId": 137,
125
130
  "createdAt": "2025-03-16T13:04:16.098Z",
131
+ "customTokenIds": [],
126
132
  "id": 2,
127
133
  "itemsAddress": "0x1234567890123456789012345678901234567890",
128
- "marketplaceType": "shop",
129
134
  "name": "Polygon Shop Collection",
135
+ "private": false,
130
136
  "projectId": 1,
131
137
  "saleAddress": "0x1234567890123456789012345678901234567890",
132
138
  "saleBannerUrl": "https://example.com/polygon-shop-sale-banner.png",
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import type { SdkConfig } from '../../../types';
2
+ import type { SdkConfig } from '../../../types/index';
3
3
  import { createSSRClient } from '../create-ssr-client';
4
4
 
5
5
  const wagmiCookie =
@@ -0,0 +1,296 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { expect, fn, userEvent, within } from 'storybook/test';
3
+ import { defaultHandlers } from '../../../../../../test/handlers';
4
+ import {
5
+ CollectibleCardAction,
6
+ MarketplaceKind,
7
+ OrderbookKind,
8
+ OrderSide,
9
+ OrderStatus,
10
+ } from '../../../../../types';
11
+ import { ActionButton } from './ActionButton';
12
+
13
+ const meta: Meta<typeof ActionButton> = {
14
+ title: 'Internals/Action Button',
15
+ component: ActionButton,
16
+ parameters: {
17
+ layout: 'centered',
18
+ docs: {
19
+ description: {
20
+ component: `
21
+ The ActionButton component handles different actions for collectibles in both marketplace and shop contexts. It automatically determines whether to show owner or non-owner actions based on ownership and other conditions.
22
+
23
+ ## Manual Testing
24
+
25
+ **Test the modals by clicking the action buttons:**
26
+
27
+ 1. **Buy Action** - Opens buy modal for marketplace listings
28
+ 2. **Make Offer** - Opens offer modal for making offers on collectibles
29
+ 3. **Sell (Accept Offer)** - Opens sell modal to accept existing offers
30
+ 4. **Create Listing** - Opens listing modal to create new listings
31
+ 5. **Transfer** - Opens transfer modal to transfer collectibles
32
+ 6. **Shop Buy** - Opens buy modal for shop-based purchases
33
+
34
+ Each button click should open the corresponding modal. The modals are fully functional with all providers configured.
35
+
36
+ ## MSW Integration
37
+
38
+ All stories now use Mock Service Worker (MSW) to mock API requests, ensuring the components work with realistic data without requiring a backend server.
39
+ `,
40
+ },
41
+ },
42
+ // Use the pre-composed success handlers for all stories by default
43
+ msw: {
44
+ handlers: defaultHandlers.success,
45
+ },
46
+ },
47
+ argTypes: {
48
+ chainId: {
49
+ control: 'number',
50
+ description: 'Blockchain chain ID',
51
+ },
52
+ collectionAddress: {
53
+ control: 'text',
54
+ description: 'Collection contract address',
55
+ },
56
+ tokenId: {
57
+ control: 'text',
58
+ description: 'Token ID of the collectible',
59
+ },
60
+ action: {
61
+ control: 'select',
62
+ options: Object.values(CollectibleCardAction),
63
+ description: 'The action to display',
64
+ },
65
+ owned: {
66
+ control: 'boolean',
67
+ description: 'Whether the user owns this collectible',
68
+ },
69
+ cardType: {
70
+ control: 'select',
71
+ options: ['market', 'shop', 'inventory-non-tradable'],
72
+ description: 'Type of marketplace (market or shop)',
73
+ },
74
+ onCannotPerformAction: {
75
+ action: 'cannot perform action',
76
+ description: 'Callback when user cannot perform the action',
77
+ },
78
+ },
79
+ decorators: [
80
+ (Story) => (
81
+ <div style={{ padding: '1rem', width: '300px' }}>
82
+ <Story />
83
+ </div>
84
+ ),
85
+ ],
86
+ };
87
+
88
+ export default meta;
89
+ type Story = StoryObj<typeof ActionButton>;
90
+
91
+ // Mock data
92
+ const MOCK_ADDRESS = '0x1234567890123456789012345678901234567890' as const;
93
+ const MOCK_ORDER = {
94
+ orderId: 'order-123',
95
+ marketplace: MarketplaceKind.sequence_marketplace_v1,
96
+ side: OrderSide.listing,
97
+ status: OrderStatus.active,
98
+ chainId: 1,
99
+ originName: 'Mock Origin',
100
+ collectionContractAddress: MOCK_ADDRESS,
101
+ tokenId: '123',
102
+ createdBy: MOCK_ADDRESS,
103
+ priceAmount: '1000000000000000000',
104
+ priceAmountFormatted: '1.0',
105
+ priceAmountNet: '950000000000000000',
106
+ priceAmountNetFormatted: '0.95',
107
+ priceCurrencyAddress: '0x0000000000000000000000000000000000000000',
108
+ priceDecimals: 18,
109
+ priceUSD: 1000,
110
+ priceUSDFormatted: '$1,000.00',
111
+ quantityInitial: '1',
112
+ quantityInitialFormatted: '1',
113
+ quantityRemaining: '1',
114
+ quantityRemainingFormatted: '1',
115
+ quantityAvailable: '1',
116
+ quantityAvailableFormatted: '1',
117
+ quantityDecimals: 0,
118
+ feeBps: 500,
119
+ feeBreakdown: [],
120
+ validFrom: '2024-01-01T00:00:00Z',
121
+ validUntil: '2024-12-31T23:59:59Z',
122
+ blockNumber: 12345678,
123
+ orderCreatedAt: '2024-01-01T00:00:00Z',
124
+ orderUpdatedAt: '2024-01-01T00:00:00Z',
125
+ createdAt: '2024-01-01T00:00:00Z',
126
+ updatedAt: '2024-01-01T00:00:00Z',
127
+ };
128
+
129
+ export const OfferAction: Story = {
130
+ args: {
131
+ chainId: 1,
132
+ collectionAddress: MOCK_ADDRESS,
133
+ tokenId: '123',
134
+ action: CollectibleCardAction.OFFER,
135
+ owned: false,
136
+ cardType: 'market',
137
+ orderbookKind: OrderbookKind.sequence_marketplace_v1,
138
+ onCannotPerformAction: fn(),
139
+ },
140
+ play: async ({ canvasElement }) => {
141
+ const canvas = within(canvasElement);
142
+ const body = within(document.body);
143
+
144
+ await new Promise((resolve) => setTimeout(resolve, 500));
145
+
146
+ const button = canvas.getByText('Make an offer');
147
+ await userEvent.click(button);
148
+ await new Promise((resolve) => setTimeout(resolve, 500));
149
+
150
+ const modal = body.getByText('Enter price');
151
+ await expect(modal).toBeInTheDocument();
152
+ },
153
+ };
154
+
155
+ export const SellAction: Story = {
156
+ args: {
157
+ chainId: 1,
158
+ collectionAddress: MOCK_ADDRESS,
159
+ tokenId: '123',
160
+ action: CollectibleCardAction.SELL,
161
+ owned: true,
162
+ cardType: 'market',
163
+ highestOffer: {
164
+ ...MOCK_ORDER,
165
+ side: OrderSide.offer,
166
+ status: OrderStatus.active,
167
+ },
168
+ orderbookKind: OrderbookKind.sequence_marketplace_v1,
169
+ },
170
+ play: async ({ canvasElement }) => {
171
+ const canvas = within(canvasElement);
172
+ const body = within(document.body);
173
+
174
+ await new Promise((resolve) => setTimeout(resolve, 500));
175
+
176
+ const button = canvas.getByText('Sell');
177
+ await userEvent.click(button);
178
+ await new Promise((resolve) => setTimeout(resolve, 500));
179
+
180
+ const modal = body.getByText('Offer received');
181
+ await expect(modal).toBeInTheDocument();
182
+ },
183
+ };
184
+
185
+ export const ListAction: Story = {
186
+ args: {
187
+ chainId: 1,
188
+ collectionAddress: MOCK_ADDRESS,
189
+ tokenId: '123',
190
+ action: CollectibleCardAction.LIST,
191
+ owned: true,
192
+ cardType: 'market',
193
+ orderbookKind: OrderbookKind.sequence_marketplace_v1,
194
+ },
195
+ play: async ({ canvasElement }) => {
196
+ const canvas = within(canvasElement);
197
+ const body = within(document.body);
198
+
199
+ await new Promise((resolve) => setTimeout(resolve, 500));
200
+
201
+ const button = canvas.getByText('Create listing');
202
+ await userEvent.click(button);
203
+ await new Promise((resolve) => setTimeout(resolve, 500));
204
+
205
+ const modal = body.getByText('Enter price');
206
+ await expect(modal).toBeInTheDocument();
207
+ },
208
+ };
209
+
210
+ export const TransferAction: Story = {
211
+ args: {
212
+ chainId: 1,
213
+ collectionAddress: MOCK_ADDRESS,
214
+ tokenId: '123',
215
+ action: CollectibleCardAction.TRANSFER,
216
+ owned: true,
217
+ cardType: 'market',
218
+ },
219
+ play: async ({ canvasElement }) => {
220
+ const canvas = within(canvasElement);
221
+ const body = within(document.body);
222
+
223
+ await new Promise((resolve) => setTimeout(resolve, 500));
224
+
225
+ const button = canvas.getByText('Transfer');
226
+ await userEvent.click(button);
227
+ await new Promise((resolve) => setTimeout(resolve, 500));
228
+
229
+ const modal = body.getByText('Wallet address');
230
+ await expect(modal).toBeInTheDocument();
231
+ },
232
+ };
233
+
234
+ export const ShopBuyAction: Story = {
235
+ args: {
236
+ chainId: 1,
237
+ collectionAddress: MOCK_ADDRESS,
238
+ tokenId: '123',
239
+ action: CollectibleCardAction.BUY,
240
+ owned: false,
241
+ cardType: 'shop',
242
+ salesContractAddress: MOCK_ADDRESS,
243
+ salePrice: {
244
+ amount: '1000000000000000000',
245
+ currencyAddress: '0x0000000000000000000000000000000000000000',
246
+ },
247
+ quantityDecimals: 0,
248
+ quantityRemaining: 100,
249
+ unlimitedSupply: false,
250
+ onCannotPerformAction: fn(),
251
+ },
252
+ play: async ({ canvasElement }) => {
253
+ const canvas = within(canvasElement);
254
+ const body = within(document.body);
255
+
256
+ await new Promise((resolve) => setTimeout(resolve, 500));
257
+
258
+ const button = canvas.getByText('Buy now');
259
+ await userEvent.click(button);
260
+ await new Promise((resolve) => setTimeout(resolve, 500));
261
+
262
+ const modal = body.getByText('Select Quantity');
263
+ await expect(modal).toBeInTheDocument();
264
+ },
265
+ };
266
+
267
+ export const MarketBuyAction: Story = {
268
+ args: {
269
+ chainId: 1,
270
+ collectionAddress: MOCK_ADDRESS,
271
+ tokenId: '123',
272
+ action: CollectibleCardAction.BUY,
273
+ owned: false,
274
+ cardType: 'market',
275
+ lowestListing: {
276
+ ...MOCK_ORDER,
277
+ side: OrderSide.listing,
278
+ status: OrderStatus.active,
279
+ },
280
+ orderbookKind: OrderbookKind.sequence_marketplace_v1,
281
+ onCannotPerformAction: fn(),
282
+ },
283
+ play: async ({ canvasElement }) => {
284
+ const canvas = within(canvasElement);
285
+ const body = within(document.body);
286
+
287
+ await new Promise((resolve) => setTimeout(resolve, 500));
288
+
289
+ const button = canvas.getByText('Buy now');
290
+ await userEvent.click(button);
291
+ await new Promise((resolve) => setTimeout(resolve, 500));
292
+
293
+ const modal = body.getByText('Select Quantity');
294
+ await expect(modal).toBeInTheDocument();
295
+ },
296
+ };