@0xsequence/marketplace-sdk 0.10.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 (468) hide show
  1. package/.storybook/ConnectionStatus.tsx +289 -0
  2. package/.storybook/main.ts +20 -1
  3. package/.storybook/preview.tsx +106 -0
  4. package/CHANGELOG.md +58 -0
  5. package/compile-tailwind.js +54 -0
  6. package/dist/{CalendarIcon-CqsuAuCm.js → BellIcon-Cb9YEUzJ.js} +76 -29
  7. package/dist/BellIcon-Cb9YEUzJ.js.map +1 -0
  8. package/dist/CollectibleCard-CYyWzk6u.d.ts +8 -0
  9. package/dist/{_internal-C75gOSNo.js → _internal-DslqcNC1.js} +10 -2
  10. package/dist/_internal-DslqcNC1.js.map +1 -0
  11. package/dist/{alien_swap-CYv6YlOF.js → alien_swap-DJ98gZQp.js} +1 -1
  12. package/dist/{alien_swap-CYv6YlOF.js.map → alien_swap-DJ98gZQp.js.map} +1 -1
  13. package/dist/{api-BiMGqWdz.js → api-BmEQfSQa.js} +24 -4
  14. package/dist/api-BmEQfSQa.js.map +1 -0
  15. package/dist/{aqua-xyz-Bzn5baeH.js → aqua-xyz-n1PcCCZ0.js} +1 -1
  16. package/dist/{aqua-xyz-Bzn5baeH.js.map → aqua-xyz-n1PcCCZ0.js.map} +1 -1
  17. package/dist/{aura-DzIWh8WT.js → aura-Bevk_YkS.js} +1 -1
  18. package/dist/{aura-DzIWh8WT.js.map → aura-Bevk_YkS.js.map} +1 -1
  19. package/dist/{blur-DSH-Cbpj.js → blur-B5sHErx5.js} +1 -1
  20. package/dist/{blur-DSH-Cbpj.js.map → blur-B5sHErx5.js.map} +1 -1
  21. package/dist/builder-api-BFuZNOaN.js.map +1 -1
  22. package/dist/builder.gen-B9wR2nvF.js.map +1 -1
  23. package/dist/{coinbase-Df8URNxq.js → coinbase-D30W-lxA.js} +1 -1
  24. package/dist/{coinbase-Df8URNxq.js.map → coinbase-D30W-lxA.js.map} +1 -1
  25. package/dist/contracts-DPHFT2TA.js +97 -0
  26. package/dist/contracts-DPHFT2TA.js.map +1 -0
  27. package/dist/{create-config-fQ-jbJD1.js → create-config-6uynwTeb.js} +2 -2
  28. package/dist/create-config-6uynwTeb.js.map +1 -0
  29. package/dist/{create-config-DKJ-F0jc.d.ts → create-config-lLSrnkbb.d.ts} +253 -226
  30. package/dist/{element-Cx6uJu5N.js → element-C2NJexro.js} +1 -1
  31. package/dist/{element-Cx6uJu5N.js.map → element-C2NJexro.js.map} +1 -1
  32. package/dist/filters-B8XS4tFH.d.ts +31 -0
  33. package/dist/{foundation-D6U4aRLN.js → foundation-QgY1lvUj.js} +1 -1
  34. package/dist/{foundation-D6U4aRLN.js.map → foundation-QgY1lvUj.js.map} +1 -1
  35. package/dist/index-BGJXqdg6.d.ts +131 -0
  36. package/dist/index-BuY_NKSX.d.ts +222 -0
  37. package/dist/{index-BhVFc2rX.d.ts → index-ByW08-Z7.d.ts} +4 -4
  38. package/dist/index-C7xKVIr4.d.ts +447 -0
  39. package/dist/index-CIkpYltz.d.ts +61 -0
  40. package/dist/index-CQnGIGb5.d.ts +346 -0
  41. package/dist/{index-CUwMH7Ht.d.ts → index-CY5UEX4h.d.ts} +2 -2
  42. package/dist/{index-C5aqo8xu.d.ts → index-ChSKFOMx.d.ts} +1 -1
  43. package/dist/{index-BAhaEfqY.d.ts → index-CtF7EE2z.d.ts} +1 -1
  44. package/dist/index-D2HohSwO.d.ts +293 -0
  45. package/dist/index-D71J5Ghd.d.ts +813 -0
  46. package/dist/{index-CKrYP7ot.d.ts → index-DNU9xoGK.d.ts} +14 -22
  47. package/dist/index-DX0Vm8HY.d.ts +2541 -0
  48. package/dist/index-DonXiSg2.d.ts +902 -0
  49. package/dist/index-Dpyp7fQz.d.ts +298 -0
  50. package/dist/index-PSPpUxCE.d.ts +18 -0
  51. package/dist/{index-136YrWDH.d.ts → index-QxxS6f9r.d.ts} +1 -1
  52. package/dist/index-ThUIs-Sy.d.ts +306 -0
  53. package/dist/index.d.ts +8 -8
  54. package/dist/index.js +12 -13
  55. package/dist/listCollectiblesPaginated--AgXjajA.d.ts +166 -0
  56. package/dist/listCollections-Bbzbz7qW.d.ts +624 -0
  57. package/dist/{looks-rare-ChBRBY-p.js → looks-rare-CMVPny4v.js} +1 -1
  58. package/dist/{looks-rare-ChBRBY-p.js.map → looks-rare-CMVPny4v.js.map} +1 -1
  59. package/dist/lowestListing-BQHfQpfg.d.ts +144 -0
  60. package/dist/{magic-eden-D5U7N1xL.js → magic-eden-IrWp2ZXk.js} +1 -1
  61. package/dist/{magic-eden-D5U7N1xL.js.map → magic-eden-IrWp2ZXk.js.map} +1 -1
  62. package/dist/{manifold-CtLF52zU.js → manifold-DeOE-p2G.js} +1 -1
  63. package/dist/{manifold-CtLF52zU.js.map → manifold-DeOE-p2G.js.map} +1 -1
  64. package/dist/marketCurrencies-CmOMCCOr.d.ts +122 -0
  65. package/dist/{marketplace-DmFiyBoS.js → marketplace-B5Z8G03R.js} +1 -1
  66. package/dist/{marketplace-DmFiyBoS.js.map → marketplace-B5Z8G03R.js.map} +1 -1
  67. package/dist/{marketplace-logos-Cd6W-qOq.js → marketplace-logos-D8t86gsW.js} +21 -21
  68. package/dist/{marketplace-logos-Cd6W-qOq.js.map → marketplace-logos-D8t86gsW.js.map} +1 -1
  69. package/dist/{marketplace.gen-HpnpL5xU.js → marketplace.gen-JzNYpM0U.js} +1 -1
  70. package/dist/{marketplace.gen-HpnpL5xU.js.map → marketplace.gen-JzNYpM0U.js.map} +1 -1
  71. package/dist/{marketplaceConfig-GQTTmihy.js → marketplaceConfig-sNh-MA5M.js} +14 -3
  72. package/dist/marketplaceConfig-sNh-MA5M.js.map +1 -0
  73. package/dist/{mintify-Bi3Bce68.js → mintify-DG3GrljJ.js} +1 -1
  74. package/dist/{mintify-Bi3Bce68.js.map → mintify-DG3GrljJ.js.map} +1 -1
  75. package/dist/{network-CGD0oKtS.js → network-DnBEe1Ur.js} +2 -2
  76. package/dist/{network-CGD0oKtS.js.map → network-DnBEe1Ur.js.map} +1 -1
  77. package/dist/{nftx-BDQZjtkX.js → nftx-B3LH-ZYM.js} +1 -1
  78. package/dist/{nftx-BDQZjtkX.js.map → nftx-B3LH-ZYM.js.map} +1 -1
  79. package/dist/{okx-D4meadLe.js → okx-CRFLrT3Z.js} +1 -1
  80. package/dist/{okx-D4meadLe.js.map → okx-CRFLrT3Z.js.map} +1 -1
  81. package/dist/{open-sea-DN0hgfVw.js → open-sea-cOpfl366.js} +1 -1
  82. package/dist/{open-sea-DN0hgfVw.js.map → open-sea-cOpfl366.js.map} +1 -1
  83. package/dist/primary-sale-CLjXRrDj.js +3048 -0
  84. package/dist/primary-sale-CLjXRrDj.js.map +1 -0
  85. package/dist/queries-BYT4GJw3.js +1478 -0
  86. package/dist/queries-BYT4GJw3.js.map +1 -0
  87. package/dist/query-BTe7Wkrs.d.ts +31 -0
  88. package/dist/{rarible-B0xlD88A.js → rarible-guwUx4cn.js} +1 -1
  89. package/dist/{rarible-B0xlD88A.js.map → rarible-guwUx4cn.js.map} +1 -1
  90. package/dist/react/_internal/api/index.d.ts +1 -1
  91. package/dist/react/_internal/api/index.js +4 -6
  92. package/dist/react/_internal/databeat/index.d.ts +1 -1
  93. package/dist/react/_internal/databeat/index.js +24 -4
  94. package/dist/react/_internal/index.d.ts +1 -1
  95. package/dist/react/_internal/index.js +7 -10
  96. package/dist/react/_internal/wagmi/index.d.ts +1 -1
  97. package/dist/react/_internal/wagmi/index.js +3 -4
  98. package/dist/react/hooks/config/index.d.ts +9 -0
  99. package/dist/react/hooks/config/index.js +26 -0
  100. package/dist/react/hooks/contracts/index.d.ts +7 -0
  101. package/dist/react/hooks/contracts/index.js +16 -0
  102. package/dist/react/hooks/data/collectibles/index.d.ts +5 -0
  103. package/dist/react/hooks/data/collectibles/index.js +26 -0
  104. package/dist/react/hooks/data/collections/index.d.ts +11 -0
  105. package/dist/react/hooks/data/collections/index.js +26 -0
  106. package/dist/react/hooks/data/index.d.ts +29 -0
  107. package/dist/react/hooks/data/index.js +26 -0
  108. package/dist/react/hooks/data/inventory/index.d.ts +29 -0
  109. package/dist/react/hooks/data/inventory/index.js +26 -0
  110. package/dist/react/hooks/data/market/index.d.ts +12 -0
  111. package/dist/react/hooks/data/market/index.js +26 -0
  112. package/dist/react/hooks/data/orders/index.d.ts +11 -0
  113. package/dist/react/hooks/data/orders/index.js +26 -0
  114. package/dist/react/hooks/data/primary-sales/index.d.ts +29 -0
  115. package/dist/react/hooks/data/primary-sales/index.js +26 -0
  116. package/dist/react/hooks/data/tokens/index.d.ts +5 -0
  117. package/dist/react/hooks/data/tokens/index.js +26 -0
  118. package/dist/react/hooks/index.d.ts +29 -13
  119. package/dist/react/hooks/index.js +22 -23
  120. package/dist/react/hooks/transactions/index.d.ts +3 -0
  121. package/dist/react/hooks/transactions/index.js +26 -0
  122. package/dist/react/hooks/ui/index.d.ts +5 -0
  123. package/dist/react/hooks/ui/index.js +26 -0
  124. package/dist/react/hooks/utils/index.d.ts +29 -0
  125. package/dist/react/hooks/utils/index.js +26 -0
  126. package/dist/react/index.d.ts +29 -13
  127. package/dist/react/index.js +22 -28
  128. package/dist/react/queries/index.d.ts +16 -9
  129. package/dist/react/queries/index.js +17 -20
  130. package/dist/react/ssr/index.d.ts +7 -7
  131. package/dist/react/ssr/index.js +8 -11
  132. package/dist/react/ssr/index.js.map +1 -1
  133. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +4 -3
  134. package/dist/react/ui/components/marketplace-collectible-card/index.js +21 -27
  135. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -2
  136. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +8 -11
  137. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  138. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  139. package/dist/react/ui/icons/index.js +11 -13
  140. package/dist/react/ui/index.d.ts +4 -3
  141. package/dist/react/ui/index.js +21 -27
  142. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +3 -27
  143. package/dist/react/ui/modals/_internal/components/actionModal/index.js +22 -24
  144. package/dist/react/utils/index.d.ts +19 -0
  145. package/dist/react/utils/index.js +9 -0
  146. package/dist/{react-DeDyTgo7.css → react-CbqXKOpt.css} +1 -1
  147. package/dist/{react-DeDyTgo7.css.map → react-CbqXKOpt.css.map} +1 -1
  148. package/dist/react-Ceq8mamy.js +12494 -0
  149. package/dist/react-Ceq8mamy.js.map +1 -0
  150. package/dist/{sequence-BIrOVRXO.js → sequence-Dt2Xo7Fa.js} +1 -1
  151. package/dist/{sequence-BIrOVRXO.js.map → sequence-Dt2Xo7Fa.js.map} +1 -1
  152. package/dist/{index.css → styles/index.css} +270 -131
  153. package/dist/{sudo-swap-BPMon-M5.js → sudo-swap-CGoARONs.js} +1 -1
  154. package/dist/{sudo-swap-BPMon-M5.js.map → sudo-swap-CGoARONs.js.map} +1 -1
  155. package/dist/{super-rare-kPN6Ua8i.js → super-rare-NeQtZjcn.js} +1 -1
  156. package/dist/{super-rare-kPN6Ua8i.js.map → super-rare-NeQtZjcn.js.map} +1 -1
  157. package/dist/{token-CHSBPYVG.js → token-D9gZVqbX.js} +1 -1
  158. package/dist/{token-CHSBPYVG.js.map → token-D9gZVqbX.js.map} +1 -1
  159. package/dist/tokenSupplies-DXtkRYNO.d.ts +147 -0
  160. package/dist/{transaction-CnctdNzS.js → transaction-CC2KxNF6.js} +21 -18
  161. package/dist/transaction-CC2KxNF6.js.map +1 -0
  162. package/dist/types/index.d.ts +1 -1
  163. package/dist/types/index.js +2 -2
  164. package/dist/{CollectibleCard-Dd-CG6dE.d.ts → types-BlCa0TVE.d.ts} +5 -8
  165. package/dist/{types-Yw2ywj6j.js → types-G2PWxiJR.js} +1 -1
  166. package/dist/{types-Yw2ywj6j.js.map → types-G2PWxiJR.js.map} +1 -1
  167. package/dist/utils/abi/index.d.ts +5 -5
  168. package/dist/utils/abi/index.js +5 -5
  169. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  170. package/dist/utils/abi/marketplace/index.js +1 -1
  171. package/dist/utils/abi/primary-sale/index.d.ts +2 -2
  172. package/dist/utils/abi/primary-sale/index.js +2 -2
  173. package/dist/utils/abi/token/index.d.ts +1 -1
  174. package/dist/utils/abi/token/index.js +1 -1
  175. package/dist/utils/index.d.ts +7 -7
  176. package/dist/utils/index.js +11 -12
  177. package/dist/{utils-9RXDgcBl.js → utils-CKJd-CRf.js} +3 -3
  178. package/dist/{utils-9RXDgcBl.js.map → utils-CKJd-CRf.js.map} +1 -1
  179. package/dist/{utils-DjVJ9tov.js → utils-wquIhK6T.js} +2 -2
  180. package/dist/{utils-DjVJ9tov.js.map → utils-wquIhK6T.js.map} +1 -1
  181. package/dist/waitForTransactionReceipt-DZxAuR9N.js +27 -0
  182. package/dist/waitForTransactionReceipt-DZxAuR9N.js.map +1 -0
  183. package/dist/{x2y2-BLz-_Q2O.js → x2y2-CQdg24VP.js} +1 -1
  184. package/dist/{x2y2-BLz-_Q2O.js.map → x2y2-CQdg24VP.js.map} +1 -1
  185. package/dist/{zora-UGhKs-aL.js → zora-DdEydy4L.js} +1 -1
  186. package/dist/{zora-UGhKs-aL.js.map → zora-DdEydy4L.js.map} +1 -1
  187. package/package.json +44 -41
  188. package/postcss.config.mjs +72 -5
  189. package/public/mockServiceWorker.js +344 -0
  190. package/src/react/_internal/api/__mocks__/builder.msw.ts +6 -0
  191. package/src/react/_internal/api/__mocks__/metadata.msw.ts +12 -1
  192. package/src/react/_internal/api/builder.gen.ts +11 -7
  193. package/src/react/_internal/databeat/index.ts +1 -1
  194. package/src/react/_internal/databeat/types.ts +1 -0
  195. package/src/react/_internal/query-meta.ts +3 -0
  196. package/src/react/_internal/utils.ts +2 -0
  197. package/src/react/_internal/wagmi/create-config.ts +1 -1
  198. package/src/react/_internal/wagmi/get-connectors.ts +1 -1
  199. package/src/react/hooks/{__tests__ → config}/__snapshots__/useMarketplaceConfig.test.tsx.snap +6 -0
  200. package/src/react/hooks/config/index.ts +3 -0
  201. package/src/react/hooks/{useConfig.tsx → config/useConfig.tsx} +2 -2
  202. package/src/react/hooks/config/useConnectorMetadata.tsx +16 -0
  203. package/src/react/hooks/{__tests__ → config}/useMarketplaceConfig.test.tsx +1 -1
  204. package/src/react/hooks/{useMarketplaceConfig.tsx → config/useMarketplaceConfig.tsx} +2 -2
  205. package/src/react/hooks/contracts/index.ts +1 -0
  206. package/src/react/hooks/contracts/useSalesContractABI.ts +174 -0
  207. package/src/react/hooks/data/collectibles/index.ts +6 -0
  208. package/src/react/hooks/{__tests__ → data/collectibles}/useBalanceOfCollectible.laos.test.tsx +4 -4
  209. package/src/react/hooks/{__tests__ → data/collectibles}/useBalanceOfCollectible.test.tsx +2 -2
  210. package/src/react/hooks/{useBalanceOfCollectible.tsx → data/collectibles/useBalanceOfCollectible.tsx} +4 -4
  211. package/src/react/hooks/{__tests__ → data/collectibles}/useCollectible.test.tsx +3 -3
  212. package/src/react/hooks/{useCollectible.tsx → data/collectibles/useCollectible.tsx} +3 -3
  213. package/src/react/hooks/{__tests__ → data/collectibles}/useCountOfCollectables.test.tsx +4 -4
  214. package/src/react/hooks/{useCountOfCollectables.tsx → data/collectibles/useCountOfCollectables.tsx} +3 -3
  215. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectibleActivities.test.tsx +3 -3
  216. package/src/react/hooks/{useListCollectibleActivities.tsx → data/collectibles/useListCollectibleActivities.tsx} +3 -3
  217. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectibles.test.tsx +5 -6
  218. package/src/react/hooks/{useListCollectibles.tsx → data/collectibles/useListCollectibles.tsx} +3 -3
  219. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectiblesPaginated.test.tsx +4 -4
  220. package/src/react/hooks/{useListCollectiblesPaginated.tsx → data/collectibles/useListCollectiblesPaginated.tsx} +3 -3
  221. package/src/react/hooks/{__tests__ → data/collections}/__snapshots__/useListCollections.test.tsx.snap +10 -0
  222. package/src/react/hooks/data/collections/index.ts +6 -0
  223. package/src/react/hooks/{__tests__ → data/collections}/useCollection.test.tsx +2 -3
  224. package/src/react/hooks/{useCollection.tsx → data/collections/useCollection.tsx} +3 -3
  225. package/src/react/hooks/{__tests__ → data/collections}/useCollectionBalanceDetails.test.tsx +2 -2
  226. package/src/react/hooks/{useCollectionBalanceDetails.tsx → data/collections/useCollectionBalanceDetails.tsx} +3 -3
  227. package/src/react/hooks/{__tests__ → data/collections}/useCollectionDetails.test.tsx +2 -2
  228. package/src/react/hooks/{useCollectionDetails.ts → data/collections/useCollectionDetails.ts} +3 -3
  229. package/src/react/hooks/{__tests__ → data/collections}/useCollectionDetailsPolling.test.tsx +3 -3
  230. package/src/react/hooks/{useCollectionDetailsPolling.tsx → data/collections/useCollectionDetailsPolling.tsx} +4 -4
  231. package/src/react/hooks/{__tests__ → data/collections}/useListCollectionActivities.test.tsx +5 -5
  232. package/src/react/hooks/{useListCollectionActivities.tsx → data/collections/useListCollectionActivities.tsx} +3 -3
  233. package/src/react/hooks/{__tests__ → data/collections}/useListCollections.test.tsx +5 -4
  234. package/src/react/hooks/{useListCollections.tsx → data/collections/useListCollections.tsx} +4 -4
  235. package/src/react/hooks/data/index.ts +6 -0
  236. package/src/react/hooks/data/inventory/index.ts +1 -0
  237. package/src/react/hooks/{__tests__ → data/inventory}/useInventory.test.tsx +4 -4
  238. package/src/react/hooks/{useInventory.tsx → data/inventory/useInventory.tsx} +7 -4
  239. package/src/react/hooks/data/market/index.ts +3 -0
  240. package/src/react/hooks/{__tests__ → data/market}/useCurrency.test.tsx +4 -4
  241. package/src/react/hooks/{useCurrency.tsx → data/market/useCurrency.tsx} +3 -3
  242. package/src/react/hooks/{__tests__ → data/market}/useListMarketCardData.test.tsx +10 -14
  243. package/src/react/hooks/{useListMarketCardData.tsx → data/market/useListMarketCardData.tsx} +6 -6
  244. package/src/react/hooks/{__tests__ → data/market}/useMarketCurrencies.test.tsx +5 -5
  245. package/src/react/hooks/{useMarketCurrencies.tsx → data/market/useMarketCurrencies.tsx} +3 -3
  246. package/src/react/hooks/data/orders/index.ts +7 -0
  247. package/src/react/hooks/{__tests__ → data/orders}/useCountListingsForCollectible.test.tsx +2 -2
  248. package/src/react/hooks/{useCountListingsForCollectible.tsx → data/orders/useCountListingsForCollectible.tsx} +3 -3
  249. package/src/react/hooks/{__tests__ → data/orders}/useCountOffersForCollectible.test.tsx +2 -2
  250. package/src/react/hooks/{useCountOffersForCollectible.tsx → data/orders/useCountOffersForCollectible.tsx} +3 -3
  251. package/src/react/hooks/{__tests__ → data/orders}/useFloorOrder.test.tsx +3 -3
  252. package/src/react/hooks/{useFloorOrder.tsx → data/orders/useFloorOrder.tsx} +3 -3
  253. package/src/react/hooks/{__tests__ → data/orders}/useHighestOffer.test.tsx +3 -3
  254. package/src/react/hooks/{useHighestOffer.tsx → data/orders/useHighestOffer.tsx} +3 -3
  255. package/src/react/hooks/{__tests__ → data/orders}/useListListingsForCollectible.test.tsx +6 -6
  256. package/src/react/hooks/{useListListingsForCollectible.tsx → data/orders/useListListingsForCollectible.tsx} +3 -3
  257. package/src/react/hooks/{__tests__ → data/orders}/useListOffersForCollectible.test.tsx +5 -5
  258. package/src/react/hooks/{useListOffersForCollectible.tsx → data/orders/useListOffersForCollectible.tsx} +4 -4
  259. package/src/react/hooks/{__tests__ → data/orders}/useLowestListing.test.tsx +5 -5
  260. package/src/react/hooks/{useLowestListing.tsx → data/orders/useLowestListing.tsx} +3 -3
  261. package/src/react/hooks/data/primary-sales/index.ts +6 -0
  262. package/src/react/hooks/{useCountOfPrimarySaleItems.tsx → data/primary-sales/useCountOfPrimarySaleItems.tsx} +2 -2
  263. package/src/react/hooks/data/primary-sales/useErc721SalesData.tsx +184 -0
  264. package/src/react/hooks/{useGetCountOfPrimarySaleItems.tsx → data/primary-sales/useGetCountOfPrimarySaleItems.tsx} +4 -4
  265. package/src/react/hooks/{useList1155ShopCardData.tsx → data/primary-sales/useList1155ShopCardData.tsx} +15 -8
  266. package/src/react/hooks/data/primary-sales/useList721ShopCardData.tsx +183 -0
  267. package/src/react/hooks/{useListPrimarySaleItems.tsx → data/primary-sales/useListPrimarySaleItems.tsx} +3 -3
  268. package/src/react/hooks/data/tokens/index.ts +5 -0
  269. package/src/react/hooks/{__tests__ → data/tokens}/useCurrencyBalance.test.tsx +2 -2
  270. package/src/react/hooks/{__tests__ → data/tokens}/useGetTokenRanges.test.tsx +3 -3
  271. package/src/react/hooks/{useGetTokenRanges.tsx → data/tokens/useGetTokenRanges.tsx} +6 -4
  272. package/src/react/hooks/{__tests__ → data/tokens}/useListBalances.test.tsx +2 -2
  273. package/src/react/hooks/{useListBalances.tsx → data/tokens/useListBalances.tsx} +5 -5
  274. package/src/react/hooks/{__tests__ → data/tokens}/useListTokenMetadata.test.tsx +3 -3
  275. package/src/react/hooks/{useListTokenMetadata.tsx → data/tokens/useListTokenMetadata.tsx} +3 -3
  276. package/src/react/hooks/data/tokens/useSearchTokenMetadata.test.tsx +284 -0
  277. package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +186 -0
  278. package/src/react/hooks/{useTokenSupplies.ts → data/tokens/useTokenSupplies.ts} +5 -5
  279. package/src/react/hooks/index.ts +18 -52
  280. package/src/react/hooks/transactions/index.ts +9 -0
  281. package/src/react/hooks/{__tests__ → transactions}/useCancelOrder.test.tsx +53 -85
  282. package/src/react/hooks/{useCancelOrder.tsx → transactions/useCancelOrder.tsx} +4 -4
  283. package/src/react/hooks/{__tests__/useCancelTransactionSteps.test.tsx → transactions/useCancelTransactionSteps.test.tsx.bak} +3 -52
  284. package/src/react/hooks/transactions/useCancelTransactionSteps.tsx +193 -0
  285. package/src/react/hooks/{__tests__ → transactions}/useGenerateCancelTransaction.test.tsx +2 -2
  286. package/src/react/hooks/{useGenerateCancelTransaction.tsx → transactions/useGenerateCancelTransaction.tsx} +5 -5
  287. package/src/react/hooks/{__tests__ → transactions}/useGenerateListingTransaction.test.tsx +2 -2
  288. package/src/react/hooks/{useGenerateListingTransaction.tsx → transactions/useGenerateListingTransaction.tsx} +5 -5
  289. package/src/react/hooks/{__tests__ → transactions}/useGenerateOfferTransaction.test.tsx +7 -45
  290. package/src/react/hooks/{useGenerateOfferTransaction.tsx → transactions/useGenerateOfferTransaction.tsx} +7 -7
  291. package/src/react/hooks/{__tests__ → transactions}/useGenerateSellTransaction.test.tsx +3 -7
  292. package/src/react/hooks/{useGenerateSellTransaction.tsx → transactions/useGenerateSellTransaction.tsx} +4 -4
  293. package/src/react/hooks/transactions/useOrderSteps.tsx +189 -0
  294. package/src/react/hooks/transactions/useProcessStep.test.tsx +272 -0
  295. package/src/react/hooks/transactions/useProcessStep.ts +95 -0
  296. package/src/react/hooks/{__tests__ → transactions}/useTransferTokens.test.tsx +2 -2
  297. package/src/react/hooks/{useTransferTokens.tsx → transactions/useTransferTokens.tsx} +3 -3
  298. package/src/react/hooks/ui/index.ts +3 -0
  299. package/src/react/hooks/{useFilterState.tsx → ui/useFilterState.tsx} +1 -1
  300. package/src/react/hooks/{__tests__ → ui}/useFilters.test.tsx +1 -2
  301. package/src/react/hooks/{useFilters.tsx → ui/useFilters.tsx} +3 -3
  302. package/src/react/hooks/{useOpenConnectModal.tsx → ui/useOpenConnectModal.tsx} +1 -1
  303. package/src/react/hooks/util/optimisticCancelUpdates.ts +1 -0
  304. package/src/react/hooks/utils/index.ts +9 -0
  305. package/src/react/hooks/{__tests__ → utils}/useAutoSelectFeeOption.test.tsx +7 -3
  306. package/src/react/hooks/{useAutoSelectFeeOption.tsx → utils/useAutoSelectFeeOption.tsx} +2 -2
  307. package/src/react/hooks/{__tests__ → utils}/useCheckoutOptions.test.tsx +9 -5
  308. package/src/react/hooks/{useCheckoutOptions.tsx → utils/useCheckoutOptions.tsx} +6 -4
  309. package/src/react/hooks/{__tests__ → utils}/useCheckoutOptionsSalesContract.test.tsx +8 -4
  310. package/src/react/hooks/{useCheckoutOptionsSalesContract.tsx → utils/useCheckoutOptionsSalesContract.tsx} +3 -3
  311. package/src/react/hooks/{__tests__ → utils}/useComparePrices.test.tsx +1 -1
  312. package/src/react/hooks/{useComparePrices.tsx → utils/useComparePrices.tsx} +3 -5
  313. package/src/react/hooks/{__tests__ → utils}/useConvertPriceToUSD.test.tsx +2 -2
  314. package/src/react/hooks/{useConvertPriceToUSD.tsx → utils/useConvertPriceToUSD.tsx} +3 -3
  315. package/src/react/hooks/utils/useEnsureCorrectChain.ts +74 -0
  316. package/src/react/hooks/{__tests__ → utils}/useRoyalty.test.tsx +1 -1
  317. package/src/react/hooks/{useRoyalty.tsx → utils/useRoyalty.tsx} +3 -3
  318. package/src/react/hooks/utils/useSwitchChainWithModal.ts +38 -0
  319. package/src/react/index.ts +1 -2
  320. package/src/react/{provider.tsx → providers/index.tsx} +10 -7
  321. package/src/react/providers/modal-provider.tsx +43 -0
  322. package/src/react/{__tests__ → providers}/provider.test.tsx +1 -1
  323. package/src/react/providers/shadow-root.tsx +63 -0
  324. package/src/react/providers/theme-provider.tsx +29 -0
  325. package/src/react/queries/index.ts +19 -0
  326. package/src/react/queries/marketplaceConfig.ts +10 -1
  327. package/src/react/queries/primarySaleItems.ts +2 -7
  328. package/src/react/queries/searchTokenMetadata.ts +87 -0
  329. package/src/react/queries/tokenSupplies.ts +26 -18
  330. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +6 -0
  331. package/src/react/ssr/__tests__/create-ssr-client.test.ts +1 -1
  332. package/src/react/ui/components/_internals/action-button/ActionButton.stories.tsx +296 -0
  333. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +34 -14
  334. package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +4 -11
  335. package/src/react/ui/components/_internals/action-button/__tests__/OwnerActions.test.tsx +5 -12
  336. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +32 -16
  337. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +2 -3
  338. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +1 -1
  339. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +2 -3
  340. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +4 -3
  341. package/src/react/ui/components/marketplace-collectible-card/types.ts +3 -2
  342. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +1 -1
  343. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +6 -3
  344. package/src/react/ui/index.ts +1 -1
  345. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +10 -25
  346. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +2 -2
  347. package/src/react/ui/modals/BuyModal/__tests__/ERC721ShopModal.test.tsx +1 -1
  348. package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +5 -5
  349. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +8 -8
  350. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +32 -14
  351. package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +4 -4
  352. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +18 -30
  353. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +14 -1
  354. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +13 -2
  355. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +5 -5
  356. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +7 -2
  357. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +18 -7
  358. package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +5 -9
  359. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +16 -15
  360. package/src/react/ui/modals/BuyModal/store.ts +2 -0
  361. package/src/react/ui/modals/CreateListingModal/Modal.tsx +11 -5
  362. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +3 -24
  363. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +5 -9
  364. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +43 -83
  365. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +4 -4
  366. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +88 -62
  367. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +9 -7
  368. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +2 -2
  369. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +47 -84
  370. package/src/react/ui/modals/SellModal/Modal.tsx +7 -9
  371. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +8 -30
  372. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +7 -7
  373. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +39 -65
  374. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +28 -18
  375. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +33 -15
  376. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +3 -3
  377. package/src/react/ui/modals/TransferModal/index.tsx +9 -23
  378. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +116 -136
  379. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +15 -44
  380. package/src/react/ui/modals/_internal/components/actionModal/index.ts +0 -1
  381. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +9 -3
  382. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +1 -1
  383. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +2 -2
  384. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +1 -1
  385. package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +97 -7
  386. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +30 -11
  387. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +2 -2
  388. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +1 -1
  389. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +1 -1
  390. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +25 -26
  391. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +3 -1
  392. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +19 -4
  393. package/src/react/ui/modals/_internal/hooks/useSelectWaasFeeOptions.ts +3 -5
  394. package/src/react/ui/modals/_internal/types.ts +6 -0
  395. package/src/react/utils/index.ts +1 -0
  396. package/src/react/utils/waitForTransactionReceipt.ts +49 -0
  397. package/src/{index.css → styles/index.css} +1 -1
  398. package/src/styles/styles.ts +3275 -0
  399. package/src/types/sdk-config.ts +2 -0
  400. package/src/utils/_internal/error/transaction.ts +0 -10
  401. package/src/utils/abi/primary-sale/index.ts +4 -2
  402. package/src/utils/abi/primary-sale/{sequence-1155-sales-contract.ts → sequence-1155-sales-contract-v0.ts} +67 -58
  403. package/src/utils/abi/primary-sale/sequence-1155-sales-contract-v1.ts +546 -0
  404. package/src/utils/abi/primary-sale/{sequence-721-sales-contract.ts → sequence-721-sales-contract-v0.ts} +1 -1
  405. package/src/utils/abi/primary-sale/sequence-721-sales-contract-v1.ts +394 -0
  406. package/test/const.ts +1 -1
  407. package/test/globalSetup.ts +39 -11
  408. package/test/handlers.ts +465 -0
  409. package/test/index.ts +1 -0
  410. package/test/server-setup.ts +23 -0
  411. package/test/setup.ts +1 -1
  412. package/test/test-utils.tsx +46 -38
  413. package/tsconfig.json +1 -1
  414. package/tsdown.config.ts +12 -7
  415. package/.storybook/preview.ts +0 -24
  416. package/dist/CalendarIcon-CqsuAuCm.js.map +0 -1
  417. package/dist/InfoIcon-v0w_Lu7t.js +0 -53
  418. package/dist/InfoIcon-v0w_Lu7t.js.map +0 -1
  419. package/dist/_internal-C75gOSNo.js.map +0 -1
  420. package/dist/actionModal-CMUeVsFX.js +0 -116
  421. package/dist/actionModal-CMUeVsFX.js.map +0 -1
  422. package/dist/api-BiMGqWdz.js.map +0 -1
  423. package/dist/base-DqaJPvfN.js +0 -22
  424. package/dist/base-DqaJPvfN.js.map +0 -1
  425. package/dist/create-config-fQ-jbJD1.js.map +0 -1
  426. package/dist/get-provider-CYYHfrlg.js +0 -10
  427. package/dist/get-provider-CYYHfrlg.js.map +0 -1
  428. package/dist/get-query-client-D19vvfJo.js +0 -23
  429. package/dist/get-query-client-D19vvfJo.js.map +0 -1
  430. package/dist/hooks-4pxIbLbM.js +0 -4044
  431. package/dist/hooks-4pxIbLbM.js.map +0 -1
  432. package/dist/index-BKBin-rq.d.ts +0 -979
  433. package/dist/index-BUWB_RXp.d.ts +0 -3144
  434. package/dist/index-Cu70Lw-w.d.ts +0 -1057
  435. package/dist/index-DvpBZgor.d.ts +0 -1
  436. package/dist/marketplaceConfig-GQTTmihy.js.map +0 -1
  437. package/dist/primary-sale-CmWxSfFQ.js +0 -1264
  438. package/dist/primary-sale-CmWxSfFQ.js.map +0 -1
  439. package/dist/provider-DPGUA10G.js +0 -125
  440. package/dist/provider-DPGUA10G.js.map +0 -1
  441. package/dist/queries-Ce_2othB.js +0 -757
  442. package/dist/queries-Ce_2othB.js.map +0 -1
  443. package/dist/react/hooks/options/index.d.ts +0 -3
  444. package/dist/react/hooks/options/index.js +0 -16
  445. package/dist/react-DP0M2Wfm.js +0 -5431
  446. package/dist/react-DP0M2Wfm.js.map +0 -1
  447. package/dist/transaction-CnctdNzS.js.map +0 -1
  448. package/dist/wagmi-Do_KW5ke.js +0 -0
  449. package/src/react/_internal/wallet/__tests__/wallet.test.ts +0 -416
  450. package/src/react/_internal/wallet/useWallet.ts +0 -52
  451. package/src/react/_internal/wallet/wallet.ts +0 -313
  452. package/src/react/hooks/options/index.ts +0 -1
  453. package/src/react/hooks/useCancelTransactionSteps.tsx +0 -249
  454. package/src/react/hooks/useERC721SaleMintedTokens.tsx +0 -70
  455. package/src/react/hooks/useList1155SaleSupplies.tsx +0 -62
  456. package/src/react/hooks/useList721ShopCardData.tsx +0 -165
  457. package/src/react/hooks/useListShopCardData.tsx +0 -70
  458. package/src/react/hooks/useListTokenMetadata.ts +0 -71
  459. package/src/react/hooks/useShopCollectibleSaleData.tsx +0 -349
  460. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +0 -130
  461. package/src/react/ui/modals/_internal/components/actionModal/store.ts +0 -57
  462. package/src/react/ui/modals/modal-provider.tsx +0 -25
  463. package/test/mocks/wallet.ts +0 -63
  464. /package/dist/{abi-BMvgNbKQ.js → abi-Wr_aTZFi.js} +0 -0
  465. /package/dist/{index-CD2bj_xW.d.ts → index-q7f-WDBS.d.ts} +0 -0
  466. /package/dist/{options-BBBR8u_4.js → wagmi-BhP3mdhP.js} +0 -0
  467. /package/src/react/hooks/{useCurrencyBalance.tsx → data/tokens/useCurrencyBalance.tsx} +0 -0
  468. /package/src/react/hooks/{useGetReceiptFromHash.tsx → utils/useGetReceiptFromHash.tsx} +0 -0
