@0xsequence/marketplace-sdk 0.7.0 → 0.8.1

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 (227) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +11 -0
  3. package/.changeset/seven-doors-taste.md +5 -0
  4. package/CHANGELOG.md +13 -0
  5. package/dist/{chunk-MPBN3E54.js → chunk-2VHHJNXY.js} +3 -3
  6. package/dist/{chunk-FBUMNJQ4.js → chunk-3II5GLHE.js} +2 -2
  7. package/dist/chunk-3JU7SQVE.js +182 -0
  8. package/dist/chunk-3JU7SQVE.js.map +1 -0
  9. package/dist/{chunk-XTGMMNV5.js → chunk-A5ACY5YV.js} +2 -2
  10. package/dist/chunk-ABSYNRT5.js +128 -0
  11. package/dist/chunk-ABSYNRT5.js.map +1 -0
  12. package/dist/{chunk-XNA64MZQ.js → chunk-BCO4CYE4.js} +2 -2
  13. package/dist/{chunk-HTFORA4Q.js → chunk-BN36GABQ.js} +1883 -1010
  14. package/dist/chunk-BN36GABQ.js.map +1 -0
  15. package/dist/{chunk-4XK7XNJ7.js → chunk-BNAUZXPV.js} +73 -2
  16. package/dist/chunk-BNAUZXPV.js.map +1 -0
  17. package/dist/{chunk-Q5URKSC4.js → chunk-FMEEJFAF.js} +1 -1
  18. package/dist/{chunk-BBASZVT3.js → chunk-GBQVYNCD.js} +5 -6
  19. package/dist/chunk-GBQVYNCD.js.map +1 -0
  20. package/dist/{chunk-3AKOPSON.js → chunk-IZ44XPBH.js} +2 -9
  21. package/dist/chunk-IZ44XPBH.js.map +1 -0
  22. package/dist/{chunk-EAJ5K7QV.js → chunk-Q5RKAMYF.js} +3 -4
  23. package/dist/chunk-Q5RKAMYF.js.map +1 -0
  24. package/dist/{chunk-RBEPPVLT.js → chunk-X3QNSQER.js} +145 -355
  25. package/dist/chunk-X3QNSQER.js.map +1 -0
  26. package/dist/{index-CzTANLaA.d.ts → index-CnaFSNE9.d.ts} +6 -7
  27. package/dist/index.css +113 -31
  28. package/dist/index.css.map +1 -1
  29. package/dist/index.d.ts +2 -4
  30. package/dist/index.js +4 -4
  31. package/dist/listCollectibles-B0tbqnRd.d.ts +155 -0
  32. package/dist/react/_internal/api/index.d.ts +28 -2
  33. package/dist/react/_internal/api/index.js +3 -1
  34. package/dist/react/_internal/databeat/index.js +10 -9
  35. package/dist/react/_internal/index.d.ts +2 -3
  36. package/dist/react/_internal/index.js +4 -4
  37. package/dist/react/_internal/wagmi/index.js +2 -2
  38. package/dist/react/hooks/index.d.ts +259 -674
  39. package/dist/react/hooks/index.js +11 -20
  40. package/dist/react/hooks/options/index.d.ts +1 -2
  41. package/dist/react/hooks/options/index.js +4 -4
  42. package/dist/react/index.d.ts +7 -7
  43. package/dist/react/index.js +15 -24
  44. package/dist/react/queries/index.d.ts +25 -0
  45. package/dist/react/queries/index.js +48 -0
  46. package/dist/react/queries/index.js.map +1 -0
  47. package/dist/react/ssr/index.js +3 -3
  48. package/dist/react/ui/components/collectible-card/index.d.ts +1 -6
  49. package/dist/react/ui/components/collectible-card/index.js +13 -12
  50. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  51. package/dist/react/ui/icons/index.js +6 -6
  52. package/dist/react/ui/index.d.ts +18 -22
  53. package/dist/react/ui/index.js +13 -12
  54. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +6 -11
  55. package/dist/react/ui/modals/_internal/components/actionModal/index.js +10 -9
  56. package/dist/types/index.js +2 -2
  57. package/dist/{types-Ct1uCT3M.d.ts → types-o_pKUpQG.d.ts} +2 -5
  58. package/dist/utils/index.d.ts +1 -5
  59. package/dist/utils/index.js +4 -4
  60. package/package.json +22 -16
  61. package/src/react/_internal/api/__mocks__/indexer.msw.ts +3 -1
  62. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +1 -1
  63. package/src/react/_internal/api/__mocks__/metadata.msw.ts +14 -12
  64. package/src/react/_internal/api/index.ts +1 -0
  65. package/src/react/_internal/api/laos-api.ts +103 -0
  66. package/src/react/_internal/api/zod-schema.ts +3 -3
  67. package/src/react/_internal/types.ts +1 -10
  68. package/src/react/_internal/wallet/__tests__/wallet.test.ts +43 -0
  69. package/src/react/_internal/wallet/useWallet.ts +6 -3
  70. package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +1 -1
  71. package/src/react/hooks/__tests__/useCancelOrder.test.tsx +1 -1
  72. package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +1 -1
  73. package/src/react/hooks/__tests__/useCollectible.test.tsx +2 -2
  74. package/src/react/hooks/__tests__/useCollection.test.tsx +2 -2
  75. package/src/react/hooks/__tests__/useComparePrices.test.tsx +1 -1
  76. package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +1 -1
  77. package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +1 -1
  78. package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +2 -2
  79. package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +1 -1
  80. package/src/react/hooks/__tests__/useCurrencies.test.tsx +2 -2
  81. package/src/react/hooks/__tests__/useCurrency.test.tsx +2 -2
  82. package/src/react/hooks/__tests__/useFilters.test.tsx +2 -2
  83. package/src/react/hooks/__tests__/useFloorOrder.test.tsx +2 -2
  84. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +1 -1
  85. package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +1 -1
  86. package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +1 -1
  87. package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +1 -1
  88. package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +2 -2
  89. package/src/react/hooks/__tests__/useListCollectibles.test.tsx +3 -2
  90. package/src/react/hooks/__tests__/useListCollectiblesPaginated.test.tsx +1 -1
  91. package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +1 -1
  92. package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +1 -1
  93. package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +1 -1
  94. package/src/react/hooks/__tests__/useLowestListing.test.tsx +1 -1
  95. package/src/react/hooks/__tests__/useRoyalty.test.tsx +1 -2
  96. package/src/react/hooks/index.ts +0 -1
  97. package/src/react/hooks/options/collectionOptions.ts +2 -3
  98. package/src/react/hooks/useAutoSelectFeeOption.tsx +1 -1
  99. package/src/react/hooks/useCancelOrder.tsx +3 -3
  100. package/src/react/hooks/useCancelTransactionSteps.tsx +1 -1
  101. package/src/react/hooks/useCheckoutOptions.tsx +1 -2
  102. package/src/react/hooks/useCollectible.tsx +2 -3
  103. package/src/react/hooks/useCollectionBalanceDetails.tsx +1 -2
  104. package/src/react/hooks/useComparePrices.tsx +2 -9
  105. package/src/react/hooks/useConvertPriceToUSD.tsx +1 -4
  106. package/src/react/hooks/useCountListingsForCollectible.tsx +1 -2
  107. package/src/react/hooks/useCountOfCollectables.tsx +1 -2
  108. package/src/react/hooks/useCountOffersForCollectible.tsx +1 -2
  109. package/src/react/hooks/useCurrencies.tsx +1 -4
  110. package/src/react/hooks/useCurrency.tsx +3 -8
  111. package/src/react/hooks/useFilters.tsx +5 -4
  112. package/src/react/hooks/useFloorOrder.tsx +1 -2
  113. package/src/react/hooks/useGenerateCancelTransaction.tsx +3 -6
  114. package/src/react/hooks/useGenerateListingTransaction.tsx +2 -3
  115. package/src/react/hooks/useGenerateOfferTransaction.tsx +2 -3
  116. package/src/react/hooks/useGenerateSellTransaction.tsx +3 -6
  117. package/src/react/hooks/useHighestOffer.tsx +1 -1
  118. package/src/react/hooks/useListCollectibles.tsx +33 -61
  119. package/src/react/hooks/useListCollectiblesPaginated.tsx +2 -6
  120. package/src/react/hooks/useListListingsForCollectible.tsx +1 -2
  121. package/src/react/hooks/useListOffersForCollectible.tsx +1 -2
  122. package/src/react/hooks/useLowestListing.tsx +1 -2
  123. package/src/react/hooks/useRoyalty.tsx +3 -8
  124. package/src/react/hooks/useTransferTokens.tsx +2 -2
  125. package/src/react/queries/balanceOfCollectible.ts +9 -32
  126. package/src/react/queries/getTokenSupplies.ts +38 -0
  127. package/src/react/queries/index.ts +5 -0
  128. package/src/react/queries/listCollectibles.ts +96 -0
  129. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +1 -1
  130. package/src/react/ui/components/_internals/action-button/__tests__/ActionButton.test.tsx +1 -1
  131. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +4 -3
  132. package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +1 -1
  133. package/src/react/ui/components/collectible-card/CollectibleCard.tsx +2 -3
  134. package/src/react/ui/components/collectible-card/__tests__/CollectibleCard.test.tsx +1 -1
  135. package/src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx +127 -0
  136. package/src/react/ui/modals/BuyModal/Modal.tsx +70 -85
  137. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx +85 -226
  138. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +140 -0
  139. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +67 -76
  140. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +1 -60
  141. package/src/react/ui/modals/BuyModal/hooks/__tests__/useFees.test.tsx +1 -1
  142. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +29 -13
  143. package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +26 -21
  144. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +200 -0
  145. package/src/react/ui/modals/BuyModal/index.tsx +4 -14
  146. package/src/react/ui/modals/BuyModal/store.ts +71 -76
  147. package/src/react/ui/modals/CreateListingModal/Modal.tsx +71 -7
  148. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +2 -2
  149. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +1 -1
  150. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +1 -1
  151. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +9 -5
  152. package/src/react/ui/modals/CreateListingModal/store.ts +7 -2
  153. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +103 -6
  154. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +1 -1
  155. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +1 -1
  156. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +1 -1
  157. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +8 -4
  158. package/src/react/ui/modals/MakeOfferModal/store.ts +5 -3
  159. package/src/react/ui/modals/SellModal/Modal.tsx +76 -4
  160. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +1 -1
  161. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +1 -1
  162. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +1 -1
  163. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +16 -8
  164. package/src/react/ui/modals/SellModal/store.ts +5 -3
  165. package/src/react/ui/modals/TransferModal/_store.ts +15 -3
  166. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +58 -0
  167. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +56 -0
  168. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +50 -0
  169. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +94 -66
  170. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +22 -14
  171. package/src/react/ui/modals/TransferModal/index.tsx +72 -38
  172. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +43 -42
  173. package/src/react/ui/modals/_internal/components/actionModal/store.ts +1 -2
  174. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +2 -2
  175. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +9 -1
  176. package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +27 -12
  177. package/src/react/ui/modals/_internal/components/priceInput/__tests__/index.test.tsx +1 -1
  178. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +19 -3
  179. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +3 -0
  180. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/ActionButtons.tsx +60 -0
  181. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx +30 -0
  182. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +126 -0
  183. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +25 -0
  184. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +74 -0
  185. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +1 -2
  186. package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +1 -2
  187. package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +1 -1
  188. package/src/react/ui/modals/_internal/components/transaction-footer/index.tsx +4 -7
  189. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +1 -1
  190. package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +1 -1
  191. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +1 -1
  192. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +1 -1
  193. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +6 -1
  194. package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +2 -2
  195. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +10 -31
  196. package/src/react/ui/modals/_internal/hooks/useSelectWaasFeeOptions.ts +53 -0
  197. package/src/react/ui/modals/_internal/types.ts +2 -1
  198. package/src/types/waas-types.ts +38 -0
  199. package/src/utils/network.ts +2 -4
  200. package/test/const.ts +1 -1
  201. package/test/setup.ts +10 -0
  202. package/test/test-utils.tsx +31 -5
  203. package/tsconfig.tsbuildinfo +1 -1
  204. package/dist/chunk-3AKOPSON.js.map +0 -1
  205. package/dist/chunk-4XK7XNJ7.js.map +0 -1
  206. package/dist/chunk-BBASZVT3.js.map +0 -1
  207. package/dist/chunk-EAJ5K7QV.js.map +0 -1
  208. package/dist/chunk-HTFORA4Q.js.map +0 -1
  209. package/dist/chunk-OFY7OFTL.js +0 -458
  210. package/dist/chunk-OFY7OFTL.js.map +0 -1
  211. package/dist/chunk-RBEPPVLT.js.map +0 -1
  212. package/src/react/hooks/__tests__/useGenerateBuyTransaction.test.tsx +0 -172
  213. package/src/react/hooks/useGenerateBuyTransaction.tsx +0 -80
  214. package/src/react/ui/modals/BuyModal/hooks/__tests__/useBuyCollectable.test.tsx +0 -349
  215. package/src/react/ui/modals/BuyModal/hooks/__tests__/useLoadData.test.tsx +0 -185
  216. package/src/react/ui/modals/BuyModal/hooks/useBuyCollectable.ts +0 -170
  217. package/src/react/ui/modals/BuyModal/modals/CheckoutModal.tsx +0 -47
  218. package/src/react/ui/modals/BuyModal/modals/Modal1155.tsx +0 -140
  219. package/src/react/ui/modals/BuyModal/modals/__tests__/CheckoutModal.test.tsx +0 -162
  220. package/src/react/ui/modals/BuyModal/modals/__tests__/Modal1155.test.tsx +0 -327
  221. package/src/react/ui/modals/_internal/components/waasFeeOptionsBox/index.tsx +0 -124
  222. package/src/react/ui/modals/_internal/components/waasFeeOptionsBox/store.ts +0 -12
  223. /package/dist/{chunk-MPBN3E54.js.map → chunk-2VHHJNXY.js.map} +0 -0
  224. /package/dist/{chunk-FBUMNJQ4.js.map → chunk-3II5GLHE.js.map} +0 -0
  225. /package/dist/{chunk-XTGMMNV5.js.map → chunk-A5ACY5YV.js.map} +0 -0
  226. /package/dist/{chunk-XNA64MZQ.js.map → chunk-BCO4CYE4.js.map} +0 -0
  227. /package/dist/{chunk-Q5URKSC4.js.map → chunk-FMEEJFAF.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/react/ui/modals/modal-provider.tsx","../src/react/ui/modals/BuyModal/Modal.tsx","../src/react/ui/modals/_internal/components/actionModal/ErrorModal.tsx","../src/react/ui/modals/_internal/components/actionModal/LoadingModal.tsx","../src/react/ui/modals/BuyModal/hooks/useBuyCollectable.ts","../src/utils/decode/erc20.ts","../src/react/ui/modals/BuyModal/store.ts","../src/react/ui/modals/BuyModal/hooks/useFees.ts","../src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts","../src/react/ui/modals/BuyModal/hooks/useLoadData.ts","../src/react/ui/modals/BuyModal/modals/CheckoutModal.tsx","../src/react/ui/modals/BuyModal/modals/Modal1155.tsx","../src/react/ui/modals/_internal/components/quantityInput/index.tsx","../src/react/ui/modals/CreateListingModal/Modal.tsx","../src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx","../src/react/ui/modals/_internal/components/calendarDropdown/index.tsx","../src/react/ui/modals/_internal/components/calendar/index.tsx","../src/react/ui/modals/_internal/components/floorPriceText/index.tsx","../src/react/ui/modals/_internal/components/priceInput/index.tsx","../src/react/ui/modals/_internal/components/currencyImage/index.tsx","../src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx","../src/react/ui/modals/_internal/components/tokenPreview/index.tsx","../src/react/ui/modals/_internal/components/transactionDetails/index.tsx","../src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx","../src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts","../src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx","../src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx","../src/react/ui/modals/_internal/components/transaction-footer/index.tsx","../src/react/ui/modals/_internal/components/transactionPreview/index.tsx","../src/react/ui/modals/_internal/components/timeAgo/index.tsx","../src/react/ui/modals/_internal/components/transactionStatusModal/store.ts","../src/react/ui/modals/_internal/components/transactionPreview/consts.ts","../src/react/ui/modals/_internal/components/transactionPreview/useTransactionPreviewTitle.tsx","../src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts","../src/react/ui/modals/_internal/components/transactionStatusModal/util/getMessage.ts","../src/react/ui/modals/_internal/components/transactionStatusModal/util/getFormattedType.ts","../src/react/ui/modals/_internal/components/transactionStatusModal/util/getTitle.ts","../src/react/ui/modals/CreateListingModal/store.ts","../src/react/ui/modals/MakeOfferModal/Modal.tsx","../src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx","../src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx","../src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx","../src/react/ui/modals/MakeOfferModal/store.ts","../src/react/ui/modals/SellModal/Modal.tsx","../src/react/ui/modals/_internal/components/transactionHeader/index.tsx","../src/react/ui/modals/SellModal/hooks/useSell.tsx","../src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx","../src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx","../src/react/ui/modals/SellModal/store.ts","../src/react/ui/modals/SuccessfulPurchaseModal/index.tsx","../src/react/ui/modals/SuccessfulPurchaseModal/_store.ts","../src/react/ui/modals/TransferModal/index.tsx","../src/react/ui/modals/TransferModal/_store.ts","../src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx","../src/react/ui/modals/TransferModal/messages.ts","../src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx","../src/react/ui/modals/TransferModal/_views/followWalletInstructions/index.tsx","../src/react/ui/modals/CreateListingModal/index.tsx","../src/react/ui/modals/MakeOfferModal/index.tsx","../src/react/ui/modals/SellModal/index.tsx","../src/react/ui/modals/BuyModal/index.tsx","../src/react/ui/components/collectible-card/CollectibleCard.tsx","../src/react/ui/components/_internals/action-button/ActionButton.tsx","../src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx","../src/react/ui/components/_internals/action-button/store.ts","../src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx","../src/react/ui/components/_internals/action-button/components/OwnerActions.tsx","../src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts","../src/react/ui/components/collectible-card/CollectibleAsset.tsx","../src/react/ui/components/collectible-card/Footer.tsx"],"sourcesContent":["import { observer } from '@legendapp/state/react';\nimport { BuyModal } from './BuyModal/Modal';\nimport { CreateListingModal } from './CreateListingModal/Modal';\nimport { MakeOfferModal } from './MakeOfferModal/Modal';\nimport { SellModal } from './SellModal/Modal';\nimport SuccessfulPurchaseModal from './SuccessfulPurchaseModal';\nimport { TransferModal } from './TransferModal';\nimport SwitchChainModal from './_internal/components/switchChainModal';\nimport TransactionStatusModal from './_internal/components/transactionStatusModal';\nimport { _accountModalOpen$ } from './_internal/stores/accountModal';\n\nexport const ModalProvider = observer(() => {\n\treturn (\n\t\t<>\n\t\t\t<CreateListingModal />\n\t\t\t<MakeOfferModal />\n\t\t\t<TransferModal />\n\t\t\t<SellModal />\n\t\t\t<BuyModal />\n\t\t\t<SuccessfulPurchaseModal />\n\t\t\t{/* Helper modals */}\n\t\t\t<SwitchChainModal />\n\t\t\t<TransactionStatusModal />\n\t\t</>\n\t);\n});\n","'use client';\n\nimport { use$ } from '@legendapp/state/react';\nimport type { Hex } from 'viem';\nimport { ContractType, type TokenMetadata } from '../../../_internal';\nimport { ErrorModal } from '../_internal/components/actionModal/ErrorModal';\nimport { LoadingModal } from '../_internal/components/actionModal/LoadingModal';\nimport { useBuyCollectable } from './hooks/useBuyCollectable';\nimport { useLoadData } from './hooks/useLoadData';\nimport { CheckoutModal } from './modals/CheckoutModal';\nimport type { BuyInput } from './modals/CheckoutModal';\nimport { ERC1155QuantityModal } from './modals/Modal1155';\nimport { buyModal$ } from './store';\n\nexport const BuyModal = () => {\n\tconst isOpen = use$(buyModal$.isOpen);\n\n\tif (!isOpen) return null;\n\n\treturn <BuyModalContent />;\n};\n\nconst BuyModalContent = () => {\n\tconst chainId = String(use$(buyModal$.state.order.chainId));\n\tconst collectionAddress = use$(\n\t\tbuyModal$.state.order.collectionContractAddress,\n\t) as Hex;\n\tconst buyModalState = use$(buyModal$.state);\n\tconst collectibleId = use$(buyModal$.state.order.tokenId);\n\tconst callbacks = use$(buyModal$.callbacks);\n\tconst order = use$(buyModal$.state.order);\n\tconst isOpen = use$(buyModal$.isOpen);\n\tconst checkoutModalIsLoading = use$(buyModal$.state.checkoutModalIsLoading);\n\tconst setCheckoutModalIsLoading = use$(buyModal$.setCheckoutModalIsLoading);\n\tconst setCheckoutModalLoaded = use$(buyModal$.setCheckoutModalLoaded);\n\n\tconst { collection, collectable, checkoutOptions, isLoading, isError } =\n\t\tuseLoadData({\n\t\t\tchainId: Number(chainId),\n\t\t\tcollectionAddress,\n\t\t\tcollectibleId,\n\t\t\torderId: order.orderId,\n\t\t\tmarketplace: order.marketplace,\n\t\t});\n\n\tconst {\n\t\tbuy,\n\t\tisLoading: buyIsLoading,\n\t\tisError: buyIsError,\n\t} = useBuyCollectable({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcallbacks,\n\t\ttokenId: collectibleId,\n\t\tpriceCurrencyAddress: order.priceCurrencyAddress,\n\t\tsetCheckoutModalIsLoading,\n\t\tsetCheckoutModalLoaded,\n\t\t...(buyModalState?.customProviderCallback && {\n\t\t\tcustomProviderCallback: buyModalState.customProviderCallback,\n\t\t}),\n\t});\n\n\tconst buyAction = (input: BuyInput) => {\n\t\tif (buy && checkoutOptions) {\n\t\t\tbuy({ ...input, checkoutOptions });\n\t\t\tbuyModal$.state.purchaseProcessing.set(true);\n\t\t} else {\n\t\t\tconsole.error('buy is null or undefined');\n\t\t}\n\t};\n\n\tif (\n\t\tisLoading ||\n\t\tcheckoutModalIsLoading ||\n\t\t!collection ||\n\t\t!collectable ||\n\t\t!checkoutOptions ||\n\t\tbuyIsLoading\n\t) {\n\t\treturn (\n\t\t\t<LoadingModal\n\t\t\t\tisOpen={isOpen}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={buyModal$.close}\n\t\t\t\ttitle=\"Loading Sequence Pay\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (buyIsError || isError) {\n\t\treturn (\n\t\t\t<ErrorModal\n\t\t\t\tisOpen={isOpen}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={buyModal$.close}\n\t\t\t\ttitle=\"Error\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (buyModal$.state.purchaseProcessing.get()) {\n\t\treturn null;\n\t}\n\n\treturn collection.type === ContractType.ERC721 ? (\n\t\t<CheckoutModal\n\t\t\tbuy={buyAction}\n\t\t\tcollectable={collectable as TokenMetadata}\n\t\t\torder={order}\n\t\t/>\n\t) : (\n\t\t<ERC1155QuantityModal\n\t\t\tbuy={buyAction}\n\t\t\tcollectable={collectable as TokenMetadata}\n\t\t\torder={order}\n\t\t\tchainId={chainId}\n\t\t\tcollectionAddress={collectionAddress}\n\t\t\tcollectibleId={collectibleId}\n\t\t/>\n\t);\n};\n","import { Text } from '@0xsequence/design-system';\nimport { ActionModal } from './ActionModal';\n\ninterface ErrorModalProps {\n\tisOpen: boolean;\n\tchainId: number;\n\tonClose: () => void;\n\ttitle: string;\n\tmessage?: string;\n}\n\nexport const ErrorModal = ({\n\tisOpen,\n\tchainId,\n\tonClose,\n\ttitle,\n\tmessage,\n}: ErrorModalProps) => (\n\t<ActionModal\n\t\tisOpen={isOpen}\n\t\tchainId={chainId}\n\t\tonClose={onClose}\n\t\ttitle={title}\n\t\tctas={[]}\n\t>\n\t\t<div\n\t\t\tclassName=\"flex items-center justify-center p-4\"\n\t\t\tdata-testid=\"error-modal\"\n\t\t>\n\t\t\t<Text className=\"font-body\" color=\"text80\">\n\t\t\t\t{message || 'Error loading item details'}\n\t\t\t</Text>\n\t\t</div>\n\t</ActionModal>\n);\n","import { Spinner } from '@0xsequence/design-system';\nimport { ActionModal } from './ActionModal';\n\ninterface LoadingModalProps {\n\tisOpen: boolean;\n\tchainId: number;\n\tonClose: () => void;\n\ttitle: string;\n}\n\nexport const LoadingModal = ({\n\tisOpen,\n\tchainId,\n\tonClose,\n\ttitle,\n}: LoadingModalProps) => (\n\t<ActionModal\n\t\tisOpen={isOpen}\n\t\tchainId={chainId}\n\t\tonClose={onClose}\n\t\ttitle={title}\n\t\tctas={[]}\n\t\tdisableAnimation\n\t>\n\t\t<div\n\t\t\tclassName=\"flex items-center justify-center p-4\"\n\t\t\tdata-testid=\"loading-modal\"\n\t\t>\n\t\t\t<Spinner size=\"lg\" />\n\t\t</div>\n\t</ActionModal>\n);\n","import { useSelectPaymentModal } from '@0xsequence/checkout';\nimport type { QueryKey } from '@tanstack/react-query';\nimport type { Hash, Hex } from 'viem';\nimport { decodeERC20Approval } from '../../../../../utils/decode/erc20';\nimport {\n\ttype CheckoutOptions,\n\ttype MarketplaceKind,\n\tStepType,\n\tWalletKind,\n\tbalanceQueries,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n\tgetQueryClient,\n} from '../../../../_internal';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport { useConfig } from '../../../../hooks';\nimport type { ModalCallbacks } from '../../_internal/types';\nimport { buyModal$ } from '../store';\nimport { useFees } from './useFees';\n\ninterface UseBuyCollectableProps {\n\tchainId: string;\n\tcollectionAddress: string;\n\ttokenId: string | undefined;\n\tcallbacks?: ModalCallbacks;\n\tpriceCurrencyAddress: string;\n\tsetCheckoutModalIsLoading: (isLoading: boolean) => void;\n\tsetCheckoutModalLoaded: (isLoaded: boolean) => void;\n\tcustomProviderCallback?: (args: { data: string; value: string }) => void;\n}\n\ntype BuyCollectableReturn =\n\t| { status: 'loading'; buy: null; isLoading: true; isError: false }\n\t| { status: 'error'; buy: null; isLoading: false; isError: true }\n\t| {\n\t\t\tstatus: 'ready';\n\t\t\tisLoading: false;\n\t\t\tisError: false;\n\t\t\tbuy: (input: {\n\t\t\t\torderId: string;\n\t\t\t\tquantity: string;\n\t\t\t\tcollectableDecimals: number;\n\t\t\t\tmarketplace: MarketplaceKind;\n\t\t\t\tcheckoutOptions: CheckoutOptions;\n\t\t\t}) => Promise<void>;\n\t };\n\nexport const useBuyCollectable = ({\n\tchainId,\n\tcollectionAddress,\n\ttokenId,\n\tcallbacks,\n\tpriceCurrencyAddress,\n\tsetCheckoutModalIsLoading,\n\tsetCheckoutModalLoaded,\n\tcustomProviderCallback,\n}: UseBuyCollectableProps): BuyCollectableReturn => {\n\tconst { openSelectPaymentModal } = useSelectPaymentModal();\n\tconst config = useConfig();\n\tconst marketplaceClient = getMarketplaceClient(Number(chainId), config);\n\tconst fees = useFees({ chainId: Number(chainId), collectionAddress });\n\tconst { wallet, isLoading, isError } = useWallet();\n\n\tif (isLoading) {\n\t\treturn { status: 'loading', buy: null, isLoading, isError: false };\n\t}\n\n\tif (isError || !wallet || !tokenId) {\n\t\treturn { status: 'error', buy: null, isLoading, isError: true };\n\t}\n\n\tconst invalidateQueries = async (queriesToInvalidate: QueryKey[]) => {\n\t\tconst queryClient = getQueryClient();\n\t\tfor (const queryKey of queriesToInvalidate) {\n\t\t\tawait queryClient.invalidateQueries({ queryKey });\n\t\t}\n\t};\n\n\treturn {\n\t\tstatus: 'ready',\n\t\tisLoading,\n\t\tisError,\n\t\tbuy: async (input) => {\n\t\t\tsetCheckoutModalIsLoading(true);\n\t\t\tconst { steps } = await marketplaceClient.generateBuyTransaction({\n\t\t\t\tcollectionAddress,\n\t\t\t\tbuyer: await wallet.address(),\n\t\t\t\tmarketplace: input.marketplace,\n\t\t\t\tordersData: [\n\t\t\t\t\t{\n\t\t\t\t\t\torderId: input.orderId,\n\t\t\t\t\t\tquantity: input.quantity,\n\t\t\t\t\t\ttokenId: tokenId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tadditionalFees: [fees],\n\t\t\t\twalletType: WalletKind.unknown,\n\t\t\t});\n\n\t\t\t// these states are necessary to manage appearance of the quantity modal\n\t\t\tsetCheckoutModalLoaded(true);\n\t\t\tsetCheckoutModalIsLoading(false);\n\n\t\t\tconst buyStep = steps.find((step) => step.id === StepType.buy);\n\t\t\tconst approveStep = steps.find(\n\t\t\t\t(step) => step.id === StepType.tokenApproval,\n\t\t\t);\n\n\t\t\tconst approvedSpenderAddress = approveStep\n\t\t\t\t? decodeERC20Approval(approveStep.data as Hex).spender\n\t\t\t\t: undefined;\n\n\t\t\tif (!buyStep) {\n\t\t\t\tthrow new Error('Buy step not found');\n\t\t\t}\n\n\t\t\tconst openSelectPaymentModalConfig = {\n\t\t\t\tchain: chainId,\n\t\t\t\tcollectibles: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttokenId: tokenId,\n\t\t\t\t\t\tquantity: input.quantity,\n\t\t\t\t\t\tdecimals: input.collectableDecimals,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tcurrencyAddress: priceCurrencyAddress,\n\t\t\t\tprice: buyStep.price,\n\t\t\t\ttargetContractAddress: buyStep.to,\n\t\t\t\tapprovedSpenderAddress,\n\t\t\t\ttxData: buyStep.data as Hex,\n\t\t\t\tcollectionAddress,\n\t\t\t\trecipientAddress: await wallet.address(),\n\t\t\t\tenableMainCurrencyPayment: true,\n\t\t\t\tenableSwapPayments: !!input.checkoutOptions.swap,\n\t\t\t\tcreditCardProviders: customProviderCallback\n\t\t\t\t\t? ['custom']\n\t\t\t\t\t: input.checkoutOptions.nftCheckout || [],\n\t\t\t\tonSuccess: (hash: string) => {\n\t\t\t\t\tcallbacks?.onSuccess?.({ hash: hash as Hash });\n\t\t\t\t},\n\t\t\t\tsupplementaryAnalyticsInfo: {\n\t\t\t\t\torderId: input.orderId,\n\t\t\t\t\tmarketplaceKind: input.marketplace,\n\t\t\t\t},\n\t\t\t\tonError: callbacks?.onError,\n\t\t\t\tonClose: () => {\n\t\t\t\t\tinvalidateQueries([\n\t\t\t\t\t\tcollectableKeys.listings,\n\t\t\t\t\t\tcollectableKeys.lowestListings,\n\t\t\t\t\t\tcollectableKeys.listingsCount,\n\t\t\t\t\t\tcollectableKeys.lists,\n\t\t\t\t\t\tcollectableKeys.userBalances,\n\t\t\t\t\t\tbalanceQueries.all,\n\t\t\t\t\t\tbalanceQueries.collectionBalanceDetails,\n\t\t\t\t\t]);\n\n\t\t\t\t\tbuyModal$.close();\n\t\t\t\t},\n\t\t\t\t...(customProviderCallback && {\n\t\t\t\t\tcustomProviderCallback: () => {\n\t\t\t\t\t\tcustomProviderCallback(buyStep);\n\t\t\t\t\t\tbuyModal$.close();\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t};\n\n\t\t\topenSelectPaymentModal(openSelectPaymentModalConfig);\n\t\t},\n\t};\n};\n","import { type Hex, decodeFunctionData, erc20Abi } from 'viem';\n\ninterface DecodedApprovalData {\n\tspender: string;\n\tvalue: bigint;\n}\n\nexport function decodeERC20Approval(calldata: Hex): DecodedApprovalData {\n\tconst decoded = decodeFunctionData({\n\t\tabi: erc20Abi,\n\t\tdata: calldata,\n\t});\n\n\tif (decoded.functionName !== 'approve') {\n\t\tthrow new Error('Not an ERC20 approval transaction');\n\t}\n\n\tconst [spender, value] = decoded.args;\n\n\treturn {\n\t\tspender: spender as string,\n\t\tvalue: value as bigint,\n\t};\n}\n","import { observable } from '@legendapp/state';\nimport type { ShowBuyModalArgs } from '.';\nimport type { Order } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\n\nconst buyState = {\n\torder: undefined as unknown as Order,\n\tquantity: '1',\n\tinvalidQuantity: false,\n\tcheckoutModalIsLoading: false,\n\tcheckoutModalLoaded: false,\n\tpurchaseProcessing: false,\n\tcustomProviderCallback: null,\n} as const;\n\nexport interface BuyModalState {\n\tisOpen: boolean;\n\topen: (\n\t\targs: ShowBuyModalArgs & {\n\t\t\tcallbacks?: ModalCallbacks;\n\t\t\tdefaultCallbacks?: ModalCallbacks;\n\t\t},\n\t) => void;\n\tclose: () => void;\n\tstate: {\n\t\torder: Order;\n\t\tquantity: string;\n\t\tinvalidQuantity: boolean;\n\t\tcheckoutModalIsLoading: boolean;\n\t\tcheckoutModalLoaded: boolean;\n\t\tpurchaseProcessing: boolean;\n\t\tcustomProviderCallback?:\n\t\t\t| ((args: { data: string; value: string }) => void)\n\t\t\t| null;\n\t};\n\tsetCheckoutModalIsLoading: (isLoading: boolean) => void;\n\tsetCheckoutModalLoaded: (isLoaded: boolean) => void;\n\tsetPurchaseProcessing: (isProcessing: boolean) => void;\n\tcallbacks?: ModalCallbacks;\n}\n\nexport const initialState: BuyModalState = {\n\tisOpen: false,\n\topen: ({\n\t\tcallbacks,\n\t\tdefaultCallbacks,\n\t\t...args\n\t}: ShowBuyModalArgs & {\n\t\tcallbacks?: ModalCallbacks;\n\t\tdefaultCallbacks?: ModalCallbacks;\n\t}) => {\n\t\tbuyModal$.state.set({\n\t\t\tquantity: args.order.quantityAvailableFormatted,\n\t\t\torder: args.order,\n\t\t\tinvalidQuantity: false,\n\t\t\tcheckoutModalIsLoading: false,\n\t\t\tcheckoutModalLoaded: false,\n\t\t\tpurchaseProcessing: false,\n\t\t\tcustomProviderCallback: args.customProviderCallback,\n\t\t});\n\t\tbuyModal$.callbacks.set(callbacks || defaultCallbacks);\n\t\tbuyModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tbuyModal$.isOpen.set(false);\n\t\tbuyModal$.callbacks.set(undefined);\n\t\tbuyModal$.state.set(buyState);\n\t},\n\tstate: buyState,\n\tsetCheckoutModalIsLoading: (isLoading: boolean) => {\n\t\tbuyModal$.state.checkoutModalIsLoading.set(isLoading);\n\t},\n\tsetCheckoutModalLoaded: (isLoaded: boolean) => {\n\t\tbuyModal$.state.checkoutModalLoaded.set(isLoaded);\n\t},\n\tsetPurchaseProcessing: (isProcessing: boolean) => {\n\t\tbuyModal$.state.purchaseProcessing.set(isProcessing);\n\t},\n\tcallbacks: undefined,\n};\n\nexport const buyModal$ = observable(initialState);\n","import { avalanche, optimism } from 'viem/chains';\nimport type { AdditionalFee } from '../../../../_internal';\nimport { useMarketplaceConfig } from '../../../../hooks';\n\nexport const useFees = ({\n\tchainId,\n\tcollectionAddress,\n}: {\n\tchainId: number;\n\tcollectionAddress: string;\n}) => {\n\tconst defaultFee = 2.5;\n\tconst defaultPlatformFeeRecipient =\n\t\t'0x858dB1cbF6D09D447C96A11603189b49B2D1C219';\n\tconst avalancheAndOptimismPlatformFeeRecipient =\n\t\t'0x400cdab4676c17aec07e8ec748a5fc3b674bca41';\n\tconst { data: marketplaceConfig } = useMarketplaceConfig();\n\n\tconst collection = marketplaceConfig?.collections.find(\n\t\t(collection) =>\n\t\t\tcollection.address.toLowerCase() === collectionAddress.toLowerCase() &&\n\t\t\tchainId === Number(collection.chainId),\n\t);\n\n\tconst avalancheOrOptimism =\n\t\tchainId === avalanche.id || chainId === optimism.id;\n\tconst receiver = avalancheOrOptimism\n\t\t? avalancheAndOptimismPlatformFeeRecipient\n\t\t: defaultPlatformFeeRecipient;\n\n\tconst percentageToBPS = (percentage: string | number) =>\n\t\t(Number(percentage) * 10000) / 100;\n\n\treturn {\n\t\tamount: percentageToBPS(collection?.feePercentage || defaultFee).toString(),\n\t\treceiver,\n\t} satisfies AdditionalFee;\n};\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport {\n\ttype MarketplaceKind,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport { useConfig } from '../../../../hooks';\nimport { useFees } from './useFees';\n\nexport const useCheckoutOptions = (input: {\n\tchainId: number;\n\tcollectionAddress: Hex;\n\torderId: string;\n\tmarketplace: MarketplaceKind;\n}) => {\n\tconst config = useConfig();\n\tconst { wallet } = useWallet();\n\tconst fees = useFees({\n\t\tchainId: input.chainId,\n\t\tcollectionAddress: input.collectionAddress,\n\t});\n\n\treturn useQuery({\n\t\tqueryKey: [\n\t\t\t'checkoutOptions',\n\t\t\tinput.chainId,\n\t\t\tinput.collectionAddress,\n\t\t\tinput.orderId,\n\t\t\tinput.marketplace,\n\t\t],\n\t\tqueryFn: wallet\n\t\t\t? async () => {\n\t\t\t\t\tconst marketplaceClient = getMarketplaceClient(input.chainId, config);\n\t\t\t\t\treturn marketplaceClient\n\t\t\t\t\t\t.checkoutOptionsMarketplace({\n\t\t\t\t\t\t\twallet: await wallet.address(),\n\t\t\t\t\t\t\torders: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontractAddress: input.collectionAddress,\n\t\t\t\t\t\t\t\t\torderId: input.orderId,\n\t\t\t\t\t\t\t\t\tmarketplace: input.marketplace,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tadditionalFee: Number(fees.amount),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then((res) => res.options);\n\t\t\t\t}\n\t\t\t: skipToken,\n\t\tenabled: !!wallet,\n\t});\n};\n","import type { Hex } from 'viem';\nimport type { MarketplaceKind } from '../../../../_internal';\nimport { useCollectible, useCollection } from '../../../../hooks';\n\nimport { useCheckoutOptions } from './useCheckoutOptions';\n\nexport type UseLoadDataProps = {\n\tchainId: number;\n\tcollectionAddress: Hex;\n\tcollectibleId: string | undefined;\n\torderId: string;\n\tmarketplace: MarketplaceKind;\n};\n\nexport const useLoadData = ({\n\tchainId,\n\tcollectionAddress,\n\tcollectibleId,\n\torderId,\n\tmarketplace,\n}: UseLoadDataProps) => {\n\tconst {\n\t\tdata: collection,\n\t\tisLoading: collectionLoading,\n\t\tisError: collectionError,\n\t} = useCollection({\n\t\tchainId,\n\t\tcollectionAddress,\n\t});\n\n\tconst {\n\t\tdata: collectable,\n\t\tisLoading: collectableLoading,\n\t\tisError: collectableError,\n\t} = useCollectible({\n\t\tchainId: String(chainId),\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t\tquery: {\n\t\t\tenabled: !!collectibleId,\n\t\t},\n\t});\n\n\tconst {\n\t\tdata: checkoutOptions,\n\t\tisLoading: checkoutOptionsLoading,\n\t\tisError: checkoutOptionsError,\n\t} = useCheckoutOptions({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\torderId,\n\t\tmarketplace,\n\t});\n\n\treturn {\n\t\tcollection,\n\t\tcollectable,\n\t\tcheckoutOptions,\n\t\tisLoading:\n\t\t\tcollectionLoading || collectableLoading || checkoutOptionsLoading,\n\t\tisError: collectionError || collectableError || checkoutOptionsError,\n\t};\n};\n","'use client';\n\nimport { useEffect } from 'react';\nimport { parseUnits } from 'viem';\nimport type { Order } from '../../../../_internal';\nimport type {\n\tMarketplaceKind,\n\tTokenMetadata,\n} from '../../../../_internal/api/marketplace.gen';\nimport { buyModal$ } from '../store';\n\nexport interface BuyInput {\n\torderId: string;\n\tcollectableDecimals: number;\n\tmarketplace: MarketplaceKind;\n\tquantity: string;\n}\n\nexport interface CheckoutModalProps {\n\tbuy: (props: BuyInput) => void;\n\tcollectable: TokenMetadata;\n\torder: Order;\n\tisLoading?: boolean;\n}\nexport function CheckoutModal({ buy, collectable, order }: CheckoutModalProps) {\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (\n\t\t\tbuyModal$.state.checkoutModalIsLoading.get() ||\n\t\t\tbuyModal$.state.checkoutModalLoaded.get()\n\t\t)\n\t\t\treturn;\n\n\t\tconst executeBuy = () => {\n\t\t\tbuy({\n\t\t\t\torderId: order.orderId,\n\t\t\t\tcollectableDecimals: collectable.decimals || 0,\n\t\t\t\tquantity: parseUnits('1', collectable.decimals || 0).toString(),\n\t\t\t\tmarketplace: order.marketplace,\n\t\t\t});\n\t\t};\n\n\t\texecuteBuy();\n\t}, []);\n\n\treturn null;\n}\n","'use client';\n\nimport { observer } from '@legendapp/state/react';\nimport * as dn from 'dnum';\nimport type { Hex } from 'viem';\n\nimport { Text, TokenImage } from '@0xsequence/design-system';\nimport { DEFAULT_MARKETPLACE_FEE_PERCENTAGE } from '../../../../../consts';\nimport { compareAddress } from '../../../../../utils/address';\nimport type { Order } from '../../../../_internal';\nimport { useCurrency, useMarketplaceConfig } from '../../../../hooks';\nimport { ActionModal } from '../../_internal/components/actionModal';\nimport QuantityInput from '../../_internal/components/quantityInput';\nimport { buyModal$ } from '../store';\nimport type { CheckoutModalProps } from './CheckoutModal';\n\ninterface ERC1155QuantityModalProps extends CheckoutModalProps {\n\tchainId: string;\n\tcollectionAddress: Hex;\n\tcollectibleId: string | undefined;\n}\n\nexport const ERC1155QuantityModal = observer(\n\t({ buy, collectable, order }: ERC1155QuantityModalProps) => {\n\t\tif (\n\t\t\tbuyModal$.state.checkoutModalLoaded.get() &&\n\t\t\tbuyModal$.isOpen.get() &&\n\t\t\tbuyModal$.state.checkoutModalIsLoading.get() &&\n\t\t\tbuyModal$.state.purchaseProcessing.get()\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<ActionModal\n\t\t\t\tisOpen={buyModal$.isOpen.get()}\n\t\t\t\tchainId={order.chainId}\n\t\t\t\tonClose={() => buyModal$.close()}\n\t\t\t\ttitle=\"Select Quantity\"\n\t\t\t\tdisableAnimation={true}\n\t\t\t\tctas={[\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Buy now',\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tbuyModal$.state.checkoutModalIsLoading.set(true);\n\t\t\t\t\t\t\tbuyModal$.state.purchaseProcessing.set(true);\n\n\t\t\t\t\t\t\tbuy({\n\t\t\t\t\t\t\t\tquantity: buyModal$.state.quantity.get(),\n\t\t\t\t\t\t\t\torderId: order.orderId,\n\t\t\t\t\t\t\t\tcollectableDecimals: collectable.decimals || 0,\n\t\t\t\t\t\t\t\tmarketplace: order.marketplace,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdisabled: buyModal$.state.checkoutModalIsLoading.get(),\n\t\t\t\t\t\tpending: buyModal$.state.checkoutModalIsLoading.get(),\n\t\t\t\t\t},\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t<div className=\"flex w-full flex-col gap-4\">\n\t\t\t\t\t<QuantityInput\n\t\t\t\t\t\t$quantity={buyModal$.state.quantity}\n\t\t\t\t\t\t$invalidQuantity={buyModal$.state.invalidQuantity}\n\t\t\t\t\t\tdecimals={order.quantityDecimals}\n\t\t\t\t\t\tmaxQuantity={order.quantityRemaining}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TotalPrice order={order} />\n\t\t\t\t</div>\n\t\t\t</ActionModal>\n\t\t);\n\t},\n);\n\nconst TotalPrice = observer(({ order }: { order: Order }) => {\n\tconst { data: marketplaceConfig } = useMarketplaceConfig();\n\tconst { data: currency, isLoading: isCurrencyLoading } = useCurrency({\n\t\tchainId: order.chainId,\n\t\tcurrencyAddress: order.priceCurrencyAddress,\n\t});\n\n\tconst quantityStr = buyModal$.state.quantity.get();\n\n\tlet formattedPrice = '0';\n\n\tif (currency) {\n\t\tconst quantity = BigInt(quantityStr);\n\t\tconst totalPriceWithoutFees = dn.format(\n\t\t\tdn.multiply(quantity, order.priceAmountFormatted),\n\t\t\t{\n\t\t\t\tdigits: currency.decimals,\n\t\t\t\ttrailingZeros: false,\n\t\t\t},\n\t\t);\n\t\tconst marketplaceFeePercentage =\n\t\t\tmarketplaceConfig?.collections.find((collection) =>\n\t\t\t\tcompareAddress(collection.address, order.collectionContractAddress),\n\t\t\t)?.feePercentage || DEFAULT_MARKETPLACE_FEE_PERCENTAGE;\n\t\tconst feeMultiplier = dn.from(1 + marketplaceFeePercentage / 100);\n\t\tconst totalPrice = dn.format(\n\t\t\tdn.multiply(totalPriceWithoutFees, feeMultiplier),\n\t\t\t{\n\t\t\t\tdigits: currency.decimals,\n\t\t\t\ttrailingZeros: false,\n\t\t\t},\n\t\t);\n\n\t\tformattedPrice = totalPrice;\n\t}\n\n\treturn (\n\t\t<div className=\"flex justify-between\">\n\t\t\t<Text className=\"font-body font-medium text-xs\" color=\"text50\">\n\t\t\t\tTotal Price\n\t\t\t</Text>\n\n\t\t\t<div className=\"flex items-center gap-0.5\">\n\t\t\t\t{isCurrencyLoading || !currency ? (\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<Text className=\"font-body text-text-50 text-xs\">Loading...</Text>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{currency.imageUrl && (\n\t\t\t\t\t\t\t<TokenImage src={currency.imageUrl} size=\"xs\" />\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t<Text className=\"font-body font-bold text-text-100 text-xs\">\n\t\t\t\t\t\t\t{formattedPrice}\n\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t<Text className=\"font-body font-bold text-text-80 text-xs\">\n\t\t\t\t\t\t\t{currency?.symbol}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n});\n","'use client';\n\nimport {\n\tAddIcon,\n\tIconButton,\n\tNumericInput,\n\tSubtractIcon,\n} from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport * as dn from 'dnum';\nimport { useState } from 'react';\nimport { cn } from '../../../../../../utils';\n\ntype QuantityInputProps = {\n\t$quantity: Observable<string>;\n\t$invalidQuantity: Observable<boolean>;\n\tdecimals: number;\n\tmaxQuantity: string;\n\tclassName?: string;\n};\n\nexport default observer(function QuantityInput({\n\t$quantity,\n\t$invalidQuantity,\n\tdecimals,\n\tmaxQuantity,\n\tclassName,\n}: QuantityInputProps) {\n\tconst dnMaxQuantity = dn.from(maxQuantity, decimals);\n\tconst dnOne = dn.from('1', decimals);\n\tconst min = decimals > 0 ? Number(`0.${'1'.padStart(decimals, '0')}`) : 0;\n\tconst dnMin = dn.from(min, decimals);\n\n\tconst [dnQuantity, setDnQuantity] = useState(\n\t\tdn.from($quantity.get(), decimals),\n\t);\n\n\tconst [localQuantity, setLocalQuantity] = useState($quantity.get());\n\n\tconst setQuantity = ({\n\t\tvalue,\n\t\tisValid,\n\t}: {\n\t\tvalue: string;\n\t\tisValid: boolean;\n\t}) => {\n\t\tsetLocalQuantity(value);\n\t\tif (isValid) {\n\t\t\t$quantity.set(value);\n\t\t\tsetDnQuantity(dn.from(value, decimals));\n\t\t\t$invalidQuantity.set(false);\n\t\t} else {\n\t\t\t$invalidQuantity.set(true);\n\t\t}\n\t};\n\n\tfunction handleChangeQuantity(value: string) {\n\t\tif (!value || Number.isNaN(Number(value)) || value.endsWith('.')) {\n\t\t\tsetQuantity({\n\t\t\t\tvalue: value,\n\t\t\t\tisValid: false,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst dnValue = dn.from(value, decimals);\n\t\tconst isBiggerThanMax = dn.greaterThan(dnValue, dnMaxQuantity);\n\t\tconst isLessThanMin = dn.lessThan(dnValue, dnMin);\n\n\t\tif (isLessThanMin) {\n\t\t\tsetQuantity({\n\t\t\t\tvalue: value, // Trying to enter fraction starting with 0\n\t\t\t\tisValid: false,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (isBiggerThanMax) {\n\t\t\tsetQuantity({\n\t\t\t\tvalue: maxQuantity,\n\t\t\t\tisValid: true, // Is vaid is true because we override the value\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tsetQuantity({\n\t\t\tvalue: dn.toString(dnValue, decimals),\n\t\t\tisValid: true,\n\t\t});\n\t}\n\n\tfunction handleIncrement() {\n\t\tconst newValue = dn.add(dnQuantity, dnOne);\n\t\tif (dn.greaterThanOrEqual(newValue, dnMaxQuantity)) {\n\t\t\tsetQuantity({\n\t\t\t\tvalue: maxQuantity,\n\t\t\t\tisValid: true,\n\t\t\t});\n\t\t} else {\n\t\t\tsetQuantity({\n\t\t\t\tvalue: dn.toString(newValue, decimals),\n\t\t\t\tisValid: true,\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction handleDecrement() {\n\t\tconst newValue = dn.subtract(dnQuantity, dnOne);\n\t\tif (dn.lessThanOrEqual(newValue, dnMin)) {\n\t\t\tsetQuantity({\n\t\t\t\tvalue: String(min),\n\t\t\t\tisValid: true,\n\t\t\t});\n\t\t} else {\n\t\t\tsetQuantity({\n\t\t\t\tvalue: dn.toString(newValue, decimals),\n\t\t\t\tisValid: true,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full flex-col [&>label>div>div:has(:disabled):hover]:opacity-100 [&>label>div>div:has(:disabled)]:opacity-100 [&>label>div>div>input]:text-xs [&>label>div>div]:h-9 [&>label>div>div]:rounded [&>label>div>div]:pr-0 [&>label>div>div]:pl-3 [&>label>div>div]:text-xs [&>label]:gap-[2px]',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<NumericInput\n\t\t\t\tclassName=\"w-full pl-1\"\n\t\t\t\tname={'quantity'}\n\t\t\t\tdecimals={decimals || 0}\n\t\t\t\tlabel={'Enter quantity'}\n\t\t\t\tlabelLocation=\"top\"\n\t\t\t\tcontrols={\n\t\t\t\t\t<div className=\"mr-2 flex items-center gap-1\">\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tdisabled={dn.lessThanOrEqual(dnQuantity, dnMin)}\n\t\t\t\t\t\t\tonClick={handleDecrement}\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ticon={SubtractIcon}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tdisabled={dn.greaterThanOrEqual(dnQuantity, dnMaxQuantity)}\n\t\t\t\t\t\t\tonClick={handleIncrement}\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ticon={AddIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\tnumeric={true}\n\t\t\t\tvalue={localQuantity}\n\t\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n\t\t\t\t\thandleChangeQuantity(e.target.value)\n\t\t\t\t}\n\t\t\t\twidth={'full'}\n\t\t\t/>\n\t\t\t{$invalidQuantity.get() && (\n\t\t\t\t<div className=\"text-negative text-sm\">Invalid quantity</div>\n\t\t\t)}\n\t\t</div>\n\t);\n});\n","'use client';\n\nimport { Show, observer } from '@legendapp/state/react';\nimport { parseUnits } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { dateToUnixTime } from '../../../../utils/date';\nimport type { ContractType } from '../../../_internal';\nimport {\n\tuseBalanceOfCollectible,\n\tuseCollectible,\n\tuseCollection,\n\tuseCurrencies,\n} from '../../../hooks';\nimport {\n\tActionModal,\n\ttype ActionModalProps,\n} from '../_internal/components/actionModal/ActionModal';\nimport { ErrorModal } from '../_internal/components/actionModal/ErrorModal';\nimport ExpirationDateSelect from '../_internal/components/expirationDateSelect';\nimport FloorPriceText from '../_internal/components/floorPriceText';\nimport PriceInput from '../_internal/components/priceInput';\nimport QuantityInput from '../_internal/components/quantityInput';\nimport TokenPreview from '../_internal/components/tokenPreview';\nimport TransactionDetails from '../_internal/components/transactionDetails';\nimport { useCreateListing } from './hooks/useCreateListing';\nimport { createListingModal$ } from './store';\n\nexport const CreateListingModal = () => {\n\treturn <Show if={createListingModal$.isOpen}>{() => <Modal />}</Show>;\n};\n\nconst Modal = observer(() => {\n\tconst state = createListingModal$.get();\n\tconst {\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tlistingPrice,\n\t\tcollectibleId,\n\t\torderbookKind,\n\t\tcallbacks,\n\t} = state;\n\tconst steps$ = createListingModal$.steps;\n\n\tconst {\n\t\tdata: collectible,\n\t\tisLoading: collectableIsLoading,\n\t\tisError: collectableIsError,\n\t} = useCollectible({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t});\n\tconst {\n\t\tdata: currencies,\n\t\tisLoading: currenciesLoading,\n\t\tisError: currenciesIsError,\n\t} = useCurrencies({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tincludeNativeCurrency: true,\n\t});\n\tconst {\n\t\tdata: collection,\n\t\tisLoading: collectionIsLoading,\n\t\tisError: collectionIsError,\n\t} = useCollection({\n\t\tchainId,\n\t\tcollectionAddress,\n\t});\n\tconst modalLoading =\n\t\tcollectableIsLoading || collectionIsLoading || currenciesLoading;\n\n\tconst { address } = useAccount();\n\n\tconst { data: balance } = useBalanceOfCollectible({\n\t\tchainId: Number(chainId),\n\t\tcollectionAddress,\n\t\tcollectableId: collectibleId,\n\t\tuserAddress: address ?? undefined,\n\t});\n\n\tconst { isLoading, executeApproval, createListing, tokenApprovalIsLoading } =\n\t\tuseCreateListing({\n\t\t\tlistingInput: {\n\t\t\t\tcontractType: collection?.type as ContractType,\n\t\t\t\tlisting: {\n\t\t\t\t\ttokenId: collectibleId,\n\t\t\t\t\tquantity: parseUnits(\n\t\t\t\t\t\tcreateListingModal$.quantity.get(),\n\t\t\t\t\t\tcollectible?.decimals || 0,\n\t\t\t\t\t).toString(),\n\t\t\t\t\texpiry: dateToUnixTime(createListingModal$.expiry.get()),\n\t\t\t\t\tcurrencyAddress: listingPrice.currency.contractAddress,\n\t\t\t\t\tpricePerToken: listingPrice.amountRaw,\n\t\t\t\t},\n\t\t\t},\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\torderbookKind,\n\t\t\tcallbacks,\n\t\t\tcloseMainModal: () => createListingModal$.close(),\n\t\t\tsteps$: steps$,\n\t\t});\n\n\tif (collectableIsError || collectionIsError || currenciesIsError) {\n\t\treturn (\n\t\t\t<ErrorModal\n\t\t\t\tisOpen={createListingModal$.isOpen.get()}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={createListingModal$.close}\n\t\t\t\ttitle=\"List item for sale\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (!modalLoading && (!currencies || currencies.length === 0)) {\n\t\treturn (\n\t\t\t<ErrorModal\n\t\t\t\tisOpen={createListingModal$.isOpen.get()}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={createListingModal$.close}\n\t\t\t\ttitle=\"List item for sale\"\n\t\t\t\tmessage=\"No currencies are configured for the marketplace, contact the marketplace owners\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst ctas = [\n\t\t{\n\t\t\tlabel: 'Approve TOKEN',\n\t\t\tonClick: async () => await executeApproval(),\n\t\t\thidden: !steps$.approval.exist.get(),\n\t\t\tpending: steps$?.approval.isExecuting.get(),\n\t\t\tvariant: 'glass' as const,\n\t\t\tdisabled:\n\t\t\t\tcreateListingModal$.invalidQuantity.get() ||\n\t\t\t\tlistingPrice.amountRaw === '0' ||\n\t\t\t\tsteps$?.approval.isExecuting.get() ||\n\t\t\t\ttokenApprovalIsLoading ||\n\t\t\t\tisLoading,\n\t\t},\n\t\t{\n\t\t\tlabel: 'List item for sale',\n\t\t\tonClick: () => createListing(),\n\t\t\tpending: steps$?.transaction.isExecuting.get(),\n\t\t\ttestid: 'create-listing-submit-button',\n\t\t\tdisabled:\n\t\t\t\tsteps$.approval.exist.get() ||\n\t\t\t\ttokenApprovalIsLoading ||\n\t\t\t\tlistingPrice.amountRaw === '0' ||\n\t\t\t\tcreateListingModal$.invalidQuantity.get() ||\n\t\t\t\tisLoading,\n\t\t},\n\t] satisfies ActionModalProps['ctas'];\n\n\treturn (\n\t\t<ActionModal\n\t\t\tisOpen={createListingModal$.isOpen.get()}\n\t\t\tchainId={Number(chainId)}\n\t\t\tonClose={() => createListingModal$.close()}\n\t\t\ttitle=\"List item for sale\"\n\t\t\tctas={ctas}\n\t\t\tmodalLoading={modalLoading}\n\t\t\tspinnerContainerClassname=\"h-[220px]\"\n\t\t>\n\t\t\t<TokenPreview\n\t\t\t\tcollectionName={collection?.name}\n\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\tcollectibleId={collectibleId}\n\t\t\t\tchainId={chainId}\n\t\t\t/>\n\t\t\t<div className=\"flex w-full flex-col gap-1\">\n\t\t\t\t<PriceInput\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t$price={createListingModal$.listingPrice}\n\t\t\t\t/>\n\n\t\t\t\t{listingPrice.amountRaw !== '0' && (\n\t\t\t\t\t<FloorPriceText\n\t\t\t\t\t\ttokenId={collectibleId}\n\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\tprice={listingPrice}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{collection?.type === 'ERC1155' && balance && (\n\t\t\t\t<QuantityInput\n\t\t\t\t\t$quantity={createListingModal$.quantity}\n\t\t\t\t\t$invalidQuantity={createListingModal$.invalidQuantity}\n\t\t\t\t\tdecimals={collectible?.decimals || 0}\n\t\t\t\t\tmaxQuantity={balance?.balance}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<ExpirationDateSelect $date={createListingModal$.expiry} />\n\t\t\t<TransactionDetails\n\t\t\t\tcollectibleId={collectibleId}\n\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\tchainId={chainId}\n\t\t\t\tprice={createListingModal$.listingPrice.get()}\n\t\t\t\tcurrencyImageUrl={listingPrice.currency.imageUrl}\n\t\t\t\tincludeMarketplaceFee={false}\n\t\t\t/>\n\t\t</ActionModal>\n\t);\n});\n","'use client';\n\nimport { Skeleton, Text } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport { addDays } from 'date-fns';\nimport { useState } from 'react';\nimport CalendarDropdown from '../calendarDropdown';\n\nconst setToEndOfDay = (date: Date): Date => {\n\tconst endOfDay = new Date(date);\n\tendOfDay.setHours(23, 59, 59, 999);\n\treturn endOfDay;\n};\n\nexport const PRESET_RANGES = {\n\tTODAY: {\n\t\tlabel: 'Today',\n\t\tvalue: 'today',\n\t\toffset: 0,\n\t},\n\tTOMORROW: {\n\t\tlabel: 'Tomorrow',\n\t\tvalue: 'tomorrow',\n\t\toffset: 1,\n\t},\n\tIN_3_DAYS: {\n\t\tlabel: 'In 3 days',\n\t\tvalue: '3_days',\n\t\toffset: 3,\n\t},\n\tONE_WEEK: {\n\t\tlabel: '1 week',\n\t\tvalue: '1_week',\n\t\toffset: 7,\n\t},\n\tONE_MONTH: {\n\t\tlabel: '1 month',\n\t\tvalue: '1_month',\n\t\toffset: 30,\n\t},\n} as const;\n\nexport type RangeType =\n\t(typeof PRESET_RANGES)[keyof typeof PRESET_RANGES]['value'];\n\ntype ExpirationDateSelectProps = {\n\tclassName?: string;\n\t$date: Observable<Date>;\n};\n\nconst ExpirationDateSelect = observer(function ExpirationDateSelect({\n\tclassName,\n\t$date,\n}: ExpirationDateSelectProps) {\n\tconst [calendarDropdownOpen, setCalendarDropdownOpen] = useState(false);\n\n\tfunction handleSelectPresetRange(range: RangeType) {\n\t\tconst presetRange = Object.values(PRESET_RANGES).find(\n\t\t\t(preset) => preset.value === range,\n\t\t);\n\n\t\tif (!presetRange) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst baseDate = new Date();\n\t\tconst newDate =\n\t\t\tpresetRange.value === 'today'\n\t\t\t\t? setToEndOfDay(baseDate)\n\t\t\t\t: addDays(baseDate, presetRange.offset);\n\n\t\t$date.set(newDate);\n\t}\n\n\tfunction handleDateValueChange(date: Date) {\n\t\t$date.set(date);\n\t}\n\n\tif (!$date.get()) {\n\t\treturn <Skeleton className=\"mr-3 h-7 w-20 rounded-2xl\" />;\n\t}\n\n\treturn (\n\t\t<div className=\"relative w-full\">\n\t\t\t<Text\n\t\t\t\tclassName=\"w-full text-left font-body font-medium text-xs\"\n\t\t\t\tfontWeight={'medium'}\n\t\t\t\tcolor={'text100'}\n\t\t\t>\n\t\t\t\tSet expiry\n\t\t\t</Text>\n\t\t\t<div\n\t\t\t\tclassName={`${className} mt-0.5 flex w-full items-center gap-2 rounded-sm border border-border-base`}\n\t\t\t>\n\t\t\t\t<CalendarDropdown\n\t\t\t\t\tselectedDate={$date.get()}\n\t\t\t\t\tsetSelectedDate={handleDateValueChange}\n\t\t\t\t\tonSelectPreset={handleSelectPresetRange}\n\t\t\t\t\tisOpen={calendarDropdownOpen}\n\t\t\t\t\tsetIsOpen={setCalendarDropdownOpen}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n});\n\nexport default ExpirationDateSelect;\n","'use client';\n\nimport './overrides.css';\nimport {\n\tButton,\n\tDropdownMenuContent,\n\tDropdownMenuPortal,\n\tDropdownMenuRoot,\n\tDropdownMenuTrigger,\n} from '@0xsequence/design-system';\nimport { differenceInDays, format, isSameDay, startOfDay } from 'date-fns';\nimport SvgCalendarIcon from '../../../../icons/CalendarIcon';\nimport Calendar from '../calendar';\nimport { PRESET_RANGES, type RangeType } from '../expirationDateSelect';\n\ntype CalendarDropdownProps = {\n\tselectedDate: Date;\n\tsetSelectedDate: (date: Date) => void;\n\tonSelectPreset: (range: RangeType) => void;\n\tisOpen: boolean;\n\tsetIsOpen: (isOpen: boolean) => void;\n};\n\n/**\n * Determines if the selected date matches a preset range\n */\nfunction getMatchingPreset(selectedDate: Date): RangeType | null {\n\tconst today = startOfDay(new Date());\n\tconst selectedDay = startOfDay(selectedDate);\n\tconst daysDifference = differenceInDays(selectedDay, today);\n\n\t// Check if the date matches any preset\n\tif (isSameDay(selectedDay, today)) {\n\t\treturn PRESET_RANGES.TODAY.value;\n\t}\n\tif (daysDifference === 1) {\n\t\treturn PRESET_RANGES.TOMORROW.value;\n\t}\n\tif (daysDifference === 3) {\n\t\treturn PRESET_RANGES.IN_3_DAYS.value;\n\t}\n\tif (daysDifference === 7) {\n\t\treturn PRESET_RANGES.ONE_WEEK.value;\n\t}\n\tif (daysDifference === 30) {\n\t\treturn PRESET_RANGES.ONE_MONTH.value;\n\t}\n\n\treturn null;\n}\n\nexport default function CalendarDropdown({\n\tselectedDate,\n\tsetSelectedDate,\n\tonSelectPreset,\n\tisOpen,\n\tsetIsOpen,\n}: CalendarDropdownProps) {\n\tconst matchingPreset = getMatchingPreset(selectedDate);\n\n\treturn (\n\t\t<DropdownMenuRoot open={isOpen} onOpenChange={setIsOpen}>\n\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tleftIcon={SvgCalendarIcon}\n\t\t\t\t\tclassName=\"h-9 flex-1 rounded-sm p-2 font-medium text-xs\"\n\t\t\t\t\tvariant=\"base\"\n\t\t\t\t\tlabel={format(selectedDate, 'dd/MM/yyyy HH:mm')}\n\t\t\t\t\tshape=\"square\"\n\t\t\t\t\tonClick={() => setIsOpen(!isOpen)}\n\t\t\t\t/>\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuPortal>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\tclassName=\"pointer-events-auto z-20 w-full rounded-xl border border-border-base bg-surface-neutral p-3\"\n\t\t\t\t\tsideOffset={5}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"flex gap-8\">\n\t\t\t\t\t\t<div className=\"flex flex-col\">\n\t\t\t\t\t\t\t{Object.values(PRESET_RANGES).map((preset) => {\n\t\t\t\t\t\t\t\tconst isActive = matchingPreset === preset.value;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tkey={preset.value}\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\tonSelectPreset(preset.value);\n\t\t\t\t\t\t\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t\tclassName={`w-full justify-start py-1.5 font-bold text-xs transition-colors ${\n\t\t\t\t\t\t\t\t\t\t\tisActive\n\t\t\t\t\t\t\t\t\t\t\t\t? 'text-text-100'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'text-text-50 hover:text-text-80'\n\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{preset.label}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Calendar\n\t\t\t\t\t\t\tselectedDate={selectedDate}\n\t\t\t\t\t\t\tsetSelectedDate={(date) => {\n\t\t\t\t\t\t\t\tsetSelectedDate(date);\n\t\t\t\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tmode=\"single\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenuPortal>\n\t\t</DropdownMenuRoot>\n\t);\n}\n","'use client';\n\nimport { DayPicker, type PropsSingle } from 'react-day-picker';\nimport 'react-day-picker/style.css';\n\nexport type CalendarProps = React.PropsWithChildren<PropsSingle> & {\n\tselectedDate?: Date;\n\tsetSelectedDate?: (date: Date) => void;\n};\n\nfunction Calendar({ ...props }: CalendarProps) {\n\tconst { selectedDate, setSelectedDate } = props;\n\n\treturn (\n\t\t<DayPicker\n\t\t\tdisabled={{\n\t\t\t\tbefore: new Date(),\n\t\t\t}}\n\t\t\tselected={selectedDate as unknown as Date}\n\t\t\tonDayClick={setSelectedDate}\n\t\t\tdefaultMonth={selectedDate}\n\t\t\tmodifiersStyles={{\n\t\t\t\tselected: {\n\t\t\t\t\tcolor: 'hsl(var(--foreground))',\n\t\t\t\t\tbackground: 'hsl(var(--primary))',\n\t\t\t\t\tborder: 'none',\n\t\t\t\t},\n\t\t\t}}\n\t\t\tstyles={{\n\t\t\t\troot: {\n\t\t\t\t\twidth: 'max-content',\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tcolor: 'hsl(var(--foreground))',\n\t\t\t\t\tbackground: 'hsl(var(--background))',\n\t\t\t\t\tborder: '1px solid hsl(var(--border))',\n\t\t\t\t\tborderRadius: 'var(--radius)',\n\t\t\t\t\tpadding: '0.5rem',\n\t\t\t\t\tposition: 'relative',\n\t\t\t\t},\n\t\t\t\tday: {\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\twidth: '1rem',\n\t\t\t\t\theight: '1rem',\n\t\t\t\t},\n\t\t\t\tday_button: {\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\twidth: '1.8rem',\n\t\t\t\t\theight: '1.5rem',\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\tborder: 'none',\n\t\t\t\t},\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n","'use client';\n\nimport { Text } from '@0xsequence/design-system';\nimport type { Hex } from 'viem';\nimport type { Price } from '../../../../../../types';\nimport { useComparePrices, useLowestListing } from '../../../../../hooks';\n\nexport default function FloorPriceText({\n\tchainId,\n\tcollectionAddress,\n\ttokenId,\n\tprice,\n}: {\n\tchainId: string;\n\tcollectionAddress: Hex;\n\ttokenId: string;\n\tprice: Price;\n}) {\n\tconst { data: listing, isLoading: listingLoading } = useLowestListing({\n\t\ttokenId: tokenId,\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tfilters: {\n\t\t\tcurrencies: [price.currency.contractAddress],\n\t\t},\n\t});\n\n\tconst floorPriceRaw = listing?.order?.priceAmount;\n\n\tconst { data: priceComparison, isLoading: comparisonLoading } =\n\t\tuseComparePrices({\n\t\t\tchainId,\n\t\t\tpriceAmountRaw: price.amountRaw || '0',\n\t\t\tpriceCurrencyAddress: price.currency.contractAddress,\n\t\t\tcompareToPriceAmountRaw: floorPriceRaw || '0',\n\t\t\tcompareToPriceCurrencyAddress:\n\t\t\t\tlisting?.order?.priceCurrencyAddress || price.currency.contractAddress,\n\t\t\tquery: {\n\t\t\t\tenabled: !!floorPriceRaw && !listingLoading && price.amountRaw !== '0',\n\t\t\t},\n\t\t});\n\n\tif (\n\t\t!floorPriceRaw ||\n\t\tlistingLoading ||\n\t\tprice.amountRaw === '0' ||\n\t\tcomparisonLoading\n\t) {\n\t\treturn null;\n\t}\n\n\tlet floorPriceDifferenceText = 'Same as floor price';\n\n\tif (priceComparison) {\n\t\tif (priceComparison.status === 'same') {\n\t\t\tfloorPriceDifferenceText = 'Same as floor price';\n\t\t} else {\n\t\t\tfloorPriceDifferenceText = `${priceComparison.percentageDifferenceFormatted}% ${\n\t\t\t\tpriceComparison.status === 'below' ? 'below' : 'above'\n\t\t\t} floor price`;\n\t\t}\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\tclassName=\"w-full text-left font-body text-sm\"\n\t\t\tfontWeight={'medium'}\n\t\t\tcolor={'text50'}\n\t\t>\n\t\t\t{floorPriceDifferenceText}\n\t\t</Text>\n\t);\n}\n","'use client';\n\nimport { NumericInput, Text } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { use$ } from '@legendapp/state/react';\nimport { useEffect, useRef, useState } from 'react';\nimport { type Hex, parseUnits } from 'viem';\nimport { useAccount } from 'wagmi';\nimport type { Price } from '../../../../../../types';\nimport { useCurrencyBalance } from '../../../../../hooks/useCurrencyBalance';\nimport CurrencyImage from '../currencyImage';\nimport CurrencyOptionsSelect from '../currencyOptionsSelect';\n\ntype PriceInputProps = {\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tsecondCurrencyAsDefault?: boolean;\n\t$price: Observable<Price | undefined>;\n\tincludeNativeCurrency?: boolean;\n\tonPriceChange?: () => void;\n\tcheckBalance?: {\n\t\tenabled: boolean;\n\t\tcallback: (state: boolean) => void;\n\t};\n};\n\nexport default function PriceInput({\n\tchainId,\n\tcollectionAddress,\n\t$price,\n\tonPriceChange,\n\tcheckBalance,\n\tsecondCurrencyAsDefault,\n\tincludeNativeCurrency,\n}: PriceInputProps) {\n\tconst { address: accountAddress } = useAccount();\n\tconst currencyDecimals = use$($price.currency.decimals);\n\tconst currencyAddress = use$($price.currency.contractAddress);\n\tconst priceAmountRaw = use$($price.amountRaw);\n\n\tconst { data: balance, isSuccess: isBalanceSuccess } = useCurrencyBalance({\n\t\tcurrencyAddress: currencyAddress as undefined | Hex,\n\t\tchainId: Number(chainId),\n\t\tuserAddress: accountAddress,\n\t});\n\n\tconst balanceError =\n\t\t!!checkBalance?.enabled &&\n\t\t!!isBalanceSuccess &&\n\t\t!!priceAmountRaw &&\n\t\t!!currencyDecimals &&\n\t\tBigInt(priceAmountRaw) > BigInt(balance?.value || 0n);\n\n\tif (checkBalance?.enabled) {\n\t\tcheckBalance.callback(balanceError);\n\t}\n\n\tconst [value, setValue] = useState('0');\n\tconst prevCurrencyDecimals = useRef(currencyDecimals);\n\n\t// Handle currency changes and adjust the raw amount accordingly\n\tuseEffect(() => {\n\t\tif (prevCurrencyDecimals.current !== currencyDecimals && value !== '0') {\n\t\t\ttry {\n\t\t\t\t// If the user has entered a value and the currency decimals have changed,\n\t\t\t\t// we need to adjust the raw amount to maintain the same displayed value\n\t\t\t\tconst parsedAmount = parseUnits(value, Number(currencyDecimals));\n\t\t\t\t$price.amountRaw.set(parsedAmount.toString());\n\n\t\t\t\tif (onPriceChange && parsedAmount !== 0n) {\n\t\t\t\t\tonPriceChange();\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t$price.amountRaw.set('0');\n\t\t\t}\n\t\t}\n\n\t\tprevCurrencyDecimals.current = currencyDecimals;\n\t}, [currencyDecimals, $price.amountRaw, value, onPriceChange]);\n\n\tconst handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst newValue = event.target.value;\n\t\tsetValue(newValue);\n\t\ttry {\n\t\t\tconst parsedAmount = parseUnits(newValue, Number(currencyDecimals));\n\t\t\t$price.amountRaw.set(parsedAmount.toString());\n\t\t\tif (onPriceChange && parsedAmount !== 0n) {\n\t\t\t\tonPriceChange();\n\t\t\t}\n\t\t} catch {\n\t\t\t$price.amountRaw.set('0');\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"relative flex w-full flex-col\">\n\t\t\t<div className=\"absolute top-8 left-2 flex items-center\">\n\t\t\t\t<CurrencyImage price$={$price} />\n\t\t\t</div>\n\n\t\t\t<div className=\"[&>label>div>.rounded-xl]:h-9 [&>label>div>.rounded-xl]:rounded-sm [&>label>div>.rounded-xl]:px-2 [&>label]:gap-1\">\n\t\t\t\t<NumericInput\n\t\t\t\t\tclassName=\"ml-5 w-full text-xs\"\n\t\t\t\t\tname=\"price-input\"\n\t\t\t\t\tdecimals={currencyDecimals}\n\t\t\t\t\tlabel=\"Enter price\"\n\t\t\t\t\tlabelLocation=\"top\"\n\t\t\t\t\tcontrols={\n\t\t\t\t\t\t<CurrencyOptionsSelect\n\t\t\t\t\t\t\tselectedCurrency$={$price.currency}\n\t\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t\t\tsecondCurrencyAsDefault={secondCurrencyAsDefault}\n\t\t\t\t\t\t\tincludeNativeCurrency={includeNativeCurrency}\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t{balanceError && (\n\t\t\t\t<Text\n\t\t\t\t\tclassName=\"-bottom-5 absolute font-body font-medium text-xs\"\n\t\t\t\t\tcolor=\"negative\"\n\t\t\t\t>\n\t\t\t\t\tInsufficient balance\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","'use client';\n\nimport { TokenImage } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { useState } from 'react';\nimport type { Address } from 'viem';\nimport type { Price } from '../../../../../../types';\n\nfunction CurrencyImage({ price$ }: { price$: Observable<Price | undefined> }) {\n\tconst [imageLoadErrorCurrencyAddresses, setImageLoadErrorCurrencyAddresses] =\n\t\tuseState<Address[] | null>(null);\n\n\tif (\n\t\timageLoadErrorCurrencyAddresses?.includes(\n\t\t\tprice$.currency.contractAddress.get() as Address,\n\t\t)\n\t) {\n\t\treturn <div className=\"h-3 w-3 rounded-full bg-background-secondary\" />;\n\t}\n\n\treturn (\n\t\t<TokenImage\n\t\t\tsrc={price$.currency.imageUrl.get()}\n\t\t\tonError={() => {\n\t\t\t\tconst price = price$?.get();\n\t\t\t\tif (price) {\n\t\t\t\t\tsetImageLoadErrorCurrencyAddresses((prev) => {\n\t\t\t\t\t\tif (!prev)\n\t\t\t\t\t\t\treturn [price$.currency.contractAddress.get() as Address];\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!prev.includes(price$.currency.contractAddress.get() as Address)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\tprice$.currency.contractAddress.get() as Address,\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn prev;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t\tsize=\"xs\"\n\t\t/>\n\t);\n}\nexport default CurrencyImage;\n","'use client';\n\nimport { Skeleton } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport { useEffect } from 'react';\nimport type { Hex } from 'viem';\nimport type { ChainId, Currency } from '../../../../../_internal';\nimport { useCurrencies } from '../../../../../hooks';\nimport {\n\tCustomSelect,\n\ttype SelectItem,\n} from '../../../../components/_internals/custom-select/CustomSelect';\n\ntype CurrencyOptionsSelectProps = {\n\tcollectionAddress: Hex;\n\tchainId: ChainId;\n\tselectedCurrency$: Observable<Currency | null | undefined>;\n\tsecondCurrencyAsDefault?: boolean;\n\tincludeNativeCurrency?: boolean;\n};\n\nconst CurrencyOptionsSelect = observer(function CurrencyOptionsSelect({\n\tchainId,\n\tcollectionAddress,\n\tsecondCurrencyAsDefault,\n\tselectedCurrency$,\n\tincludeNativeCurrency,\n}: CurrencyOptionsSelectProps) {\n\tconst currency = selectedCurrency$.get();\n\tconst { data: currencies, isLoading: currenciesLoading } = useCurrencies({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tincludeNativeCurrency,\n\t});\n\n\t// set default currency\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (\n\t\t\tcurrencies &&\n\t\t\tcurrencies.length > 0 &&\n\t\t\t!selectedCurrency$.get()?.contractAddress\n\t\t) {\n\t\t\t// We dont support native currency listings for any marketplace other than Sequence Marketplace v2\n\t\t\t// So we need to set the set another currency as the default\n\t\t\tif (secondCurrencyAsDefault) {\n\t\t\t\tselectedCurrency$.set(currencies[1]);\n\t\t\t} else {\n\t\t\t\tselectedCurrency$.set(currencies[0]);\n\t\t\t}\n\t\t}\n\t}, [currencies]);\n\n\tif (!currencies || currenciesLoading || !currency?.symbol) {\n\t\treturn <Skeleton className=\"mr-3 h-7 w-20 rounded-2xl\" />;\n\t}\n\n\tconst options = currencies.map(\n\t\t(currency) =>\n\t\t\t({\n\t\t\t\tlabel: currency.symbol,\n\t\t\t\tvalue: currency.contractAddress,\n\t\t\t\tcontent: currency.symbol,\n\t\t\t}) as SelectItem,\n\t);\n\n\tconst onChange = (value: string) => {\n\t\tconst selectedCurrency = currencies.find(\n\t\t\t(currency) => currency.contractAddress === value,\n\t\t);\n\t\tselectedCurrency$.set(selectedCurrency);\n\t};\n\n\treturn (\n\t\t<CustomSelect\n\t\t\titems={options}\n\t\t\tonValueChange={onChange}\n\t\t\tdefaultValue={{\n\t\t\t\tvalue: currency.contractAddress,\n\t\t\t\tcontent: currency.symbol,\n\t\t\t}}\n\t\t\ttestId=\"currency-select\"\n\t\t/>\n\t);\n});\n\nexport default CurrencyOptionsSelect;\n","'use client';\n\nimport { Image, Skeleton, Text } from '@0xsequence/design-system';\nimport type { Hex } from 'viem';\nimport { useCollectible } from '../../../../../hooks';\nimport ChessTileImage from '../../../../images/chess-tile.png';\n\ntype TokenPreviewProps = {\n\tcollectionName?: string;\n\tcollectionAddress: Hex;\n\tcollectibleId: string;\n\tchainId: string;\n};\n\nexport default function TokenPreview({\n\tcollectionName,\n\tcollectionAddress,\n\tcollectibleId,\n\tchainId,\n}: TokenPreviewProps) {\n\tconst { data: collectable, isLoading: collectibleLoading } = useCollectible({\n\t\tchainId: chainId,\n\t\tcollectionAddress: collectionAddress,\n\t\tcollectibleId,\n\t});\n\n\tif (collectibleLoading) {\n\t\treturn (\n\t\t\t<div className=\"flex w-full items-center gap-3\">\n\t\t\t\t<Skeleton className=\"h-9 w-9 rounded-sm\" />\n\t\t\t\t<div className=\"flex grow flex-col gap-1\">\n\t\t\t\t\t<Skeleton className=\"h-3 w-1/3\" />\n\t\t\t\t\t<Skeleton className=\"h-3 w-1/2\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"flex w-full items-center\">\n\t\t\t<Image\n\t\t\t\tclassName=\"h-9 w-9 rounded-sm\"\n\t\t\t\tsrc={collectable?.image || ChessTileImage}\n\t\t\t\talt={collectable?.name}\n\t\t\t\tstyle={{ objectFit: 'cover' }}\n\t\t\t/>\n\t\t\t<div className=\"ml-3 flex flex-col\">\n\t\t\t\t<Text className=\"font-body font-medium text-xs\" color={'text80'}>\n\t\t\t\t\t{collectionName}\n\t\t\t\t</Text>\n\n\t\t\t\t<Text\n\t\t\t\t\tclassName=\"font-body font-bold text-xs\"\n\t\t\t\t\tfontWeight={'bold'}\n\t\t\t\t\tcolor={'text100'}\n\t\t\t\t>\n\t\t\t\t\t{collectable?.name}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","'use client';\n\nimport { Image, Skeleton, Text } from '@0xsequence/design-system';\nimport { type Hex, formatUnits } from 'viem';\nimport { DEFAULT_MARKETPLACE_FEE_PERCENTAGE } from '../../../../../../consts';\nimport type { Price } from '../../../../../../types';\nimport { useMarketplaceConfig, useRoyalty } from '../../../../../hooks';\n\ntype TransactionDetailsProps = {\n\tcollectibleId: string;\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tprice?: Price;\n\tcurrencyImageUrl?: string;\n\tincludeMarketplaceFee: boolean;\n\t// We use a placeholder price for create listing modal\n\tshowPlaceholderPrice?: boolean;\n};\n\nexport default function TransactionDetails({\n\tcollectibleId,\n\tcollectionAddress,\n\tchainId,\n\tincludeMarketplaceFee,\n\tprice,\n\tshowPlaceholderPrice,\n\tcurrencyImageUrl,\n}: TransactionDetailsProps) {\n\tconst { data, isLoading: marketplaceConfigLoading } = useMarketplaceConfig();\n\n\tconst marketplaceFeePercentage = includeMarketplaceFee\n\t\t? data?.collections.find(\n\t\t\t\t(collection) => collection.address === collectionAddress,\n\t\t\t)?.feePercentage || DEFAULT_MARKETPLACE_FEE_PERCENTAGE\n\t\t: 0;\n\t// royaltyPercentage is an array of [recipient, percentage]\n\tconst { data: royalty, isLoading: royaltyLoading } = useRoyalty({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t});\n\n\tconst priceLoading = !price || marketplaceConfigLoading || royaltyLoading;\n\n\tlet formattedAmount =\n\t\tprice && formatUnits(BigInt(price.amountRaw), price.currency.decimals);\n\n\tif (royalty !== null && formattedAmount && price) {\n\t\tformattedAmount = (\n\t\t\tNumber.parseFloat(formattedAmount) -\n\t\t\t(Number.parseFloat(formattedAmount) * Number(royalty.percentage)) / 100\n\t\t).toFixed(price.currency.decimals);\n\t}\n\n\tif (marketplaceFeePercentage !== undefined && formattedAmount && price) {\n\t\tformattedAmount = (\n\t\t\tNumber.parseFloat(formattedAmount) -\n\t\t\t(Number.parseFloat(formattedAmount) * marketplaceFeePercentage) / 100\n\t\t).toFixed(price.currency.decimals);\n\t}\n\n\treturn (\n\t\t<div className=\"flex w-full items-center justify-between\">\n\t\t\t<Text className=\"font-body font-medium text-xs\" color={'text50'}>\n\t\t\t\tTotal earnings\n\t\t\t</Text>\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Image className=\"h-3 w-3\" src={currencyImageUrl} />\n\n\t\t\t\t{priceLoading ? (\n\t\t\t\t\t<Skeleton className=\"h-4 w-24 animate-shimmer\" />\n\t\t\t\t) : (\n\t\t\t\t\t<Text className=\"font-body font-medium text-xs\" color={'text100'}>\n\t\t\t\t\t\t{showPlaceholderPrice ? '0' : formattedAmount}{' '}\n\t\t\t\t\t\t{price.currency.symbol}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","'use client';\n\nimport type { Observable } from '@legendapp/state';\nimport { useEffect } from 'react';\nimport {\n\ttype ContractType,\n\ttype CreateReq,\n\tOrderbookKind,\n\ttype TransactionSteps,\n} from '../../../../_internal';\nimport { useMarketplaceConfig } from '../../../../hooks';\nimport type { ModalCallbacks } from '../../_internal/types';\nimport { useGetTokenApprovalData } from './useGetTokenApproval';\nimport { useTransactionSteps } from './useTransactionSteps';\n\nexport interface ListingInput {\n\tcontractType: ContractType;\n\tlisting: CreateReq;\n}\n\ninterface UseCreateListingArgs {\n\tlistingInput: ListingInput;\n\tchainId: string;\n\tcollectionAddress: string;\n\torderbookKind?: OrderbookKind;\n\tcallbacks?: ModalCallbacks;\n\tcloseMainModal: () => void;\n\tsteps$: Observable<TransactionSteps>;\n}\n\nexport const useCreateListing = ({\n\tlistingInput,\n\tchainId,\n\tcollectionAddress,\n\torderbookKind,\n\tsteps$,\n\tcallbacks,\n\tcloseMainModal,\n}: UseCreateListingArgs) => {\n\tconst { data: marketplaceConfig, isLoading: marketplaceIsLoading } =\n\t\tuseMarketplaceConfig();\n\n\tconst collectionConfig = marketplaceConfig?.collections.find(\n\t\t(c) => c.address === collectionAddress,\n\t);\n\n\torderbookKind =\n\t\torderbookKind ??\n\t\tcollectionConfig?.destinationMarketplace ??\n\t\tOrderbookKind.sequence_marketplace_v2;\n\n\tconst { data: tokenApproval, isLoading: tokenApprovalIsLoading } =\n\t\tuseGetTokenApprovalData({\n\t\t\tchainId,\n\t\t\ttokenId: listingInput.listing.tokenId,\n\t\t\tcollectionAddress,\n\t\t\tcurrencyAddress: listingInput.listing.currencyAddress,\n\t\t\tcontractType: listingInput.contractType,\n\t\t\torderbook: orderbookKind,\n\t\t\tquery: {\n\t\t\t\tenabled: !marketplaceIsLoading,\n\t\t\t},\n\t\t});\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (tokenApproval?.step && !tokenApprovalIsLoading) {\n\t\t\tsteps$.approval.exist.set(true);\n\t\t}\n\t}, [tokenApproval?.step, tokenApprovalIsLoading]);\n\n\tconst { generatingSteps, executeApproval, createListing } =\n\t\tuseTransactionSteps({\n\t\t\tlistingInput,\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\torderbookKind,\n\t\t\tcallbacks,\n\t\t\tcloseMainModal,\n\t\t\tsteps$,\n\t\t});\n\n\treturn {\n\t\tisLoading: generatingSteps,\n\t\texecuteApproval,\n\t\tcreateListing,\n\t\ttokenApprovalStepExists: tokenApproval?.step !== null,\n\t\ttokenApprovalIsLoading,\n\t};\n};\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport { useAccount } from 'wagmi';\nimport { useConfig } from '../../../..';\nimport { dateToUnixTime } from '../../../../../utils/date';\nimport {\n\ttype ContractType,\n\ttype CreateReq,\n\ttype GenerateListingTransactionArgs,\n\ttype OrderbookKind,\n\ttype QueryArg,\n\tStepType,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\n\nexport interface UseGetTokenApprovalDataArgs {\n\tchainId: string;\n\ttokenId: string;\n\tcollectionAddress: string;\n\tcurrencyAddress: string;\n\tcontractType: ContractType;\n\torderbook: OrderbookKind;\n\tquery?: QueryArg;\n}\n\nconst ONE_DAY_IN_SECONDS = 60 * 60 * 24;\n\nexport const useGetTokenApprovalData = (\n\tparams: UseGetTokenApprovalDataArgs,\n) => {\n\tconst config = useConfig();\n\tconst { wallet } = useWallet();\n\tconst { address } = useAccount();\n\tconst marketplaceClient = getMarketplaceClient(params.chainId, config);\n\n\tconst listing = {\n\t\ttokenId: params.tokenId,\n\t\tquantity: '1',\n\t\tcurrencyAddress: params.currencyAddress,\n\t\tpricePerToken: '100000',\n\t\texpiry: String(Number(dateToUnixTime(new Date())) + ONE_DAY_IN_SECONDS),\n\t} satisfies CreateReq;\n\n\tconst isEnabled =\n\t\twallet &&\n\t\taddress &&\n\t\t(params.query?.enabled ?? true) &&\n\t\t!!params.currencyAddress;\n\n\tconst { data, isLoading, isSuccess } = useQuery({\n\t\tqueryKey: ['token-approval-data', params, address],\n\t\tqueryFn: isEnabled\n\t\t\t? async () => {\n\t\t\t\t\tconst args = {\n\t\t\t\t\t\tcollectionAddress: params.collectionAddress,\n\t\t\t\t\t\towner: await wallet.address(),\n\t\t\t\t\t\twalletType: wallet.walletKind,\n\t\t\t\t\t\tcontractType: params.contractType,\n\t\t\t\t\t\torderbook: params.orderbook,\n\t\t\t\t\t\tlisting,\n\t\t\t\t\t} satisfies GenerateListingTransactionArgs;\n\t\t\t\t\tconst steps = await marketplaceClient\n\t\t\t\t\t\t.generateListingTransaction(args)\n\t\t\t\t\t\t.then((resp) => resp.steps);\n\n\t\t\t\t\tconst tokenApprovalStep = steps.find(\n\t\t\t\t\t\t(step) => step.id === StepType.tokenApproval,\n\t\t\t\t\t);\n\t\t\t\t\tif (!tokenApprovalStep) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstep: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstep: tokenApprovalStep,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t: skipToken,\n\t});\n\n\treturn {\n\t\tdata,\n\t\tisLoading,\n\t\tisSuccess,\n\t};\n};\n","import type { Observable } from '@legendapp/state';\nimport { type Address, type Hex, formatUnits } from 'viem';\nimport type { OrderbookKind, Price } from '../../../../../types';\nimport {\n\tExecuteType,\n\ttype Step,\n\tStepType,\n\ttype TransactionSteps,\n\tbalanceQueries,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useAnalytics } from '../../../../_internal/databeat';\nimport { TransactionType } from '../../../../_internal/types';\nimport type { ListingInput } from '../../../../_internal/types';\nimport type {\n\tSignatureStep,\n\tTransactionStep as WalletTransactionStep,\n} from '../../../../_internal/utils';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport {\n\tuseConfig,\n\tuseCurrencies,\n\tuseGenerateListingTransaction,\n} from '../../../../hooks';\nimport { useTransactionStatusModal } from '../../_internal/components/transactionStatusModal';\nimport type { ModalCallbacks } from '../../_internal/types';\ninterface UseTransactionStepsArgs {\n\tlistingInput: ListingInput;\n\tchainId: string;\n\tcollectionAddress: string;\n\torderbookKind: OrderbookKind;\n\tcallbacks?: ModalCallbacks;\n\tcloseMainModal: () => void;\n\tsteps$: Observable<TransactionSteps>;\n}\n\nexport const useTransactionSteps = ({\n\tlistingInput,\n\tchainId,\n\tcollectionAddress,\n\torderbookKind,\n\tcallbacks,\n\tcloseMainModal,\n\tsteps$,\n}: UseTransactionStepsArgs) => {\n\tconst { wallet } = useWallet();\n\tconst expiry = new Date(Number(listingInput.listing.expiry) * 1000);\n\tconst { show: showTransactionStatusModal } = useTransactionStatusModal();\n\tconst sdkConfig = useConfig();\n\tconst { data: currencies } = useCurrencies({\n\t\tchainId: Number(chainId),\n\t});\n\tconst currency = currencies?.find(\n\t\t(currency) =>\n\t\t\tcurrency.contractAddress === listingInput.listing.currencyAddress,\n\t);\n\tconst marketplaceClient = getMarketplaceClient(chainId, sdkConfig);\n\tconst analytics = useAnalytics();\n\tconst { generateListingTransactionAsync, isPending: generatingSteps } =\n\t\tuseGenerateListingTransaction({\n\t\t\tchainId,\n\t\t\tonSuccess: (steps) => {\n\t\t\t\tif (!steps) return;\n\t\t\t},\n\t\t});\n\n\tconst getListingSteps = async () => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tconst address = await wallet.address();\n\n\t\t\tconst steps = await generateListingTransactionAsync({\n\t\t\t\tcollectionAddress,\n\t\t\t\towner: address,\n\t\t\t\twalletType: wallet.walletKind,\n\t\t\t\tcontractType: listingInput.contractType,\n\t\t\t\torderbook: orderbookKind,\n\t\t\t\tlisting: {\n\t\t\t\t\t...listingInput.listing,\n\t\t\t\t\texpiry,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn steps;\n\t\t} catch (error) {\n\t\t\tif (callbacks?.onError) {\n\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t} else {\n\t\t\t\tconsole.debug('onError callback not provided:', error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst executeApproval = async () => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tsteps$.approval.isExecuting.set(true);\n\t\t\tconst approvalStep = await getListingSteps().then((steps) =>\n\t\t\t\tsteps?.find((step) => step.id === StepType.tokenApproval),\n\t\t\t);\n\n\t\t\tconst hash = await wallet.handleSendTransactionStep(\n\t\t\t\tNumber(chainId),\n\t\t\t\tapprovalStep as WalletTransactionStep,\n\t\t\t);\n\n\t\t\tawait wallet.handleConfirmTransactionStep(hash, Number(chainId));\n\t\t\tsteps$.approval.isExecuting.set(false);\n\t\t\tsteps$.approval.exist.set(false);\n\t\t} catch (error) {\n\t\t\tsteps$.approval.isExecuting.set(false);\n\t\t}\n\t};\n\n\tconst createListing = async () => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tsteps$.transaction.isExecuting.set(true);\n\t\t\tconst steps = await getListingSteps();\n\t\t\tconst transactionStep = steps?.find(\n\t\t\t\t(step) => step.id === StepType.createListing,\n\t\t\t);\n\t\t\tconst signatureStep = steps?.find(\n\t\t\t\t(step) => step.id === StepType.signEIP712,\n\t\t\t);\n\n\t\t\tconsole.debug('transactionStep', transactionStep);\n\t\t\tconsole.debug('signatureStep', signatureStep);\n\n\t\t\tif (!transactionStep && !signatureStep) {\n\t\t\t\tthrow new Error('No transaction or signature step found');\n\t\t\t}\n\n\t\t\tlet hash: Hex | undefined;\n\t\t\tlet orderId: string | undefined;\n\n\t\t\tif (transactionStep) {\n\t\t\t\thash = await executeTransaction({ transactionStep });\n\t\t\t}\n\n\t\t\tif (signatureStep) {\n\t\t\t\torderId = await executeSignature({ signatureStep });\n\t\t\t}\n\n\t\t\tcloseMainModal();\n\n\t\t\tshowTransactionStatusModal({\n\t\t\t\ttype: TransactionType.LISTING,\n\t\t\t\tcollectionAddress: collectionAddress as Address,\n\t\t\t\tchainId,\n\t\t\t\tcollectibleId: listingInput.listing.tokenId,\n\t\t\t\thash,\n\t\t\t\torderId,\n\t\t\t\tcallbacks,\n\t\t\t\tprice: {\n\t\t\t\t\tamountRaw: listingInput.listing.pricePerToken,\n\t\t\t\t\tcurrency,\n\t\t\t\t} as Price,\n\t\t\t\tqueriesToInvalidate: [\n\t\t\t\t\tbalanceQueries.all,\n\t\t\t\t\tcollectableKeys.lowestListings,\n\t\t\t\t\tcollectableKeys.listings,\n\t\t\t\t\tcollectableKeys.listingsCount,\n\t\t\t\t\tcollectableKeys.userBalances,\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tif (hash) {\n\t\t\t\tawait wallet.handleConfirmTransactionStep(hash, Number(chainId));\n\n\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\tsteps$.transaction.exist.set(false);\n\t\t\t}\n\n\t\t\tif (orderId) {\n\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\tsteps$.transaction.exist.set(false);\n\t\t\t}\n\n\t\t\tif (hash || orderId) {\n\t\t\t\tconst currencyDecimal =\n\t\t\t\t\tcurrencies?.find(\n\t\t\t\t\t\t(currency) =>\n\t\t\t\t\t\t\tcurrency.contractAddress === listingInput.listing.currencyAddress,\n\t\t\t\t\t)?.decimals || 0;\n\n\t\t\t\tconst currencyValueRaw = Number(listingInput.listing.pricePerToken);\n\t\t\t\tconst currencyValueDecimal = Number(\n\t\t\t\t\tformatUnits(BigInt(currencyValueRaw), currencyDecimal),\n\t\t\t\t);\n\n\t\t\t\tanalytics.trackCreateListing({\n\t\t\t\t\tprops: {\n\t\t\t\t\t\torderbookKind,\n\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\tcurrencyAddress: listingInput.listing.currencyAddress,\n\t\t\t\t\t\tcurrencySymbol: '',\n\t\t\t\t\t\tchainId,\n\t\t\t\t\t\ttxnHash: hash || '',\n\t\t\t\t\t},\n\t\t\t\t\tnums: {\n\t\t\t\t\t\tcurrencyValueDecimal,\n\t\t\t\t\t\tcurrencyValueRaw,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\tsteps$.transaction.exist.set(false);\n\t\t\tif (callbacks?.onError && typeof callbacks.onError === 'function') {\n\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst executeTransaction = async ({\n\t\ttransactionStep,\n\t}: {\n\t\ttransactionStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst hash = await wallet.handleSendTransactionStep(\n\t\t\tNumber(chainId),\n\t\t\ttransactionStep as WalletTransactionStep,\n\t\t);\n\n\t\treturn hash;\n\t};\n\n\tconst executeSignature = async ({\n\t\tsignatureStep,\n\t}: {\n\t\tsignatureStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst signature = await wallet.handleSignMessageStep(\n\t\t\tsignatureStep as SignatureStep,\n\t\t);\n\n\t\tconst result = await marketplaceClient.execute({\n\t\t\tsignature: signature as string,\n\t\t\texecuteType: ExecuteType.order,\n\t\t\tbody: signatureStep.post?.body,\n\t\t});\n\n\t\treturn result.orderId;\n\t};\n\n\treturn {\n\t\tgeneratingSteps,\n\t\texecuteApproval,\n\t\tcreateListing,\n\t};\n};\n","'use client';\n\nimport { Modal, Skeleton, Text } from '@0xsequence/design-system';\nimport type { ChainId } from '@0xsequence/network';\nimport { use$ } from '@legendapp/state/react';\nimport type { QueryKey } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport type { Price } from '../../../../../../types';\nimport { getQueryClient } from '../../../../../_internal';\nimport type { TransactionType } from '../../../../../_internal/types';\nimport { useCollectible } from '../../../../../hooks';\nimport type { ModalCallbacks } from '../../types';\nimport { MODAL_OVERLAY_PROPS } from '../consts';\nimport TransactionFooter from '../transaction-footer';\nimport TransactionPreview from '../transactionPreview';\nimport useTransactionStatus from './hooks/useTransactionStatus';\nimport { transactionStatusModal$ } from './store';\nimport { getTransactionStatusModalMessage } from './util/getMessage';\nimport { getTransactionStatusModalTitle } from './util/getTitle';\n\nexport type ShowTransactionStatusModalArgs = {\n\thash?: Hex;\n\torderId?: string;\n\tprice?: Price;\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tcollectibleId: string;\n\ttype: TransactionType;\n\tcallbacks?: ModalCallbacks;\n\tqueriesToInvalidate?: QueryKey[];\n};\n\nconst invalidateQueries = async (queriesToInvalidate?: QueryKey[]) => {\n\tconst queryClient = getQueryClient();\n\tif (!queriesToInvalidate) {\n\t\t// Invalidate everything by default\n\t\tqueryClient.invalidateQueries();\n\t\treturn;\n\t}\n\tfor (const queryKey of queriesToInvalidate) {\n\t\tawait queryClient.invalidateQueries({ queryKey });\n\t}\n};\n\nexport const useTransactionStatusModal = () => {\n\treturn {\n\t\tshow: (args: ShowTransactionStatusModalArgs) => {\n\t\t\ttransactionStatusModal$.open(args);\n\t\t},\n\t\tclose: () => transactionStatusModal$.close(),\n\t};\n};\n\nconst TransactionStatusModal = () => {\n\tconst isOpen = use$(transactionStatusModal$.isOpen);\n\treturn isOpen ? <TransactionStatusModalContent /> : null;\n};\n\nfunction TransactionStatusModalContent() {\n\tconst {\n\t\ttype,\n\t\thash,\n\t\torderId,\n\t\tprice,\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tcollectibleId,\n\t\tcallbacks,\n\t\tqueriesToInvalidate,\n\t} = use$(transactionStatusModal$.state);\n\n\tconst { data: collectible, isLoading: collectibleLoading } = useCollectible({\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tcollectibleId,\n\t});\n\n\tconst transactionStatus = useTransactionStatus(hash, chainId, callbacks);\n\n\tconst title = getTransactionStatusModalTitle({\n\t\ttransactionStatus,\n\t\ttransactionType: type,\n\t\torderId,\n\t});\n\n\tconst message = getTransactionStatusModalMessage({\n\t\ttransactionStatus,\n\t\ttransactionType: type,\n\t\tcollectibleName: collectible?.name || '',\n\t\torderId,\n\t\tprice,\n\t});\n\n\tconst handleClose = () => {\n\t\tinvalidateQueries(queriesToInvalidate);\n\t\ttransactionStatusModal$.close();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\tisDismissible={true}\n\t\t\tonClose={handleClose}\n\t\t\tsize=\"sm\"\n\t\t\toverlayProps={MODAL_OVERLAY_PROPS}\n\t\t\tdata-testid=\"transaction-status-modal\"\n\t\t>\n\t\t\t<div className=\"grid flex-col gap-6 p-7\">\n\t\t\t\t{title ? (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tclassName=\"font-body text-xl\"\n\t\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\t\tcolor=\"text100\"\n\t\t\t\t\t\tdata-testid=\"transaction-status-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<Skeleton\n\t\t\t\t\t\tclassName=\"h-6 w-16\"\n\t\t\t\t\t\tdata-testid=\"transaction-modal-title-skeleton\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{message ? (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tclassName=\"font-body text-sm\"\n\t\t\t\t\t\tcolor=\"text80\"\n\t\t\t\t\t\tdata-testid=\"transaction-status-message\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{message}\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<Skeleton\n\t\t\t\t\t\tclassName=\"h-4 w-20\"\n\t\t\t\t\t\tdata-testid=\"transaction-modal-content-skeleton\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<TransactionPreview\n\t\t\t\t\torderId={orderId}\n\t\t\t\t\tprice={price}\n\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t\tcollectible={collectible}\n\t\t\t\t\tcollectibleLoading={collectibleLoading}\n\t\t\t\t\tcurrencyImageUrl={price?.currency.imageUrl}\n\t\t\t\t\tisConfirming={transactionStatus === 'PENDING'}\n\t\t\t\t\tisConfirmed={transactionStatus === 'SUCCESS'}\n\t\t\t\t\tisFailed={transactionStatus === 'FAILED'}\n\t\t\t\t\tisTimeout={transactionStatus === 'TIMEOUT'}\n\t\t\t\t/>\n\n\t\t\t\t<TransactionFooter\n\t\t\t\t\ttransactionHash={hash}\n\t\t\t\t\torderId={orderId}\n\t\t\t\t\tisConfirming={transactionStatus === 'PENDING'}\n\t\t\t\t\tisConfirmed={transactionStatus === 'SUCCESS'}\n\t\t\t\t\tisFailed={transactionStatus === 'FAILED'}\n\t\t\t\t\tisTimeout={transactionStatus === 'TIMEOUT'}\n\t\t\t\t\tchainId={chainId as unknown as ChainId}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n\nexport default TransactionStatusModal;\n","import { CheckmarkIcon, Spinner, Text } from '@0xsequence/design-system';\nimport { type ChainId, networks } from '@0xsequence/network';\nimport type { Hex } from 'viem';\nimport { truncateMiddle } from '../../../../../../utils';\n\ntype TransactionFooterProps = {\n\ttransactionHash: Hex | undefined;\n\torderId?: string;\n\tisConfirming: boolean;\n\tisConfirmed: boolean;\n\tisFailed: boolean;\n\tisTimeout: boolean;\n\tchainId: ChainId;\n};\n\nexport default function TransactionFooter({\n\ttransactionHash,\n\torderId,\n\tisConfirming,\n\tisConfirmed,\n\tisFailed,\n\tisTimeout,\n\tchainId,\n}: TransactionFooterProps) {\n\tconst icon =\n\t\t((isConfirmed || orderId) && <PositiveCircle />) ||\n\t\t(isConfirming && <Spinner size=\"md\" />);\n\n\tconst title =\n\t\t((isConfirmed || orderId) && 'Transaction complete') ||\n\t\t(isConfirming && 'Processing transaction') ||\n\t\t(isFailed && 'Transaction failed') ||\n\t\t(isTimeout && 'Transaction took longer than expected');\n\n\tconst transactionUrl = `${networks[chainId as unknown as ChainId]?.blockExplorer?.rootUrl}tx/${transactionHash}`;\n\treturn (\n\t\t<div className=\"flex items-center\">\n\t\t\t{icon}\n\t\t\t<Text\n\t\t\t\tclassName=\"ml-2 font-body text-base\"\n\t\t\t\tcolor=\"text50\"\n\t\t\t\tfontWeight=\"medium\"\n\t\t\t>\n\t\t\t\t{title}\n\t\t\t</Text>\n\t\t\t<a\n\t\t\t\tclassName=\"ml-2 grow text-right no-underline\"\n\t\t\t\thref={transactionUrl}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t>\n\t\t\t\t<Text\n\t\t\t\t\tclassName=\"text-right font-body text-base\"\n\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tcolor: 'hsla(247, 100%, 75%, 1)',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{transactionHash && truncateMiddle(transactionHash, 4, 4)}\n\t\t\t\t</Text>\n\t\t\t</a>\n\t\t</div>\n\t);\n}\n\nexport const PositiveCircle = () => (\n\t<div className=\"flex h-5 w-5 items-center justify-center rounded-full bg-[#35a554]\">\n\t\t<CheckmarkIcon size=\"xs\" color=\"white\" />\n\t</div>\n);\n","import { Image, NetworkImage, Skeleton, Text } from '@0xsequence/design-system';\nimport type { TokenMetadata } from '@0xsequence/metadata';\nimport { observer } from '@legendapp/state/react';\nimport { type Hex, formatUnits } from 'viem';\nimport type { Price } from '../../../../../../types';\nimport { useCollection } from '../../../../../hooks';\nimport ChessTileImage from '../../../../images/chess-tile.png';\nimport TimeAgo from '../timeAgo';\nimport { transactionStatusModal$ } from '../transactionStatusModal/store';\nimport { useTransactionPreviewTitle } from './useTransactionPreviewTitle';\n\ntype TransactionPreviewProps = {\n\torderId?: string;\n\tprice?: Price;\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tcollectible: TokenMetadata | undefined;\n\tcollectibleLoading: boolean;\n\tcurrencyImageUrl?: string;\n\tisConfirming: boolean;\n\tisConfirmed: boolean;\n\tisFailed: boolean;\n\tisTimeout: boolean;\n};\n\nconst TransactionPreview = observer(\n\t({\n\t\torderId,\n\t\tprice,\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tcollectible,\n\t\tcollectibleLoading,\n\t\tcurrencyImageUrl,\n\t\tisConfirming,\n\t\tisConfirmed,\n\t\tisFailed,\n\t\tisTimeout,\n\t}: TransactionPreviewProps) => {\n\t\tconst { type } = transactionStatusModal$.state.get();\n\t\tconst title = useTransactionPreviewTitle(\n\t\t\torderId,\n\t\t\t{ isConfirmed, isConfirming, isFailed, isTimeout },\n\t\t\ttype,\n\t\t);\n\t\tconst { data: collection, isLoading: collectionLoading } = useCollection({\n\t\t\tcollectionAddress,\n\t\t\tchainId,\n\t\t});\n\n\t\tconst collectibleImage = collectible?.image;\n\t\tconst collectibleName = collectible?.name;\n\t\tconst collectionName = collection?.name;\n\t\tconst priceFormatted = price\n\t\t\t? formatUnits(BigInt(price?.amountRaw), price?.currency.decimals)\n\t\t\t: undefined;\n\n\t\tif (collectibleLoading || collectionLoading) {\n\t\t\treturn (\n\t\t\t\t<div className=\"w-full rounded-xl\" style={{ height: 83 }}>\n\t\t\t\t\t<Skeleton style={{ width: '100%', height: '100%' }} />\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"rounded-xl bg-background-secondary p-3\"\n\t\t\t\tdata-testid=\"transaction-preview\"\n\t\t\t>\n\t\t\t\t<div className=\"flex items-center\">\n\t\t\t\t\t<Text\n\t\t\t\t\t\tclassName=\"mr-1 font-body text-xs\"\n\t\t\t\t\t\tcolor=\"text80\"\n\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\tdata-testid=\"transaction-preview-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<NetworkImage chainId={Number(chainId)} size=\"xs\" />\n\n\t\t\t\t\t{isConfirming && <TimeAgo date={new Date()} />}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mt-2 flex items-center\">\n\t\t\t\t\t<Image\n\t\t\t\t\t\tclassName=\"mr-3 h-9 w-9 rounded-sm\"\n\t\t\t\t\t\tsrc={collectibleImage || ChessTileImage}\n\t\t\t\t\t\talt={collectibleName}\n\t\t\t\t\t\tstyle={{ objectFit: 'cover' }}\n\t\t\t\t\t\tdata-testid=\"transaction-preview-image\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<div className=\"flex flex-col items-start gap-0.5\">\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tclassName=\"font-body text-xs\"\n\t\t\t\t\t\t\tcolor=\"text80\"\n\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t\tdata-testid=\"transaction-preview-collection-name\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{collectionName}\n\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tclassName=\"font-body text-xs\"\n\t\t\t\t\t\t\tcolor=\"text100\"\n\t\t\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\t\t\tdata-testid=\"transaction-preview-collectible-name\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{collectibleName}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{price && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"flex grow items-center justify-end gap-1\"\n\t\t\t\t\t\t\tdata-testid=\"transaction-preview-price\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Image className=\"h-3 w-3\" src={currencyImageUrl} />\n\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tclassName=\"font-body text-xs\"\n\t\t\t\t\t\t\t\tcolor=\"text100\"\n\t\t\t\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{priceFormatted} {price?.currency.symbol}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nexport default TransactionPreview;\n","'use client';\n\nimport { Text } from '@0xsequence/design-system';\nimport { formatDistanceToNow } from 'date-fns';\nimport { useEffect, useState } from 'react';\n\ntype TimeAgoProps = {\n\tdate: Date;\n};\n\nexport default function TimeAgo({ date }: TimeAgoProps) {\n\tconst [timeAgo, setTimeAgo] = useState<string>('');\n\n\tuseEffect(() => {\n\t\tconst interval = setInterval(() => {\n\t\t\tsetTimeAgo(formatDistanceToNow(date));\n\t\t}, 1000);\n\n\t\treturn () => clearInterval(interval);\n\t}, [date]);\n\n\treturn (\n\t\t<div className=\"flex grow items-center justify-end\">\n\t\t\t<Text className=\"text-sm\" color=\"text50\">\n\t\t\t\t{timeAgo}\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n","import { observable } from '@legendapp/state';\nimport type { QueryKey } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport type { ShowTransactionStatusModalArgs } from '.';\nimport type { Price } from '../../../../../../types';\nimport type { TransactionType } from '../../../../../_internal/types';\nimport type { ModalCallbacks } from '../../types';\n\nexport type ConfirmationStatus = {\n\tisConfirming: boolean;\n\tisConfirmed: boolean;\n\tisFailed: boolean;\n\tisTimeout: boolean;\n};\n\nexport type TransactionStatus = 'PENDING' | 'SUCCESS' | 'FAILED' | 'TIMEOUT';\n\nexport interface TransactionStatusModalState {\n\tisOpen: boolean;\n\topen: (args: ShowTransactionStatusModalArgs) => void;\n\tclose: () => void;\n\tstate: {\n\t\thash: Hex | undefined;\n\t\torderId: string | undefined;\n\t\tstatus: TransactionStatus;\n\t\ttype: TransactionType;\n\t\tprice: Price | undefined;\n\t\tcollectionAddress: Hex;\n\t\tchainId: string;\n\t\tcollectibleId: string;\n\t\tcallbacks?: ModalCallbacks;\n\t\tqueriesToInvalidate?: QueryKey[];\n\t};\n}\n\nexport const initialState: TransactionStatusModalState = {\n\tisOpen: false,\n\topen: ({\n\t\thash,\n\t\torderId,\n\t\tprice,\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tcollectibleId,\n\t\ttype,\n\t\tcallbacks,\n\t\tqueriesToInvalidate,\n\t}) => {\n\t\ttransactionStatusModal$.state.set({\n\t\t\t...transactionStatusModal$.state.get(),\n\t\t\thash,\n\t\t\torderId,\n\t\t\tprice,\n\t\t\tcollectionAddress,\n\t\t\tchainId,\n\t\t\tcollectibleId,\n\t\t\ttype,\n\t\t\tcallbacks,\n\t\t\tqueriesToInvalidate,\n\t\t});\n\t\ttransactionStatusModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\ttransactionStatusModal$.isOpen.set(false);\n\t\ttransactionStatusModal$.state.set({\n\t\t\t...initialState.state,\n\t\t});\n\t},\n\tstate: {\n\t\thash: undefined,\n\t\torderId: undefined,\n\t\tstatus: 'PENDING',\n\t\tprice: undefined,\n\t\tcollectionAddress: '' as Hex,\n\t\tchainId: '',\n\t\tcollectibleId: '',\n\t\ttype: undefined as unknown as TransactionType,\n\t\tcallbacks: undefined,\n\t\tqueriesToInvalidate: [],\n\t},\n};\n\nexport const transactionStatusModal$ = observable(initialState);\n","export const TRANSACTION_TITLES = {\n\tSELL: {\n\t\tconfirming: 'Selling',\n\t\tconfirmed: 'Sold',\n\t\tfailed: 'Sale failed',\n\t},\n\tLISTING: {\n\t\tconfirming: 'Creating listing',\n\t\tconfirmed: 'Listed',\n\t\tfailed: 'Listing failed',\n\t},\n\tOFFER: {\n\t\tconfirming: 'Creating offer',\n\t\tconfirmed: 'Offer created',\n\t\tfailed: 'Offer failed',\n\t},\n\tBUY: {\n\t\tconfirming: 'Buying',\n\t\tconfirmed: 'Bought',\n\t\tfailed: 'Purchase failed',\n\t},\n\tTRANSFER: {\n\t\tconfirming: 'Transferring',\n\t\tconfirmed: 'Transferred',\n\t\tfailed: 'Transfer failed',\n\t},\n\tCANCEL: {\n\t\tconfirming: 'Cancelling',\n\t\tconfirmed: 'Cancelled',\n\t\tfailed: 'Cancellation failed',\n\t},\n} as const;\n","import type { TransactionType } from '../../../../../_internal/types';\nimport type { ConfirmationStatus } from '../transactionStatusModal/store';\nimport { TRANSACTION_TITLES } from './consts';\n\nexport function useTransactionPreviewTitle(\n\torderId: string | undefined,\n\tstatus: ConfirmationStatus,\n\ttype?: TransactionType | undefined,\n): string {\n\tif (!type) return '';\n\n\tconst { isConfirming, isConfirmed, isFailed } = status;\n\tconst titles = TRANSACTION_TITLES[type];\n\n\tif (isConfirmed || orderId) return titles.confirmed;\n\tif (isConfirming) return titles.confirming;\n\tif (isFailed) return titles.failed;\n\n\treturn '';\n}\n","'use client';\n\nimport { TransactionStatus as IndexerTransactionStatus } from '@0xsequence/indexer';\nimport { skipToken, useQuery } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\nimport { type Hex, WaitForTransactionReceiptTimeoutError } from 'viem';\nimport { useWallet } from '../../../../../../_internal/wallet/useWallet';\nimport type { ModalCallbacks } from '../../../types';\nimport type { TransactionStatus } from '../store';\n\nconst useTransactionStatus = (\n\thash: Hex | undefined,\n\tchainId: string,\n\tcallbacks?: ModalCallbacks,\n) => {\n\tconst { wallet } = useWallet();\n\tconst [status, setStatus] = useState<TransactionStatus>(\n\t\thash ? 'PENDING' : 'SUCCESS',\n\t);\n\n\tconst { data: confirmationResult } = useQuery({\n\t\tqueryKey: ['transaction-confirmation', hash, chainId, !!wallet],\n\t\tqueryFn:\n\t\t\t!!wallet && hash\n\t\t\t\t? async () =>\n\t\t\t\t\t\tawait wallet.handleConfirmTransactionStep(hash, Number(chainId))\n\t\t\t\t: skipToken,\n\t});\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (!hash) {\n\t\t\tsetStatus('SUCCESS');\n\t\t\treturn;\n\t\t}\n\n\t\tif (!confirmationResult) {\n\t\t\tsetStatus('PENDING');\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tif (\n\t\t\t\tconfirmationResult.txnStatus === IndexerTransactionStatus.SUCCESSFUL\n\t\t\t) {\n\t\t\t\tsetStatus('SUCCESS');\n\t\t\t\tcallbacks?.onSuccess?.({ hash: hash || '0x0' });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetStatus('FAILED');\n\t\t\tcallbacks?.onError?.(new Error('Transaction failed'));\n\t\t} catch (error) {\n\t\t\tsetStatus(\n\t\t\t\terror instanceof WaitForTransactionReceiptTimeoutError\n\t\t\t\t\t? 'TIMEOUT'\n\t\t\t\t\t: 'FAILED',\n\t\t\t);\n\t\t\tcallbacks?.onError?.(error as Error);\n\t\t}\n\t}, [confirmationResult, hash]);\n\n\treturn status;\n};\n\nexport default useTransactionStatus;\n","import { formatUnits } from 'viem';\nimport type { Price } from '../../../../../../../types';\nimport { TransactionType } from '../../../../../../_internal';\nimport type { TransactionStatus } from '../store';\nimport { getFormattedType } from './getFormattedType';\n\nexport function getTransactionStatusModalMessage({\n\ttransactionStatus,\n\ttransactionType,\n\tcollectibleName,\n\torderId,\n\tprice,\n}: {\n\ttransactionStatus: TransactionStatus;\n\ttransactionType: TransactionType;\n\tcollectibleName: string;\n\torderId?: string;\n\tprice?: Price;\n}): string {\n\t// without this, the text will be \"Your cancellation CollectibleXXX has failed.\" which sounds weird\n\tconst hideCollectibleName = transactionType === 'CANCEL';\n\tconst formattedPrice = price\n\t\t? formatUnits(BigInt(price.amountRaw), price.currency.decimals)\n\t\t: '';\n\n\tif (orderId) {\n\t\treturn `You just ${getFormattedType(transactionType, true)}${!hideCollectibleName ? ` ${collectibleName}` : ''}. It's been confirmed on the blockchain!`;\n\t}\n\n\tif (transactionType === TransactionType.OFFER) {\n\t\treturn `You just offered ${formattedPrice} ${price?.currency.symbol} for ${collectibleName}. It's been confirmed on the blockchain!`;\n\t}\n\n\tswitch (transactionStatus) {\n\t\tcase 'PENDING':\n\t\t\treturn `You just ${getFormattedType(transactionType, true)}${!hideCollectibleName ? ` ${collectibleName}` : ''}. It should be confirmed on the blockchain shortly.`;\n\t\tcase 'SUCCESS':\n\t\t\treturn `You just ${getFormattedType(transactionType, true)}${!hideCollectibleName ? ` ${collectibleName}` : ''}. It's been confirmed on the blockchain!`;\n\t\tcase 'FAILED':\n\t\t\treturn `Your ${getFormattedType(transactionType)} has failed.`;\n\t\tcase 'TIMEOUT':\n\t\t\treturn `Your ${getFormattedType(transactionType)} takes too long. Click the link below to track it on the explorer.`;\n\t\tdefault:\n\t\t\treturn 'Your transaction is processing';\n\t}\n}\n","import { TransactionType } from '../../../../../../_internal/types';\n\nexport function getFormattedType(\n\ttransactionType: TransactionType,\n\tverb = false,\n): string {\n\tswitch (transactionType) {\n\t\tcase TransactionType.TRANSFER:\n\t\t\treturn verb ? 'transferred' : 'transfer';\n\t\tcase TransactionType.LISTING:\n\t\t\treturn verb ? 'listed' : 'listing';\n\t\tcase TransactionType.BUY:\n\t\t\treturn verb ? 'purchased' : 'purchase';\n\t\tcase TransactionType.SELL:\n\t\t\treturn verb ? 'sold' : 'sale';\n\t\tcase TransactionType.CANCEL:\n\t\t\treturn verb ? 'cancelled' : 'cancellation';\n\t\tcase TransactionType.OFFER:\n\t\t\treturn verb ? 'offered' : 'offer';\n\t\tdefault:\n\t\t\treturn 'transaction';\n\t}\n}\n","import type { TransactionType } from '../../../../../../_internal/types';\nimport type { TransactionStatus } from '../store';\nimport { getFormattedType } from './getFormattedType';\n\nexport function getTransactionStatusModalTitle({\n\ttransactionStatus,\n\ttransactionType,\n\torderId,\n}: {\n\ttransactionStatus: TransactionStatus;\n\ttransactionType: TransactionType | undefined;\n\torderId?: string;\n}): string {\n\tif (transactionType === undefined) {\n\t\treturn '';\n\t}\n\tif (orderId) {\n\t\treturn `Your ${getFormattedType(transactionType)} has processed`;\n\t}\n\n\tswitch (transactionStatus) {\n\t\tcase 'PENDING':\n\t\t\treturn `Your ${getFormattedType(transactionType)} is processing`;\n\t\tcase 'SUCCESS':\n\t\t\treturn `Your ${getFormattedType(transactionType)} has processed`;\n\t\tcase 'FAILED':\n\t\t\treturn `Your ${getFormattedType(transactionType)} has failed`;\n\t\tcase 'TIMEOUT':\n\t\t\treturn `Your ${getFormattedType(transactionType)} takes too long`;\n\t\tdefault:\n\t\t\treturn 'Your transaction is processing';\n\t}\n}\n\nexport function getTransactionStatusModalSpinnerTitle({\n\ttransactionStatus,\n}: {\n\ttransactionStatus: TransactionStatus;\n}): string {\n\tswitch (transactionStatus) {\n\t\tcase 'PENDING':\n\t\t\treturn 'Processing transaction';\n\t\tcase 'SUCCESS':\n\t\t\treturn 'Transaction completed';\n\t\tcase 'FAILED':\n\t\t\treturn 'Transaction failed';\n\t\tcase 'TIMEOUT':\n\t\t\treturn 'Taking too long';\n\t\tdefault:\n\t\t\treturn 'Processing transaction';\n\t}\n}\n","import { observable } from '@legendapp/state';\nimport { addDays } from 'date-fns/addDays';\nimport type { Hex } from 'viem';\nimport { type Currency, OrderbookKind } from '../../../../types';\nimport type { CollectionType, TransactionSteps } from '../../../_internal';\nimport type { BaseModalState, ModalCallbacks } from '../_internal/types';\n\ntype CreateListingState = BaseModalState & {\n\tcollectibleId: string;\n\tcollectionName: string;\n\torderbookKind?: OrderbookKind;\n\tcollectionType: CollectionType | undefined;\n\tlistingPrice: {\n\t\tamountRaw: string;\n\t\tcurrency: Currency;\n\t};\n\tquantity: string;\n\tinvalidQuantity: boolean;\n\texpiry: Date;\n\tsteps: TransactionSteps;\n};\n\nexport type OpenCreateListingModalArgs = {\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tcollectibleId: string;\n\torderbookKind?: OrderbookKind;\n\tcallbacks?: ModalCallbacks;\n};\n\ntype Actions = {\n\topen: (args: OpenCreateListingModalArgs) => void;\n\tclose: () => void;\n};\n\nconst listingPrice = {\n\tamountRaw: '0',\n\tcurrency: {} as Currency,\n};\n\nconst approval = {\n\texist: false,\n\tisExecuting: false,\n\texecute: () => Promise.resolve(),\n};\n\nconst transaction = {\n\texist: false,\n\tisExecuting: false,\n\texecute: () => Promise.resolve(),\n};\n\nconst steps = {\n\tapproval: { ...approval },\n\ttransaction: { ...transaction },\n};\n\nconst initialState: CreateListingState = {\n\tisOpen: false,\n\tcollectionAddress: '' as Hex,\n\tchainId: '',\n\tcollectibleId: '',\n\torderbookKind: OrderbookKind.sequence_marketplace_v2,\n\tcollectionName: '',\n\tcollectionType: undefined,\n\tlistingPrice: { ...listingPrice },\n\tquantity: '1',\n\tinvalidQuantity: false,\n\texpiry: new Date(addDays(new Date(), 7).toJSON()),\n\tcallbacks: undefined as ModalCallbacks | undefined,\n\tsteps: { ...steps },\n};\n\nconst actions: Actions = {\n\topen: (args) => {\n\t\tcreateListingModal$.collectionAddress.set(args.collectionAddress);\n\t\tcreateListingModal$.chainId.set(args.chainId);\n\t\tcreateListingModal$.collectibleId.set(args.collectibleId);\n\t\tcreateListingModal$.orderbookKind.set(args.orderbookKind);\n\t\tcreateListingModal$.callbacks.set(args.callbacks);\n\t\tcreateListingModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tcreateListingModal$.isOpen.set(false);\n\t\tcreateListingModal$.set({ ...initialState, ...actions });\n\t\tcreateListingModal$.listingPrice.set({ ...listingPrice });\n\t\tcreateListingModal$.steps.set({ ...steps });\n\t},\n};\n\nexport const createListingModal$ = observable<CreateListingState & Actions>({\n\t...initialState,\n\t...actions,\n});\n","'use client';\n\nimport { Show, observer } from '@legendapp/state/react';\nimport { useState } from 'react';\nimport { parseUnits } from 'viem';\nimport { dateToUnixTime } from '../../../../utils/date';\nimport { ContractType } from '../../../_internal';\nimport { useCollectible, useCollection, useCurrencies } from '../../../hooks';\nimport { ActionModal } from '../_internal/components/actionModal/ActionModal';\nimport { ErrorModal } from '../_internal/components/actionModal/ErrorModal';\nimport ExpirationDateSelect from '../_internal/components/expirationDateSelect';\nimport FloorPriceText from '../_internal/components/floorPriceText';\nimport PriceInput from '../_internal/components/priceInput';\nimport QuantityInput from '../_internal/components/quantityInput';\nimport TokenPreview from '../_internal/components/tokenPreview';\nimport { useMakeOffer } from './hooks/useMakeOffer';\nimport { makeOfferModal$ } from './store';\n\nexport const MakeOfferModal = () => {\n\treturn <Show if={makeOfferModal$.isOpen}>{() => <Modal />}</Show>;\n};\n\nconst Modal = observer(() => {\n\tconst state = makeOfferModal$.get();\n\tconst {\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tofferPrice,\n\t\tofferPriceChanged,\n\t\tinvalidQuantity,\n\t\tcollectibleId,\n\t\torderbookKind,\n\t\tcallbacks,\n\t} = state;\n\tconst steps$ = makeOfferModal$.steps;\n\tconst [insufficientBalance, setInsufficientBalance] = useState(false);\n\tconst {\n\t\tdata: collectible,\n\t\tisLoading: collectableIsLoading,\n\t\tisError: collectableIsError,\n\t} = useCollectible({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t});\n\n\tconst {\n\t\tdata: collection,\n\t\tisLoading: collectionIsLoading,\n\t\tisError: collectionIsError,\n\t} = useCollection({\n\t\tchainId,\n\t\tcollectionAddress,\n\t});\n\tconst {\n\t\tdata: currencies,\n\t\tisLoading: currenciesLoading,\n\t\tisError: currenciesIsError,\n\t} = useCurrencies({\n\t\tchainId,\n\t\tincludeNativeCurrency: false,\n\t});\n\tconst modalLoading =\n\t\tcollectableIsLoading || collectionIsLoading || currenciesLoading;\n\n\tconst { isLoading, executeApproval, makeOffer } = useMakeOffer({\n\t\tofferInput: {\n\t\t\tcontractType: collection?.type as ContractType,\n\t\t\toffer: {\n\t\t\t\ttokenId: collectibleId,\n\t\t\t\tquantity: parseUnits(\n\t\t\t\t\tmakeOfferModal$.quantity.get(),\n\t\t\t\t\tcollectible?.decimals || 0,\n\t\t\t\t).toString(),\n\t\t\t\texpiry: dateToUnixTime(makeOfferModal$.expiry.get()),\n\t\t\t\tcurrencyAddress: offerPrice.currency.contractAddress,\n\t\t\t\tpricePerToken: offerPrice.amountRaw,\n\t\t\t},\n\t\t},\n\t\tchainId,\n\t\tcollectionAddress,\n\t\torderbookKind,\n\t\tcallbacks,\n\t\tcloseMainModal: () => makeOfferModal$.close(),\n\t\tsteps$: steps$,\n\t});\n\n\tif (collectableIsError || collectionIsError || currenciesIsError) {\n\t\treturn (\n\t\t\t<ErrorModal\n\t\t\t\tisOpen={makeOfferModal$.isOpen.get()}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={makeOfferModal$.close}\n\t\t\t\ttitle=\"Make an offer\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (!modalLoading && (!currencies || currencies.length === 0)) {\n\t\treturn (\n\t\t\t<ErrorModal\n\t\t\t\tisOpen={makeOfferModal$.isOpen.get()}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={makeOfferModal$.close}\n\t\t\t\ttitle=\"Make an offer\"\n\t\t\t\tmessage=\"No ERC-20s are configured for the marketplace, contact the marketplace owners\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst ctas = [\n\t\t{\n\t\t\tlabel: 'Approve TOKEN',\n\t\t\tonClick: async () => await executeApproval(),\n\t\t\thidden: !steps$.approval.exist.get(),\n\t\t\tpending: steps$.approval.isExecuting.get(),\n\t\t\tvariant: 'glass' as const,\n\t\t\tdisabled:\n\t\t\t\tinvalidQuantity ||\n\t\t\t\tisLoading ||\n\t\t\t\tinsufficientBalance ||\n\t\t\t\tofferPrice.amountRaw === '0' ||\n\t\t\t\t!offerPriceChanged,\n\t\t},\n\t\t{\n\t\t\tlabel: 'Make offer',\n\t\t\tonClick: () => makeOffer(),\n\t\t\tpending: steps$.transaction.isExecuting.get(),\n\t\t\tdisabled:\n\t\t\t\tsteps$.approval.isExecuting.get() ||\n\t\t\t\tsteps$.approval.exist.get() ||\n\t\t\t\tofferPrice.amountRaw === '0' ||\n\t\t\t\tinsufficientBalance ||\n\t\t\t\tisLoading ||\n\t\t\t\tinvalidQuantity,\n\t\t},\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<ActionModal\n\t\t\t\tisOpen={makeOfferModal$.isOpen.get()}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={() => makeOfferModal$.close()}\n\t\t\t\ttitle=\"Make an offer\"\n\t\t\t\tctas={ctas}\n\t\t\t\tmodalLoading={modalLoading}\n\t\t\t\tspinnerContainerClassname=\"h-[188px]\"\n\t\t\t>\n\t\t\t\t<TokenPreview\n\t\t\t\t\tcollectionName={collection?.name}\n\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\tcollectibleId={collectibleId}\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t/>\n\n\t\t\t\t<PriceInput\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t$price={makeOfferModal$.offerPrice}\n\t\t\t\t\tonPriceChange={() => makeOfferModal$.offerPriceChanged.set(true)}\n\t\t\t\t\tincludeNativeCurrency={false}\n\t\t\t\t\tcheckBalance={{\n\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\tcallback: (state) => setInsufficientBalance(state),\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t{collection?.type === ContractType.ERC1155 && (\n\t\t\t\t\t<QuantityInput\n\t\t\t\t\t\t$quantity={makeOfferModal$.quantity}\n\t\t\t\t\t\t$invalidQuantity={makeOfferModal$.invalidQuantity}\n\t\t\t\t\t\tdecimals={collectible?.decimals || 0}\n\t\t\t\t\t\tmaxQuantity={String(Number.MAX_SAFE_INTEGER)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{offerPrice.amountRaw !== '0' &&\n\t\t\t\t\tofferPriceChanged &&\n\t\t\t\t\t!insufficientBalance && (\n\t\t\t\t\t\t<FloorPriceText\n\t\t\t\t\t\t\ttokenId={collectibleId}\n\t\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\t\tprice={offerPrice}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t<ExpirationDateSelect $date={makeOfferModal$.expiry} />\n\t\t\t</ActionModal>\n\t\t</>\n\t);\n});\n","'use client';\n\nimport type { Observable } from '@legendapp/state';\nimport { useEffect } from 'react';\nimport { OrderbookKind } from '../../../../../types';\nimport type { TransactionSteps } from '../../../../_internal';\nimport type { OfferInput } from '../../../../_internal/types';\nimport { useMarketplaceConfig } from '../../../../hooks';\nimport type { ModalCallbacks } from '../../_internal/types';\nimport { useGetTokenApprovalData } from './useGetTokenApproval';\nimport { useTransactionSteps } from './useTransactionSteps';\n\ninterface UseMakeOfferArgs {\n\tofferInput: OfferInput;\n\tchainId: string;\n\tcollectionAddress: string;\n\torderbookKind?: OrderbookKind;\n\tcallbacks?: ModalCallbacks;\n\tcloseMainModal: () => void;\n\tsteps$: Observable<TransactionSteps>;\n}\n\nexport const useMakeOffer = ({\n\tofferInput,\n\tchainId,\n\tcollectionAddress,\n\torderbookKind,\n\tcallbacks,\n\tcloseMainModal,\n\tsteps$,\n}: UseMakeOfferArgs) => {\n\tconst { data: marketplaceConfig, isLoading: marketplaceIsLoading } =\n\t\tuseMarketplaceConfig();\n\n\tconst collectionConfig = marketplaceConfig?.collections.find(\n\t\t(c) => c.address === collectionAddress,\n\t);\n\n\torderbookKind =\n\t\torderbookKind ??\n\t\tcollectionConfig?.destinationMarketplace ??\n\t\tOrderbookKind.sequence_marketplace_v2;\n\n\tconst { data: tokenApproval, isLoading: tokenApprovalIsLoading } =\n\t\tuseGetTokenApprovalData({\n\t\t\tchainId,\n\t\t\ttokenId: offerInput.offer.tokenId,\n\t\t\tcollectionAddress,\n\t\t\tcurrencyAddress: offerInput.offer.currencyAddress,\n\t\t\tcontractType: offerInput.contractType,\n\t\t\torderbook: orderbookKind,\n\t\t\tquery: {\n\t\t\t\tenabled: !marketplaceIsLoading,\n\t\t\t},\n\t\t});\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (tokenApproval?.step && !tokenApprovalIsLoading) {\n\t\t\tsteps$.approval.exist.set(true);\n\t\t}\n\t}, [tokenApproval?.step, tokenApprovalIsLoading]);\n\n\tconst { generatingSteps, executeApproval, makeOffer } = useTransactionSteps({\n\t\tofferInput,\n\t\tchainId,\n\t\tcollectionAddress,\n\t\torderbookKind,\n\t\tcallbacks,\n\t\tcloseMainModal,\n\t\tsteps$,\n\t});\n\n\treturn {\n\t\tisLoading: generatingSteps,\n\t\texecuteApproval,\n\t\tmakeOffer,\n\t\ttokenApprovalStepExists: tokenApproval?.step !== null,\n\t\ttokenApprovalIsLoading,\n\t};\n};\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport { dateToUnixTime } from '../../../../../utils/date';\nimport {\n\ttype ContractType,\n\ttype CreateReq,\n\ttype GenerateOfferTransactionArgs,\n\ttype OrderbookKind,\n\ttype QueryArg,\n\tStepType,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport { useConfig } from '../../../../hooks/useConfig';\n\nexport interface UseGetTokenApprovalDataArgs {\n\tchainId: string;\n\ttokenId: string;\n\tcollectionAddress: string;\n\tcurrencyAddress: string;\n\tcontractType: ContractType;\n\torderbook: OrderbookKind;\n\tquery?: QueryArg;\n}\n\nconst ONE_DAY_IN_SECONDS = 60 * 60 * 24;\n\nexport const useGetTokenApprovalData = (\n\tparams: UseGetTokenApprovalDataArgs,\n) => {\n\tconst config = useConfig();\n\tconst { wallet } = useWallet();\n\tconst marketplaceClient = getMarketplaceClient(params.chainId, config);\n\n\tconst offer = {\n\t\ttokenId: params.tokenId,\n\t\tquantity: '1',\n\t\tcurrencyAddress: params.currencyAddress,\n\t\tpricePerToken: '1',\n\t\texpiry: String(Number(dateToUnixTime(new Date())) + ONE_DAY_IN_SECONDS),\n\t} satisfies CreateReq;\n\n\tconst isEnabled = wallet && params.query?.enabled !== false;\n\n\tconst { data, isLoading, isSuccess } = useQuery({\n\t\tqueryKey: ['token-approval-data', params.currencyAddress],\n\t\tqueryFn: isEnabled\n\t\t\t? async () => {\n\t\t\t\t\tconst args = {\n\t\t\t\t\t\tcollectionAddress: params.collectionAddress,\n\t\t\t\t\t\tmaker: await wallet.address(),\n\t\t\t\t\t\twalletType: wallet.walletKind,\n\t\t\t\t\t\tcontractType: params.contractType,\n\t\t\t\t\t\torderbook: params.orderbook,\n\t\t\t\t\t\toffer,\n\t\t\t\t\t} satisfies GenerateOfferTransactionArgs;\n\t\t\t\t\tconst steps = await marketplaceClient\n\t\t\t\t\t\t.generateOfferTransaction(args)\n\t\t\t\t\t\t.then((resp) => resp.steps);\n\n\t\t\t\t\tconst tokenApprovalStep = steps.find(\n\t\t\t\t\t\t(step) => step.id === StepType.tokenApproval,\n\t\t\t\t\t);\n\t\t\t\t\tif (!tokenApprovalStep) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstep: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstep: tokenApprovalStep,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t: skipToken,\n\t\tenabled: !!wallet && !!params.collectionAddress && !!params.currencyAddress,\n\t});\n\n\treturn {\n\t\tdata,\n\t\tisLoading,\n\t\tisSuccess,\n\t};\n};\n","import type { Observable } from '@legendapp/state';\nimport { type Address, type Hex, formatUnits } from 'viem';\nimport { OrderbookKind, type Price } from '../../../../../types';\nimport {\n\tExecuteType,\n\ttype Step,\n\tStepType,\n\ttype TransactionSteps,\n\tbalanceQueries,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useAnalytics } from '../../../../_internal/databeat';\nimport { TransactionType } from '../../../../_internal/types';\nimport type { OfferInput } from '../../../../_internal/types';\nimport type {\n\tSignatureStep,\n\tTransactionStep,\n} from '../../../../_internal/utils';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport { useConfig, useCurrency } from '../../../../hooks';\nimport { useGenerateOfferTransaction } from '../../../../hooks/useGenerateOfferTransaction';\nimport { useTransactionStatusModal } from '../../_internal/components/transactionStatusModal';\nimport type { ModalCallbacks } from '../../_internal/types';\nexport type ExecutionState = 'approval' | 'offer' | null;\n\ninterface UseTransactionStepsArgs {\n\tofferInput: OfferInput;\n\tchainId: string;\n\tcollectionAddress: string;\n\torderbookKind?: OrderbookKind;\n\tcallbacks?: ModalCallbacks;\n\tcloseMainModal: () => void;\n\tsteps$: Observable<TransactionSteps>;\n}\n\nexport const useTransactionSteps = ({\n\tofferInput,\n\tchainId,\n\tcollectionAddress,\n\torderbookKind = OrderbookKind.sequence_marketplace_v2,\n\tcallbacks,\n\tcloseMainModal,\n\tsteps$,\n}: UseTransactionStepsArgs) => {\n\tconst { wallet } = useWallet();\n\tconst expiry = new Date(Number(offerInput.offer.expiry) * 1000);\n\tconst { show: showTransactionStatusModal } = useTransactionStatusModal();\n\tconst sdkConfig = useConfig();\n\tconst analytics = useAnalytics();\n\tconst marketplaceClient = getMarketplaceClient(chainId, sdkConfig);\n\tconst { generateOfferTransactionAsync, isPending: generatingSteps } =\n\t\tuseGenerateOfferTransaction({\n\t\t\tchainId,\n\t\t\tonSuccess: (steps) => {\n\t\t\t\tif (!steps) return;\n\t\t\t},\n\t\t});\n\tconst { data: currency } = useCurrency({\n\t\tchainId,\n\t\tcurrencyAddress: offerInput.offer.currencyAddress,\n\t});\n\n\tconst getOfferSteps = async () => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tconst address = await wallet.address();\n\n\t\t\tconst steps = await generateOfferTransactionAsync({\n\t\t\t\tcollectionAddress,\n\t\t\t\tmaker: address,\n\t\t\t\twalletType: wallet.walletKind,\n\t\t\t\tcontractType: offerInput.contractType,\n\t\t\t\torderbook: orderbookKind,\n\t\t\t\toffer: {\n\t\t\t\t\t...offerInput.offer,\n\t\t\t\t\texpiry,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn steps;\n\t\t} catch (error) {\n\t\t\tif (callbacks?.onError) {\n\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t} else {\n\t\t\t\tconsole.debug('onError callback not provided:', error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst executeApproval = async () => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tsteps$.approval.isExecuting.set(true);\n\t\t\tconst approvalStep = await getOfferSteps().then((steps) =>\n\t\t\t\tsteps?.find((step) => step.id === StepType.tokenApproval),\n\t\t\t);\n\n\t\t\tconst hash = await wallet.handleSendTransactionStep(\n\t\t\t\tNumber(chainId),\n\t\t\t\tapprovalStep as TransactionStep,\n\t\t\t);\n\n\t\t\tawait wallet.handleConfirmTransactionStep(hash, Number(chainId));\n\t\t\tsteps$.approval.isExecuting.set(false);\n\t\t\tsteps$.approval.exist.set(false);\n\t\t} catch (error) {\n\t\t\tsteps$.approval.isExecuting.set(false);\n\t\t}\n\t};\n\n\tconst makeOffer = async () => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tsteps$.transaction.isExecuting.set(true);\n\t\t\tconst steps = await getOfferSteps();\n\t\t\tconst transactionStep = steps?.find(\n\t\t\t\t(step) => step.id === StepType.createOffer,\n\t\t\t);\n\t\t\tconst signatureStep = steps?.find(\n\t\t\t\t(step) => step.id === StepType.signEIP712,\n\t\t\t);\n\n\t\t\tconsole.debug('transactionStep', transactionStep);\n\t\t\tconsole.debug('signatureStep', signatureStep);\n\n\t\t\tif (!transactionStep && !signatureStep) {\n\t\t\t\tthrow new Error('No transaction or signature step found');\n\t\t\t}\n\n\t\t\tlet hash: Hex | undefined;\n\t\t\tlet orderId: string | undefined;\n\n\t\t\tif (transactionStep) {\n\t\t\t\thash = await executeTransaction({ transactionStep });\n\t\t\t}\n\n\t\t\tif (signatureStep) {\n\t\t\t\torderId = await executeSignature({ signatureStep });\n\t\t\t}\n\n\t\t\tcloseMainModal();\n\n\t\t\tshowTransactionStatusModal({\n\t\t\t\ttype: TransactionType.OFFER,\n\t\t\t\tcollectionAddress: collectionAddress as Address,\n\t\t\t\tchainId,\n\t\t\t\tcollectibleId: offerInput.offer.tokenId,\n\t\t\t\thash,\n\t\t\t\torderId,\n\t\t\t\tcallbacks,\n\t\t\t\tqueriesToInvalidate: [\n\t\t\t\t\tbalanceQueries.all,\n\t\t\t\t\tcollectableKeys.highestOffers,\n\t\t\t\t\tcollectableKeys.offers,\n\t\t\t\t\tcollectableKeys.offersCount,\n\t\t\t\t\tcollectableKeys.userBalances,\n\t\t\t\t],\n\t\t\t\tprice: {\n\t\t\t\t\tamountRaw: offerInput.offer.pricePerToken,\n\t\t\t\t\tcurrency,\n\t\t\t\t} as Price,\n\t\t\t});\n\n\t\t\tif (hash) {\n\t\t\t\tawait wallet.handleConfirmTransactionStep(hash, Number(chainId));\n\n\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\tsteps$.transaction.exist.set(false);\n\t\t\t}\n\n\t\t\tif (orderId) {\n\t\t\t\t// no need to wait for receipt, because the order is already created\n\n\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\tsteps$.transaction.exist.set(false);\n\t\t\t}\n\n\t\t\tif (hash || orderId) {\n\t\t\t\tconst currencyDecimal = currency?.decimals || 0;\n\t\t\t\tconst currencyValueRaw = Number(offerInput.offer.pricePerToken);\n\t\t\t\tconst currencyValueDecimal = Number(\n\t\t\t\t\tformatUnits(BigInt(currencyValueRaw), currencyDecimal),\n\t\t\t\t);\n\n\t\t\t\tanalytics.trackCreateOffer({\n\t\t\t\t\tprops: {\n\t\t\t\t\t\torderbookKind,\n\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\tcurrencyAddress: offerInput.offer.currencyAddress,\n\t\t\t\t\t\tcurrencySymbol: currency?.symbol || '',\n\t\t\t\t\t\tchainId,\n\t\t\t\t\t\ttxnHash: hash || '',\n\t\t\t\t\t},\n\t\t\t\t\tnums: {\n\t\t\t\t\t\tcurrencyValueDecimal,\n\t\t\t\t\t\tcurrencyValueRaw,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\tsteps$.transaction.exist.set(false);\n\t\t\tif (callbacks?.onError && typeof callbacks.onError === 'function') {\n\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst executeTransaction = async ({\n\t\ttransactionStep,\n\t}: {\n\t\ttransactionStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst hash = await wallet.handleSendTransactionStep(\n\t\t\tNumber(chainId),\n\t\t\ttransactionStep as TransactionStep,\n\t\t);\n\n\t\treturn hash;\n\t};\n\n\tconst executeSignature = async ({\n\t\tsignatureStep,\n\t}: {\n\t\tsignatureStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst signature = await wallet.handleSignMessageStep(\n\t\t\tsignatureStep as SignatureStep,\n\t\t);\n\n\t\tconst result = await marketplaceClient.execute({\n\t\t\tsignature: signature as string,\n\t\t\texecuteType: ExecuteType.order,\n\t\t\tbody: signatureStep.post?.body,\n\t\t});\n\n\t\treturn result.orderId;\n\t};\n\n\treturn {\n\t\tgeneratingSteps,\n\t\texecuteApproval,\n\t\tmakeOffer,\n\t};\n};\n","import { observable } from '@legendapp/state';\nimport { addDays } from 'date-fns/addDays';\nimport type { Hex } from 'viem';\nimport type { Currency, OrderbookKind, Price } from '../../../../types';\nimport type { CollectionType, TransactionSteps } from '../../../_internal';\nimport type { BaseModalState, ModalCallbacks } from '../_internal/types';\n\ntype MakeOfferState = BaseModalState & {\n\torderbookKind?: OrderbookKind;\n\tcollectibleId: string;\n\tofferPrice: Price;\n\tofferPriceChanged: boolean;\n\tquantity: string;\n\texpiry: Date;\n\tinvalidQuantity: boolean;\n\tcollectionType?: CollectionType;\n\tsteps: TransactionSteps;\n};\n\nexport type OpenMakeOfferModalArgs = {\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tcollectibleId: string;\n\torderbookKind?: OrderbookKind;\n\tcallbacks?: ModalCallbacks;\n};\n\ntype Actions = {\n\topen: (args: OpenMakeOfferModalArgs) => void;\n\tclose: () => void;\n};\n\nconst offerPrice = {\n\tamountRaw: '0',\n\tcurrency: {} as Currency,\n};\n\nconst approval = {\n\texist: false,\n\tisExecuting: false,\n\texecute: () => Promise.resolve(),\n};\n\nconst transaction = {\n\texist: false,\n\tisExecuting: false,\n\texecute: () => Promise.resolve(),\n};\n\nconst steps = {\n\tapproval: { ...approval },\n\ttransaction: { ...transaction },\n};\n\nconst initialState: MakeOfferState = {\n\tisOpen: false,\n\tcollectionAddress: '' as Hex,\n\tchainId: '',\n\tcollectibleId: '',\n\torderbookKind: undefined,\n\tcallbacks: undefined,\n\tofferPrice: { ...offerPrice },\n\tofferPriceChanged: false,\n\tquantity: '1',\n\tinvalidQuantity: false,\n\texpiry: new Date(addDays(new Date(), 7).toJSON()),\n\tcollectionType: undefined,\n\tsteps: { ...steps },\n};\n\nconst actions: Actions = {\n\topen: (args) => {\n\t\tmakeOfferModal$.collectionAddress.set(args.collectionAddress);\n\t\tmakeOfferModal$.chainId.set(args.chainId);\n\t\tmakeOfferModal$.collectibleId.set(args.collectibleId);\n\t\tmakeOfferModal$.orderbookKind.set(args.orderbookKind);\n\t\tmakeOfferModal$.callbacks.set(args.callbacks);\n\t\tmakeOfferModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tmakeOfferModal$.isOpen.set(false);\n\t\tmakeOfferModal$.set({ ...initialState, ...actions });\n\t\tmakeOfferModal$.steps.set({ ...steps });\n\t\tmakeOfferModal$.offerPrice.set({ ...offerPrice });\n\t\tmakeOfferModal$.steps.set({ ...steps });\n\t},\n};\n\nexport const makeOfferModal$ = observable<MakeOfferState & Actions>({\n\t...initialState,\n\t...actions,\n});\n","import { Show, observer } from '@legendapp/state/react';\nimport { parseUnits } from 'viem';\nimport type { Price } from '../../../../types';\nimport type { MarketplaceKind } from '../../../_internal/api/marketplace.gen';\nimport { useCollection, useCurrency } from '../../../hooks';\nimport {\n\tActionModal,\n\ttype ActionModalProps,\n} from '../_internal/components/actionModal/ActionModal';\nimport { ErrorModal } from '../_internal/components/actionModal/ErrorModal';\nimport TokenPreview from '../_internal/components/tokenPreview';\nimport TransactionDetails from '../_internal/components/transactionDetails';\nimport TransactionHeader from '../_internal/components/transactionHeader';\nimport { useSell } from './hooks/useSell';\nimport { sellModal$ } from './store';\n\nexport const SellModal = () => {\n\treturn <Show if={sellModal$.isOpen}>{() => <Modal />}</Show>;\n};\n\nconst Modal = observer(() => {\n\tconst { tokenId, collectionAddress, chainId, order, callbacks } =\n\t\tsellModal$.get();\n\tconst steps$ = sellModal$.steps;\n\tconst { data: collectible } = useCollection({\n\t\tchainId,\n\t\tcollectionAddress,\n\t});\n\n\tconst {\n\t\tdata: collection,\n\t\tisLoading: collectionLoading,\n\t\tisError: collectionError,\n\t} = useCollection({\n\t\tchainId,\n\t\tcollectionAddress,\n\t});\n\tconst {\n\t\tdata: currency,\n\t\tisLoading: currencyLoading,\n\t\tisError: currencyError,\n\t} = useCurrency({\n\t\tchainId,\n\t\tcurrencyAddress: order?.priceCurrencyAddress ?? '',\n\t});\n\n\tconst { isLoading, executeApproval, sell } = useSell({\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tcollectibleId: tokenId,\n\t\tmarketplace: order?.marketplace as MarketplaceKind,\n\t\tordersData: [\n\t\t\t{\n\t\t\t\torderId: order?.orderId ?? '',\n\t\t\t\tquantity: order?.quantityRemaining\n\t\t\t\t\t? parseUnits(\n\t\t\t\t\t\t\torder.quantityRemaining,\n\t\t\t\t\t\t\tcollectible?.decimals || 0,\n\t\t\t\t\t\t).toString()\n\t\t\t\t\t: '1',\n\t\t\t\tpricePerToken: order?.priceAmount ?? '',\n\t\t\t\tcurrencyAddress: order?.priceCurrencyAddress ?? '',\n\t\t\t},\n\t\t],\n\t\tcallbacks,\n\t\tcloseMainModal: () => sellModal$.close(),\n\t\tsteps$: steps$,\n\t});\n\tconst modalLoading = collectionLoading || currencyLoading;\n\n\tif (\n\t\t(collectionError || order === undefined || currencyError) &&\n\t\t!modalLoading\n\t) {\n\t\treturn (\n\t\t\t<ErrorModal\n\t\t\t\tisOpen={sellModal$.isOpen.get()}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={sellModal$.close}\n\t\t\t\ttitle=\"You have an offer\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst ctas = [\n\t\t{\n\t\t\tlabel: 'Approve TOKEN',\n\t\t\tonClick: async () => await executeApproval(),\n\t\t\thidden: !steps$.approval.exist.get(),\n\t\t\tpending: steps$.approval.isExecuting.get(),\n\t\t\tvariant: 'glass' as const,\n\t\t\tdisabled: isLoading || order?.quantityRemaining === '0',\n\t\t},\n\t\t{\n\t\t\tlabel: 'Accept',\n\t\t\tonClick: () => sell(),\n\t\t\tpending: steps$.transaction.isExecuting.get(),\n\t\t\tdisabled:\n\t\t\t\tisLoading ||\n\t\t\t\tsteps$.approval.isExecuting.get() ||\n\t\t\t\tsteps$.approval.exist.get() ||\n\t\t\t\torder?.quantityRemaining === '0',\n\t\t},\n\t] satisfies ActionModalProps['ctas'];\n\n\treturn (\n\t\t<ActionModal\n\t\t\tisOpen={sellModal$.isOpen.get()}\n\t\t\tchainId={Number(chainId)}\n\t\t\tonClose={sellModal$.close}\n\t\t\ttitle=\"You have an offer\"\n\t\t\tctas={ctas}\n\t\t\tmodalLoading={modalLoading}\n\t\t\tspinnerContainerClassname=\"h-[104px]\"\n\t\t>\n\t\t\t<TransactionHeader\n\t\t\t\ttitle=\"Offer received\"\n\t\t\t\tcurrencyImageUrl={currency?.imageUrl}\n\t\t\t\tdate={order && new Date(order.createdAt)}\n\t\t\t/>\n\t\t\t<TokenPreview\n\t\t\t\tcollectionName={collection?.name}\n\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\tcollectibleId={tokenId}\n\t\t\t\tchainId={chainId}\n\t\t\t/>\n\t\t\t<TransactionDetails\n\t\t\t\tcollectibleId={tokenId}\n\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\tchainId={chainId}\n\t\t\t\tincludeMarketplaceFee={true}\n\t\t\t\tprice={\n\t\t\t\t\tcurrency\n\t\t\t\t\t\t? ({\n\t\t\t\t\t\t\t\tamountRaw: order?.priceAmount,\n\t\t\t\t\t\t\t\tcurrency,\n\t\t\t\t\t\t\t} as Price)\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tcurrencyImageUrl={currency?.imageUrl}\n\t\t\t/>\n\t\t</ActionModal>\n\t);\n});\n","import { Image, Skeleton, Text } from '@0xsequence/design-system';\nimport { formatDistanceToNow } from 'date-fns';\n\ntype TransactionHeaderProps = {\n\ttitle: string;\n\tcurrencyImageUrl?: string;\n\tdate?: Date;\n};\n\nexport default function TransactionHeader({\n\ttitle,\n\tcurrencyImageUrl,\n\tdate,\n}: TransactionHeaderProps) {\n\treturn (\n\t\t<div className=\"flex w-full items-center\">\n\t\t\t<Text\n\t\t\t\tclassName=\"mr-1 font-body text-sm\"\n\t\t\t\tfontWeight=\"medium\"\n\t\t\t\tcolor=\"text80\"\n\t\t\t>\n\t\t\t\t{title}\n\t\t\t</Text>\n\t\t\t<Image className=\"mr-1 h-3 w-3\" src={currencyImageUrl} />\n\t\t\t{(date && (\n\t\t\t\t<Text\n\t\t\t\t\tclassName=\"grow text-right font-body text-xs\"\n\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\tcolor=\"text50\"\n\t\t\t\t>\n\t\t\t\t\t{formatDistanceToNow(date)} ago\n\t\t\t\t</Text>\n\t\t\t)) || <Skeleton className=\"h-4 w-8\" />}\n\t\t</div>\n\t);\n}\n","'use client';\n\nimport type { Observable } from '@legendapp/state';\nimport { useEffect } from 'react';\nimport type { MarketplaceKind, TransactionSteps } from '../../../../_internal';\nimport type { ModalCallbacks } from '../../_internal/types';\nimport { useGetTokenApprovalData } from './useGetTokenApproval';\nimport { useTransactionSteps } from './useTransactionSteps';\n\nexport type SellOrder = {\n\torderId: string;\n\tquantity: string;\n\tpricePerToken: string;\n\tcurrencyAddress: string;\n};\n\ninterface UseSellArgs {\n\tcollectibleId: string;\n\tchainId: string;\n\tcollectionAddress: string;\n\tmarketplace: MarketplaceKind;\n\tordersData: Array<SellOrder>;\n\tcallbacks?: ModalCallbacks;\n\tcloseMainModal: () => void;\n\tsteps$: Observable<TransactionSteps>;\n}\n\nexport const useSell = ({\n\tcollectibleId,\n\tchainId,\n\tcollectionAddress,\n\tmarketplace,\n\tordersData,\n\tcallbacks,\n\tcloseMainModal,\n\tsteps$,\n}: UseSellArgs) => {\n\tconst { data: tokenApproval, isLoading: tokenApprovalIsLoading } =\n\t\tuseGetTokenApprovalData({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tordersData,\n\t\t\tmarketplace,\n\t\t});\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (tokenApproval?.step && !tokenApprovalIsLoading) {\n\t\t\tsteps$.approval.exist.set(true);\n\t\t}\n\t}, [tokenApproval?.step, tokenApprovalIsLoading]);\n\n\tconst { generatingSteps, executeApproval, sell } = useTransactionSteps({\n\t\tcollectibleId,\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tmarketplace,\n\t\tordersData,\n\t\tcallbacks,\n\t\tcloseMainModal,\n\t\tsteps$,\n\t});\n\n\treturn {\n\t\tisLoading: generatingSteps,\n\t\texecuteApproval,\n\t\tsell,\n\t\ttokenApprovalStepExists: tokenApproval?.step !== null,\n\t\ttokenApprovalIsLoading,\n\t};\n};\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport {\n\ttype GenerateSellTransactionArgs,\n\ttype MarketplaceKind,\n\ttype OrderData,\n\tStepType,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport { useConfig } from '../../../../hooks/useConfig';\nimport { useFees } from '../../BuyModal/hooks/useFees';\n\nexport interface UseGetTokenApprovalDataArgs {\n\tchainId: string;\n\tcollectionAddress: string;\n\tmarketplace: MarketplaceKind;\n\tordersData: Array<OrderData>;\n}\n\nexport const useGetTokenApprovalData = (\n\tparams: UseGetTokenApprovalDataArgs,\n) => {\n\tconst config = useConfig();\n\tconst { wallet } = useWallet();\n\tconst marketplaceClient = getMarketplaceClient(params.chainId, config);\n\tconst { amount, receiver } = useFees({\n\t\tchainId: Number(params.chainId),\n\t\tcollectionAddress: params.collectionAddress,\n\t});\n\n\tconst { data, isLoading, isSuccess } = useQuery({\n\t\tqueryKey: ['token-approval-data', params.ordersData],\n\t\tqueryFn: wallet\n\t\t\t? async () => {\n\t\t\t\t\tconst address = await wallet.address();\n\t\t\t\t\tconst args = {\n\t\t\t\t\t\tcollectionAddress: params.collectionAddress,\n\t\t\t\t\t\twalletType: wallet.walletKind,\n\t\t\t\t\t\tseller: address,\n\t\t\t\t\t\tmarketplace: params.marketplace,\n\t\t\t\t\t\tordersData: params.ordersData,\n\t\t\t\t\t\tadditionalFees: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tamount,\n\t\t\t\t\t\t\t\treceiver,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t} satisfies GenerateSellTransactionArgs;\n\t\t\t\t\tconst steps = await marketplaceClient\n\t\t\t\t\t\t.generateSellTransaction(args)\n\t\t\t\t\t\t.then((resp) => resp.steps);\n\n\t\t\t\t\tconst tokenApprovalStep = steps.find(\n\t\t\t\t\t\t(step) => step.id === StepType.tokenApproval,\n\t\t\t\t\t);\n\t\t\t\t\tif (!tokenApprovalStep) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstep: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstep: tokenApprovalStep,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t: skipToken,\n\t\tenabled: !!wallet && !!params.collectionAddress,\n\t});\n\n\treturn {\n\t\tdata,\n\t\tisLoading,\n\t\tisSuccess,\n\t};\n};\n","import type { Observable } from '@legendapp/state';\nimport { formatUnits } from 'viem';\nimport type { Address, Hex } from 'viem';\nimport {\n\tExecuteType,\n\ttype MarketplaceKind,\n\ttype Step,\n\tStepType,\n\ttype TransactionSteps,\n\tbalanceQueries,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useAnalytics } from '../../../../_internal/databeat';\nimport { TransactionType } from '../../../../_internal/types';\nimport type {\n\tSignatureStep,\n\tTransactionStep,\n} from '../../../../_internal/utils';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport {\n\tuseConfig,\n\tuseCurrencies,\n\tuseGenerateSellTransaction,\n} from '../../../../hooks';\nimport { useFees } from '../../BuyModal/hooks/useFees';\nimport { useTransactionStatusModal } from '../../_internal/components/transactionStatusModal';\nimport type { ModalCallbacks } from '../../_internal/types';\nimport type { SellOrder } from './useSell';\nexport type ExecutionState = 'approval' | 'sell' | null;\n\ninterface UseTransactionStepsArgs {\n\tcollectibleId: string;\n\tchainId: string;\n\tcollectionAddress: string;\n\tmarketplace: MarketplaceKind;\n\tordersData: Array<SellOrder>;\n\tcallbacks?: ModalCallbacks;\n\tcloseMainModal: () => void;\n\tsteps$: Observable<TransactionSteps>;\n}\n\nexport const useTransactionSteps = ({\n\tcollectibleId,\n\tchainId,\n\tcollectionAddress,\n\tmarketplace,\n\tordersData,\n\tcallbacks,\n\tcloseMainModal,\n\tsteps$,\n}: UseTransactionStepsArgs) => {\n\tconst { wallet } = useWallet();\n\tconst { show: showTransactionStatusModal } = useTransactionStatusModal();\n\tconst sdkConfig = useConfig();\n\tconst marketplaceClient = getMarketplaceClient(chainId, sdkConfig);\n\tconst analytics = useAnalytics();\n\n\tconst { amount, receiver } = useFees({\n\t\tchainId: Number(chainId),\n\t\tcollectionAddress: collectionAddress,\n\t});\n\n\tconst { data: currencies } = useCurrencies({\n\t\tchainId: Number(chainId),\n\t});\n\tconst { generateSellTransactionAsync, isPending: generatingSteps } =\n\t\tuseGenerateSellTransaction({\n\t\t\tchainId,\n\t\t\tonSuccess: (steps) => {\n\t\t\t\tif (!steps) return;\n\t\t\t},\n\t\t});\n\n\tconst getSellSteps = async () => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tconst address = await wallet.address();\n\n\t\t\tconst steps = await generateSellTransactionAsync({\n\t\t\t\tcollectionAddress,\n\t\t\t\twalletType: wallet.walletKind,\n\t\t\t\tmarketplace,\n\t\t\t\tordersData,\n\t\t\t\tadditionalFees: [\n\t\t\t\t\t{\n\t\t\t\t\t\tamount,\n\t\t\t\t\t\treceiver,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tseller: address,\n\t\t\t});\n\n\t\t\treturn steps;\n\t\t} catch (error) {\n\t\t\tif (callbacks?.onError) {\n\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t} else {\n\t\t\t\tconsole.debug('onError callback not provided:', error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst executeApproval = async () => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tsteps$.approval.isExecuting.set(true);\n\t\t\tconst approvalStep = await getSellSteps().then((steps) =>\n\t\t\t\tsteps?.find((step) => step.id === StepType.tokenApproval),\n\t\t\t);\n\n\t\t\tconst hash = await wallet.handleSendTransactionStep(\n\t\t\t\tNumber(chainId),\n\t\t\t\tapprovalStep as TransactionStep,\n\t\t\t);\n\n\t\t\tawait wallet.handleConfirmTransactionStep(hash, Number(chainId));\n\t\t\tsteps$.approval.isExecuting.set(false);\n\t\t\tsteps$.approval.exist.set(false);\n\t\t} catch (error) {\n\t\t\tsteps$.approval.isExecuting.set(false);\n\t\t}\n\t};\n\n\tconst sell = async () => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tsteps$.transaction.isExecuting.set(true);\n\t\t\tconst steps = await getSellSteps();\n\t\t\tconst transactionStep = steps?.find((step) => step.id === StepType.sell);\n\t\t\tconst signatureStep = steps?.find(\n\t\t\t\t(step) => step.id === StepType.signEIP712,\n\t\t\t);\n\n\t\t\tconsole.debug('transactionStep', transactionStep);\n\t\t\tconsole.debug('signatureStep', signatureStep);\n\n\t\t\tif (!transactionStep && !signatureStep) {\n\t\t\t\tthrow new Error('No transaction or signature step found');\n\t\t\t}\n\n\t\t\tlet hash: Hex | undefined;\n\t\t\tlet orderId: string | undefined;\n\n\t\t\tif (transactionStep) {\n\t\t\t\thash = await executeTransaction({ transactionStep });\n\t\t\t}\n\n\t\t\tif (signatureStep) {\n\t\t\t\torderId = await executeSignature({ signatureStep });\n\t\t\t}\n\n\t\t\tcloseMainModal();\n\n\t\t\tshowTransactionStatusModal({\n\t\t\t\ttype: TransactionType.SELL,\n\t\t\t\tcollectionAddress: collectionAddress as Address,\n\t\t\t\tchainId,\n\t\t\t\tcollectibleId,\n\t\t\t\thash,\n\t\t\t\torderId,\n\t\t\t\tcallbacks,\n\t\t\t\tqueriesToInvalidate: [balanceQueries.all, collectableKeys.userBalances],\n\t\t\t});\n\n\t\t\tif (hash) {\n\t\t\t\tawait wallet.handleConfirmTransactionStep(hash, Number(chainId));\n\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\tsteps$.transaction.exist.set(false);\n\t\t\t}\n\n\t\t\tif (orderId) {\n\t\t\t\t// no need to wait for receipt, because the order is already created\n\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\tsteps$.transaction.exist.set(false);\n\t\t\t}\n\n\t\t\tif (hash || orderId) {\n\t\t\t\tconst currency = currencies?.find(\n\t\t\t\t\t(currency) =>\n\t\t\t\t\t\tcurrency.contractAddress === ordersData[0].currencyAddress,\n\t\t\t\t);\n\t\t\t\tconst currencyDecimal = currency?.decimals || 0;\n\t\t\t\tconst currencySymbol = currency?.symbol || '';\n\t\t\t\tconst currencyValueRaw = Number(ordersData[0].pricePerToken);\n\t\t\t\tconst currencyValueDecimal = Number(\n\t\t\t\t\tformatUnits(BigInt(currencyValueRaw), currencyDecimal),\n\t\t\t\t);\n\n\t\t\t\tanalytics.trackSellItems({\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tmarketplaceKind: marketplace,\n\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\tcurrencyAddress: ordersData[0].currencyAddress,\n\t\t\t\t\t\tcurrencySymbol,\n\t\t\t\t\t\tchainId,\n\t\t\t\t\t\ttxnHash: hash || '',\n\t\t\t\t\t},\n\t\t\t\t\tnums: {\n\t\t\t\t\t\tcurrencyValueDecimal,\n\t\t\t\t\t\tcurrencyValueRaw,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\tsteps$.transaction.exist.set(false);\n\t\t\tif (callbacks?.onError && typeof callbacks.onError === 'function') {\n\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst executeTransaction = async ({\n\t\ttransactionStep,\n\t}: { transactionStep: Step }) => {\n\t\tif (!wallet) return;\n\n\t\tconst hash = await wallet.handleSendTransactionStep(\n\t\t\tNumber(chainId),\n\t\t\ttransactionStep as TransactionStep,\n\t\t);\n\n\t\treturn hash;\n\t};\n\n\tconst executeSignature = async ({\n\t\tsignatureStep,\n\t}: { signatureStep: Step }) => {\n\t\tif (!wallet) return;\n\n\t\tconst signature = await wallet.handleSignMessageStep(\n\t\t\tsignatureStep as SignatureStep,\n\t\t);\n\n\t\tconst result = await marketplaceClient.execute({\n\t\t\tsignature: signature as string,\n\t\t\texecuteType: ExecuteType.order,\n\t\t\tbody: signatureStep.post?.body,\n\t\t});\n\n\t\treturn result.orderId;\n\t};\n\n\treturn {\n\t\tgeneratingSteps,\n\t\texecuteApproval,\n\t\tsell,\n\t};\n};\n","import { observable } from '@legendapp/state';\nimport type { Hex } from 'viem';\nimport type { Order, TransactionSteps } from '../../../_internal';\nimport type { BaseModalState, ModalCallbacks } from '../_internal/types';\n\nexport type OpenSellModalArgs = {\n\tcollectionAddress: Hex;\n\tchainId: string;\n\ttokenId: string;\n\torder: Order;\n\tcallbacks?: ModalCallbacks;\n};\n\ntype SellModalState = BaseModalState & {\n\ttokenId: string;\n\torder?: Order;\n\tsteps: TransactionSteps;\n};\n\ntype Actions = {\n\topen: (args: OpenSellModalArgs) => void;\n\tclose: () => void;\n};\n\nconst initialState: SellModalState & Actions = {\n\tisOpen: false,\n\tcollectionAddress: '' as Hex,\n\tchainId: '',\n\ttokenId: '',\n\torder: undefined,\n\tcallbacks: undefined,\n\n\topen: (args) => {\n\t\tsellModal$.collectionAddress.set(args.collectionAddress);\n\t\tsellModal$.chainId.set(args.chainId);\n\t\tsellModal$.tokenId.set(args.tokenId);\n\t\tsellModal$.order.set(args.order);\n\t\tsellModal$.callbacks.set(args.callbacks);\n\t\tsellModal$.isOpen.set(true);\n\t},\n\n\tclose: () => {\n\t\tsellModal$.isOpen.set(false);\n\t\tsellModal$.callbacks.set(undefined);\n\t},\n\tsteps: {\n\t\tapproval: {\n\t\t\texist: false,\n\t\t\tisExecuting: false,\n\t\t\texecute: () => Promise.resolve(),\n\t\t},\n\t\ttransaction: {\n\t\t\texist: false,\n\t\t\tisExecuting: false,\n\t\t\texecute: () => Promise.resolve(),\n\t\t},\n\t},\n};\n\nexport const sellModal$ = observable(initialState);\n","'use client';\n\nimport {\n\tButton,\n\tExternalLinkIcon,\n\tImage,\n\tModal,\n\tText,\n} from '@0xsequence/design-system';\nimport { observer, use$ } from '@legendapp/state/react';\nimport type { TokenMetadata } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\nimport {\n\ttype SuccessfulPurchaseModalState,\n\tsuccessfulPurchaseModal$,\n} from './_store';\n\nexport const useSuccessfulPurchaseModal = (callbacks?: ModalCallbacks) => {\n\treturn {\n\t\tshow: (args: SuccessfulPurchaseModalState['state']) =>\n\t\t\tsuccessfulPurchaseModal$.open({ ...args, defaultCallbacks: callbacks }),\n\t\tclose: () => successfulPurchaseModal$.close(),\n\t};\n};\n\nconst SuccessfulPurchaseModal = observer(() => {\n\tconst handleClose = () => {\n\t\tsuccessfulPurchaseModal$.close();\n\t};\n\tconst isOpen = use$(successfulPurchaseModal$.isOpen);\n\n\tif (!isOpen) return null;\n\n\treturn (\n\t\t<Modal\n\t\t\tisDismissible={true}\n\t\t\tonClose={handleClose}\n\t\t\tsize=\"sm\"\n\t\t\tbackdropColor=\"backgroundBackdrop\"\n\t\t>\n\t\t\t<div className=\"flex w-full flex-col gap-4 p-6\">\n\t\t\t\t<Text\n\t\t\t\t\tclassName=\"text-center text-large\"\n\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\tcolor=\"text100\"\n\t\t\t\t>\n\t\t\t\t\tSuccessful purchase!\n\t\t\t\t</Text>\n\n\t\t\t\t<CollectiblesGrid\n\t\t\t\t\tcollectibles={successfulPurchaseModal$.state.get().collectibles}\n\t\t\t\t/>\n\n\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t<Text className=\"text-base\" fontWeight=\"medium\" color=\"text80\">\n\t\t\t\t\t\tYou bought\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<Text className=\"text-base\" fontWeight=\"medium\" color=\"text100\">\n\t\t\t\t\t\t{successfulPurchaseModal$.state.get().collectibles.length}\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<Text className=\"text-base\" fontWeight=\"medium\" color=\"text80\">\n\t\t\t\t\t\titems for\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<Text className=\"text-base\" fontWeight=\"medium\" color=\"text100\">\n\t\t\t\t\t\t{successfulPurchaseModal$.state.get().totalPrice}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\n\t\t\t\t<SuccessfulPurchaseActions />\n\t\t\t</div>\n\t\t</Modal>\n\t);\n});\n\nfunction SuccessfulPurchaseActions() {\n\treturn (\n\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t{successfulPurchaseModal$.state.ctaOptions.get() && (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\tshape=\"square\"\n\t\t\t\t\tleftIcon={\n\t\t\t\t\t\tsuccessfulPurchaseModal$.state.ctaOptions.ctaIcon.get() || undefined\n\t\t\t\t\t}\n\t\t\t\t\tlabel={successfulPurchaseModal$.state.ctaOptions.ctaLabel.get()}\n\t\t\t\t\tonClick={\n\t\t\t\t\t\tsuccessfulPurchaseModal$.state.ctaOptions.ctaOnClick.get() ||\n\t\t\t\t\t\tundefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<Button\n\t\t\t\tclassName=\"w-full\"\n\t\t\t\tas={'a'}\n\t\t\t\thref={successfulPurchaseModal$.state.explorerUrl.get()}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\tshape=\"square\"\n\t\t\t\tleftIcon={ExternalLinkIcon}\n\t\t\t\tlabel={`View on ${successfulPurchaseModal$.state.explorerName.get()}`}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction CollectiblesGrid({ collectibles }: { collectibles: TokenMetadata[] }) {\n\tconst total = collectibles.length;\n\tconst shownCollectibles = total > 4 ? collectibles.slice(0, 4) : collectibles;\n\n\treturn (\n\t\t<div className=\"grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-2 [&:has(div:nth-child(4))>div]:col-[unset] [&>div:nth-child(1):only-child]:h-[312px] [&>div:nth-child(1):only-child]:w-[312px] [&>div:nth-child(3)]:col-[1/-1] [&>div:nth-child(3)]:justify-self-center\">\n\t\t\t{shownCollectibles.map((collectible) => {\n\t\t\t\tconst showPlus = total > 4 && collectibles.indexOf(collectible) === 3;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"relative h-[150px] w-[150px]\"\n\t\t\t\t\t\tkey={collectible.tokenId}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tclassName={`aspect-square h-full w-full rounded-lg bg-background-secondary object-contain ${showPlus ? 'opacity-[0.4_!important]' : ''}`}\n\t\t\t\t\t\t\tsrc={collectible.image}\n\t\t\t\t\t\t\talt={collectible.name}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{showPlus && (\n\t\t\t\t\t\t\t<div className=\"absolute top-0 right-0 bottom-0 left-0 flex items-center justify-center bg-background-overlay backdrop-blur-md\">\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tclassName=\"rounded-lg bg-background-secondary px-2 py-1.5 text-sm backdrop-blur-md\"\n\t\t\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t\t\t\tcolor=\"text80\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{total} TOTAL\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nexport default SuccessfulPurchaseModal;\n","import type { IconProps } from '@0xsequence/design-system';\nimport { observable } from '@legendapp/state';\nimport type { ComponentType } from 'react';\nimport type { TokenMetadata } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\n\nexport interface SuccessfulPurchaseModalState {\n\tisOpen: boolean;\n\topen: (\n\t\targs: SuccessfulPurchaseModalState['state'] & {\n\t\t\tcallbacks?: ModalCallbacks;\n\t\t\tdefaultCallbacks?: ModalCallbacks;\n\t\t},\n\t) => void;\n\tclose: () => void;\n\tstate: {\n\t\tcollectibles: TokenMetadata[];\n\t\ttotalPrice: string;\n\t\texplorerName: string;\n\t\texplorerUrl: string;\n\t\tctaOptions?: {\n\t\t\tctaLabel: string;\n\t\t\tctaOnClick: () => void;\n\t\t\tctaIcon?: ComponentType<IconProps>;\n\t\t};\n\t};\n\tcallbacks?: ModalCallbacks;\n}\n\nconst initialState: SuccessfulPurchaseModalState = {\n\tisOpen: false,\n\topen: ({\n\t\tcollectibles,\n\t\ttotalPrice,\n\t\texplorerName,\n\t\texplorerUrl,\n\t\tctaOptions,\n\t\tcallbacks,\n\t\tdefaultCallbacks,\n\t}: SuccessfulPurchaseModalState['state'] & {\n\t\tcallbacks?: ModalCallbacks;\n\t\tdefaultCallbacks?: ModalCallbacks;\n\t}) => {\n\t\tsuccessfulPurchaseModal$.state.set({\n\t\t\t...successfulPurchaseModal$.state.get(),\n\t\t\tcollectibles,\n\t\t\ttotalPrice,\n\t\t\texplorerName,\n\t\t\texplorerUrl: explorerUrl,\n\t\t\tctaOptions,\n\t\t});\n\t\tsuccessfulPurchaseModal$.callbacks.set(callbacks || defaultCallbacks);\n\t\tsuccessfulPurchaseModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tsuccessfulPurchaseModal$.isOpen.set(false);\n\t\tsuccessfulPurchaseModal$.callbacks.set(undefined);\n\t\tsuccessfulPurchaseModal$.state.set({\n\t\t\t...initialState.state,\n\t\t});\n\t},\n\tstate: {\n\t\tcollectibles: [],\n\t\ttotalPrice: '0',\n\t\texplorerName: '',\n\t\texplorerUrl: '',\n\t\tctaOptions: undefined,\n\t},\n\tcallbacks: undefined,\n};\n\nexport const successfulPurchaseModal$ = observable(initialState);\n","'use client';\n\nimport { Modal } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport type { Hex } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { MODAL_OVERLAY_PROPS } from '../_internal/components/consts';\nimport { useSwitchChainModal } from '../_internal/components/switchChainModal';\nimport type { ModalCallbacks } from '../_internal/types';\nimport { transferModal$ } from './_store';\nimport EnterWalletAddressView from './_views/enterWalletAddress';\nimport FollowWalletInstructionsView from './_views/followWalletInstructions';\n\nexport type ShowTransferModalArgs = {\n\tcollectionAddress: Hex;\n\tcollectibleId: string;\n\tchainId: string;\n\tcallbacks?: ModalCallbacks;\n};\n\nexport const useTransferModal = () => {\n\tconst { chainId: accountChainId } = useAccount();\n\tconst { show: showSwitchNetworkModal } = useSwitchChainModal();\n\n\tconst openModal = (args: ShowTransferModalArgs) => {\n\t\ttransferModal$.open(args);\n\t};\n\n\tconst handleShowModal = (args: ShowTransferModalArgs) => {\n\t\tconst isSameChain = accountChainId === Number(args.chainId);\n\n\t\tif (!isSameChain) {\n\t\t\tshowSwitchNetworkModal({\n\t\t\t\tchainIdToSwitchTo: Number(args.chainId),\n\t\t\t\tonSuccess: () => openModal(args),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\topenModal(args);\n\t};\n\n\treturn {\n\t\tshow: handleShowModal,\n\t\tclose: () => transferModal$.close(),\n\t\tonError: (callbacks: ModalCallbacks) => {\n\t\t\ttransferModal$.state.set({\n\t\t\t\t...transferModal$.state.get(),\n\t\t\t\tcallbacks,\n\t\t\t});\n\t\t},\n\t\tonSuccess: (callbacks: ModalCallbacks) => {\n\t\t\ttransferModal$.state.set({\n\t\t\t\t...transferModal$.state.get(),\n\t\t\t\tcallbacks,\n\t\t\t});\n\t\t},\n\t};\n};\n\nconst TransferModal = observer(() => {\n\tconst isOpen = transferModal$.isOpen.get();\n\n\tif (!isOpen) return null;\n\n\treturn (\n\t\t<Modal\n\t\t\tisDismissible={true}\n\t\t\tonClose={transferModal$.close}\n\t\t\tsize=\"sm\"\n\t\t\toverlayProps={MODAL_OVERLAY_PROPS}\n\t\t\tcontentProps={{\n\t\t\t\tstyle: {\n\t\t\t\t\theight: 'auto',\n\t\t\t\t},\n\t\t\t}}\n\t\t>\n\t\t\t<div className=\"flex w-full flex-col p-7\">\n\t\t\t\t<TransactionModalView />\n\t\t\t</div>\n\t\t</Modal>\n\t);\n});\n\nconst TransactionModalView = observer(() => {\n\tconst { view } = transferModal$.get();\n\n\tswitch (view) {\n\t\tcase 'enterReceiverAddress':\n\t\t\treturn <EnterWalletAddressView />;\n\n\t\tcase 'followWalletInstructions':\n\t\t\treturn <FollowWalletInstructionsView />;\n\n\t\tdefault:\n\t\t\treturn null;\n\t}\n});\n\nexport { TransferModal };\n","import { observable } from '@legendapp/state';\nimport type { Hex } from 'viem';\nimport type { ShowTransferModalArgs } from '.';\nimport type { CollectionType } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\n\nexport interface TransferModalState {\n\tisOpen: boolean;\n\topen: (args: ShowTransferModalArgs) => void;\n\tclose: () => void;\n\tstate: {\n\t\tchainId: string;\n\t\tcollectionAddress: Hex;\n\t\tcollectionType?: CollectionType | undefined;\n\t\tcollectibleId: string;\n\t\tquantity: string;\n\t\treceiverAddress: string;\n\t\tcallbacks?: ModalCallbacks;\n\t};\n\tview: 'enterReceiverAddress' | 'followWalletInstructions' | undefined;\n\thash: Hex | undefined;\n}\n\nexport const initialState: TransferModalState = {\n\tisOpen: false,\n\topen: ({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t\tcallbacks,\n\t}: ShowTransferModalArgs) => {\n\t\ttransferModal$.state.set({\n\t\t\t...transferModal$.state.get(),\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tcollectibleId,\n\t\t\tcallbacks,\n\t\t});\n\t\ttransferModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\ttransferModal$.isOpen.set(false);\n\t\ttransferModal$.state.set({\n\t\t\t...initialState.state,\n\t\t});\n\t\ttransferModal$.view.set('enterReceiverAddress');\n\t\ttransferModal$.hash.set(undefined);\n\t},\n\tstate: {\n\t\treceiverAddress: '',\n\t\tcollectionAddress: '0x',\n\t\tchainId: '',\n\t\tcollectibleId: '',\n\t\tquantity: '1',\n\t},\n\tview: 'enterReceiverAddress',\n\thash: undefined,\n};\n\nexport const transferModal$ = observable(initialState);\n","'use client';\n\nimport { Button, Text, TextInput } from '@0xsequence/design-system';\nimport { observable } from '@legendapp/state';\nimport { isAddress } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { useCollection, useListBalances } from '../../../../..';\nimport { type CollectionType, ContractType } from '../../../../../_internal';\nimport AlertMessage from '../../../_internal/components/alertMessage';\nimport QuantityInput from '../../../_internal/components/quantityInput';\nimport { transferModal$ } from '../../_store';\nimport getMessage from '../../messages';\nimport useHandleTransfer from './useHandleTransfer';\n\nconst EnterWalletAddressView = () => {\n\tconst { address } = useAccount();\n\tconst { collectionAddress, collectibleId, chainId, collectionType } =\n\t\ttransferModal$.state.get();\n\tconst $quantity = transferModal$.state.quantity;\n\tconst $invalidQuantity = observable(false);\n\tconst isWalletAddressValid = isAddress(\n\t\ttransferModal$.state.receiverAddress.get(),\n\t);\n\tconst { data: tokenBalance } = useListBalances({\n\t\tchainId: Number(chainId),\n\t\tcontractAddress: collectionAddress,\n\t\ttokenId: collectibleId,\n\t\taccountAddress: address,\n\t\tquery: { enabled: !!address },\n\t});\n\tconst balanceAmount = tokenBalance?.pages[0].balances[0].balance;\n\tconst insufficientBalance: boolean = balanceAmount\n\t\t? $quantity.get() > balanceAmount\n\t\t: true;\n\tconst { data: collection } = useCollection({\n\t\tcollectionAddress,\n\t\tchainId,\n\t});\n\ttransferModal$.state.collectionType.set(\n\t\tcollection?.type as CollectionType | undefined,\n\t);\n\tconst { transfer } = useHandleTransfer();\n\n\tfunction handleChangeWalletAddress(\n\t\tevent: React.ChangeEvent<HTMLInputElement>,\n\t) {\n\t\ttransferModal$.state.receiverAddress.set(event.target.value);\n\t}\n\n\tfunction handleChangeView() {\n\t\ttransfer();\n\t\ttransferModal$.view.set('followWalletInstructions');\n\t}\n\n\treturn (\n\t\t<div className=\"grid grow gap-6\">\n\t\t\t<Text className=\"font-body text-xl\" color=\"white\" fontWeight=\"bold\">\n\t\t\t\tTransfer your item\n\t\t\t</Text>\n\t\t\t<div className=\"flex flex-col gap-3\">\n\t\t\t\t<AlertMessage\n\t\t\t\t\tmessage={getMessage('enterReceiverAddress')}\n\t\t\t\t\ttype=\"warning\"\n\t\t\t\t/>\n\n\t\t\t\t<div className=\"[&>label>div>span]:text-sm [&>label>div>span]:text-text-80 [&>label]:gap-1\">\n\t\t\t\t\t<TextInput\n\t\t\t\t\t\tlabel=\"Wallet address\"\n\t\t\t\t\t\tlabelLocation=\"top\"\n\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\tvalue={transferModal$.state.receiverAddress.get()}\n\t\t\t\t\t\tonChange={handleChangeWalletAddress}\n\t\t\t\t\t\tname=\"walletAddress\"\n\t\t\t\t\t\tplaceholder=\"Enter wallet address\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t{collectionType === ContractType.ERC1155 && balanceAmount && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<QuantityInput\n\t\t\t\t\t\t\t$quantity={$quantity}\n\t\t\t\t\t\t\t$invalidQuantity={$invalidQuantity}\n\t\t\t\t\t\t\tdecimals={collection?.decimals || 0}\n\t\t\t\t\t\t\tmaxQuantity={balanceAmount}\n\t\t\t\t\t\t\tclassName=\"[&>label>div>div]:h-13 [&>label>div>div]:rounded-xl [&>label>div>span]:text-sm [&>label>div>span]:text-text-80 [&>label]:gap-1\"\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tclassName=\"font-body text-xs\"\n\t\t\t\t\t\t\tcolor={insufficientBalance ? 'negative' : 'text50'}\n\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{`You have ${balanceAmount} of this item`}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<Button\n\t\t\t\tclassName=\"flex justify-self-end px-10\"\n\t\t\t\tonClick={handleChangeView}\n\t\t\t\tdisabled={\n\t\t\t\t\t!isWalletAddressValid || insufficientBalance || !$quantity.get()\n\t\t\t\t}\n\t\t\t\ttitle=\"Transfer\"\n\t\t\t\tlabel=\"Transfer\"\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tshape=\"square\"\n\t\t\t\tsize=\"sm\"\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default EnterWalletAddressView;\n","import type { TransferModalState } from './_store';\n\ntype MessageKey = NonNullable<TransferModalState['view']>;\n\nconst baseMessages: Record<MessageKey, string> = {\n\tenterReceiverAddress:\n\t\t\"Items sent to the wrong wallet address can't be recovered!\",\n\tfollowWalletInstructions:\n\t\t\"Follow your wallet's instructions to submit a transaction to transfer your assets.\",\n};\n\nexport default function getMessage(key: MessageKey): string {\n\treturn baseMessages[key];\n}\n","import type { Hex } from 'viem';\nimport { ContractType } from '../../../../../../types';\nimport { InvalidContractTypeError } from '../../../../../../utils/_internal/error/transaction';\nimport { balanceQueries, collectableKeys } from '../../../../../_internal';\nimport { TransactionType } from '../../../../../_internal/types';\nimport { useTransferTokens } from '../../../../../hooks';\nimport { useTransactionStatusModal } from '../../../_internal/components/transactionStatusModal';\nimport { transferModal$ } from '../../_store';\n\nconst useHandleTransfer = () => {\n\tconst {\n\t\treceiverAddress,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t\tquantity,\n\t\tchainId,\n\t\tcollectionType,\n\t\tcallbacks,\n\t} = transferModal$.state.get();\n\tconst { transferTokensAsync } = useTransferTokens();\n\tconst { show: showTransactionStatusModal } = useTransactionStatusModal();\n\n\tconst getHash = async () => {\n\t\tif (collectionType === ContractType.ERC721) {\n\t\t\treturn await transferTokensAsync({\n\t\t\t\treceiverAddress: receiverAddress as Hex,\n\t\t\t\tcollectionAddress,\n\t\t\t\ttokenId: collectibleId,\n\t\t\t\tchainId,\n\t\t\t\tcontractType: ContractType.ERC721,\n\t\t\t});\n\t\t}\n\n\t\t// For ERC1155\n\t\treturn await transferTokensAsync({\n\t\t\treceiverAddress: receiverAddress as Hex,\n\t\t\tcollectionAddress,\n\t\t\ttokenId: collectibleId,\n\t\t\tchainId,\n\t\t\tcontractType: ContractType.ERC1155,\n\t\t\tquantity: String(quantity),\n\t\t});\n\t};\n\n\tasync function transfer() {\n\t\tif (\n\t\t\tcollectionType !== ContractType.ERC721 &&\n\t\t\tcollectionType !== ContractType.ERC1155\n\t\t) {\n\t\t\tthrow new InvalidContractTypeError(collectionType);\n\t\t}\n\n\t\ttry {\n\t\t\tconst hash = await getHash();\n\n\t\t\ttransferModal$.close();\n\n\t\t\tshowTransactionStatusModal({\n\t\t\t\thash: hash,\n\t\t\t\tcollectionAddress,\n\t\t\t\tchainId,\n\t\t\t\tcollectibleId,\n\t\t\t\ttype: TransactionType.TRANSFER,\n\t\t\t\tqueriesToInvalidate: [\n\t\t\t\t\tbalanceQueries.all,\n\t\t\t\t\tbalanceQueries.collectionBalanceDetails,\n\t\t\t\t\tcollectableKeys.userBalances,\n\t\t\t\t],\n\t\t\t});\n\t\t} catch (error) {\n\t\t\ttransferModal$.view.set('enterReceiverAddress');\n\n\t\t\tcallbacks?.onError?.(error as Error);\n\t\t}\n\t}\n\n\treturn { transfer };\n};\n\nexport default useHandleTransfer;\n","import { Button, Text } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport AlertMessage from '../../../_internal/components/alertMessage';\nimport getMessage from '../../messages';\n\nconst FollowWalletInstructionsView = observer(() => {\n\treturn (\n\t\t<div className=\"grid grow gap-6\">\n\t\t\t<Text className=\"font-body text-xl\" color=\"white\" fontWeight=\"bold\">\n\t\t\t\tTransfer your item\n\t\t\t</Text>\n\t\t\t<div className=\"flex flex-col gap-3\">\n\t\t\t\t<AlertMessage\n\t\t\t\t\tmessage={getMessage('followWalletInstructions')}\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<Button\n\t\t\t\tclassName=\"flex justify-self-end px-10\"\n\t\t\t\tdisabled={true}\n\t\t\t\ttitle=\"Transfer\"\n\t\t\t\tlabel=\"Transfer\"\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tshape=\"square\"\n\t\t\t\tsize=\"sm\"\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nexport default FollowWalletInstructionsView;\n","import type { ModalCallbacks } from '../_internal/types';\nimport { type OpenCreateListingModalArgs, createListingModal$ } from './store';\n\ntype ShowCreateListingModalArgs = Exclude<\n\tOpenCreateListingModalArgs,\n\t'callbacks'\n>;\n\nexport const useCreateListingModal = (callbacks?: ModalCallbacks) => {\n\treturn {\n\t\tshow: (args: ShowCreateListingModalArgs) =>\n\t\t\tcreateListingModal$.open({ ...args, callbacks }),\n\t\tclose: () => createListingModal$.close(),\n\t};\n};\n","import type { ModalCallbacks } from '../_internal/types';\nimport { type OpenMakeOfferModalArgs, makeOfferModal$ } from './store';\n\nexport type ShowMakeOfferModalArgs = Exclude<\n\tOpenMakeOfferModalArgs,\n\t'callbacks'\n>;\n\nexport const useMakeOfferModal = (callbacks?: ModalCallbacks) => ({\n\tshow: (args: ShowMakeOfferModalArgs) =>\n\t\tmakeOfferModal$.open({ ...args, callbacks }),\n\tclose: () => makeOfferModal$.close(),\n});\n","import type { ModalCallbacks } from '../_internal/types';\nimport { type OpenSellModalArgs, sellModal$ } from './store';\n\ntype ShowSellModalArgs = Exclude<OpenSellModalArgs, 'callbacks'>;\n\nexport const useSellModal = (callbacks?: ModalCallbacks) => {\n\treturn {\n\t\tshow: (args: ShowSellModalArgs) => sellModal$.open({ ...args, callbacks }),\n\t\tclose: () => sellModal$.close(),\n\t};\n};\n","import type { Hex } from 'viem';\nimport type { Order } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\nimport { buyModal$ } from './store';\n\nexport type ShowBuyModalArgs = {\n\tchainId: string;\n\tcollectionAddress: Hex;\n\ttokenId: string;\n\torder: Order;\n\tcustomProviderCallback?: (args: { data: string; value: string }) => void;\n};\n\nexport const useBuyModal = (callbacks?: ModalCallbacks) => {\n\treturn {\n\t\tshow: (args: ShowBuyModalArgs) =>\n\t\t\tbuyModal$.open({ ...args, defaultCallbacks: callbacks }),\n\t\tclose: () => buyModal$.close(),\n\t};\n};\n","'use client';\n\nimport { Skeleton } from '@0xsequence/design-system';\nimport type { Hex } from 'viem';\nimport type {\n\tChainId,\n\tCollectibleOrder,\n\tContractType,\n\tOrder,\n\tOrderbookKind,\n} from '../../../_internal';\nimport { useCurrency } from '../../../hooks';\nimport { ActionButton } from '../_internals/action-button/ActionButton';\nimport { CollectibleCardAction } from '../_internals/action-button/types';\nimport { CollectibleAsset } from './CollectibleAsset';\nimport { Footer } from './Footer';\n\nfunction CollectibleSkeleton() {\n\treturn (\n\t\t<div className=\"w-card-width overflow-hidden rounded-xl border border-border-base focus-visible:border-border-focus focus-visible:shadow-none focus-visible:outline-focus active:border-border-focus active:shadow-none\">\n\t\t\t<div className=\"relative aspect-square overflow-hidden bg-background-secondary\">\n\t\t\t\t<Skeleton\n\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\tclassName=\"absolute inset-0 h-full w-full animate-shimmer\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tborderRadius: 0,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"mt-2 flex flex-col gap-2 px-4 pb-4\">\n\t\t\t\t<Skeleton size=\"lg\" className=\"animate-shimmer\" />\n\t\t\t\t<Skeleton size=\"sm\" className=\"animate-shimmer\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\ntype CollectibleCardProps = {\n\tcollectibleId: string;\n\tchainId: ChainId;\n\tcollectionAddress: Hex;\n\torderbookKind?: OrderbookKind;\n\tcollectionType?: ContractType;\n\tlowestListing: CollectibleOrder | undefined;\n\tonCollectibleClick?: (tokenId: string) => void;\n\tonOfferClick?: ({\n\t\torder,\n\t\te,\n\t}: {\n\t\torder?: Order;\n\t\te: React.MouseEvent<HTMLButtonElement>;\n\t}) => void;\n\tassetSrcPrefixUrl?: string;\n\tbalance?: string;\n\tcardLoading?: boolean;\n\t/**\n\t * Callback function that is called when the user attempts to perform an action\n\t * (such as buying or making an offer) that they are not permitted to do.\n\t *\n\t * This function is invoked in the following scenario:\n\t *\n\t * - When a disconnected user clicks on \"Buy Now\" and is prompted to connect\n\t * their wallet. After connecting, if it is determined that the user is\n\t * already the owner of the collectible, this callback is triggered to inform\n\t * them that they cannot perform the action (e.g., buying their own collectible).\n\t *\n\t * @param action - The action that the user cannot perform, which can be either\n\t * CollectibleCardAction.BUY or CollectibleCardAction.OFFER.\n\t */\n\tonCannotPerformAction?: (\n\t\taction: CollectibleCardAction.BUY | CollectibleCardAction.OFFER,\n\t) => void;\n};\n\nexport function CollectibleCard({\n\tcollectibleId,\n\tchainId,\n\tcollectionAddress,\n\torderbookKind,\n\tcollectionType,\n\tlowestListing,\n\tonCollectibleClick,\n\tonOfferClick,\n\tbalance,\n\tcardLoading,\n\tonCannotPerformAction,\n\tassetSrcPrefixUrl,\n}: CollectibleCardProps) {\n\tconst collectibleMetadata = lowestListing?.metadata;\n\tconst highestOffer = lowestListing?.offer;\n\n\tconst { data: lowestListingCurrency } = useCurrency({\n\t\tchainId,\n\t\tcurrencyAddress: lowestListing?.order?.priceCurrencyAddress,\n\t\tquery: {\n\t\t\tenabled: !!lowestListing?.order?.priceCurrencyAddress,\n\t\t},\n\t});\n\n\tif (cardLoading) {\n\t\treturn <CollectibleSkeleton />;\n\t}\n\n\tconst action = (\n\t\tbalance\n\t\t\t? (highestOffer && CollectibleCardAction.SELL) ||\n\t\t\t\t(!lowestListing?.order && CollectibleCardAction.LIST) ||\n\t\t\t\tCollectibleCardAction.TRANSFER\n\t\t\t: (lowestListing?.order && CollectibleCardAction.BUY) ||\n\t\t\t\tCollectibleCardAction.OFFER\n\t) as CollectibleCardAction;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"w-card-width overflow-hidden rounded-xl border border-border-base bg-background-primary focus-visible:border-border-focus focus-visible:shadow-focus-ring focus-visible:outline-focus active:border-border-focus active:shadow-active-ring\"\n\t\t\tonClick={() => onCollectibleClick?.(collectibleId)}\n\t\t\tonKeyDown={(e) => {\n\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\tonCollectibleClick?.(collectibleId);\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<div className=\"group relative z-10 flex h-full w-full cursor-pointer flex-col items-start overflow-hidden rounded-xl border-none bg-none p-0 focus:outline-none [&:focus]:rounded-[10px] [&:focus]:outline-[3px] [&:focus]:outline-black [&:focus]:outline-offset-[-3px]\">\n\t\t\t\t<article className=\"w-full rounded-xl\">\n\t\t\t\t\t<CollectibleAsset\n\t\t\t\t\t\tname={collectibleMetadata?.name || ''}\n\t\t\t\t\t\tcollectibleMetadata={collectibleMetadata}\n\t\t\t\t\t\tassetSrcPrefixUrl={assetSrcPrefixUrl}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Footer\n\t\t\t\t\t\tname={collectibleMetadata?.name || ''}\n\t\t\t\t\t\ttype={collectionType}\n\t\t\t\t\t\tonOfferClick={(e) => onOfferClick?.({ order: highestOffer, e })}\n\t\t\t\t\t\thighestOffer={highestOffer}\n\t\t\t\t\t\tlowestListingPriceAmount={lowestListing?.order?.priceAmount}\n\t\t\t\t\t\tlowestListingCurrency={lowestListingCurrency}\n\t\t\t\t\t\tbalance={balance}\n\t\t\t\t\t\tdecimals={collectibleMetadata?.decimals}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{(highestOffer || lowestListing) && (\n\t\t\t\t\t\t<div className=\"-bottom-action-offset absolute flex w-full items-center justify-center bg-overlay-light p-2 backdrop-blur transition-transform duration-200 ease-in-out group-hover:translate-y-[-44px]\">\n\t\t\t\t\t\t\t<ActionButton\n\t\t\t\t\t\t\t\tchainId={String(chainId)}\n\t\t\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\t\t\ttokenId={collectibleId}\n\t\t\t\t\t\t\t\torderbookKind={orderbookKind}\n\t\t\t\t\t\t\t\taction={action}\n\t\t\t\t\t\t\t\thighestOffer={highestOffer}\n\t\t\t\t\t\t\t\tlowestListing={lowestListing?.order}\n\t\t\t\t\t\t\t\towned={!!balance}\n\t\t\t\t\t\t\t\tonCannotPerformAction={onCannotPerformAction}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</article>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","'use client';\n\nimport { observer } from '@legendapp/state/react';\nimport type { Hex } from 'viem';\nimport type { Order, OrderbookKind } from '../../../../_internal';\nimport { NonOwnerActions } from './components/NonOwnerActions';\nimport { OwnerActions } from './components/OwnerActions';\nimport { useActionButtonLogic } from './hooks/useActionButtonLogic';\nimport type { CollectibleCardAction } from './types';\n\ntype ActionButtonProps = {\n\tchainId: string;\n\tcollectionAddress: Hex;\n\ttokenId: string;\n\torderbookKind?: OrderbookKind;\n\tisTransfer?: boolean;\n\taction: CollectibleCardAction;\n\towned?: boolean;\n\thighestOffer?: Order;\n\tlowestListing?: Order;\n\tonCannotPerformAction?: (\n\t\taction: CollectibleCardAction.BUY | CollectibleCardAction.OFFER,\n\t) => void;\n};\n\nexport const ActionButton = observer(\n\t({\n\t\tcollectionAddress,\n\t\tchainId,\n\t\ttokenId,\n\t\torderbookKind,\n\t\taction,\n\t\towned,\n\t\thighestOffer,\n\t\tlowestListing,\n\t\tonCannotPerformAction,\n\t}: ActionButtonProps) => {\n\t\tconst { shouldShowAction, isOwnerAction } = useActionButtonLogic({\n\t\t\ttokenId,\n\t\t\towned,\n\t\t\taction,\n\t\t\tonCannotPerformAction,\n\t\t});\n\n\t\tif (!shouldShowAction) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (isOwnerAction) {\n\t\t\treturn (\n\t\t\t\t<OwnerActions\n\t\t\t\t\taction={action}\n\t\t\t\t\ttokenId={tokenId}\n\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t\torderbookKind={orderbookKind}\n\t\t\t\t\thighestOffer={highestOffer}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<NonOwnerActions\n\t\t\t\taction={action}\n\t\t\t\ttokenId={tokenId}\n\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\tchainId={chainId}\n\t\t\t\torderbookKind={orderbookKind}\n\t\t\t\tlowestListing={lowestListing}\n\t\t\t/>\n\t\t);\n\t},\n);\n","'use client';\n\nimport { useOpenConnectModal } from '@0xsequence/connect';\nimport { Button, type IconProps } from '@0xsequence/design-system';\nimport type { ComponentType } from 'react';\nimport { useAccount } from 'wagmi';\nimport { setPendingAction } from '../store';\nimport type { CollectibleCardAction } from '../types';\n\ntype ActionButtonBodyProps = {\n\tlabel: 'Buy now' | 'Sell' | 'Make an offer' | 'Create listing' | 'Transfer';\n\ttokenId: string;\n\tonClick: () => void;\n\ticon?: ComponentType<IconProps>;\n\taction?: CollectibleCardAction.BUY | CollectibleCardAction.OFFER;\n};\n\nexport function ActionButtonBody({\n\ttokenId,\n\tlabel,\n\tonClick,\n\ticon,\n\taction,\n}: ActionButtonBodyProps) {\n\tconst { address } = useAccount();\n\tconst { setOpenConnectModal } = useOpenConnectModal();\n\n\tconst handleClick = (e: React.MouseEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif (!address && action) {\n\t\t\tsetPendingAction(action, onClick, tokenId);\n\t\t\tsetOpenConnectModal(true);\n\t\t} else {\n\t\t\tonClick();\n\t\t}\n\t};\n\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"flex w-full items-center justify-center\"\n\t\t\tvariant=\"primary\"\n\t\t\tlabel={label}\n\t\t\tonClick={handleClick}\n\t\t\tleftIcon={icon}\n\t\t\tsize=\"xs\"\n\t\t\tshape=\"square\"\n\t\t/>\n\t);\n}\n","import { observable } from '@legendapp/state';\nimport type { CollectibleCardAction } from './types';\n\ntype PendingAction = {\n\ttype: CollectibleCardAction.BUY | CollectibleCardAction.OFFER;\n\tcollectibleId: string;\n\tcallback: () => void;\n\ttimestamp: number;\n};\n\nexport const actionButtonStore = observable({\n\tpendingAction: null as PendingAction | null,\n});\n\nexport const setPendingAction = (\n\ttype: CollectibleCardAction.BUY | CollectibleCardAction.OFFER,\n\tcallback: () => void,\n\tcollectibleId: string,\n) => {\n\tactionButtonStore.pendingAction.set({\n\t\ttype,\n\t\tcallback,\n\t\ttimestamp: Date.now(),\n\t\tcollectibleId,\n\t});\n};\n\nexport const clearPendingAction = () => {\n\tactionButtonStore.pendingAction.set(null);\n};\n\nexport const executePendingActionIfExists = () => {\n\tconst timestamp = actionButtonStore.pendingAction.get()?.timestamp;\n\tconst callback = actionButtonStore.pendingAction.get()?.callback as\n\t\t| (() => void)\n\t\t| undefined;\n\n\tif (timestamp && callback) {\n\t\t// Only execute if the pending action is less than 5 minutes old\n\t\tif (\n\t\t\tDate.now() - timestamp < 5 * 60 * 1000 &&\n\t\t\ttypeof callback === 'function'\n\t\t) {\n\t\t\tcallback();\n\t\t}\n\t}\n};\n","'use client';\n\nimport type { Hex } from 'viem';\nimport { InvalidStepError } from '../../../../../../utils/_internal/error/transaction';\nimport type { Order, OrderbookKind } from '../../../../../_internal';\nimport SvgCartIcon from '../../../../icons/CartIcon';\nimport { useBuyModal } from '../../../../modals/BuyModal';\nimport { useMakeOfferModal } from '../../../../modals/MakeOfferModal';\nimport { CollectibleCardAction } from '../types';\nimport { ActionButtonBody } from './ActionButtonBody';\n\ntype NonOwnerActionsProps = {\n\taction: CollectibleCardAction;\n\ttokenId: string;\n\tcollectionAddress: Hex;\n\tchainId: string;\n\torderbookKind?: OrderbookKind;\n\tlowestListing?: Order;\n};\n\nexport function NonOwnerActions({\n\taction,\n\ttokenId,\n\tcollectionAddress,\n\tchainId,\n\torderbookKind,\n\tlowestListing,\n}: NonOwnerActionsProps) {\n\tconst { show: showBuyModal } = useBuyModal();\n\tconst { show: showMakeOfferModal } = useMakeOfferModal();\n\n\tif (action === CollectibleCardAction.BUY) {\n\t\tif (!lowestListing) {\n\t\t\tthrow new InvalidStepError('BUY', 'lowestListing is required');\n\t\t}\n\n\t\treturn (\n\t\t\t<ActionButtonBody\n\t\t\t\taction={CollectibleCardAction.BUY}\n\t\t\t\ttokenId={tokenId}\n\t\t\t\tlabel=\"Buy now\"\n\t\t\t\tonClick={() =>\n\t\t\t\t\tshowBuyModal({\n\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\tchainId,\n\t\t\t\t\t\ttokenId,\n\t\t\t\t\t\torder: lowestListing,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\ticon={SvgCartIcon}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (action === CollectibleCardAction.OFFER) {\n\t\treturn (\n\t\t\t<ActionButtonBody\n\t\t\t\taction={CollectibleCardAction.OFFER}\n\t\t\t\ttokenId={tokenId}\n\t\t\t\tlabel=\"Make an offer\"\n\t\t\t\tonClick={() =>\n\t\t\t\t\tshowMakeOfferModal({\n\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\tchainId,\n\t\t\t\t\t\tcollectibleId: tokenId,\n\t\t\t\t\t\torderbookKind,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n","'use client';\n\nimport type { Hex } from 'viem';\nimport type { Order, OrderbookKind } from '../../../../../_internal';\nimport { useCreateListingModal } from '../../../../modals/CreateListingModal';\nimport { useSellModal } from '../../../../modals/SellModal';\nimport { useTransferModal } from '../../../../modals/TransferModal';\nimport { CollectibleCardAction } from '../types';\nimport { ActionButtonBody } from './ActionButtonBody';\n\ntype OwnerActionsProps = {\n\taction: CollectibleCardAction;\n\ttokenId: string;\n\tcollectionAddress: Hex;\n\tchainId: string;\n\torderbookKind?: OrderbookKind;\n\thighestOffer?: Order;\n};\n\nexport function OwnerActions({\n\taction,\n\ttokenId,\n\tcollectionAddress,\n\tchainId,\n\torderbookKind,\n\thighestOffer,\n}: OwnerActionsProps) {\n\tconst { show: showCreateListingModal } = useCreateListingModal();\n\tconst { show: showSellModal } = useSellModal();\n\tconst { show: showTransferModal } = useTransferModal();\n\n\tif (action === CollectibleCardAction.LIST) {\n\t\treturn (\n\t\t\t<ActionButtonBody\n\t\t\t\tlabel=\"Create listing\"\n\t\t\t\ttokenId={tokenId}\n\t\t\t\tonClick={() =>\n\t\t\t\t\tshowCreateListingModal({\n\t\t\t\t\t\tcollectionAddress: collectionAddress as Hex,\n\t\t\t\t\t\tchainId,\n\t\t\t\t\t\tcollectibleId: tokenId,\n\t\t\t\t\t\torderbookKind,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (action === CollectibleCardAction.SELL && highestOffer) {\n\t\treturn (\n\t\t\t<ActionButtonBody\n\t\t\t\ttokenId={tokenId}\n\t\t\t\tlabel=\"Sell\"\n\t\t\t\tonClick={() =>\n\t\t\t\t\tshowSellModal({\n\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\tchainId,\n\t\t\t\t\t\ttokenId,\n\t\t\t\t\t\torder: highestOffer,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (action === CollectibleCardAction.TRANSFER) {\n\t\treturn (\n\t\t\t<ActionButtonBody\n\t\t\t\tlabel=\"Transfer\"\n\t\t\t\ttokenId={tokenId}\n\t\t\t\tonClick={() =>\n\t\t\t\t\tshowTransferModal({\n\t\t\t\t\t\tcollectionAddress: collectionAddress as Hex,\n\t\t\t\t\t\tchainId,\n\t\t\t\t\t\tcollectibleId: tokenId,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport { useAccount } from 'wagmi';\nimport {\n\tactionButtonStore,\n\tclearPendingAction,\n\texecutePendingActionIfExists,\n} from '../store';\nimport { CollectibleCardAction } from '../types';\n\ntype UseActionButtonLogicProps = {\n\ttokenId: string;\n\towned?: boolean;\n\taction: CollectibleCardAction;\n\tonCannotPerformAction?: (\n\t\taction: CollectibleCardAction.BUY | CollectibleCardAction.OFFER,\n\t) => void;\n};\n\nexport const useActionButtonLogic = ({\n\ttokenId,\n\towned,\n\taction,\n\tonCannotPerformAction,\n}: UseActionButtonLogicProps) => {\n\tconst { address } = useAccount();\n\tconst actionsThatOwnersCannotPerform = [\n\t\tCollectibleCardAction.BUY,\n\t\tCollectibleCardAction.OFFER,\n\t];\n\tconst pendingActionType = actionButtonStore.pendingAction.type.get();\n\n\t// Handle owner restrictions\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (\n\t\t\towned &&\n\t\t\tactionButtonStore.pendingAction.get() &&\n\t\t\taddress &&\n\t\t\t!actionsThatOwnersCannotPerform.includes(action) &&\n\t\t\tactionButtonStore.pendingAction.get()?.collectibleId === tokenId\n\t\t) {\n\t\t\tonCannotPerformAction?.(\n\t\t\t\tpendingActionType as\n\t\t\t\t\t| CollectibleCardAction.BUY\n\t\t\t\t\t| CollectibleCardAction.OFFER,\n\t\t\t);\n\t\t\tclearPendingAction();\n\t\t}\n\t}, [\n\t\towned,\n\t\tactionButtonStore.pendingAction.get(),\n\t\taddress,\n\t\taction,\n\t\ttokenId,\n\t\tonCannotPerformAction,\n\t\tpendingActionType,\n\t]);\n\n\t// Execute pending action when user becomes connected\n\tuseEffect(() => {\n\t\tif (\n\t\t\taddress &&\n\t\t\t!owned &&\n\t\t\tactionButtonStore.pendingAction.get() &&\n\t\t\tactionButtonStore.pendingAction.get()?.collectibleId === tokenId\n\t\t) {\n\t\t\t// TODO: Remove this timeout once pointer-events: none issue is fixed on Radix UI side\n\t\t\tsetTimeout(() => {\n\t\t\t\texecutePendingActionIfExists();\n\t\t\t\tclearPendingAction();\n\t\t\t}, 1000);\n\t\t}\n\t}, [address, owned, tokenId]);\n\n\tconst shouldShowAction = !address\n\t\t? [CollectibleCardAction.BUY, CollectibleCardAction.OFFER].includes(action)\n\t\t: true;\n\n\tconst isOwnerAction =\n\t\taddress &&\n\t\towned &&\n\t\t[\n\t\t\tCollectibleCardAction.LIST,\n\t\t\tCollectibleCardAction.TRANSFER,\n\t\t\tCollectibleCardAction.SELL,\n\t\t].includes(action);\n\n\treturn {\n\t\taddress,\n\t\tshouldShowAction,\n\t\tisOwnerAction,\n\t};\n};\n","'use client';\n\nimport { Skeleton } from '@0xsequence/design-system';\nimport { useEffect, useRef, useState } from 'react';\nimport { cn } from '../../../../utils';\nimport type { TokenMetadata } from '../../../_internal';\nimport ChessTileImage from '../../images/chess-tile.png';\n\nexport function CollectibleAssetSkeleton() {\n\treturn (\n\t\t<Skeleton\n\t\t\tsize=\"lg\"\n\t\t\tclassName=\"absolute inset-0 h-full w-full animate-shimmer\"\n\t\t\tstyle={{\n\t\t\t\tborderRadius: 0,\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nexport const isHtml = (fileName: string | undefined) => {\n\tconst isHtml = /.*\\.(html\\?.+|html)$/.test(fileName?.toLowerCase() || '');\n\treturn isHtml;\n};\n\nexport const isVideo = (fileName: string | undefined) => {\n\tconst isVideo = /.*\\.(mp4|ogg|webm)$/.test(fileName?.toLowerCase() || '');\n\treturn isVideo;\n};\n\nexport const is3dModel = (fileName: string | undefined) => {\n\tconst isGltf = /.*\\.gltf$/.test(fileName?.toLowerCase() || '');\n\treturn isGltf;\n};\n\ntype CollectibleImageProps = {\n\tname?: string;\n\tcollectibleMetadata?: TokenMetadata;\n\tassetSrcPrefixUrl?: string;\n};\n\nexport function CollectibleAsset({\n\tname,\n\tcollectibleMetadata,\n\tassetSrcPrefixUrl,\n}: CollectibleImageProps) {\n\tconst [assetLoadFailed, setAssetLoadFailed] = useState(false);\n\tconst [assetLoading, setAssetLoading] = useState(true);\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n\tconst placeholderImage = ChessTileImage;\n\tconst assetUrl =\n\t\tcollectibleMetadata?.image ||\n\t\tcollectibleMetadata?.video ||\n\t\tcollectibleMetadata?.animation_url ||\n\t\tcollectibleMetadata?.assets?.[0]?.url ||\n\t\tplaceholderImage;\n\tconst proxiedAssetUrl = assetSrcPrefixUrl\n\t\t? `${assetSrcPrefixUrl}${assetUrl}` // assetSrcPrefixUrl must have a trailing slash at the end\n\t\t: assetUrl;\n\n\tuseEffect(() => {\n\t\tif (videoRef.current) {\n\t\t\tvideoRef.current.addEventListener('loadedmetadata', () => {\n\t\t\t\tsetAssetLoading(false);\n\t\t\t});\n\t\t}\n\t}, []);\n\n\tif (isHtml(assetUrl)) {\n\t\treturn (\n\t\t\t<div className=\"flex aspect-square w-full items-center justify-center overflow-hidden rounded-lg bg-background-secondary\">\n\t\t\t\t{assetLoading && <CollectibleAssetSkeleton />}\n\n\t\t\t\t<iframe\n\t\t\t\t\ttitle={name || 'Collectible'}\n\t\t\t\t\tclassName=\"aspect-square w-full\"\n\t\t\t\t\tsrc={proxiedAssetUrl}\n\t\t\t\t\tallow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n\t\t\t\t\tsandbox=\"allow-scripts\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tborder: '0px',\n\t\t\t\t\t}}\n\t\t\t\t\tonError={() => setAssetLoadFailed(true)}\n\t\t\t\t\tonLoad={() => setAssetLoading(false)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// TODO: Add 3d model support\n\n\tif (isVideo(assetUrl)) {\n\t\treturn (\n\t\t\t<div className=\"relative flex aspect-square w-full items-center justify-center overflow-hidden rounded-lg bg-background-secondary\">\n\t\t\t\t{assetLoading && <CollectibleAssetSkeleton />}\n\t\t\t\t<video\n\t\t\t\t\tref={videoRef}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t`absolute inset-0 h-full w-full object-cover transition-transform duration-200 ease-in-out group-hover:scale-hover ${\n\t\t\t\t\t\t\tassetLoading ? 'invisible' : 'visible'\n\t\t\t\t\t\t}`,\n\t\t\t\t\t\t// we can't hide the video controls in safari, when user hovers over the video they show up. `pointer-events-none` is the only way to hide them on hover\n\t\t\t\t\t\tisSafari && 'pointer-events-none',\n\t\t\t\t\t)}\n\t\t\t\t\tautoPlay\n\t\t\t\t\tloop\n\t\t\t\t\tcontrols\n\t\t\t\t\tplaysInline\n\t\t\t\t\tmuted\n\t\t\t\t\tcontrolsList=\"nodownload noremoteplayback nofullscreen \"\n\t\t\t\t\tonError={() => {\n\t\t\t\t\t\tsetAssetLoadFailed(true);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<source src={proxiedAssetUrl} />\n\t\t\t\t</video>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"relative aspect-square overflow-hidden bg-background-secondary\">\n\t\t\t{assetLoading && <CollectibleAssetSkeleton />}\n\n\t\t\t<img\n\t\t\t\tsrc={assetLoadFailed ? placeholderImage : proxiedAssetUrl}\n\t\t\t\talt={name || 'Collectible'}\n\t\t\t\tclassName={`absolute inset-0 h-full w-full object-cover transition-transform duration-200 ease-in-out group-hover:scale-hover ${\n\t\t\t\t\tassetLoading ? 'invisible' : 'visible'\n\t\t\t\t}`}\n\t\t\t\tonError={() => setAssetLoadFailed(true)}\n\t\t\t\tonLoad={() => setAssetLoading(false)}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","'use client';\n\nimport {\n\tChevronLeftIcon,\n\tChevronRightIcon,\n\tIconButton,\n\tImage,\n\tText,\n} from '@0xsequence/design-system';\nimport { formatUnits } from 'viem';\nimport { ContractType, type Currency, type Order } from '../../../_internal';\nimport SvgBellIcon from '../../icons/BellIcon';\n\nconst OVERFLOW_PRICE = 100000000;\nconst UNDERFLOW_PRICE = 0.0001;\n\nconst formatPrice = (amount: string, currency: Currency): React.ReactNode => {\n\tconst formattedPrice = formatUnits(BigInt(amount), currency.decimals);\n\tconst numericPrice = Number.parseFloat(formattedPrice);\n\n\tif (numericPrice < UNDERFLOW_PRICE) {\n\t\treturn (\n\t\t\t<div className=\"flex items-center\">\n\t\t\t\t<ChevronLeftIcon className=\"h-3 w-3 text-text-100\" />\n\t\t\t\t<Text>{`${UNDERFLOW_PRICE} ${currency.symbol}`}</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (numericPrice > OVERFLOW_PRICE) {\n\t\treturn (\n\t\t\t<div className=\"flex items-center\">\n\t\t\t\t<ChevronRightIcon className=\"h-3 w-3 text-text-100\" />\n\t\t\t\t<Text>{`${OVERFLOW_PRICE.toLocaleString('en-US', {\n\t\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t\t})} ${currency.symbol}`}</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst maxDecimals = numericPrice < 0.01 ? 6 : 4;\n\n\tconst formattedNumber = numericPrice.toLocaleString('en-US', {\n\t\tminimumFractionDigits: 0,\n\t\tmaximumFractionDigits: maxDecimals,\n\t});\n\n\treturn (\n\t\t<div className=\"flex items-center gap-1\">\n\t\t\t<Text>\n\t\t\t\t{formattedNumber} {currency.symbol}\n\t\t\t</Text>\n\t\t</div>\n\t);\n};\n\ntype FooterProps = {\n\tname: string;\n\ttype?: ContractType;\n\tdecimals?: number;\n\tonOfferClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n\thighestOffer?: Order;\n\tlowestListingPriceAmount?: string;\n\tlowestListingCurrency?: Currency;\n\tbalance?: string;\n};\n\nexport const Footer = ({\n\tname,\n\ttype,\n\tdecimals,\n\tonOfferClick,\n\thighestOffer,\n\tlowestListingPriceAmount,\n\tlowestListingCurrency,\n\tbalance,\n}: FooterProps) => {\n\tconst listed = !!lowestListingPriceAmount && !!lowestListingCurrency;\n\n\tif (name.length > 15 && highestOffer) {\n\t\tname = `${name.substring(0, 13)}...`;\n\t}\n\tif (name.length > 17 && !highestOffer) {\n\t\tname = `${name.substring(0, 17)}...`;\n\t}\n\n\treturn (\n\t\t<div className=\"relative flex flex-col items-start gap-2 whitespace-nowrap bg-background-primary p-4\">\n\t\t\t<div className=\"relative flex w-full items-center justify-between\">\n\t\t\t\t<Text className=\"text-left font-body font-bold text-sm text-text-100\">\n\t\t\t\t\t{name || 'Untitled'}\n\t\t\t\t</Text>\n\n\t\t\t\t{highestOffer && onOfferClick && (\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tclassName=\"absolute top-0 right-0 h-[22px] w-[22px] hover:animate-bell-ring\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\tonOfferClick?.(e);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={(props) => <SvgBellIcon {...props} size=\"xs\" />}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t{listed && lowestListingCurrency.imageUrl && (\n\t\t\t\t\t<Image\n\t\t\t\t\t\tclassName=\"h-3 w-3\"\n\t\t\t\t\t\tsrc={lowestListingCurrency.imageUrl}\n\t\t\t\t\t\tonError={(e) => {\n\t\t\t\t\t\t\te.currentTarget.style.display = 'none';\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<Text\n\t\t\t\t\tclassName={`text-left font-body font-bold text-sm ${\n\t\t\t\t\t\tlisted ? 'text-text-100' : 'text-text-50'\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t{listed &&\n\t\t\t\t\t\tformatPrice(lowestListingPriceAmount, lowestListingCurrency)}\n\t\t\t\t\t{!listed && 'Not listed yet'}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t\t<TokenTypeBalancePill\n\t\t\t\tbalance={balance}\n\t\t\t\ttype={type as ContractType}\n\t\t\t\tdecimals={decimals}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nconst TokenTypeBalancePill = ({\n\tbalance,\n\ttype,\n\tdecimals,\n}: {\n\tbalance?: string;\n\ttype: ContractType;\n\tdecimals?: number;\n}) => {\n\tconst displayText =\n\t\ttype === ContractType.ERC1155\n\t\t\t? balance\n\t\t\t\t? `Owned: ${formatUnits(BigInt(balance), decimals ?? 0)}`\n\t\t\t\t: 'ERC-1155'\n\t\t\t: 'ERC-721';\n\n\treturn (\n\t\t<Text className=\"rounded-lg bg-background-secondary px-2 py-1 text-left font-medium text-text-80 text-xs\">\n\t\t\t{displayText}\n\t\t</Text>\n\t);\n};\n"],"mappings":"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","names":["observer","jsx","collection","invalidateQueries","steps","observer","dn","Text","jsx","jsx","jsxs","observer","Text","jsx","observer","parseUnits","useAccount","Text","observer","useState","format","jsx","jsx","jsxs","format","jsx","jsxs","observer","ExpirationDateSelect","useState","Text","Text","jsx","Text","NumericInput","Text","use$","useEffect","useState","parseUnits","TokenImage","useState","jsx","Skeleton","observer","useEffect","jsx","observer","CurrencyOptionsSelect","useEffect","Skeleton","currency","jsx","jsxs","use$","useState","useEffect","parseUnits","NumericInput","Text","Skeleton","Text","jsx","jsxs","Skeleton","Text","Image","Skeleton","Text","jsx","jsxs","Text","Image","Skeleton","useEffect","skipToken","useQuery","useAccount","useAccount","useQuery","steps","skipToken","formatUnits","Skeleton","Text","use$","Spinner","Text","jsx","jsxs","Spinner","Text","Image","Skeleton","Text","observer","formatUnits","Text","useEffect","useState","jsx","observable","initialState","jsx","jsxs","observer","formatUnits","Skeleton","Text","Image","skipToken","useQuery","useEffect","useState","useState","useQuery","skipToken","useEffect","formatUnits","formatUnits","jsx","jsxs","use$","Text","Skeleton","currency","steps","formatUnits","useEffect","observable","addDays","initialState","addDays","observable","jsx","jsxs","Modal","observer","listingPrice","useAccount","parseUnits","Show","observer","useState","parseUnits","useEffect","skipToken","useQuery","ONE_DAY_IN_SECONDS","useGetTokenApprovalData","useQuery","steps","skipToken","formatUnits","useTransactionSteps","steps","formatUnits","useGetTokenApprovalData","useEffect","useTransactionSteps","observable","addDays","approval","transaction","steps","initialState","actions","Fragment","jsx","jsxs","Show","Modal","observer","offerPrice","useState","parseUnits","state","Show","observer","parseUnits","Image","Skeleton","Text","formatDistanceToNow","jsx","jsxs","useEffect","skipToken","useQuery","useGetTokenApprovalData","useQuery","steps","skipToken","formatUnits","useTransactionSteps","steps","currency","formatUnits","useGetTokenApprovalData","useEffect","useTransactionSteps","observable","initialState","jsx","jsxs","Show","Modal","observer","parseUnits","Button","Image","Modal","Text","observer","use$","observable","initialState","jsx","jsxs","observer","use$","Modal","Text","Button","Image","Modal","observer","useAccount","observable","initialState","Button","Text","observable","useAccount","Fragment","jsx","jsxs","useAccount","observable","Text","Button","Button","Text","observer","jsx","jsxs","observer","Text","Button","jsx","useAccount","observer","Modal","Fragment","jsx","jsxs","observer","Skeleton","observer","Button","useAccount","observable","jsx","useAccount","Button","jsx","jsx","useEffect","useAccount","useAccount","useEffect","jsx","observer","Skeleton","useEffect","useRef","useState","jsx","jsxs","Skeleton","isHtml","isVideo","useState","useRef","useEffect","jsxs","jsx","IconButton","Image","Text","formatUnits","jsx","jsxs","formatUnits","Text","IconButton","Image","jsx","jsxs","Skeleton"]}