@@ -1,18 +1,19 @@
1
1
  'use client';
2
2
 
3
3
  import { observer, Show, use$ } from '@legendapp/state/react';
4
+ import * as dnum from 'dnum';
4
5
  import { parseUnits } from 'viem';
5
6
  import { useAccount } from 'wagmi';
6
7
  import type { FeeOption } from '../../../../types/waas-types';
7
8
  import { dateToUnixTime } from '../../../../utils/date';
8
9
  import type { ContractType } from '../../../_internal';
9
- import { useWallet } from '../../../_internal/wallet/useWallet';
10
10
  import {
11
11
  useBalanceOfCollectible,
12
12
  useCollectible,
13
13
  useCollection,
14
14
  useMarketCurrencies,
15
15
  } from '../../../hooks';
16
+ import { useConnectorMetadata } from '../../../hooks/config/useConnectorMetadata';
16
17
  import {
17
18
  ActionModal,
18
19
  type ActionModalProps,
@@ -49,7 +50,7 @@ const Modal = observer(() => {
49
50
  listingIsBeingProcessed,
50
51
  } = state;
51
52
  const steps$ = createListingModal$.steps;
52
- const { wallet } = useWallet();
53
+ const { isWaaS } = useConnectorMetadata();
53
54
  const { isVisible: feeOptionsVisible, selectedFeeOption } =
54
55
  useSelectWaasFeeOptionsStore();
55
56
 
@@ -100,6 +101,11 @@ const Modal = observer(() => {
100
101
  collectableId: collectibleId,
101
102
  userAddress: address ?? undefined,
102
103
  });
104
+ const balanceWithDecimals = balance?.balance
105
+ ? dnum.toNumber(
106
+ dnum.from([BigInt(balance.balance), collectible?.decimals || 0]),
107
+ )
108
+ : 0;
103
109
 
104
110
  const { isLoading, executeApproval, createListing, tokenApprovalIsLoading } =
105
111
  useCreateListing({
@@ -151,12 +157,12 @@ const Modal = observer(() => {
151
157
  createListingModal$.listingIsBeingProcessed.set(true);
152
158
 
153
159
  try {
154
- if (wallet?.isWaaS) {
160
+ if (isWaaS) {
155
161
  selectWaasFeeOptionsStore.send({ type: 'show' });
156
162
  }
157
163
 
158
164
  await createListing({
159
- isTransactionExecuting: !!wallet?.isWaaS,
165
+ isTransactionExecuting: !!isWaaS,
160
166
  });
161
167
  } catch (error) {
162
168
  console.error('Create listing failed:', error);
@@ -253,7 +259,7 @@ const Modal = observer(() => {
253
259
  createListingModal$.invalidQuantity.set(invalid)
254
260
  }
255
261
  decimals={collectible?.decimals || 0}
256
- maxQuantity={balance?.balance}
262
+ maxQuantity={balanceWithDecimals.toString()}
257
263
  disabled={shouldHideListButton}
258
264
  />
259
265
  )}
@@ -1,10 +1,10 @@
1
1
  import { cleanup, render, renderHook, screen, waitFor } from '@test';
2
2
  import { TEST_COLLECTIBLE } from '@test/const';
3
- import { createMockWallet } from '@test/mocks/wallet';
3
+
4
4
  import { beforeEach, describe, expect, it, vi } from 'vitest';
5
- import { StepType, WalletKind } from '../../../../_internal';
5
+ import { StepType } from '../../../../_internal';
6
6
  import { createMockStep } from '../../../../_internal/api/__mocks__/marketplace.msw';
7
- import * as walletModule from '../../../../_internal/wallet/useWallet';
7
+
8
8
  import { useCreateListingModal } from '..';
9
9
  import * as useGetTokenApprovalDataModule from '../hooks/useGetTokenApproval';
10
10
  import { CreateListingModal } from '../Modal';
@@ -16,8 +16,6 @@ const defaultArgs = {
16
16
  };
17
17
 
18
18
  describe('MakeOfferModal', () => {
19
- const mockWallet = createMockWallet();
20
-
21
19
  beforeEach(() => {
22
20
  cleanup();
23
21
  // Reset all mocks
@@ -27,16 +25,6 @@ describe('MakeOfferModal', () => {
27
25
  });
28
26
 
29
27
  it('should show main button if there is no approval step', async () => {
30
- // Mock sequence wallet
31
- const sequenceWallet = {
32
- ...mockWallet,
33
- walletKind: WalletKind.sequence,
34
- };
35
- vi.spyOn(walletModule, 'useWallet').mockReturnValue({
36
- wallet: sequenceWallet,
37
- isLoading: false,
38
- isError: false,
39
- });
40
28
  vi.spyOn(
41
29
  useGetTokenApprovalDataModule,
42
30
  'useGetTokenApprovalData',
@@ -67,15 +55,6 @@ describe('MakeOfferModal', () => {
67
55
  });
68
56
 
69
57
  it('(non-sequence wallets) should show approve token button if there is an approval step, disable main button', async () => {
70
- const nonSequenceWallet = {
71
- ...mockWallet,
72
- walletKind: 'unknown' as WalletKind,
73
- };
74
- vi.spyOn(walletModule, 'useWallet').mockReturnValue({
75
- wallet: nonSequenceWallet,
76
- isLoading: false,
77
- isError: false,
78
- });
79
58
  vi.spyOn(
80
59
  useGetTokenApprovalDataModule,
81
60
  'useGetTokenApprovalData',
@@ -1,7 +1,7 @@
1
1
  import { skipToken, useQuery } from '@tanstack/react-query';
2
2
  import { useAccount } from 'wagmi';
3
3
  import { dateToUnixTime } from '../../../../../utils/date';
4
- import { useConfig } from '../../../..';
4
+ import { useConfig, useConnectorMetadata } from '../../../..';
5
5
  import {
6
6
  type ContractType,
7
7
  type CreateReq,
@@ -11,7 +11,6 @@ import {
11
11
  type QueryArg,
12
12
  StepType,
13
13
  } from '../../../../_internal';
14
- import { useWallet } from '../../../../_internal/wallet/useWallet';
15
14
 
16
15
  export interface UseGetTokenApprovalDataArgs {
17
16
  chainId: number;
@@ -29,7 +28,7 @@ export const useGetTokenApprovalData = (
29
28
  params: UseGetTokenApprovalDataArgs,
30
29
  ) => {
31
30
  const config = useConfig();
32
- const { wallet } = useWallet();
31
+ const { walletKind } = useConnectorMetadata();
33
32
  const { address } = useAccount();
34
33
  const marketplaceClient = getMarketplaceClient(config);
35
34
 
@@ -42,10 +41,7 @@ export const useGetTokenApprovalData = (
42
41
  } satisfies CreateReq;
43
42
 
44
43
  const isEnabled =
45
- wallet &&
46
- address &&
47
- (params.query?.enabled ?? true) &&
48
- !!params.currencyAddress;
44
+ address && (params.query?.enabled ?? true) && !!params.currencyAddress;
49
45
 
50
46
  const { data, isLoading, isSuccess } = useQuery({
51
47
  queryKey: ['token-approval-data', params, address],
@@ -54,8 +50,8 @@ export const useGetTokenApprovalData = (
54
50
  const args = {
55
51
  chainId: String(params.chainId),
56
52
  collectionAddress: params.collectionAddress,
57
- owner: await wallet.address(),
58
- walletType: wallet.walletKind,
53
+ owner: address,
54
+ walletType: walletKind,
59
55
  contractType: params.contractType,
60
56
  orderbook: params.orderbook,
61
57
  listing,
@@ -1,29 +1,25 @@
1
1
  import type { Observable } from '@legendapp/state';
2
2
  import { type Address, formatUnits, type Hex } from 'viem';
3
+ import { useAccount, usePublicClient } from 'wagmi';
3
4
  import { OrderbookKind, type Price } from '../../../../../types';
4
5
  import { getSequenceMarketplaceRequestId } from '../../../../../utils/getSequenceMarketRequestId';
5
6
  import {
6
7
  balanceQueries,
7
8
  collectableKeys,
8
- ExecuteType,
9
- getMarketplaceClient,
10
- type Step,
11
9
  StepType,
12
10
  type TransactionSteps,
13
11
  } from '../../../../_internal';
14
12
  import { useAnalytics } from '../../../../_internal/databeat';
15
13
  import type { ListingInput } from '../../../../_internal/types';
16
14
  import { TransactionType } from '../../../../_internal/types';
17
- import type {
18
- SignatureStep,
19
- TransactionStep as WalletTransactionStep,
20
- } from '../../../../_internal/utils';
21
- import { useWallet } from '../../../../_internal/wallet/useWallet';
22
15
  import {
23
16
  useConfig,
17
+ useConnectorMetadata,
24
18
  useGenerateListingTransaction,
25
19
  useMarketCurrencies,
20
+ useProcessStep,
26
21
  } from '../../../../hooks';
22
+ import { waitForTransactionReceipt } from '../../../../utils/waitForTransactionReceipt';
27
23
  import { useTransactionStatusModal } from '../../_internal/components/transactionStatusModal';
28
24
  import type { ModalCallbacks } from '../../_internal/types';
29
25
 
@@ -46,7 +42,9 @@ export const useTransactionSteps = ({
46
42
  closeMainModal,
47
43
  steps$,
48
44
  }: UseTransactionStepsArgs) => {
49
- const { wallet } = useWallet();
45
+ const { address } = useAccount();
46
+ const publicClient = usePublicClient();
47
+ const { walletKind } = useConnectorMetadata();
50
48
  const { show: showTransactionStatusModal } = useTransactionStatusModal();
51
49
  const sdkConfig = useConfig();
52
50
  const { data: currencies } = useMarketCurrencies({
@@ -56,8 +54,8 @@ export const useTransactionSteps = ({
56
54
  (currency) =>
57
55
  currency.contractAddress === listingInput.listing.currencyAddress,
58
56
  );
59
- const marketplaceClient = getMarketplaceClient(sdkConfig);
60
57
  const analytics = useAnalytics();
58
+ const { processStep } = useProcessStep();
61
59
  const { generateListingTransactionAsync, isPending: generatingSteps } =
62
60
  useGenerateListingTransaction({
63
61
  chainId,
@@ -67,15 +65,13 @@ export const useTransactionSteps = ({
67
65
  });
68
66
 
69
67
  const getListingSteps = async () => {
70
- if (!wallet) return;
68
+ if (!address) return;
71
69
 
72
70
  try {
73
- const address = await wallet.address();
74
-
75
71
  const steps = await generateListingTransactionAsync({
76
72
  collectionAddress,
77
73
  owner: address,
78
- walletType: wallet.walletKind,
74
+ walletType: walletKind,
79
75
  contractType: listingInput.contractType,
80
76
  orderbook: orderbookKind,
81
77
  listing: {
@@ -95,7 +91,7 @@ export const useTransactionSteps = ({
95
91
  };
96
92
 
97
93
  const executeApproval = async () => {
98
- if (!wallet) return;
94
+ if (!address) return;
99
95
 
100
96
  try {
101
97
  steps$.approval.isExecuting.set(true);
@@ -103,14 +99,21 @@ export const useTransactionSteps = ({
103
99
  steps?.find((step) => step.id === StepType.tokenApproval),
104
100
  );
105
101
 
106
- const hash = await wallet.handleSendTransactionStep(
107
- Number(chainId),
108
- approvalStep as WalletTransactionStep,
109
- );
102
+ if (!approvalStep) {
103
+ throw new Error('No approval step found');
104
+ }
110
105
 
111
- await wallet.handleConfirmTransactionStep(hash, Number(chainId));
112
- steps$.approval.isExecuting.set(false);
113
- steps$.approval.exist.set(false);
106
+ const result = await processStep(approvalStep, chainId);
107
+
108
+ if (result.type === 'transaction') {
109
+ await waitForTransactionReceipt({
110
+ txHash: result.hash,
111
+ chainId,
112
+ sdkConfig,
113
+ });
114
+ steps$.approval.isExecuting.set(false);
115
+ steps$.approval.exist.set(false);
116
+ }
114
117
  } catch (_error) {
115
118
  steps$.approval.isExecuting.set(false);
116
119
  }
@@ -121,34 +124,25 @@ export const useTransactionSteps = ({
121
124
  }: {
122
125
  isTransactionExecuting: boolean;
123
126
  }) => {
124
- if (!wallet) return;
127
+ if (!address) return;
125
128
 
126
129
  try {
127
130
  steps$.transaction.isExecuting.set(isTransactionExecuting);
128
131
  const steps = await getListingSteps();
129
- const transactionStep = steps?.find(
130
- (step) => step.id === StepType.createListing,
131
- );
132
- const signatureStep = steps?.find(
133
- (step) => step.id === StepType.signEIP712,
134
- );
135
-
136
- console.debug('transactionStep', transactionStep);
137
- console.debug('signatureStep', signatureStep);
138
-
139
- if (!transactionStep && !signatureStep) {
140
- throw new Error('No transaction or signature step found');
141
- }
132
+ if (!steps) throw new Error('No steps found');
142
133
 
143
134
  let hash: Hex | undefined;
144
135
  let orderId: string | undefined;
145
136
 
146
- if (transactionStep) {
147
- hash = await executeTransaction({ transactionStep });
148
- }
149
-
150
- if (signatureStep) {
151
- orderId = await executeSignature({ signatureStep });
137
+ if (steps) {
138
+ for (const step of steps) {
139
+ const result = await processStep(step, chainId);
140
+ if (result.type === 'transaction') {
141
+ hash = result.hash;
142
+ } else if (result.type === 'signature') {
143
+ orderId = result.orderId;
144
+ }
145
+ }
152
146
  }
153
147
 
154
148
  closeMainModal();
@@ -175,7 +169,11 @@ export const useTransactionSteps = ({
175
169
  });
176
170
 
177
171
  if (hash) {
178
- await wallet.handleConfirmTransactionStep(hash, Number(chainId));
172
+ await waitForTransactionReceipt({
173
+ txHash: hash,
174
+ chainId,
175
+ sdkConfig,
176
+ });
179
177
 
180
178
  steps$.transaction.isExecuting.set(false);
181
179
  steps$.transaction.exist.set(false);
@@ -207,8 +205,8 @@ export const useTransactionSteps = ({
207
205
  ) {
208
206
  requestId = await getSequenceMarketplaceRequestId(
209
207
  hash,
210
- wallet.publicClient,
211
- await wallet.address(),
208
+ publicClient!,
209
+ address,
212
210
  );
213
211
  }
214
212
 
@@ -239,44 +237,6 @@ export const useTransactionSteps = ({
239
237
  }
240
238
  };
241
239
 
242
- const executeTransaction = async ({
243
- transactionStep,
244
- }: {
245
- transactionStep: Step;
246
- }) => {
247
- if (!wallet) return;
248
-
249
- const hash = await wallet.handleSendTransactionStep(
250
- Number(chainId),
251
- transactionStep as WalletTransactionStep,
252
- );
253
-
254
- return hash;
255
- };
256
-
257
- const executeSignature = async ({
258
- signatureStep,
259
- }: {
260
- signatureStep: Step;
261
- }) => {
262
- if (!wallet) return;
263
-
264
- const signature = await wallet.handleSignMessageStep(
265
- signatureStep as SignatureStep,
266
- );
267
-
268
- const result = await marketplaceClient.execute({
269
- chainId: String(chainId),
270
- signature: signature as string,
271
- method: signatureStep.post?.method as string,
272
- endpoint: signatureStep.post?.endpoint as string,
273
- body: signatureStep.post?.body,
274
- executeType: ExecuteType.order,
275
- });
276
-
277
- return result.orderId;
278
- };
279
-
280
240
  return {
281
241
  generatingSteps,
282
242
  executeApproval,
@@ -8,13 +8,13 @@ import type { FeeOption } from '../../../../types/waas-types';
8
8
  import { dateToUnixTime } from '../../../../utils/date';
9
9
  import { getNetwork } from '../../../../utils/network';
10
10
  import { ContractType } from '../../../_internal';
11
- import { useWallet } from '../../../_internal/wallet/useWallet';
12
11
  import {
13
12
  useCollectible,
14
13
  useCollection,
15
14
  useLowestListing,
16
15
  useMarketCurrencies,
17
16
  } from '../../../hooks';
17
+ import { useConnectorMetadata } from '../../../hooks/config/useConnectorMetadata';
18
18
  import { ActionModal } from '../_internal/components/actionModal/ActionModal';
19
19
  import { ErrorModal } from '../_internal/components/actionModal/ErrorModal';
20
20
  import ExpirationDateSelect from '../_internal/components/expirationDateSelect';
@@ -59,7 +59,7 @@ const Modal = observer(() => {
59
59
  collectionAddress,
60
60
  collectibleId,
61
61
  });
62
- const { wallet } = useWallet();
62
+ const { isWaaS } = useConnectorMetadata();
63
63
  const isProcessing = makeOfferModal$.offerIsBeingProcessed.get();
64
64
  const { isVisible: feeOptionsVisible, selectedFeeOption } =
65
65
  useSelectWaasFeeOptionsStore();
@@ -153,12 +153,12 @@ const Modal = observer(() => {
153
153
  makeOfferModal$.offerIsBeingProcessed.set(true);
154
154
 
155
155
  try {
156
- if (wallet?.isWaaS) {
156
+ if (isWaaS) {
157
157
  selectWaasFeeOptionsStore.send({ type: 'show' });
158
158
  }
159
159
 
160
160
  await makeOffer({
161
- isTransactionExecuting: wallet?.isWaaS
161
+ isTransactionExecuting: isWaaS
162
162
  ? getNetwork(Number(chainId)).type !== NetworkType.TESTNET
163
163
  : false,
164
164
  });
@@ -1,13 +1,16 @@
1
1
  import { cleanup, render, renderHook, waitFor } from '@test';
2
2
  import { TEST_COLLECTIBLE } from '@test/const';
3
- import { createMockWallet } from '@test/mocks/wallet';
4
3
  import { beforeEach, describe, expect, it, vi } from 'vitest';
5
- import { CurrencyStatus, WalletKind } from '../../../../_internal';
6
- import * as walletModule from '../../../../_internal/wallet/useWallet';
4
+ import { CurrencyStatus, StepType } from '../../../../_internal';
7
5
  import { useMakeOfferModal } from '..';
6
+ import { useGetTokenApprovalData } from '../hooks/useGetTokenApproval';
8
7
  import { MakeOfferModal } from '../Modal';
9
8
  import { makeOfferModal$ } from '../store';
10
9
 
10
+ vi.mock('../hooks/useGetTokenApproval', () => ({
11
+ useGetTokenApprovalData: vi.fn(),
12
+ }));
13
+
11
14
  const defaultArgs = {
12
15
  collectionAddress: TEST_COLLECTIBLE.collectionAddress,
13
16
  chainId: TEST_COLLECTIBLE.chainId,
@@ -31,28 +34,21 @@ const mockCurrency = {
31
34
  };
32
35
 
33
36
  describe('MakeOfferModal', () => {
34
- const mockWallet = createMockWallet();
35
-
36
37
  beforeEach(() => {
37
38
  cleanup();
38
39
  // Reset all mocks
39
40
  vi.clearAllMocks();
40
41
  vi.resetAllMocks();
41
42
  vi.restoreAllMocks();
42
- });
43
-
44
- it('should show main button if there is no approval step', async () => {
45
- // Mock sequence wallet
46
- const sequenceWallet = {
47
- ...mockWallet,
48
- walletKind: WalletKind.sequence,
49
- };
50
- vi.spyOn(walletModule, 'useWallet').mockReturnValue({
51
- wallet: sequenceWallet,
43
+ // Set default mock behavior
44
+ vi.mocked(useGetTokenApprovalData).mockReturnValue({
45
+ data: { step: null }, // No approval needed by default
52
46
  isLoading: false,
53
- isError: false,
47
+ isSuccess: true,
54
48
  });
49
+ });
55
50
 
51
+ it('should show main button if there is no approval step', async () => {
56
52
  // Render the modal
57
53
  const { result } = renderHook(() => useMakeOfferModal());
58
54
  result.current.show(defaultArgs);
@@ -71,14 +67,19 @@ describe('MakeOfferModal', () => {
71
67
  });
72
68
 
73
69
  it('(non-sequence wallets) should show approve token button if there is an approval step, disable main button', async () => {
74
- const nonSequenceWallet = {
75
- ...mockWallet,
76
- walletKind: 'unknown' as WalletKind,
77
- };
78
- vi.spyOn(walletModule, 'useWallet').mockReturnValue({
79
- wallet: nonSequenceWallet,
70
+ // Mock the hook to return approval needed
71
+ vi.mocked(useGetTokenApprovalData).mockReturnValue({
72
+ data: {
73
+ step: {
74
+ id: StepType.tokenApproval,
75
+ data: '0x',
76
+ to: '0x0000000000000000000000000000000000000000',
77
+ value: '0',
78
+ price: '0',
79
+ },
80
+ }, // Approval needed
80
81
  isLoading: false,
81
- isError: false,
82
+ isSuccess: true,
82
83
  });
83
84
 
84
85
  // Render the modal
@@ -98,52 +99,77 @@ describe('MakeOfferModal', () => {
98
99
  });
99
100
  });
100
101
 
101
- it('should show/hide CTAs based on approval step existence in store', async () => {
102
- // test case 1: approval.exist = true
103
- makeOfferModal$.open(defaultArgs);
104
- makeOfferModal$.offerPrice.set({
105
- amountRaw: '1000000000000000000',
106
- currency: mockCurrency,
102
+ describe('CTA visibility based on approval requirement', () => {
103
+ beforeEach(() => {
104
+ makeOfferModal$.close();
105
+ vi.clearAllMocks();
106
+ vi.mocked(useGetTokenApprovalData).mockReturnValue({
107
+ data: { step: null },
108
+ isLoading: false,
109
+ isSuccess: true,
110
+ });
107
111
  });
108
- makeOfferModal$.offerPriceChanged.set(true);
109
- makeOfferModal$.steps.approval.exist.set(true);
110
-
111
- const { getByText, unmount } = render(<MakeOfferModal />);
112
-
113
- await waitFor(() => {
114
- // Approve TOKEN button should be visible
115
- const approveButton = getByText('Approve TOKEN');
116
- expect(approveButton).toBeDefined();
117
112
 
118
- // Make offer button should be disabled
119
- const makeOfferButton = getByText('Make offer');
120
- expect(makeOfferButton.closest('button')).toHaveAttribute('disabled');
121
- });
122
-
123
- unmount();
124
- cleanup();
125
-
126
- // test case 2: approval.exist = false
127
- makeOfferModal$.open(defaultArgs);
128
- makeOfferModal$.offerPrice.set({
129
- amountRaw: '1000000000000000000',
130
- currency: mockCurrency,
113
+ it('should show Approve TOKEN button when approval is required', async () => {
114
+ vi.mocked(useGetTokenApprovalData).mockReturnValue({
115
+ data: {
116
+ step: {
117
+ id: StepType.tokenApproval,
118
+ data: '0x',
119
+ to: '0x0000000000000000000000000000000000000000',
120
+ value: '0',
121
+ price: '0',
122
+ },
123
+ }, // Approval needed
124
+ isLoading: false,
125
+ isSuccess: true,
126
+ });
127
+
128
+ makeOfferModal$.open(defaultArgs);
129
+ makeOfferModal$.offerPrice.set({
130
+ amountRaw: '1000000000000000000',
131
+ currency: mockCurrency,
132
+ });
133
+ makeOfferModal$.offerPriceChanged.set(true);
134
+
135
+ const { getByText } = render(<MakeOfferModal />);
136
+
137
+ await waitFor(() => {
138
+ const approveButton = getByText('Approve TOKEN');
139
+ expect(approveButton).toBeDefined();
140
+
141
+ // Make offer button should be disabled when approval is required
142
+ const makeOfferButton = getByText('Make offer');
143
+ expect(makeOfferButton.closest('button')).toHaveAttribute('disabled');
144
+ });
131
145
  });
132
- makeOfferModal$.offerPriceChanged.set(true);
133
- makeOfferModal$.steps.approval.exist.set(false);
134
146
 
135
- const { queryByText, getByText: getByText2 } = render(<MakeOfferModal />);
136
-
137
- await waitFor(() => {
138
- // Approve TOKEN button should not exist or be hidden
147
+ it.skip('should hide Approve TOKEN button when approval is not required', async () => {
148
+ makeOfferModal$.close();
149
+ vi.mocked(useGetTokenApprovalData).mockReturnValue({
150
+ data: { step: null }, // No approval needed
151
+ isLoading: false,
152
+ isSuccess: true,
153
+ });
154
+
155
+ makeOfferModal$.open(defaultArgs);
156
+ makeOfferModal$.offerPrice.set({
157
+ amountRaw: '1000000000000000000',
158
+ currency: mockCurrency,
159
+ });
160
+ makeOfferModal$.offerPriceChanged.set(true);
161
+
162
+ const { queryByText, getByText } = render(<MakeOfferModal />);
163
+
164
+ await waitFor(() => {
165
+ expect(getByText('Make offer')).toBeInTheDocument();
166
+ });
139
167
  const approveButton = queryByText('Approve TOKEN');
140
- expect(approveButton).toBeNull();
168
+ expect(approveButton).not.toBeInTheDocument();
141
169
 
142
- // Make offer button should be enabled
143
- const makeOfferButton = getByText2('Make offer');
170
+ // Make offer button should be enabled when no approval needed
171
+ const makeOfferButton = getByText('Make offer');
144
172
  expect(makeOfferButton.closest('button')).not.toHaveAttribute('disabled');
145
173
  });
146
-
147
- makeOfferModal$.close();
148
174
  });
149
175
  });
@@ -1,4 +1,5 @@
1
1
  import { skipToken, useQuery } from '@tanstack/react-query';
2
+ import { useAccount } from 'wagmi';
2
3
  import { dateToUnixTime } from '../../../../../utils/date';
3
4
  import {
4
5
  type ContractType,
@@ -9,8 +10,7 @@ import {
9
10
  type QueryArg,
10
11
  StepType,
11
12
  } from '../../../../_internal';
12
- import { useWallet } from '../../../../_internal/wallet/useWallet';
13
- import { useConfig } from '../../../../hooks/useConfig';
13
+ import { useConfig, useConnectorMetadata } from '../../../../hooks';
14
14
 
15
15
  export interface UseGetTokenApprovalDataArgs {
16
16
  chainId: number;
@@ -28,7 +28,8 @@ export const useGetTokenApprovalData = (
28
28
  params: UseGetTokenApprovalDataArgs,
29
29
  ) => {
30
30
  const config = useConfig();
31
- const { wallet } = useWallet();
31
+ const { address } = useAccount();
32
+ const { walletKind } = useConnectorMetadata();
32
33
  const marketplaceClient = getMarketplaceClient(config);
33
34
 
34
35
  const offer = {
@@ -39,7 +40,7 @@ export const useGetTokenApprovalData = (
39
40
  expiry: String(Number(dateToUnixTime(new Date())) + ONE_DAY_IN_SECONDS),
40
41
  } satisfies CreateReq;
41
42
 
42
- const isEnabled = wallet && params.query?.enabled !== false;
43
+ const isEnabled = address && params.query?.enabled !== false;
43
44
 
44
45
  const { data, isLoading, isSuccess } = useQuery({
45
46
  queryKey: ['token-approval-data', params.currencyAddress],
@@ -48,8 +49,8 @@ export const useGetTokenApprovalData = (
48
49
  const args = {
49
50
  chainId: String(params.chainId),
50
51
  collectionAddress: params.collectionAddress,
51
- maker: await wallet.address(),
52
- walletType: wallet.walletKind,
52
+ maker: address,
53
+ walletType: walletKind,
53
54
  contractType: params.contractType,
54
55
  orderbook: params.orderbook,
55
56
  offer,
@@ -72,7 +73,8 @@ export const useGetTokenApprovalData = (
72
73
  };
73
74
  }
74
75
  : skipToken,
75
- enabled: !!wallet && !!params.collectionAddress && !!params.currencyAddress,
76
+ enabled:
77
+ !!address && !!params.collectionAddress && !!params.currencyAddress,
76
78
  });
77
79
 
78
80
  return {