@0xsequence/marketplace-sdk 0.8.10 → 0.8.11
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.
- package/.changeset/fluffy-jokes-lay.md +5 -0
- package/.changeset/wise-bugs-boil.md +8 -0
- package/CHANGELOG.md +16 -3
- package/dist/{chunk-DWTLVJAW.js → chunk-6OPMUCGX.js} +1 -1
- package/dist/chunk-6OPMUCGX.js.map +1 -0
- package/dist/{chunk-O34GCB47.js → chunk-L6KWLCER.js} +4 -4
- package/dist/chunk-L6KWLCER.js.map +1 -0
- package/dist/{chunk-Y2HJO2VY.js → chunk-LAP2CKLN.js} +56 -3
- package/dist/chunk-LAP2CKLN.js.map +1 -0
- package/dist/{chunk-Y63BOO6M.js → chunk-LECCEZAO.js} +1 -1
- package/dist/{chunk-WH5BZC7W.js → chunk-N7SQWS2R.js} +3 -3
- package/dist/{chunk-7F27CJZW.js → chunk-OAOONM4S.js} +682 -439
- package/dist/chunk-OAOONM4S.js.map +1 -0
- package/dist/chunk-QY52UADF.js +107 -0
- package/dist/chunk-QY52UADF.js.map +1 -0
- package/dist/{chunk-UJSF7PSC.js → chunk-TNAR3XEF.js} +3766 -765
- package/dist/chunk-TNAR3XEF.js.map +1 -0
- package/dist/chunk-XABYNWXO.js +549 -0
- package/dist/chunk-XABYNWXO.js.map +1 -0
- package/dist/chunk-YB5UUF2G.js +11 -0
- package/dist/chunk-YB5UUF2G.js.map +1 -0
- package/dist/{chunk-M6NJ73Y5.js → chunk-YWGFI4PN.js} +87 -24
- package/dist/chunk-YWGFI4PN.js.map +1 -0
- package/dist/{create-config-CAQcvjl6.d.ts → create-config-DLMvMTkZ.d.ts} +2 -2
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.js +14 -15
- package/dist/{listTokenMetadata-DO4ChDjn.d.ts → marketCurrencies-enNVYwBk.d.ts} +77 -3
- package/dist/{marketplace.gen-DQzWciwC.d.ts → marketplace.gen-D24veUQs.d.ts} +3 -2
- package/dist/marketplaceConfig-BwNAbLPw.d.ts +21 -0
- package/dist/new-marketplace-types-BCw19X9S.d.ts +102 -0
- package/dist/react/_internal/api/index.d.ts +3 -3
- package/dist/react/_internal/api/index.js +1 -1
- package/dist/react/_internal/databeat/index.css +2764 -0
- package/dist/react/_internal/databeat/index.css.map +1 -0
- package/dist/react/_internal/databeat/index.d.ts +1 -1
- package/dist/react/_internal/databeat/index.js +12 -12
- package/dist/react/_internal/index.d.ts +61 -9
- package/dist/react/_internal/index.js +3 -3
- package/dist/react/_internal/wagmi/index.d.ts +5 -6
- package/dist/react/_internal/wagmi/index.js +1 -1
- package/dist/react/hooks/index.css +2764 -0
- package/dist/react/hooks/index.css.map +1 -0
- package/dist/react/hooks/index.d.ts +71 -222
- package/dist/react/hooks/index.js +16 -20
- package/dist/react/hooks/options/index.d.ts +5 -4
- package/dist/react/hooks/options/index.js +9 -7
- package/dist/react/index.css +1 -1
- package/dist/react/index.css.map +1 -1
- package/dist/react/index.d.ts +9 -9
- package/dist/react/index.js +28 -34
- package/dist/react/queries/index.d.ts +3 -3
- package/dist/react/queries/index.js +15 -4
- package/dist/react/ssr/index.d.ts +3 -3
- package/dist/react/ssr/index.js +6 -5
- package/dist/react/ssr/index.js.map +1 -1
- package/dist/react/ui/components/collectible-card/index.css +1 -1
- package/dist/react/ui/components/collectible-card/index.css.map +1 -1
- package/dist/react/ui/components/collectible-card/index.d.ts +3 -2
- package/dist/react/ui/components/collectible-card/index.js +12 -17
- package/dist/react/ui/icons/index.js +6 -6
- package/dist/react/ui/index.css +1 -1
- package/dist/react/ui/index.css.map +1 -1
- package/dist/react/ui/index.d.ts +1 -1
- package/dist/react/ui/index.js +12 -17
- package/dist/react/ui/modals/_internal/components/actionModal/index.css +2764 -0
- package/dist/react/ui/modals/_internal/components/actionModal/index.css.map +1 -0
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +12 -12
- package/dist/sdk-config-qorA0TgF.d.ts +165 -0
- package/dist/{services-CMSb9ipU.d.ts → services-WrshxCqc.d.ts} +2 -2
- package/dist/types/index.d.ts +5 -4
- package/dist/types/index.js +7 -7
- package/dist/{index-MlUK9AQE.d.ts → useCollection-YAdXfVO7.d.ts} +1 -2
- package/dist/utils/abi/index.js +4 -4
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +8 -7
- package/package.json +15 -15
- package/src/react/_internal/api/__mocks__/builder.msw.ts +157 -80
- package/src/react/_internal/api/builder-api.ts +2 -2
- package/src/react/_internal/api/builder.gen.ts +667 -112
- package/src/react/_internal/api/marketplace.gen.ts +1981 -1316
- package/src/react/_internal/types.ts +1 -13
- package/src/react/_internal/wagmi/__tests__/create-config.test.ts +99 -84
- package/src/react/_internal/wagmi/create-config.ts +8 -4
- package/src/react/_internal/wagmi/get-connectors.ts +24 -19
- package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +114 -0
- package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +85 -83
- package/src/react/hooks/__tests__/useFilters.test.tsx +0 -16
- package/src/react/hooks/__tests__/useInventory.test.tsx +16 -16
- package/src/react/hooks/__tests__/useListCollections.test.tsx +23 -56
- package/src/react/hooks/__tests__/{useCurrencies.test.tsx → useMarketCurrencies.test.tsx} +21 -15
- package/src/react/hooks/__tests__/useMarketplaceConfig.test.tsx +2 -59
- package/src/react/hooks/index.ts +2 -1
- package/src/react/hooks/useBalanceOfCollectible.tsx +5 -3
- package/src/react/hooks/useConvertPriceToUSD.tsx +1 -1
- package/src/react/hooks/useFilters.tsx +14 -22
- package/src/react/hooks/useGetTokenSuppliesMap.ts +28 -0
- package/src/react/hooks/useInventory.tsx +4 -3
- package/src/react/hooks/useListBalances.tsx +5 -3
- package/src/react/hooks/useListCollectibles.tsx +5 -3
- package/src/react/hooks/useListCollections.tsx +14 -76
- package/src/react/hooks/useMarketCurrencies.tsx +8 -0
- package/src/react/hooks/useMarketplaceConfig.tsx +0 -2
- package/src/react/queries/index.ts +1 -0
- package/src/react/queries/inventory.ts +1 -1
- package/src/react/queries/listCollections.ts +118 -0
- package/src/react/queries/marketCurrencies.ts +77 -0
- package/src/react/queries/marketplaceConfig.ts +83 -55
- package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +85 -83
- package/src/react/ui/components/collectible-card/__tests__/Media.test.tsx +41 -1
- package/src/react/ui/components/collectible-card/media/Media.tsx +11 -6
- package/src/react/ui/components/collectible-card/media/MediaSkeleton.tsx +1 -1
- package/src/react/ui/components/collectible-card/media/types.ts +1 -0
- package/src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx +9 -3
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useFees.test.tsx +31 -21
- package/src/react/ui/modals/BuyModal/hooks/useFees.ts +3 -2
- package/src/react/ui/modals/CreateListingModal/Modal.tsx +3 -5
- package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +5 -3
- package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +2 -2
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +2 -3
- package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +4 -3
- package/src/react/ui/modals/SellModal/Modal.tsx +0 -1
- package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +2 -2
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +0 -1
- package/src/react/ui/modals/TransferModal/index.tsx +0 -1
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +2 -2
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +7 -6
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +13 -7
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +3 -5
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +5 -3
- package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
- package/src/react/ui/modals/_internal/hooks/useSelectWaasFeeOptions.ts +2 -12
- package/src/types/index.ts +1 -6
- package/src/types/new-marketplace-types.ts +119 -0
- package/src/types/sdk-config.ts +18 -2
- package/src/types/types.ts +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/chunk-7F27CJZW.js.map +0 -1
- package/dist/chunk-A7BVFBWB.js +0 -81
- package/dist/chunk-A7BVFBWB.js.map +0 -1
- package/dist/chunk-D7RVSZAQ.js +0 -332
- package/dist/chunk-D7RVSZAQ.js.map +0 -1
- package/dist/chunk-DWTLVJAW.js.map +0 -1
- package/dist/chunk-FGM57QUU.js +0 -128
- package/dist/chunk-FGM57QUU.js.map +0 -1
- package/dist/chunk-JKCF7HEA.js +0 -1
- package/dist/chunk-JKCF7HEA.js.map +0 -1
- package/dist/chunk-KTST7ORH.js +0 -53
- package/dist/chunk-KTST7ORH.js.map +0 -1
- package/dist/chunk-M6NJ73Y5.js.map +0 -1
- package/dist/chunk-N7BPFK46.js +0 -1
- package/dist/chunk-N7BPFK46.js.map +0 -1
- package/dist/chunk-O34GCB47.js.map +0 -1
- package/dist/chunk-RVIUUJTP.js +0 -76
- package/dist/chunk-RVIUUJTP.js.map +0 -1
- package/dist/chunk-SXVUTSMT.js +0 -2895
- package/dist/chunk-SXVUTSMT.js.map +0 -1
- package/dist/chunk-UJSF7PSC.js.map +0 -1
- package/dist/chunk-Y2HJO2VY.js.map +0 -1
- package/dist/marketplaceConfig-D0MXemEl.d.ts +0 -17
- package/dist/sdk-config-onSPBxJj.d.ts +0 -134
- package/dist/types-B8xzPEKX.d.ts +0 -68
- package/src/react/hooks/useCurrencies.tsx +0 -77
- /package/dist/{chunk-Y63BOO6M.js.map → chunk-LECCEZAO.js.map} +0 -0
- /package/dist/{chunk-WH5BZC7W.js.map → chunk-N7SQWS2R.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react/hooks/useAutoSelectFeeOption.tsx","../src/react/hooks/useCollectionBalanceDetails.tsx","../src/react/hooks/useConfig.tsx","../src/utils/_internal/error/context.ts","../src/react/provider.tsx","../src/utils/_internal/error/config.ts","../src/react/hooks/useBalanceOfCollectible.tsx","../src/react/hooks/useMarketplaceConfig.tsx","../src/react/hooks/useCountOfCollectables.tsx","../src/react/_internal/api/zod-schema.ts","../src/react/hooks/useCollectible.tsx","../src/react/hooks/useCollection.tsx","../src/react/hooks/useComparePrices.tsx","../src/react/hooks/useConvertPriceToUSD.tsx","../src/react/hooks/useMarketCurrencies.tsx","../src/react/hooks/useCurrency.tsx","../src/react/hooks/useFilters.tsx","../src/react/hooks/useFilterState.tsx","../src/react/hooks/useFloorOrder.tsx","../src/react/hooks/useHighestOffer.tsx","../src/react/hooks/useInventory.tsx","../src/react/hooks/useListBalances.tsx","../src/react/hooks/useListCollectibleActivities.tsx","../src/react/hooks/useListCollectibles.tsx","../src/react/hooks/useListCollectiblesPaginated.tsx","../src/react/hooks/useListCollectionActivities.tsx","../src/react/hooks/useListOffersForCollectible.tsx","../src/react/hooks/useCountOffersForCollectible.tsx","../src/react/hooks/useListListingsForCollectible.tsx","../src/react/hooks/useCountListingsForCollectible.tsx","../src/react/hooks/useLowestListing.tsx","../src/react/hooks/useRoyalty.tsx","../src/react/hooks/useGenerateListingTransaction.tsx","../src/utils/date.ts","../src/react/hooks/useGenerateOfferTransaction.tsx","../src/react/_internal/wallet/useWallet.ts","../src/react/_internal/wallet/wallet.ts","../src/react/_internal/logger.ts","../src/react/hooks/useGenerateSellTransaction.tsx","../src/react/hooks/useGenerateCancelTransaction.tsx","../src/react/hooks/useTransferTokens.tsx","../src/react/hooks/useCheckoutOptions.tsx","../src/react/hooks/useListCollections.tsx","../src/react/queries/listCollections.ts","../src/react/hooks/useCancelOrder.tsx","../src/react/ui/modals/_internal/components/switchChainModal/index.tsx","../src/react/ui/modals/_internal/components/alertMessage/index.tsx","../src/react/ui/modals/_internal/components/consts.ts","../src/react/ui/modals/_internal/components/switchChainModal/store.ts","../src/react/hooks/util/optimisticCancelUpdates.ts","../src/react/hooks/useCancelTransactionSteps.tsx","../src/react/hooks/useCollectionDetails.tsx","../src/react/hooks/useCollectionDetailsPolling.tsx","../src/react/hooks/useListTokenMetadata.ts","../src/react/hooks/useGetTokenSuppliesMap.ts","../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/ActionModal.tsx","../src/react/ui/modals/_internal/components/actionModal/LoadingModal.tsx","../src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx","../src/react/ui/modals/_internal/components/actionModal/store.ts","../src/react/ui/modals/_internal/components/quantityInput/index.tsx","../src/react/ui/modals/BuyModal/store.ts","../src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts","../src/react/ui/modals/BuyModal/hooks/useFees.ts","../src/react/ui/modals/BuyModal/hooks/useLoadData.ts","../src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts","../src/utils/decode/erc20.ts","../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/hooks/useCurrencyBalance.tsx","../src/react/ui/modals/_internal/components/currencyImage/index.tsx","../src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx","../src/react/ui/components/_internals/custom-select/CustomSelect.tsx","../src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx","../src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx","../src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/ActionButtons.tsx","../src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx","../src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts","../src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx","../src/react/ui/modals/_internal/components/tokenPreview/index.tsx","../src/react/ui/modals/_internal/components/transactionDetails/index.tsx","../src/react/ui/modals/_internal/hooks/useSelectWaasFeeOptions.ts","../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/utils/getSequenceMarketRequestId.ts","../src/react/_internal/databeat/index.ts","../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/BuyModal/index.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/_components/TokenQuantityInput.tsx","../src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx","../src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx","../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/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/Footer.tsx","../src/react/ui/components/collectible-card/media/Media.tsx","../src/utils/fetchContentType.ts","../src/react/ui/components/ModelViewer.tsx","../src/react/ui/components/collectible-card/media/MediaSkeleton.tsx","../src/react/ui/components/collectible-card/media/utils.ts"],"sourcesContent":["'use client';\nimport { type Address, zeroAddress } from 'viem';\n\nimport { useChain } from '@0xsequence/connect';\nimport { useCallback, useEffect } from 'react';\nimport { useAccount } from 'wagmi';\nimport type { FeeOption } from '../../types/waas-types';\nimport { useCollectionBalanceDetails } from './useCollectionBalanceDetails';\n\nenum AutoSelectFeeOptionError {\n\tUserNotConnected = 'User not connected',\n\tNoOptionsProvided = 'No options provided',\n\tFailedToCheckBalances = 'Failed to check balances',\n\tInsufficientBalanceForAnyFeeOption = 'Insufficient balance for any fee option',\n}\n\ntype UseAutoSelectFeeOptionArgs = {\n\tpendingFeeOptionConfirmation: {\n\t\tid: string;\n\t\toptions: FeeOption[] | undefined;\n\t\tchainId: number;\n\t};\n\tenabled?: boolean;\n};\n\n/**\n * A React hook that automatically selects the first fee option for which the user has sufficient balance.\n *\n * @param {Object} params.pendingFeeOptionConfirmation - Configuration for fee option selection\n *\n * @returns {Promise<{\n * selectedOption: FeeOption | null,\n * error: AutoSelectFeeOptionError | null,\n * isLoading?: boolean\n * }>} A promise that resolves to an object containing:\n * - selectedOption: The first fee option with sufficient balance, or null if none found\n * - error: Error message if selection fails, null otherwise\n * - isLoading: True while checking balances\n *\n * @throws {AutoSelectFeeOptionError} Possible errors:\n * - UserNotConnected: When no wallet is connected\n * - NoOptionsProvided: When fee options array is undefined\n * - FailedToCheckBalances: When balance checking fails\n * - InsufficientBalanceForAnyFeeOption: When user has insufficient balance for all options\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const [pendingFeeOptionConfirmation, confirmPendingFeeOption] = useWaasFeeOptions();\n *\n * const autoSelectOptionPromise = useAutoSelectFeeOption({\n * pendingFeeOptionConfirmation: pendingFeeOptionConfirmation\n * ? {\n * id: pendingFeeOptionConfirmation.id,\n * options: pendingFeeOptionConfirmation.options,\n * chainId: 1\n * }\n * : {\n * id: '',\n * options: undefined,\n * chainId: 1\n * }\n * });\n *\n * useEffect(() => {\n * autoSelectOptionPromise.then((result) => {\n * if (result.isLoading) {\n * console.log('Checking balances...');\n * return;\n * }\n *\n * if (result.error) {\n * console.error('Failed to select fee option:', result.error);\n * return;\n * }\n *\n * if (pendingFeeOptionConfirmation?.id && result.selectedOption) {\n * confirmPendingFeeOption(\n * pendingFeeOptionConfirmation.id,\n * result.selectedOption.token.contractAddress\n * );\n * }\n * });\n * }, [autoSelectOptionPromise, confirmPendingFeeOption, pendingFeeOptionConfirmation]);\n *\n * return <div>...</div>;\n * }\n * ```\n */\nexport function useAutoSelectFeeOption({\n\tpendingFeeOptionConfirmation,\n\tenabled,\n}: UseAutoSelectFeeOptionArgs) {\n\tconst { address: userAddress } = useAccount();\n\n\t// one token that has null contract address is native token, so we need to replace it with zero address\n\tconst contractWhitelist = pendingFeeOptionConfirmation.options?.map(\n\t\t(option) =>\n\t\t\toption.token.contractAddress === null\n\t\t\t\t? zeroAddress\n\t\t\t\t: (option.token.contractAddress as Address),\n\t);\n\n\tconst {\n\t\tdata: balanceDetails,\n\t\tisLoading: isBalanceDetailsLoading,\n\t\tisError: isBalanceDetailsError,\n\t} = useCollectionBalanceDetails({\n\t\tchainId: pendingFeeOptionConfirmation.chainId,\n\t\tfilter: {\n\t\t\taccountAddresses: userAddress ? [userAddress] : [],\n\t\t\tcontractWhitelist,\n\t\t\tomitNativeBalances: false,\n\t\t},\n\t\tquery: {\n\t\t\tenabled:\n\t\t\t\t!!pendingFeeOptionConfirmation.options && !!userAddress && enabled,\n\t\t},\n\t});\n\tconst chain = useChain(pendingFeeOptionConfirmation.chainId);\n\n\t// combine native balance and erc20 balances\n\tconst combinedBalances = balanceDetails && [\n\t\t...balanceDetails.nativeBalances.map((b) => ({\n\t\t\tchainId: pendingFeeOptionConfirmation.chainId,\n\t\t\tbalance: b.balance,\n\t\t\tsymbol: chain?.nativeCurrency.symbol,\n\t\t\tcontractAddress: zeroAddress,\n\t\t})),\n\t\t...balanceDetails.balances.map((b) => ({\n\t\t\tchainId: b.chainId,\n\t\t\tbalance: b.balance,\n\t\t\tsymbol: b.contractInfo?.symbol,\n\t\t\tcontractAddress: b.contractAddress,\n\t\t})),\n\t];\n\n\tuseEffect(() => {\n\t\tif (combinedBalances) {\n\t\t\tconsole.debug('currency balances', combinedBalances);\n\t\t}\n\t}, [combinedBalances]);\n\n\tconst autoSelectedOption = useCallback(async () => {\n\t\tif (!userAddress) {\n\t\t\treturn {\n\t\t\t\tselectedOption: null,\n\t\t\t\terror: AutoSelectFeeOptionError.UserNotConnected,\n\t\t\t};\n\t\t}\n\n\t\tif (!pendingFeeOptionConfirmation.options) {\n\t\t\treturn {\n\t\t\t\tselectedOption: null,\n\t\t\t\terror: AutoSelectFeeOptionError.NoOptionsProvided,\n\t\t\t};\n\t\t}\n\n\t\tif (isBalanceDetailsLoading) {\n\t\t\treturn { selectedOption: null, error: null, isLoading: true };\n\t\t}\n\n\t\tif (isBalanceDetailsError || !combinedBalances) {\n\t\t\treturn {\n\t\t\t\tselectedOption: null,\n\t\t\t\terror: AutoSelectFeeOptionError.FailedToCheckBalances,\n\t\t\t};\n\t\t}\n\n\t\tconst selectedOption = pendingFeeOptionConfirmation.options.find(\n\t\t\t(option) => {\n\t\t\t\tconst tokenBalance = combinedBalances.find(\n\t\t\t\t\t(balance) =>\n\t\t\t\t\t\tbalance.contractAddress.toLowerCase() ===\n\t\t\t\t\t\t(option.token.contractAddress === null\n\t\t\t\t\t\t\t? zeroAddress\n\t\t\t\t\t\t\t: option.token.contractAddress\n\t\t\t\t\t\t).toLowerCase(),\n\t\t\t\t);\n\n\t\t\t\tif (!tokenBalance) return false;\n\n\t\t\t\treturn BigInt(tokenBalance.balance) >= BigInt(option.value);\n\t\t\t},\n\t\t);\n\n\t\tif (!selectedOption) {\n\t\t\treturn {\n\t\t\t\tselectedOption: null,\n\t\t\t\terror: AutoSelectFeeOptionError.InsufficientBalanceForAnyFeeOption,\n\t\t\t};\n\t\t}\n\n\t\tconsole.debug('auto selected option', selectedOption);\n\n\t\treturn { selectedOption, error: null };\n\t}, [\n\t\tuserAddress,\n\t\tpendingFeeOptionConfirmation.options,\n\t\tisBalanceDetailsLoading,\n\t\tisBalanceDetailsError,\n\t\tcombinedBalances,\n\t]);\n\n\treturn autoSelectedOption();\n}\n","import type { GetTokenBalancesDetailsReturn } from '@0xsequence/indexer';\nimport { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\tQueryArgSchema,\n\tbalanceQueries,\n\tgetIndexerClient,\n} from '../_internal';\nimport { useConfig } from './useConfig';\n\nconst filterSchema = z.object({\n\taccountAddresses: z.array(AddressSchema),\n\tcontractWhitelist: z.array(AddressSchema).optional(),\n\tomitNativeBalances: z.boolean(),\n});\n\nconst useCollectionBalanceDetailsArgsSchema = z.object({\n\tchainId: z.number(),\n\tfilter: filterSchema,\n\tquery: QueryArgSchema.optional(),\n});\n\nexport type CollectionBalanceFilter = z.infer<typeof filterSchema>;\nexport type UseCollectionBalanceDetailsArgs = z.input<\n\ttypeof useCollectionBalanceDetailsArgsSchema\n>;\n\nconst fetchCollectionBalanceDetails = async (\n\targs: UseCollectionBalanceDetailsArgs,\n\tindexerClient: Awaited<ReturnType<typeof getIndexerClient>>,\n) => {\n\tconst promises = args.filter.accountAddresses.map((accountAddress) =>\n\t\tindexerClient.getTokenBalancesDetails({\n\t\t\tfilter: {\n\t\t\t\taccountAddresses: [accountAddress],\n\t\t\t\tcontractWhitelist: args.filter.contractWhitelist,\n\t\t\t\tomitNativeBalances: args.filter.omitNativeBalances,\n\t\t\t},\n\t\t}),\n\t);\n\n\tconst responses = await Promise.all(promises);\n\tconst mergedResponse = responses.reduce<GetTokenBalancesDetailsReturn>(\n\t\t(acc, curr) => {\n\t\t\tif (!curr) return acc;\n\t\t\treturn {\n\t\t\t\tpage: curr.page,\n\t\t\t\tnativeBalances: [\n\t\t\t\t\t...(acc.nativeBalances || []),\n\t\t\t\t\t...(curr.nativeBalances || []),\n\t\t\t\t],\n\t\t\t\tbalances: [...(acc.balances || []), ...(curr.balances || [])],\n\t\t\t};\n\t\t},\n\t\t{ page: {}, nativeBalances: [], balances: [] },\n\t);\n\n\tif (!mergedResponse) {\n\t\tthrow new Error('Failed to fetch collection balance details');\n\t}\n\n\treturn mergedResponse;\n};\n\nexport const collectionBalanceDetailsOptions = (\n\targs: UseCollectionBalanceDetailsArgs,\n\tconfig: SdkConfig,\n) => {\n\tconst parsedArgs = useCollectionBalanceDetailsArgsSchema.parse(args);\n\tconst indexerClient = getIndexerClient(parsedArgs.chainId, config);\n\n\treturn queryOptions({\n\t\tqueryKey: [...balanceQueries.collectionBalanceDetails, args, config],\n\t\tqueryFn: () => fetchCollectionBalanceDetails(parsedArgs, indexerClient),\n\t\t...args.query,\n\t});\n};\n\nexport const useCollectionBalanceDetails = (\n\targs: UseCollectionBalanceDetailsArgs,\n) => {\n\tconst config = useConfig();\n\treturn useQuery(collectionBalanceDetailsOptions(args, config));\n};\n","'use client';\n\nimport { useContext } from 'react';\n\nimport { MarketplaceSdkProviderNotFoundError } from '../../utils/_internal/error/context';\nimport { MarketplaceSdkContext } from '../provider';\n\nexport function useConfig() {\n\tconst context = useContext(MarketplaceSdkContext);\n\tif (!context) {\n\t\tthrow new MarketplaceSdkProviderNotFoundError();\n\t}\n\treturn context;\n}\n","import { BaseError } from './base';\n\nexport type MarketplaceSdkProviderNotFoundErrorType =\n\tMarketplaceSdkProviderNotFoundError & {\n\t\tname: 'MarketplaceSDKProviderNotFoundError';\n\t};\n\nexport class MarketplaceSdkProviderNotFoundError extends BaseError {\n\toverride name = 'MarketplaceSDKProviderNotFoundError';\n\tconstructor() {\n\t\tsuper('`useConfig` must be used within `MarketplaceSdkProvider`.');\n\t}\n}\n","'use client';\n\nimport { QueryClientProvider } from '@tanstack/react-query';\nimport { createContext } from 'react';\nimport type { SdkConfig } from '../types';\nimport { InvalidProjectAccessKeyError } from '../utils/_internal/error/config';\nimport { getQueryClient } from './_internal/api/get-query-client';\nimport { PROVIDER_ID } from './_internal/get-provider';\n\nexport const MarketplaceSdkContext = createContext({} as SdkConfig);\n\nexport type MarketplaceSdkProviderProps = {\n\tconfig: SdkConfig;\n\tchildren: React.ReactNode;\n};\n\nexport function MarketplaceQueryClientProvider({\n\tchildren,\n}: {\n\tchildren: React.ReactNode;\n}) {\n\tconst queryClient = getQueryClient();\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n\t);\n}\n\nexport function MarketplaceProvider({\n\tconfig,\n\tchildren,\n}: MarketplaceSdkProviderProps) {\n\tif (config.projectAccessKey === '' || !config.projectAccessKey) {\n\t\tthrow new InvalidProjectAccessKeyError(config.projectAccessKey);\n\t}\n\n\treturn (\n\t\t<MarketplaceQueryClientProvider>\n\t\t\t<MarketplaceSdkContext.Provider value={config}>\n\t\t\t\t<div id={PROVIDER_ID}>{children}</div>\n\t\t\t</MarketplaceSdkContext.Provider>\n\t\t</MarketplaceQueryClientProvider>\n\t);\n}\n","import { BaseError } from './base';\n\nexport type ConfigErrorType<name extends string = 'ConfigError'> = BaseError & {\n\tname: name;\n};\n\nexport class ConfigError extends BaseError {\n\toverride name = 'ConfigError';\n}\n\nexport class InvalidProjectAccessKeyError extends ConfigError {\n\toverride name = 'InvalidProjectAccessKeyError';\n\tconstructor(projectAccessKey: string) {\n\t\tsuper(`Invalid project access key: ${projectAccessKey}`);\n\t}\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { ContractType } from '../_internal';\nimport {\n\ttype UseBalanceOfCollectibleArgs,\n\tbalanceOfCollectibleOptions,\n} from '../queries/balanceOfCollectible';\nimport { useConfig } from './useConfig';\nimport { useMarketplaceConfig } from './useMarketplaceConfig';\n\n/**\n * Hook to fetch the balance of a specific collectible for a user\n *\n * @param args - The arguments for fetching the balance\n * @returns Query result containing the balance data\n *\n * @example\n * ```tsx\n * const { data, isLoading, error } = useBalanceOfCollectible({\n * collectionAddress: '0x123...',\n * collectableId: '1',\n * userAddress: '0x456...',\n * chainId: 1,\n * query: {\n * enabled: true,\n * refetchInterval: 10000,\n * }\n * });\n * ```\n */\nexport function useBalanceOfCollectible(args: UseBalanceOfCollectibleArgs) {\n\tconst config = useConfig();\n\tconst { data: marketplaceConfig } = useMarketplaceConfig();\n\n\tconst isLaos721 =\n\t\tmarketplaceConfig?.market.collections.find(\n\t\t\t(collection) => collection.itemsAddress === args.collectionAddress,\n\t\t)?.contractType === ContractType.LAOSERC721;\n\n\tif (isLaos721) {\n\t\targs.isLaos721 = true;\n\t}\n\n\treturn useQuery(balanceOfCollectibleOptions(args, config));\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { marketplaceConfigOptions } from '../queries/marketplaceConfig';\nimport { useConfig } from './useConfig';\n\nexport const useMarketplaceConfig = () => {\n\tconst config = useConfig();\n\treturn useQuery(marketplaceConfigOptions(config));\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\tOrderSide,\n\tQueryArgSchema,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { collectiblesFilterSchema } from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nconst BaseSchema = z.object({\n\tchainId: z.number(),\n\tcollectionAddress: AddressSchema,\n\tquery: QueryArgSchema,\n});\n\nconst UseCountOfCollectableSchema = BaseSchema.extend({\n\tfilter: collectiblesFilterSchema,\n\tside: z.nativeEnum(OrderSide),\n}).or(\n\tBaseSchema.extend({\n\t\tfilter: z.undefined(),\n\t\tside: z.undefined(),\n\t}),\n);\n\nexport type UseCountOfCollectablesArgs = z.infer<\n\ttypeof UseCountOfCollectableSchema\n>;\n\nexport type UseContOfCollectableReturn = Awaited<\n\tReturnType<typeof fetchCountOfCollectables>\n>;\n\nconst fetchCountOfCollectables = async (\n\targs: UseCountOfCollectablesArgs,\n\tconfig: SdkConfig,\n) => {\n\tconst parsedArgs = UseCountOfCollectableSchema.parse(args);\n\tconst marketplaceClient = getMarketplaceClient(parsedArgs.chainId, config);\n\tif (parsedArgs.filter) {\n\t\treturn marketplaceClient\n\t\t\t.getCountOfFilteredCollectibles({\n\t\t\t\t...parsedArgs,\n\t\t\t\tcontractAddress: parsedArgs.collectionAddress,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: safe to assert here, as it's validated\n\t\t\t\tside: parsedArgs.side!,\n\t\t\t})\n\t\t\t.then((resp) => resp.count);\n\t}\n\treturn marketplaceClient\n\t\t.getCountOfAllCollectibles({\n\t\t\t...parsedArgs,\n\t\t\tcontractAddress: parsedArgs.collectionAddress,\n\t\t})\n\t\t.then((resp) => resp.count);\n};\n\nexport const countOfCollectablesOptions = (\n\targs: UseCountOfCollectablesArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...collectableKeys.counts, args],\n\t\tqueryFn: () => fetchCountOfCollectables(args, config),\n\t});\n};\n\nexport const useCountOfCollectables = (args: UseCountOfCollectablesArgs) => {\n\tconst config = useConfig();\n\treturn useQuery(countOfCollectablesOptions(args, config));\n};\n","// generated with https://transform.tools/typescript-to-zod\n//\n//\nimport { z } from 'zod';\nimport { CollectableIdSchema } from '../types';\nimport { AddressSchema } from '../types';\nimport {\n\tCollectibleStatus,\n\tCollectionStatus,\n\tContractType,\n\tMarketplaceKind,\n\tOrderSide,\n\tOrderStatus,\n\tOrderbookKind,\n\tProjectStatus,\n\tPropertyType,\n\tSortOrder,\n\tSourceKind,\n\tStepType,\n\tTransactionCrypto,\n\tTransactionNFTCheckoutProvider,\n\tTransactionOnRampProvider,\n\tTransactionSwapProvider,\n\tWalletKind,\n} from './marketplace.gen';\n\nexport const assetSchema = z.object({\n\tid: z.number(),\n\tcollectionId: z.number(),\n\ttokenId: z.string(),\n\turl: z.string().optional(),\n\tmetadataField: z.string(),\n\tname: z.string().optional(),\n\tfilesize: z.number().optional(),\n\tmimeType: z.string().optional(),\n\twidth: z.number().optional(),\n\theight: z.number().optional(),\n\tupdatedAt: z.string().optional(),\n});\n\nexport const sortOrderSchema = z.nativeEnum(SortOrder);\n\nexport const propertyTypeSchema = z.nativeEnum(PropertyType);\n\nexport const marketplaceKindSchema = z.nativeEnum(MarketplaceKind);\n\nexport const orderbookKindSchema = z.nativeEnum(OrderbookKind);\n\nexport const sourceKindSchema = z.nativeEnum(SourceKind);\n\nexport const orderSideSchema = z.nativeEnum(OrderSide);\n\nexport const orderStatusSchema = z.nativeEnum(OrderStatus);\n\nexport const contractTypeSchema = z.nativeEnum(ContractType);\n\nexport const collectionStatusSchema = z.nativeEnum(CollectionStatus);\n\nexport const projectStatusSchema = z.nativeEnum(ProjectStatus);\n\nexport const collectibleStatusSchema = z.nativeEnum(CollectibleStatus);\n\nexport const walletKindSchema = z.nativeEnum(WalletKind);\n\nexport const stepTypeSchema = z.nativeEnum(StepType);\n\nexport const transactionCryptoSchema = z.nativeEnum(TransactionCrypto);\n\nexport const transactionNFTCheckoutProviderSchema = z.nativeEnum(\n\tTransactionNFTCheckoutProvider,\n);\n\nexport const transactionOnRampProviderSchema = z.nativeEnum(\n\tTransactionOnRampProvider,\n);\n\nexport const transactionSwapProviderSchema = z.nativeEnum(\n\tTransactionSwapProvider,\n);\n\nexport const sortBySchema = z.object({\n\tcolumn: z.string(),\n\torder: sortOrderSchema,\n});\n\nexport const propertyFilterSchema = z.object({\n\tname: z.string(),\n\ttype: propertyTypeSchema,\n\tmin: z.number().optional(),\n\tmax: z.number().optional(),\n\tvalues: z.array(z.any()).optional(),\n});\n\nexport const collectiblesFilterSchema = z.object({\n\tincludeEmpty: z.boolean(),\n\tsearchText: z.string().optional(),\n\tproperties: z.array(propertyFilterSchema).optional(),\n\tmarketplaces: z.array(marketplaceKindSchema).optional(),\n\tinAccounts: z.array(z.string()).optional(),\n\tnotInAccounts: z.array(z.string()).optional(),\n\tordersCreatedBy: z.array(z.string()).optional(),\n\tordersNotCreatedBy: z.array(z.string()).optional(),\n});\n\nexport const feeBreakdownSchema = z.object({\n\tkind: z.string(),\n\trecipientAddress: z.string(),\n\tbps: z.number(),\n});\n\nexport const orderFilterSchema = z.object({\n\tcreatedBy: z.array(z.string()).optional(),\n\tmarketplace: z.array(marketplaceKindSchema).optional(),\n\tcurrencies: z.array(z.string()).optional(),\n});\n\nexport const collectionLastSyncedSchema = z.object({\n\tallOrders: z.string(),\n\tnewOrders: z.string(),\n});\n\nexport const projectSchema = z.object({\n\tprojectId: z.number(),\n\tchainId: z.number(),\n\tcontractAddress: z.string(),\n\tstatus: projectStatusSchema,\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tdeletedAt: z.string().optional(),\n});\n\nexport const collectibleSchema = z.object({\n\tchainId: z.number(),\n\tcontractAddress: z.string(),\n\tstatus: collectibleStatusSchema,\n\ttokenId: z.string(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tdeletedAt: z.string().optional(),\n});\n\nexport const currencySchema = z.object({\n\tchainId: z.number(),\n\tcontractAddress: z.string(),\n\tname: z.string(),\n\tsymbol: z.string(),\n\tdecimals: z.number(),\n\timageUrl: z.string(),\n\texchangeRate: z.number(),\n\tdefaultChainCurrency: z.boolean(),\n\tnativeCurrency: z.boolean(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tdeletedAt: z.string().optional(),\n});\n\nexport const orderDataSchema = z.object({\n\torderId: z.string(),\n\tquantity: z.string(),\n});\n\nexport const additionalFeeSchema = z.object({\n\tamount: z.string(),\n\treceiver: z.string(),\n});\n\nexport const postRequestSchema = z.object({\n\tendpoint: z.string(),\n\tmethod: z.string(),\n\tbody: z.any(),\n});\n\nexport const createReqSchema = z.object({\n\ttokenId: z.string(),\n\tquantity: z.string(),\n\texpiry: z.string(),\n\tcurrencyAddress: z.string(),\n\tpricePerToken: z.string(),\n});\n\nexport const getOrdersInputSchema = z.object({\n\tcontractAddress: z.string(),\n\torderId: z.string(),\n\tmarketplace: marketplaceKindSchema,\n});\n\nexport const domainSchema = z.object({\n\tname: z.string(),\n\tversion: z.string(),\n\tchainId: z.number(),\n\tverifyingContract: z.string(),\n});\n\nexport const checkoutOptionsMarketplaceOrderSchema = z.object({\n\tcontractAddress: z.string(),\n\torderId: z.string(),\n\tmarketplace: marketplaceKindSchema,\n});\n\nexport const checkoutOptionsItemSchema = z.object({\n\ttokenId: z.string(),\n\tquantity: z.string(),\n});\n\nexport const checkoutOptionsSchema = z.object({\n\tcrypto: transactionCryptoSchema,\n\tswap: z.array(transactionSwapProviderSchema),\n\tnftCheckout: z.array(transactionNFTCheckoutProviderSchema),\n\tonRamp: z.array(transactionOnRampProviderSchema),\n});\n\nexport const listCurrenciesArgsSchema = z.object({});\n\nexport const listCurrenciesReturnSchema = z.object({\n\tcurrencies: z.array(currencySchema),\n});\n\nexport const getCollectibleArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n});\n\nexport const getLowestPriceOfferForCollectibleArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n});\n\nexport const getHighestPriceOfferForCollectibleArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n});\n\nexport const getLowestPriceListingForCollectibleArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n});\n\nexport const getHighestPriceListingForCollectibleArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n});\n\nexport const getCollectibleLowestOfferArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n});\n\nexport const getCollectibleHighestOfferArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n});\n\nexport const getCollectibleLowestListingArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilters: orderFilterSchema.optional(),\n});\n\nexport const getCollectibleHighestListingArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n});\n\nexport const generateBuyTransactionArgsSchema = z.object({\n\tcollectionAddress: z.string(),\n\tbuyer: z.string(),\n\tmarketplace: marketplaceKindSchema,\n\tordersData: z.array(orderDataSchema),\n\tadditionalFees: z.array(additionalFeeSchema),\n\twalletType: walletKindSchema.optional(),\n});\n\nexport const generateSellTransactionArgsSchema = z.object({\n\tcollectionAddress: z.string(),\n\tseller: z.string(),\n\tmarketplace: marketplaceKindSchema,\n\tordersData: z.array(orderDataSchema),\n\tadditionalFees: z.array(additionalFeeSchema),\n\twalletType: walletKindSchema.optional(),\n});\n\nexport const generateListingTransactionArgsSchema = z.object({\n\tcollectionAddress: z.string(),\n\towner: z.string(),\n\tcontractType: contractTypeSchema,\n\torderbook: orderbookKindSchema,\n\tlisting: createReqSchema,\n\twalletType: walletKindSchema.optional(),\n});\n\nexport const generateOfferTransactionArgsSchema = z.object({\n\tcollectionAddress: z.string(),\n\tmaker: z.string(),\n\tcontractType: contractTypeSchema,\n\torderbook: orderbookKindSchema,\n\toffer: createReqSchema,\n\twalletType: walletKindSchema.optional(),\n});\n\nexport const getCountOfAllCollectiblesArgsSchema = z.object({\n\tcontractAddress: z.string(),\n});\n\nexport const getCountOfAllCollectiblesReturnSchema = z.object({\n\tcount: z.number(),\n});\n\nexport const getCountOfFilteredCollectiblesArgsSchema = z.object({\n\tside: orderSideSchema,\n\tcontractAddress: z.string(),\n\tfilter: collectiblesFilterSchema.optional(),\n});\n\nexport const getCountOfFilteredCollectiblesReturnSchema = z.object({\n\tcount: z.number(),\n});\n\nexport const getFloorOrderArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\tfilter: collectiblesFilterSchema.optional(),\n});\n\nexport const syncOrderReturnSchema = z.object({});\n\nexport const syncOrdersReturnSchema = z.object({});\n\nexport const checkoutOptionsMarketplaceArgsSchema = z.object({\n\twallet: z.string(),\n\torders: z.array(checkoutOptionsMarketplaceOrderSchema),\n\tadditionalFee: z.number(),\n});\n\nexport const checkoutOptionsMarketplaceReturnSchema = z.object({\n\toptions: checkoutOptionsSchema,\n});\n\nexport const checkoutOptionsSalesContractArgsSchema = z.object({\n\twallet: z.string(),\n\tcontractAddress: z.string(),\n\tcollectionAddress: z.string(),\n\titems: z.array(checkoutOptionsItemSchema),\n});\n\nexport const checkoutOptionsSalesContractReturnSchema = z.object({\n\toptions: checkoutOptionsSchema,\n});\n\nexport const countListingsForCollectibleArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n});\n\nexport const countListingsForCollectibleReturnSchema = z.object({\n\tcount: z.number(),\n});\n\nexport const countOffersForCollectibleArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n});\n\nexport const countOffersForCollectibleReturnSchema = z.object({\n\tcount: z.number(),\n});\n\nexport const tokenMetadataSchema = z.object({\n\ttokenId: z.string(),\n\tname: z.string(),\n\tdescription: z.string().optional(),\n\timage: z.string().optional(),\n\tvideo: z.string().optional(),\n\taudio: z.string().optional(),\n\tproperties: z.record(z.any()).optional(),\n\tattributes: z.array(z.record(z.any())),\n\timage_data: z.string().optional(),\n\texternal_url: z.string().optional(),\n\tbackground_color: z.string().optional(),\n\tanimation_url: z.string().optional(),\n\tdecimals: z.number().optional(),\n\tupdatedAt: z.string().optional(),\n\tassets: z.array(assetSchema).optional(),\n});\n\nexport const pageSchema = z.object({\n\tpage: z.number(),\n\tpageSize: z.number(),\n\tmore: z.boolean().optional(),\n\tsort: z.array(sortBySchema).optional(),\n});\n\nexport const filterSchema = z.object({\n\ttext: z.string().optional(),\n\tproperties: z.array(propertyFilterSchema).optional(),\n});\n\nexport const orderSchema = z.object({\n\torderId: z.string(),\n\tmarketplace: marketplaceKindSchema,\n\tside: orderSideSchema,\n\tstatus: orderStatusSchema,\n\tchainId: z.number(),\n\tcollectionContractAddress: z.string(),\n\ttokenId: z.string(),\n\tcreatedBy: z.string(),\n\tpriceAmount: z.string(),\n\tpriceAmountFormatted: z.string(),\n\tpriceAmountNet: z.string(),\n\tpriceAmountNetFormatted: z.string(),\n\tpriceCurrencyAddress: z.string(),\n\tpriceDecimals: z.number(),\n\tpriceUSD: z.number(),\n\tquantityInitial: z.string(),\n\tquantityInitialFormatted: z.string(),\n\tquantityRemaining: z.string(),\n\tquantityRemainingFormatted: z.string(),\n\tquantityAvailable: z.string(),\n\tquantityAvailableFormatted: z.string(),\n\tquantityDecimals: z.number(),\n\tfeeBps: z.number(),\n\tfeeBreakdown: z.array(feeBreakdownSchema),\n\tvalidFrom: z.string(),\n\tvalidUntil: z.string(),\n\tblockNumber: z.number(),\n\torderCreatedAt: z.string().optional(),\n\torderUpdatedAt: z.string().optional(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tdeletedAt: z.string().optional(),\n});\n\nexport const collectibleOrderSchema = z.object({\n\tmetadata: tokenMetadataSchema,\n\torder: orderSchema.optional(),\n});\n\nexport const activitySchema = z.object({\n\ttype: z.string(),\n\tfromAddress: z.string(),\n\ttoAddress: z.string(),\n\ttxHash: z.string(),\n\ttimestamp: z.number(),\n\ttokenId: z.string(),\n\ttokenImage: z.string(),\n\ttokenName: z.string(),\n\tcurrency: currencySchema.optional(),\n});\n\nexport const collectionConfigSchema = z.object({\n\tlastSynced: z.record(collectionLastSyncedSchema),\n\tcollectiblesSynced: z.string(),\n});\n\nexport const signatureSchema = z.object({\n\tdomain: domainSchema,\n\ttypes: z.any(),\n\tprimaryType: z.string(),\n\tvalue: z.any(),\n});\n\nexport const getCollectibleReturnSchema = z.object({\n\tmetadata: tokenMetadataSchema,\n});\n\nexport const getLowestPriceOfferForCollectibleReturnSchema = z.object({\n\torder: orderSchema,\n});\n\nexport const getHighestPriceOfferForCollectibleReturnSchema = z.object({\n\torder: orderSchema,\n});\n\nexport const getLowestPriceListingForCollectibleReturnSchema = z.object({\n\torder: orderSchema,\n});\n\nexport const getHighestPriceListingForCollectibleReturnSchema = z.object({\n\torder: orderSchema,\n});\n\nexport const listListingsForCollectibleArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n\tpage: pageSchema.optional(),\n});\n\nexport const listListingsForCollectibleReturnSchema = z.object({\n\tlistings: z.array(orderSchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const listOffersForCollectibleArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n\tpage: pageSchema.optional(),\n});\n\nexport const listOffersForCollectibleReturnSchema = z.object({\n\toffers: z.array(orderSchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const getListCollectibleActivitiesArgsSchema = z.object({\n\tchainId: z.number(),\n\tcollectionAddress: AddressSchema,\n\ttokenId: CollectableIdSchema.pipe(z.coerce.string()),\n\tquery: pageSchema\n\t\t.extend({\n\t\t\tenabled: z.boolean().optional(),\n\t\t})\n\t\t.optional(),\n});\n\nexport const getListCollectibleActivitiesReturnSchema = z.object({\n\tactivities: z.array(activitySchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const getListCollectionActivitiesArgsSchema = z.object({\n\tchainId: z.number(),\n\tcollectionAddress: AddressSchema,\n\tquery: pageSchema\n\t\t.extend({\n\t\t\tenabled: z.boolean().optional(),\n\t\t})\n\t\t.optional(),\n});\n\nexport const getListCollectionActivitiesReturnSchema = z.object({\n\tactivities: z.array(activitySchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const getCollectibleLowestOfferReturnSchema = z.object({\n\torder: orderSchema.optional(),\n});\n\nexport const getCollectibleHighestOfferReturnSchema = z.object({\n\torder: orderSchema.optional(),\n});\n\nexport const getCollectibleLowestListingReturnSchema = z.object({\n\torder: orderSchema.optional(),\n});\n\nexport const getCollectibleHighestListingReturnSchema = z.object({\n\torder: orderSchema.optional(),\n});\n\nexport const listCollectibleListingsArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n\tpage: pageSchema.optional(),\n});\n\nexport const listCollectibleListingsReturnSchema = z.object({\n\tlistings: z.array(orderSchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const listCollectibleOffersArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\ttokenId: z.string(),\n\tfilter: orderFilterSchema.optional(),\n\tpage: pageSchema.optional(),\n});\n\nexport const listCollectibleOffersReturnSchema = z.object({\n\toffers: z.array(orderSchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const listCollectiblesArgsSchema = z.object({\n\tside: orderSideSchema,\n\tcontractAddress: z.string(),\n\tfilter: collectiblesFilterSchema.optional(),\n\tpage: pageSchema.optional(),\n});\n\nexport const listCollectiblesReturnSchema = z.object({\n\tcollectibles: z.array(collectibleOrderSchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const getFloorOrderReturnSchema = z.object({\n\tcollectible: collectibleOrderSchema,\n});\n\nexport const listCollectiblesWithLowestListingArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\tfilter: collectiblesFilterSchema.optional(),\n\tpage: pageSchema.optional(),\n});\n\nexport const listCollectiblesWithLowestListingReturnSchema = z.object({\n\tcollectibles: z.array(collectibleOrderSchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const listCollectiblesWithHighestOfferArgsSchema = z.object({\n\tcontractAddress: z.string(),\n\tfilter: collectiblesFilterSchema.optional(),\n\tpage: pageSchema.optional(),\n});\n\nexport const listCollectiblesWithHighestOfferReturnSchema = z.object({\n\tcollectibles: z.array(collectibleOrderSchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const syncOrderArgsSchema = z.object({\n\torder: orderSchema,\n});\n\nexport const syncOrdersArgsSchema = z.object({\n\torders: z.array(orderSchema),\n});\n\nexport const getOrdersArgsSchema = z.object({\n\tinput: z.array(getOrdersInputSchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const getOrdersReturnSchema = z.object({\n\torders: z.array(orderSchema),\n\tpage: pageSchema.optional(),\n});\n\nexport const collectionSchema = z.object({\n\tstatus: collectionStatusSchema,\n\tchainId: z.number(),\n\tcontractAddress: z.string(),\n\tcontractType: contractTypeSchema,\n\ttokenQuantityDecimals: z.number(),\n\tconfig: collectionConfigSchema,\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tdeletedAt: z.string().optional(),\n});\n\nexport const stepSchema = z.object({\n\tid: z.nativeEnum(StepType),\n\tdata: z.string().optional(),\n\tto: z.string().optional(),\n\tvalue: z.string().optional(),\n\tprice: z.string().optional(),\n\tsignature: signatureSchema.optional(),\n\tpost: postRequestSchema.optional(),\n\tmethod: z.string().optional(),\n\tendpoint: z.string().optional(),\n});\n\nexport const generateBuyTransactionReturnSchema = z.object({\n\tsteps: z.array(stepSchema),\n});\n\nexport const generateSellTransactionReturnSchema = z.object({\n\tsteps: z.array(stepSchema),\n});\n\nexport const generateListingTransactionReturnSchema = z.object({\n\tsteps: z.array(stepSchema),\n});\n\nexport const generateOfferTransactionReturnSchema = z.object({\n\tsteps: z.array(stepSchema),\n});\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\tQueryArgSchema,\n\tcollectableKeys,\n\tgetMetadataClient,\n} from '../_internal';\nimport { useConfig } from './useConfig';\n\nconst UseCollectibleSchema = z.object({\n\tchainId: z.number(),\n\tcollectionAddress: AddressSchema,\n\tcollectibleId: z.string().optional(),\n\tquery: QueryArgSchema,\n});\n\nexport type UseCollectibleArgs = z.infer<typeof UseCollectibleSchema>;\n\nexport type UseCollectibleReturn = Awaited<ReturnType<typeof fetchCollectible>>;\n\nconst fetchCollectible = async (\n\targs: UseCollectibleArgs,\n\tconfig: SdkConfig,\n) => {\n\tconst parsedArgs = UseCollectibleSchema.parse(args);\n\tconst metadataClient = getMetadataClient(config);\n\tconst tokenIds = parsedArgs.collectibleId ? [parsedArgs.collectibleId] : [];\n\n\treturn metadataClient\n\t\t.getTokenMetadata({\n\t\t\tchainID: parsedArgs.chainId.toString(),\n\t\t\tcontractAddress: parsedArgs.collectionAddress,\n\t\t\ttokenIDs: tokenIds,\n\t\t})\n\t\t.then((resp) => resp.tokenMetadata[0]);\n};\n\nexport const collectibleOptions = (\n\targs: UseCollectibleArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...collectableKeys.details, args, config],\n\t\tqueryFn: () => fetchCollectible(args, config),\n\t});\n};\n\nexport const useCollectible = (args: UseCollectibleArgs) => {\n\tconst config = useConfig();\n\treturn useQuery(collectibleOptions(args, config));\n};\n","import { useQuery } from '@tanstack/react-query';\nimport type { z } from 'zod';\nimport {\n\ttype UseCollectionSchema,\n\tcollectionOptions,\n\ttype fetchCollection,\n} from './options/collectionOptions';\nimport { useConfig } from './useConfig';\n\nexport type UseCollectionArgs = z.input<typeof UseCollectionSchema>;\n\nexport type UseCollectionReturn = Awaited<ReturnType<typeof fetchCollection>>;\n\nexport const useCollection = (args: UseCollectionArgs) => {\n\tconst config = useConfig();\n\treturn useQuery(collectionOptions(args, config));\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport { AddressSchema, QueryArgSchema, currencyKeys } from '../_internal';\nimport { useConfig } from './useConfig';\nimport { convertPriceToUSD } from './useConvertPriceToUSD';\n\nconst UseComparePricesArgsSchema = z.object({\n\tchainId: z.number(),\n\t// First price details\n\tpriceAmountRaw: z.string(),\n\tpriceCurrencyAddress: AddressSchema,\n\t// Second price details (to compare against)\n\tcompareToPriceAmountRaw: z.string(),\n\tcompareToPriceCurrencyAddress: AddressSchema,\n\tquery: QueryArgSchema,\n});\n\ntype UseComparePricesArgs = z.input<typeof UseComparePricesArgsSchema>;\n\nexport type UseComparePricesReturn = {\n\tpercentageDifference: number;\n\tpercentageDifferenceFormatted: string;\n\tstatus: 'above' | 'same' | 'below';\n};\n\nconst comparePrices = async (\n\targs: UseComparePricesArgs,\n\tconfig: SdkConfig,\n): Promise<UseComparePricesReturn> => {\n\tconst parsedArgs = UseComparePricesArgsSchema.parse(args);\n\tconst [priceUSD, compareToPriceUSD] = await Promise.all([\n\t\tconvertPriceToUSD(\n\t\t\t{\n\t\t\t\tchainId: parsedArgs.chainId,\n\t\t\t\tcurrencyAddress: parsedArgs.priceCurrencyAddress,\n\t\t\t\tamountRaw: parsedArgs.priceAmountRaw,\n\t\t\t\tquery: {},\n\t\t\t},\n\t\t\tconfig,\n\t\t),\n\t\tconvertPriceToUSD(\n\t\t\t{\n\t\t\t\tchainId: parsedArgs.chainId,\n\t\t\t\tcurrencyAddress: parsedArgs.compareToPriceCurrencyAddress,\n\t\t\t\tamountRaw: parsedArgs.compareToPriceAmountRaw,\n\t\t\t\tquery: {},\n\t\t\t},\n\t\t\tconfig,\n\t\t),\n\t]);\n\tconst difference = priceUSD.usdAmount - compareToPriceUSD.usdAmount;\n\n\tif (compareToPriceUSD.usdAmount === 0) {\n\t\tthrow new Error('Cannot compare to zero price');\n\t}\n\n\tconst percentageDifference = (difference / compareToPriceUSD.usdAmount) * 100;\n\tconst isAbove = percentageDifference > 0;\n\tconst isSame = percentageDifference === 0;\n\n\treturn {\n\t\tpercentageDifference,\n\t\tpercentageDifferenceFormatted: Math.abs(percentageDifference).toFixed(2),\n\t\tstatus: isAbove ? 'above' : isSame ? 'same' : 'below',\n\t};\n};\n\nexport const comparePricesOptions = (\n\targs: UseComparePricesArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...currencyKeys.conversion, 'compare', args],\n\t\tqueryFn: () => comparePrices(args, config),\n\t});\n};\n\n/**\n * Hook to compare prices between different currencies by converting both to USD\n * @param args - The arguments for the hook\n * @returns The percentage difference between the two prices\n * @example\n * ```ts\n * const { data } = useComparePrices({\n * chainId: 1,\n * priceAmountRaw: \"1000000000000000000\",\n * priceCurrencyAddress: \"0x0000000000000000000000000000000000000000\",\n * });\n *\n * console.log(data);\n * // { percentageDifference: 10, percentageDifferenceFormatted: \"10.00\", isAbove: true, isSame: false, isBelow: false }\n * ```\n */\nexport const useComparePrices = (args: UseComparePricesArgs) => {\n\tconst config = useConfig();\n\treturn useQuery(comparePricesOptions(args, config));\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { formatUnits } from 'viem';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\tQueryArgSchema,\n\tcurrencyKeys,\n\tgetQueryClient,\n} from '../_internal';\nimport { currenciesOptions } from '../queries/marketCurrencies';\nimport { useConfig } from './useConfig';\n\nconst UseConvertPriceToUSDArgsSchema = z.object({\n\tchainId: z.number(),\n\tcurrencyAddress: AddressSchema,\n\tamountRaw: z.string(),\n\tquery: QueryArgSchema,\n});\n\nexport type UseConvertPriceToUSDArgs = z.input<\n\ttypeof UseConvertPriceToUSDArgsSchema\n>;\n\nexport type UseConvertPriceToUSDReturn = {\n\tusdAmount: number;\n\tusdAmountFormatted: string;\n};\n\nexport const convertPriceToUSD = async (\n\targs: UseConvertPriceToUSDArgs,\n\tconfig: SdkConfig,\n): Promise<UseConvertPriceToUSDReturn> => {\n\tconst parsedArgs = UseConvertPriceToUSDArgsSchema.parse(args);\n\tconst queryClient = getQueryClient();\n\tconst currencies = await queryClient.fetchQuery(\n\t\tcurrenciesOptions(\n\t\t\t{\n\t\t\t\tchainId: parsedArgs.chainId,\n\t\t\t},\n\t\t\tconfig,\n\t\t),\n\t);\n\tconst currencyDetails = currencies.find(\n\t\t(c) =>\n\t\t\tc.contractAddress.toLowerCase() ===\n\t\t\tparsedArgs.currencyAddress.toLowerCase(),\n\t);\n\n\tif (!currencyDetails) {\n\t\tthrow new Error('Currency not found');\n\t}\n\n\tconst amountDecimal = Number(\n\t\tformatUnits(BigInt(parsedArgs.amountRaw), currencyDetails.decimals),\n\t);\n\tconst usdAmount = amountDecimal * currencyDetails.exchangeRate;\n\n\treturn {\n\t\tusdAmount,\n\t\tusdAmountFormatted: usdAmount.toFixed(2),\n\t};\n};\n\nexport const convertPriceToUSDOptions = (\n\targs: UseConvertPriceToUSDArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\t...args.query,\n\t\tqueryKey: [\n\t\t\t...currencyKeys.conversion,\n\t\t\targs.chainId,\n\t\t\targs.currencyAddress,\n\t\t\targs.amountRaw,\n\t\t],\n\t\tqueryFn: () => convertPriceToUSD(args, config),\n\t});\n};\n\n/**\n * Hook to convert a price amount from a specific currency to USD\n * @returns The price amount in USD and formatted USD amount\n * @example\n * ```ts\n * const { data } = useConvertPriceToUSD({\n * chainId: 1,\n * currencyAddress: \"0x0000000000000000000000000000000000000000\",\n * amountRaw: \"1000000000000000000\",\n * });\n *\n * console.log(data);\n * // { usdAmount: 1000, usdAmountFormatted: \"1000.00\" }\n * ```\n */\nexport const useConvertPriceToUSD = (args: UseConvertPriceToUSDArgs) => {\n\tconst config = useConfig();\n\treturn useQuery(convertPriceToUSDOptions(args, config));\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { type UseMarketCurrenciesArgs, currenciesOptions } from '../queries';\nimport { useConfig } from './useConfig';\n\nexport const useMarketCurrencies = (args: UseMarketCurrenciesArgs) => {\n\tconst config = useConfig();\n\treturn useQuery(currenciesOptions(args, config));\n};\n","import { queryOptions, skipToken, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\ttype Currency,\n\tQueryArgSchema,\n\tcurrencyKeys,\n\tgetMarketplaceClient,\n\tgetQueryClient,\n} from '../_internal';\nimport { useConfig } from './useConfig';\n\nconst UseCurrencyArgsSchema = z.object({\n\tchainId: z.number(),\n\tcurrencyAddress: AddressSchema.optional(),\n\tquery: QueryArgSchema,\n});\n\ntype UseCurrencyArgs = z.input<typeof UseCurrencyArgsSchema>;\n\nexport type UseCurrencyReturn = Currency | undefined;\n\nconst fetchCurrency = async (\n\tchainId: number,\n\tcurrencyAddress: string,\n\tconfig: SdkConfig,\n): Promise<Currency | undefined> => {\n\tconst queryClient = getQueryClient();\n\n\tlet currencies = queryClient.getQueryData([...currencyKeys.lists, chainId]) as\n\t\t| Currency[]\n\t\t| undefined;\n\n\tif (!currencies) {\n\t\tconst marketplaceClient = getMarketplaceClient(chainId, config);\n\t\tcurrencies = await marketplaceClient\n\t\t\t.listCurrencies()\n\t\t\t.then((resp) => resp.currencies);\n\t}\n\n\tif (!currencies?.length) {\n\t\tthrow new Error('No currencies returned');\n\t}\n\tconst currency = currencies.find(\n\t\t(currency) =>\n\t\t\tcurrency.contractAddress.toLowerCase() === currencyAddress.toLowerCase(),\n\t);\n\n\tif (!currency) {\n\t\tthrow new Error('Currency not found');\n\t}\n\n\treturn currency;\n};\n\nexport const currencyOptions = (args: UseCurrencyArgs, config: SdkConfig) => {\n\tconst { chainId, currencyAddress } = args;\n\n\treturn queryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...currencyKeys.details, args.chainId, args.currencyAddress],\n\t\tqueryFn:\n\t\t\tchainId && currencyAddress\n\t\t\t\t? () => fetchCurrency(chainId, currencyAddress, config)\n\t\t\t\t: skipToken,\n\t});\n};\n\nexport const useCurrency = (args: UseCurrencyArgs) => {\n\tconst config = useConfig();\n\treturn useQuery(currencyOptions(args, config));\n};\n","import type { PropertyFilter } from '@0xsequence/metadata';\nimport { queryOptions, useQuery } from '@tanstack/react-query';\nimport { FilterCondition, type SdkConfig } from '../../types';\nimport { compareAddress } from '../../utils';\nimport {\n\tcollectableKeys,\n\tgetMetadataClient,\n\tgetQueryClient,\n} from '../_internal';\nimport { marketplaceConfigOptions } from '../queries/marketplaceConfig';\nimport { useConfig } from './useConfig';\n\nexport type UseFiltersArgs = {\n\tchainId: number;\n\tcollectionAddress: string;\n\tshowAllFilters?: boolean;\n\texcludePropertyValues?: boolean;\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n};\n\nexport type UseFilterReturn = Awaited<ReturnType<typeof fetchFilters>>;\n\nexport const fetchFilters = async (args: UseFiltersArgs, config: SdkConfig) => {\n\tconst parsedArgs = args;\n\tconst metadataClient = getMetadataClient(config);\n\n\tconst filters = await metadataClient\n\t\t.getTokenMetadataPropertyFilters({\n\t\t\tchainID: parsedArgs.chainId.toString(),\n\t\t\tcontractAddress: parsedArgs.collectionAddress,\n\t\t\texcludeProperties: [],\n\t\t\texcludePropertyValues: parsedArgs.excludePropertyValues,\n\t\t})\n\t\t.then((resp) => resp.filters);\n\n\tif (args.showAllFilters) return filters;\n\n\tconst queryClient = getQueryClient();\n\tconst marketplaceConfig = await queryClient.fetchQuery(\n\t\tmarketplaceConfigOptions(config),\n\t);\n\tconst collectionFilters = marketplaceConfig.market.collections.find((c) =>\n\t\tcompareAddress(c.itemsAddress, parsedArgs.collectionAddress),\n\t)?.filterSettings;\n\n\tif (\n\t\t!collectionFilters?.exclusions ||\n\t\tcollectionFilters.exclusions.length === 0 ||\n\t\t!collectionFilters.filterOrder ||\n\t\tcollectionFilters.filterOrder.length === 0\n\t)\n\t\treturn filters;\n\n\tconst { filterOrder, exclusions } = collectionFilters;\n\n\tconst sortedFilters = filters.toSorted((a, b) => {\n\t\tconst aIndex =\n\t\t\tfilterOrder.indexOf(a.name) > -1\n\t\t\t\t? filterOrder.indexOf(a.name)\n\t\t\t\t: filterOrder.length;\n\t\tconst bIndex =\n\t\t\tfilterOrder.indexOf(b.name) > -1\n\t\t\t\t? filterOrder.indexOf(b.name)\n\t\t\t\t: filterOrder.length;\n\t\treturn aIndex - bIndex;\n\t});\n\n\tconst filteredResults = sortedFilters.reduce<PropertyFilter[]>(\n\t\t(acc, filter) => {\n\t\t\tconst exclusionRule = exclusions.find((rule) => rule.key === filter.name);\n\n\t\t\tif (!exclusionRule) {\n\t\t\t\tacc.push(filter);\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tif (exclusionRule.condition === FilterCondition.ENTIRE_KEY) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\texclusionRule.condition === FilterCondition.SPECIFIC_VALUE &&\n\t\t\t\texclusionRule.value\n\t\t\t) {\n\t\t\t\tconst filteredValues =\n\t\t\t\t\tfilter.values?.filter((value) => value !== exclusionRule.value) || [];\n\t\t\t\tif (filteredValues.length > 0) {\n\t\t\t\t\tacc.push({ ...filter, values: filteredValues });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn acc;\n\t\t},\n\t\t[],\n\t);\n\n\treturn filteredResults;\n};\n\nexport const filtersOptions = (args: UseFiltersArgs, config: SdkConfig) => {\n\treturn queryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...collectableKeys.filter, args, config],\n\t\tqueryFn: () => fetchFilters(args, config),\n\t});\n};\n\nexport const useFilters = (args: UseFiltersArgs) => {\n\tconst config = useConfig();\n\treturn useQuery(filtersOptions(args, config));\n};\n\nexport const useFiltersProgressive = (args: UseFiltersArgs) => {\n\tconst config = useConfig();\n\n\tconst namesQuery = useQuery(\n\t\tfiltersOptions({ ...args, excludePropertyValues: true }, config),\n\t);\n\n\tconst fullQuery = useQuery({\n\t\t...filtersOptions(args, config),\n\t\tplaceholderData: namesQuery.data,\n\t});\n\n\tconst isLoadingNames = namesQuery.isLoading;\n\tconst isFetchingValues = fullQuery.isPlaceholderData && fullQuery.isFetching;\n\n\treturn {\n\t\t...fullQuery,\n\t\tisFetchingValues,\n\t\tisLoadingNames,\n\t};\n};\n","import { useMemo } from 'react';\n\nimport {\n\tcreateSerializer,\n\tparseAsBoolean,\n\tparseAsJson,\n\tparseAsString,\n\tuseQueryState,\n} from 'nuqs';\nimport { type PropertyFilter, PropertyType } from '../_internal';\n\ninterface StringFilterValues {\n\ttype: PropertyType.STRING;\n\tvalues: string[];\n}\n\ninterface IntFilterValues {\n\ttype: PropertyType.INT;\n\tmin: number;\n\tmax: number;\n}\n\ntype FilterValues = StringFilterValues | IntFilterValues;\n\nconst validateFilters = (value: unknown): PropertyFilter[] => {\n\tif (!Array.isArray(value)) return [];\n\treturn value.filter(\n\t\t(f): f is PropertyFilter =>\n\t\t\ttypeof f === 'object' &&\n\t\t\ttypeof f.name === 'string' &&\n\t\t\tObject.values(PropertyType).includes(f.type),\n\t);\n};\n\nconst filtersParser = parseAsJson(validateFilters).withDefault([]);\nconst searchParser = parseAsString.withDefault('');\nconst listedOnlyParser = parseAsBoolean.withDefault(false);\n\nconst serialize = createSerializer(\n\t{\n\t\tfilters: filtersParser,\n\t\tsearch: searchParser,\n\t\tlistedOnly: listedOnlyParser,\n\t},\n\t{\n\t\turlKeys: {\n\t\t\tfilters: 'f',\n\t\t\tsearch: 'q',\n\t\t\tlistedOnly: 'l',\n\t\t},\n\t},\n);\n\nexport function useFilterState() {\n\tconst [filterOptions, setFilterOptions] = useQueryState(\n\t\t'filters',\n\t\tfiltersParser,\n\t);\n\tconst [searchText, setSearchText] = useQueryState('search', searchParser);\n\tconst [showListedOnly, setShowListedOnly] = useQueryState(\n\t\t'listedOnly',\n\t\tlistedOnlyParser,\n\t);\n\n\tconst helpers = useMemo(\n\t\t() => ({\n\t\t\tgetFilter: (name: string): PropertyFilter | undefined => {\n\t\t\t\treturn filterOptions?.find((f) => f.name === name);\n\t\t\t},\n\n\t\t\tgetFilterValues: (name: string): FilterValues | undefined => {\n\t\t\t\tconst filter = filterOptions?.find((f) => f.name === name);\n\t\t\t\tif (!filter) return undefined;\n\n\t\t\t\tif (filter.type === PropertyType.INT) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: PropertyType.INT,\n\t\t\t\t\t\tmin: filter.min ?? 0,\n\t\t\t\t\t\tmax: filter.max ?? 0,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\ttype: PropertyType.STRING,\n\t\t\t\t\tvalues: (filter.values as string[]) ?? [],\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tisFilterActive: (name: string): boolean => {\n\t\t\t\treturn !!filterOptions?.find((f) => f.name === name);\n\t\t\t},\n\n\t\t\tisStringValueSelected: (name: string, value: string): boolean => {\n\t\t\t\tconst filter = filterOptions?.find((f) => f.name === name);\n\t\t\t\tif (!filter || filter.type !== PropertyType.STRING) return false;\n\t\t\t\treturn (filter.values as string[])?.includes(value) ?? false;\n\t\t\t},\n\n\t\t\tisIntFilterActive: (name: string): boolean => {\n\t\t\t\tconst filter = filterOptions?.find((f) => f.name === name);\n\t\t\t\treturn !!filter && filter.type === PropertyType.INT;\n\t\t\t},\n\n\t\t\tgetIntFilterRange: (name: string): [number, number] | undefined => {\n\t\t\t\tconst filter = filterOptions?.find((f) => f.name === name);\n\t\t\t\tif (!filter || filter.type !== PropertyType.INT) return undefined;\n\t\t\t\treturn [filter.min ?? 0, filter.max ?? 0];\n\t\t\t},\n\n\t\t\tdeleteFilter: (name: string) => {\n\t\t\t\tconst otherFilters =\n\t\t\t\t\tfilterOptions?.filter((f) => !(f.name === name)) ?? [];\n\t\t\t\tsetFilterOptions(otherFilters);\n\t\t\t},\n\n\t\t\ttoggleStringFilterValue: (name: string, value: string) => {\n\t\t\t\tconst otherFilters =\n\t\t\t\t\tfilterOptions?.filter((f) => !(f.name === name)) ?? [];\n\t\t\t\tconst filter = filterOptions?.find((f) => f.name === name);\n\t\t\t\tconst existingValues =\n\t\t\t\t\tfilter?.type === PropertyType.STRING\n\t\t\t\t\t\t? ((filter.values as string[]) ?? [])\n\t\t\t\t\t\t: [];\n\n\t\t\t\tif (existingValues.includes(value)) {\n\t\t\t\t\tconst newValues = existingValues.filter((v) => v !== value);\n\t\t\t\t\tif (newValues.length === 0) {\n\t\t\t\t\t\tsetFilterOptions(otherFilters);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetFilterOptions([\n\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t{ name, type: PropertyType.STRING, values: newValues },\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tsetFilterOptions([\n\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\ttype: PropertyType.STRING,\n\t\t\t\t\t\t\tvalues: [...existingValues, value],\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tsetIntFilterValue: (name: string, min: number, max: number) => {\n\t\t\t\tif (min === max && min === 0) {\n\t\t\t\t\tconst otherFilters =\n\t\t\t\t\t\tfilterOptions?.filter((f) => !(f.name === name)) ?? [];\n\t\t\t\t\tsetFilterOptions(otherFilters);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst otherFilters =\n\t\t\t\t\tfilterOptions?.filter((f) => !(f.name === name)) ?? [];\n\t\t\t\tsetFilterOptions([\n\t\t\t\t\t...otherFilters,\n\t\t\t\t\t{ name, type: PropertyType.INT, min, max },\n\t\t\t\t]);\n\t\t\t},\n\n\t\t\tclearAllFilters: () => {\n\t\t\t\tvoid setShowListedOnly(false);\n\t\t\t\tvoid setFilterOptions([]);\n\t\t\t\tvoid setSearchText('');\n\t\t\t},\n\t\t}),\n\t\t[filterOptions, setFilterOptions, setShowListedOnly, setSearchText],\n\t);\n\n\treturn {\n\t\tfilterOptions,\n\t\tsearchText,\n\t\tshowListedOnly,\n\t\tsetFilterOptions,\n\t\tsetSearchText,\n\t\tsetShowListedOnly,\n\t\t...helpers,\n\t\tserialize,\n\t};\n}\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\tQueryArgSchema,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { useConfig } from './useConfig';\n\nconst UseFloorOrderSchema = z.object({\n\tchainId: z.number(),\n\tcollectionAddress: AddressSchema,\n\tquery: QueryArgSchema,\n});\n\nexport type UseFloorOrderArgs = z.infer<typeof UseFloorOrderSchema>;\n\nexport type UseFloorOrderReturn = Awaited<ReturnType<typeof fetchFloorOrder>>;\n\nconst fetchFloorOrder = async (args: UseFloorOrderArgs, config: SdkConfig) => {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\treturn marketplaceClient\n\t\t.getFloorOrder({ contractAddress: args.collectionAddress })\n\t\t.then((data) => data.collectible);\n};\n\nexport const floorOrderOptions = (\n\targs: UseFloorOrderArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\tqueryKey: [...collectableKeys.floorOrders, args, config],\n\t\tqueryFn: () => fetchFloorOrder(args, config),\n\t});\n};\n\nexport const useFloorOrder = (args: UseFloorOrderArgs) => {\n\tconst config = useConfig();\n\treturn useQuery(floorOrderOptions(args, config));\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { type UseHighestOfferArgs, highestOfferOptions } from '../queries';\nimport { useConfig } from './useConfig';\n\nexport function useHighestOffer(args: UseHighestOfferArgs) {\n\tconst config = useConfig();\n\treturn useQuery(highestOfferOptions(args, config));\n}\n","import { useInfiniteQuery } from '@tanstack/react-query';\nimport { ContractType } from '../../types/api-types';\nimport { type UseInventoryArgs, inventoryOptions } from '../queries/inventory';\nimport { useConfig } from './useConfig';\nimport { useMarketplaceConfig } from './useMarketplaceConfig';\n\nexport function useInventory(args: UseInventoryArgs) {\n\tconst config = useConfig();\n\tconst marketplaceConfig = useMarketplaceConfig();\n\tconst isLaos721 =\n\t\tmarketplaceConfig.data?.market.collections.find(\n\t\t\t(c) => c.itemsAddress === args.collectionAddress,\n\t\t)?.contractType === ContractType.LAOSERC721;\n\n\treturn useInfiniteQuery(inventoryOptions({ ...args, isLaos721 }, config));\n}\n","import { useInfiniteQuery } from '@tanstack/react-query';\nimport { ContractType } from '../../types/api-types';\nimport { listBalancesOptions } from '../queries/listBalances';\nimport type { UseListBalancesArgs } from '../queries/listBalances';\nimport { useConfig } from './useConfig';\nimport { useMarketplaceConfig } from './useMarketplaceConfig';\n\n/**\n * Hook to fetch a list of token balances with pagination support\n *\n * @param args - The arguments for fetching the balances\n * @returns Infinite query result containing the balances data\n *\n * @example\n * ```tsx\n * const { data, isLoading, error, fetchNextPage } = useListBalances({\n * chainId: 1,\n * accountAddress: '0x123...',\n * includeMetadata: true,\n * query: {\n * enabled: true,\n * refetchInterval: 10000,\n * }\n * });\n * ```\n */\nexport function useListBalances(args: UseListBalancesArgs) {\n\tconst config = useConfig();\n\tconst { data: marketplaceConfig } = useMarketplaceConfig();\n\n\tconst isLaos721 =\n\t\tmarketplaceConfig?.market.collections.find(\n\t\t\t(collection) => collection.itemsAddress === args.contractAddress,\n\t\t)?.contractType === ContractType.LAOSERC721;\n\n\tif (isLaos721) {\n\t\targs.isLaos721 = true;\n\t}\n\n\treturn useInfiniteQuery(listBalancesOptions(args, config));\n}\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport type { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport { collectableKeys, getMarketplaceClient } from '../_internal';\nimport type {\n\tgetListCollectibleActivitiesArgsSchema,\n\tgetListCollectibleActivitiesReturnSchema,\n} from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nexport type UseListCollectibleActivitiesArgs = z.infer<\n\ttypeof getListCollectibleActivitiesArgsSchema\n>;\n\nexport type UseListCollectibleActivitiesReturn = z.infer<\n\ttypeof getListCollectibleActivitiesReturnSchema\n>;\n\nconst fetchCollectibleActivities = async (\n\targs: UseListCollectibleActivitiesArgs,\n\tconfig: SdkConfig,\n) => {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\treturn marketplaceClient\n\t\t.listCollectibleActivities({\n\t\t\tcontractAddress: args.collectionAddress,\n\t\t\ttokenId: args.tokenId,\n\t\t\tpage: args.query?.enabled\n\t\t\t\t? {\n\t\t\t\t\t\tpage: args.query.page ?? 1,\n\t\t\t\t\t\tpageSize: args.query.pageSize ?? 10,\n\t\t\t\t\t\tsort: args.query.sort,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t})\n\t\t.then((data) => ({\n\t\t\tactivities: data.activities,\n\t\t\tpage: data.page,\n\t\t}));\n};\n\nexport const listCollectibleActivitiesOptions = (\n\targs: UseListCollectibleActivitiesArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\tqueryKey: [...collectableKeys.collectibleActivities, args, config],\n\t\tqueryFn: () => fetchCollectibleActivities(args, config),\n\t\tenabled: args.query?.enabled ?? true,\n\t});\n};\n\nexport const useListCollectibleActivities = (\n\targs: UseListCollectibleActivitiesArgs,\n) => {\n\tconst config = useConfig();\n\treturn useQuery(listCollectibleActivitiesOptions(args, config));\n};\n","import { useInfiniteQuery } from '@tanstack/react-query';\nimport { ContractType } from '../../types/api-types';\nimport { listCollectiblesOptions } from '../queries/listCollectibles';\nimport type { UseListCollectiblesArgs } from '../queries/listCollectibles';\nimport { useConfig } from './useConfig';\nimport { useMarketplaceConfig } from './useMarketplaceConfig';\n\n/**\n * Hook to fetch a list of collectibles with pagination support\n *\n * @param args - The arguments for fetching the collectibles\n * @returns Infinite query result containing the collectibles data including orders\n *\n * @example\n * ```tsx\n * const { data, isLoading, error, fetchNextPage } = useListCollectibles({\n * chainId: 1,\n * collectionAddress: '0x123...',\n * includeMetadata: true,\n * query: {\n * enabled: true,\n * refetchInterval: 10000,\n * }\n * });\n * ```\n */\nexport function useListCollectibles(args: UseListCollectiblesArgs) {\n\tconst config = useConfig();\n\tconst { data: marketplaceConfig } = useMarketplaceConfig();\n\n\tconst isLaos721 =\n\t\tmarketplaceConfig?.market.collections.find(\n\t\t\t(collection) => collection.itemsAddress === args.collectionAddress,\n\t\t)?.contractType === ContractType.LAOSERC721;\n\n\tif (isLaos721) {\n\t\targs.isLaos721 = true;\n\t}\n\n\treturn useInfiniteQuery(listCollectiblesOptions(args, config));\n}\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { Page, SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\ttype ListCollectiblesArgs,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { listCollectiblesArgsSchema } from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nconst UseListCollectiblesPaginatedArgsSchema = listCollectiblesArgsSchema\n\t.omit({\n\t\tcontractAddress: true,\n\t})\n\t.extend({\n\t\tcollectionAddress: AddressSchema,\n\t\tchainId: z.number(),\n\t\tquery: z\n\t\t\t.object({\n\t\t\t\tenabled: z.boolean().optional(),\n\t\t\t\tpage: z.number().optional().default(1),\n\t\t\t\tpageSize: z.number().optional().default(30),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.default({}),\n\t});\n\nexport type UseListCollectiblesPaginatedArgs = z.infer<\n\ttypeof UseListCollectiblesPaginatedArgsSchema\n>;\n\nexport type UseListCollectiblesPaginatedReturn = Awaited<\n\tReturnType<typeof fetchCollectiblesPaginated>\n>;\n\nconst fetchCollectiblesPaginated = async (\n\targs: UseListCollectiblesPaginatedArgs,\n\tmarketplaceClient: Awaited<ReturnType<typeof getMarketplaceClient>>,\n) => {\n\tconst parsedArgs = UseListCollectiblesPaginatedArgsSchema.parse(args);\n\tconst page: Page = {\n\t\tpage: parsedArgs.query?.page ?? 1,\n\t\tpageSize: parsedArgs.query?.pageSize ?? 30,\n\t};\n\n\tconst arg = {\n\t\t...parsedArgs,\n\t\tcontractAddress: parsedArgs.collectionAddress,\n\t\tpage,\n\t} as ListCollectiblesArgs;\n\n\treturn marketplaceClient.listCollectibles(arg);\n};\n\nexport const listCollectiblesPaginatedOptions = (\n\targs: UseListCollectiblesPaginatedArgs,\n\tconfig: SdkConfig,\n) => {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\treturn queryOptions({\n\t\tqueryKey: [...collectableKeys.lists, 'paginated', args],\n\t\tqueryFn: () => fetchCollectiblesPaginated(args, marketplaceClient),\n\t\tenabled: args.query?.enabled ?? true,\n\t});\n};\n\nexport const useListCollectiblesPaginated = (\n\targs: UseListCollectiblesPaginatedArgs,\n) => {\n\tconst config = useConfig();\n\treturn useQuery(listCollectiblesPaginatedOptions(args, config));\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport type { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport { getMarketplaceClient } from '../_internal';\nimport { collectionKeys } from '../_internal/api';\nimport type {\n\tgetListCollectionActivitiesArgsSchema,\n\tgetListCollectionActivitiesReturnSchema,\n} from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nexport type UseListCollectionActivitiesArgs = z.infer<\n\ttypeof getListCollectionActivitiesArgsSchema\n>;\n\nexport type UseListCollectionActivitiesReturn = z.infer<\n\ttypeof getListCollectionActivitiesReturnSchema\n>;\n\nconst fetchListCollectionActivities = async (\n\targs: UseListCollectionActivitiesArgs,\n\tconfig: SdkConfig,\n) => {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\treturn marketplaceClient\n\t\t.listCollectionActivities({\n\t\t\tcontractAddress: args.collectionAddress,\n\t\t\tpage: args.query?.enabled\n\t\t\t\t? {\n\t\t\t\t\t\tpage: args.query.page ?? 1,\n\t\t\t\t\t\tpageSize: args.query.pageSize ?? 10,\n\t\t\t\t\t\tsort: args.query.sort,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t})\n\t\t.then((data) => ({\n\t\t\tactivities: data.activities,\n\t\t\tpage: data.page,\n\t\t}));\n};\n\nexport const listCollectionActivitiesOptions = (\n\targs: UseListCollectionActivitiesArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\tqueryKey: [...collectionKeys.collectionActivities, args, config],\n\t\tqueryFn: () => fetchListCollectionActivities(args, config),\n\t\tenabled: args.query?.enabled ?? true,\n\t});\n};\n\nexport const useListCollectionActivities = (\n\targs: UseListCollectionActivitiesArgs,\n) => {\n\tconst config = useConfig();\n\treturn useQuery(listCollectionActivitiesOptions(args, config));\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\ttype ListOffersForCollectibleArgs,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { listOffersForCollectibleArgsSchema } from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nconst UseListOffersForCollectibleArgsSchema = listOffersForCollectibleArgsSchema\n\t.extend({\n\t\tchainId: z.number(),\n\t\tcollectionAddress: z.string(),\n\t\tcollectibleId: z.string(),\n\t})\n\t.omit({ contractAddress: true, tokenId: true });\n\ntype UseListOffersForCollectibleArgs = z.infer<\n\ttypeof UseListOffersForCollectibleArgsSchema\n>;\n\nexport type UseListOffersForCollectibleReturn = Awaited<\n\tReturnType<typeof fetchListOffersForCollectible>\n>;\n\nconst fetchListOffersForCollectible = async (\n\tconfig: SdkConfig,\n\targs: UseListOffersForCollectibleArgs,\n) => {\n\tconst arg = {\n\t\tcontractAddress: args.collectionAddress,\n\t\ttokenId: args.collectibleId,\n\t\tfilter: args.filter,\n\t\tpage: args.page,\n\t} satisfies ListOffersForCollectibleArgs;\n\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\treturn marketplaceClient.listCollectibleOffers(arg);\n};\n\nexport const listOffersForCollectibleOptions = (\n\targs: UseListOffersForCollectibleArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\tqueryKey: [...collectableKeys.offers, args, config],\n\t\tqueryFn: () => fetchListOffersForCollectible(config, args),\n\t});\n};\n\nexport const useListOffersForCollectible = (\n\targs: UseListOffersForCollectibleArgs,\n) => {\n\tconst config = useConfig();\n\n\treturn useQuery(listOffersForCollectibleOptions(args, config));\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\tQueryArgSchema,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { countOffersForCollectibleArgsSchema } from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nconst UseCountOffersForCollectibleArgsSchema =\n\tcountOffersForCollectibleArgsSchema\n\t\t.omit({\n\t\t\tcontractAddress: true,\n\t\t\ttokenId: true,\n\t\t})\n\t\t.extend({\n\t\t\tcollectionAddress: AddressSchema,\n\t\t\tcollectibleId: z.string(),\n\t\t\tchainId: z.number(),\n\t\t\tquery: QueryArgSchema,\n\t\t});\n\nexport type UseCountOffersForCollectibleArgs = z.infer<\n\ttypeof UseCountOffersForCollectibleArgsSchema\n>;\n\nexport type UseCountOffersForCollectibleReturn = Awaited<\n\tReturnType<typeof fetchCountOffersForCollectible>\n>;\n\nconst fetchCountOffersForCollectible = async (\n\targs: UseCountOffersForCollectibleArgs,\n\tconfig: SdkConfig,\n) => {\n\tconst parsedArgs = UseCountOffersForCollectibleArgsSchema.parse(args);\n\tconst marketplaceClient = getMarketplaceClient(parsedArgs.chainId, config);\n\treturn marketplaceClient.getCountOfOffersForCollectible({\n\t\t...parsedArgs,\n\t\tcontractAddress: parsedArgs.collectionAddress,\n\t\ttokenId: parsedArgs.collectibleId,\n\t});\n};\n\nexport const countOffersForCollectibleOptions = (\n\targs: UseCountOffersForCollectibleArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...collectableKeys.offersCount, args, config],\n\t\tqueryFn: () => fetchCountOffersForCollectible(args, config),\n\t});\n};\n\nexport const useCountOffersForCollectible = (\n\targs: UseCountOffersForCollectibleArgs,\n) => {\n\tconst config = useConfig();\n\treturn useQuery(countOffersForCollectibleOptions(args, config));\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\ttype ListListingsForCollectibleArgs,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { listListingsForCollectibleArgsSchema } from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nconst UseListListingsForCollectibleArgsSchema =\n\tlistListingsForCollectibleArgsSchema\n\t\t.extend({\n\t\t\tchainId: z.number(),\n\t\t\tcollectionAddress: z.string(),\n\t\t\tcollectibleId: z.string(),\n\t\t})\n\t\t.omit({ contractAddress: true, tokenId: true });\n\ntype UseListListingsForCollectibleArgs = z.infer<\n\ttypeof UseListListingsForCollectibleArgsSchema\n>;\n\nexport type UseListListingsForCollectibleReturn = Awaited<\n\tReturnType<typeof fetchListListingsForCollectible>\n>;\n\nconst fetchListListingsForCollectible = async (\n\tconfig: SdkConfig,\n\targs: UseListListingsForCollectibleArgs,\n) => {\n\tconst arg = {\n\t\tcontractAddress: args.collectionAddress,\n\t\ttokenId: args.collectibleId,\n\t\tfilter: args.filter,\n\t\tpage: args.page,\n\t} satisfies ListListingsForCollectibleArgs;\n\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\treturn marketplaceClient.listCollectibleListings(arg);\n};\n\nexport const listListingsForCollectibleOptions = (\n\targs: UseListListingsForCollectibleArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\tqueryKey: [...collectableKeys.listings, args, config],\n\t\tqueryFn: () => fetchListListingsForCollectible(config, args),\n\t});\n};\n\nexport const useListListingsForCollectible = (\n\targs: UseListListingsForCollectibleArgs,\n) => {\n\tconst config = useConfig();\n\n\treturn useQuery(listListingsForCollectibleOptions(args, config));\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\tQueryArgSchema,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { countListingsForCollectibleArgsSchema } from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nconst UseCountListingsForCollectibleArgsSchema =\n\tcountListingsForCollectibleArgsSchema\n\t\t.omit({\n\t\t\tcontractAddress: true,\n\t\t\ttokenId: true,\n\t\t})\n\t\t.extend({\n\t\t\tcollectionAddress: AddressSchema,\n\t\t\tcollectibleId: z.string(),\n\t\t\tchainId: z.number(),\n\t\t\tquery: QueryArgSchema,\n\t\t});\n\nexport type UseCountListingsForCollectibleArgs = z.infer<\n\ttypeof UseCountListingsForCollectibleArgsSchema\n>;\n\nexport type UseCountListingsForCollectibleReturn = Awaited<\n\tReturnType<typeof fetchCountListingsForCollectible>\n>;\n\nconst fetchCountListingsForCollectible = async (\n\targs: UseCountListingsForCollectibleArgs,\n\tconfig: SdkConfig,\n) => {\n\tconst parsedArgs = UseCountListingsForCollectibleArgsSchema.parse(args);\n\tconst marketplaceClient = getMarketplaceClient(parsedArgs.chainId, config);\n\treturn marketplaceClient.getCountOfListingsForCollectible({\n\t\t...parsedArgs,\n\t\tcontractAddress: parsedArgs.collectionAddress,\n\t\ttokenId: parsedArgs.collectibleId,\n\t});\n};\n\nexport const countListingsForCollectibleOptions = (\n\targs: UseCountListingsForCollectibleArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...collectableKeys.listingsCount, args, config],\n\t\tqueryFn: () => fetchCountListingsForCollectible(args, config),\n\t});\n};\n\nexport const useCountListingsForCollectible = (\n\targs: UseCountListingsForCollectibleArgs,\n) => {\n\tconst config = useConfig();\n\treturn useQuery(countListingsForCollectibleOptions(args, config));\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { type UseLowestListingArgs, lowestListingOptions } from '../queries';\nimport { useConfig } from './useConfig';\n\nexport function useLowestListing(args: UseLowestListingArgs) {\n\tconst config = useConfig();\n\treturn useQuery(lowestListingOptions(args, config));\n}\n","import { useReadContract } from 'wagmi';\nimport { z } from 'zod';\nimport { EIP2981_ABI } from '../../utils';\nimport { AddressSchema, QueryArgSchema, collectableKeys } from '../_internal';\n\nconst UseRoyaltySchema = z.object({\n\tchainId: z.number(),\n\tcollectionAddress: AddressSchema,\n\tcollectibleId: z.string(),\n\tquery: QueryArgSchema.optional(),\n});\n\ntype UseRoyaltyArgs = z.infer<typeof UseRoyaltySchema>;\n\nexport const useRoyalty = (args: UseRoyaltyArgs) => {\n\tconst { chainId, collectionAddress, collectibleId, query } = args;\n\tconst scopeKey = `${collectableKeys.royaltyPercentage.join('.')}-${chainId}-${collectionAddress}-${collectibleId}`;\n\n\tconst contractResult = useReadContract({\n\t\tscopeKey: scopeKey,\n\t\tabi: EIP2981_ABI,\n\t\taddress: collectionAddress,\n\t\tfunctionName: 'royaltyInfo',\n\t\targs: [BigInt(collectibleId), BigInt(100)],\n\t\tchainId,\n\t\tquery: query,\n\t});\n\n\tconst [recipient, percentage] = contractResult.data ?? [];\n\tconst formattedData =\n\t\trecipient && percentage\n\t\t\t? {\n\t\t\t\t\tpercentage,\n\t\t\t\t\trecipient,\n\t\t\t\t}\n\t\t\t: null;\n\n\treturn {\n\t\t...contractResult,\n\t\tdata: formattedData,\n\t};\n};\n","import { useMutation } from '@tanstack/react-query';\nimport { useConfig } from './useConfig';\n\nexport type UseGenerateListingTransactionArgs = {\n\tchainId: number;\n\tonSuccess?: (data?: Step[]) => void;\n};\n\nimport type { SdkConfig } from '../../types';\nimport { dateToUnixTime } from '../../utils/date';\nimport {\n\ttype CreateReq,\n\ttype GenerateListingTransactionArgs,\n\ttype Step,\n\tgetMarketplaceClient,\n} from '../_internal';\n\nexport type CreateReqWithDateExpiry = Omit<CreateReq, 'expiry'> & {\n\texpiry: Date;\n};\n\nexport type GenerateListingTransactionProps = Omit<\n\tGenerateListingTransactionArgs,\n\t'listing'\n> & {\n\tlisting: CreateReqWithDateExpiry;\n};\n\nexport const generateListingTransaction = async (\n\tparams: GenerateListingTransactionProps,\n\tconfig: SdkConfig,\n\tchainId: number,\n) => {\n\tconst args = {\n\t\t...params,\n\t\tlisting: {\n\t\t\t...params.listing,\n\t\t\texpiry: dateToUnixTime(params.listing.expiry),\n\t\t},\n\t} satisfies GenerateListingTransactionArgs;\n\tconst marketplaceClient = getMarketplaceClient(chainId, config);\n\treturn (await marketplaceClient.generateListingTransaction(args)).steps;\n};\n\nexport const useGenerateListingTransaction = (\n\tparams: UseGenerateListingTransactionArgs,\n) => {\n\tconst config = useConfig();\n\n\tconst { mutate, mutateAsync, ...result } = useMutation({\n\t\tonSuccess: params.onSuccess,\n\t\tmutationFn: (args: GenerateListingTransactionProps) =>\n\t\t\tgenerateListingTransaction(args, config, params.chainId),\n\t});\n\n\treturn {\n\t\t...result,\n\t\tgenerateListingTransaction: mutate,\n\t\tgenerateListingTransactionAsync: mutateAsync,\n\t};\n};\n","export const dateToUnixTime = (date: Date) =>\n\tMath.floor(date.getTime() / 1000).toString();\n","import { useMutation } from '@tanstack/react-query';\nimport type { SdkConfig } from '../../types';\nimport { dateToUnixTime } from '../../utils/date';\nimport {\n\ttype CreateReq,\n\ttype GenerateOfferTransactionArgs,\n\ttype Step,\n\ttype WalletKind,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { useWallet } from '../_internal/wallet/useWallet';\nimport { useConfig } from './useConfig';\n\nexport type UseGenerateOfferTransactionArgs = {\n\tchainId: number;\n\tonSuccess?: (data?: Step[]) => void;\n};\n\ntype CreateReqWithDateExpiry = Omit<CreateReq, 'expiry'> & {\n\texpiry: Date;\n};\n\nexport type GenerateOfferTransactionProps = Omit<\n\tGenerateOfferTransactionArgs,\n\t'offer'\n> & {\n\toffer: CreateReqWithDateExpiry;\n};\n\nexport const generateOfferTransaction = async (\n\tparams: GenerateOfferTransactionProps,\n\tconfig: SdkConfig,\n\tchainId: number,\n\twalletKind?: WalletKind,\n) => {\n\tconst args = {\n\t\t...params,\n\t\toffer: { ...params.offer, expiry: dateToUnixTime(params.offer.expiry) },\n\t\twalletType: walletKind,\n\t} satisfies GenerateOfferTransactionArgs;\n\tconst marketplaceClient = getMarketplaceClient(chainId, config);\n\treturn (await marketplaceClient.generateOfferTransaction(args)).steps;\n};\n\nexport const useGenerateOfferTransaction = (\n\tparams: UseGenerateOfferTransactionArgs,\n) => {\n\tconst config = useConfig();\n\tconst { wallet } = useWallet();\n\n\tconst { mutate, mutateAsync, ...result } = useMutation({\n\t\tonSuccess: params.onSuccess,\n\t\tmutationFn: (args: GenerateOfferTransactionProps) =>\n\t\t\tgenerateOfferTransaction(\n\t\t\t\targs,\n\t\t\t\tconfig,\n\t\t\t\tparams.chainId,\n\t\t\t\twallet?.walletKind,\n\t\t\t),\n\t});\n\n\treturn {\n\t\t...result,\n\t\tgenerateOfferTransaction: mutate,\n\t\tgenerateOfferTransactionAsync: mutateAsync,\n\t};\n};\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport {\n\tuseAccount,\n\tuseChainId,\n\tusePublicClient,\n\tuseSwitchChain,\n\tuseWalletClient,\n} from 'wagmi';\nimport { useConfig } from '../../hooks';\nimport { type WalletInstance, wallet } from './wallet';\n\ntype UseWalletReturn = {\n\twallet: WalletInstance | null | undefined;\n\tisLoading: boolean;\n\tisError: boolean;\n};\n\nexport const useWallet = (): UseWalletReturn => {\n\tconst { chains } = useSwitchChain();\n\tconst {\n\t\tdata: walletClient,\n\t\tisLoading: wagmiWalletIsLoading,\n\t\tisError: wagmiWalletIsError,\n\t} = useWalletClient();\n\tconst { connector, isConnected, isConnecting } = useAccount();\n\tconst sdkConfig = useConfig();\n\tconst chainId = useChainId();\n\tconst publicClient = usePublicClient();\n\n\tconst { data, isLoading, isError } = useQuery({\n\t\tqueryKey: ['wallet', chainId, connector?.uid],\n\t\tqueryFn:\n\t\t\twalletClient && connector && isConnected && publicClient\n\t\t\t\t? () => {\n\t\t\t\t\t\treturn wallet({\n\t\t\t\t\t\t\twallet: walletClient,\n\t\t\t\t\t\t\tchains,\n\t\t\t\t\t\t\tconnector,\n\t\t\t\t\t\t\tsdkConfig,\n\t\t\t\t\t\t\tpublicClient,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t: skipToken,\n\t\tstaleTime: Number.POSITIVE_INFINITY,\n\t});\n\n\treturn {\n\t\twallet: data,\n\t\tisLoading: isLoading || isConnecting || wagmiWalletIsLoading,\n\t\tisError: isError || wagmiWalletIsError,\n\t};\n};\n","import type { TransactionReceipt } from '@0xsequence/indexer';\nimport {\n\ttype Account,\n\ttype Address,\n\tBaseError,\n\ttype Chain,\n\ttype Hex,\n\ttype PublicClient,\n\tTransactionReceiptNotFoundError,\n\ttype TypedDataDomain,\n\tUserRejectedRequestError as ViemUserRejectedRequestError,\n\ttype WalletClient as ViemWalletClient,\n\tWaitForTransactionReceiptTimeoutError,\n\tcustom,\n\terc20Abi,\n\terc721Abi,\n\thexToBigInt,\n\tisHex,\n} from 'viem';\nimport type { Connector } from 'wagmi';\nimport type { SwitchChainErrorType } from 'wagmi/actions';\nimport {\n\tSEQUENCE_MARKET_V1_ADDRESS,\n\tSEQUENCE_MARKET_V2_ADDRESS,\n} from '../../../consts';\nimport type { SdkConfig } from '../../../types';\nimport { ERC1155_ABI } from '../../../utils';\nimport {\n\tChainSwitchError,\n\tTransactionConfirmationError,\n\tTransactionExecutionError,\n\tTransactionSignatureError,\n\tUserRejectedRequestError,\n} from '../../../utils/_internal/error/transaction';\nimport { StepType, WalletKind, getIndexerClient } from '../api';\nimport { createLogger } from '../logger';\nimport type { SignatureStep, TransactionStep } from '../utils';\n\ninterface WalletClient extends Omit<ViemWalletClient, 'account'> {\n\taccount: Account;\n}\n\nexport interface WalletInstance {\n\ttransport: ReturnType<typeof custom>;\n\tisWaaS: boolean;\n\twalletKind: WalletKind;\n\tgetChainId: () => Promise<number>;\n\tswitchChain: (chainId: number) => Promise<void>;\n\taddress: () => Promise<Hex>;\n\thandleSignMessageStep: (stepItem: SignatureStep) => Promise<Hex | undefined>;\n\thandleSendTransactionStep: (\n\t\tchainId: number,\n\t\tstepItem: TransactionStep,\n\t) => Promise<Hex>;\n\thandleConfirmTransactionStep: (\n\t\ttxHash: Hex,\n\t\tchainId: number,\n\t) => Promise<TransactionReceipt>;\n\thasTokenApproval: (args: {\n\t\ttokenType: 'ERC20' | 'ERC721' | 'ERC1155';\n\t\tcontractAddress: Address;\n\t\tspender: Address | 'sequenceMarketV1' | 'sequenceMarketV2';\n\t}) => Promise<bigint | boolean>;\n\tpublicClient: PublicClient;\n}\n\nconst isSequenceWallet = (connector: Connector) =>\n\tconnector.id === 'sequence' || connector.id === 'sequence-waas';\n\nexport const wallet = ({\n\twallet,\n\tchains,\n\tconnector,\n\tsdkConfig,\n\tpublicClient,\n}: {\n\twallet: WalletClient;\n\tchains: readonly [Chain, ...Chain[]];\n\tconnector: Connector;\n\tsdkConfig: SdkConfig;\n\tpublicClient: PublicClient;\n}): WalletInstance => {\n\tconst logger = createLogger('Wallet');\n\n\tconst walletInstance = {\n\t\ttransport: custom(wallet.transport),\n\t\tisWaaS: connector.id.endsWith('waas'),\n\t\twalletKind: isSequenceWallet(connector)\n\t\t\t? WalletKind.sequence\n\t\t\t: WalletKind.unknown,\n\t\tgetChainId: wallet.getChainId,\n\t\taddress: async () => {\n\t\t\tlet address = wallet.account?.address;\n\t\t\tif (!address) {\n\t\t\t\t[address] = await wallet.getAddresses();\n\t\t\t}\n\t\t\treturn address;\n\t\t},\n\t\tswitchChain: async (chainId: number) => {\n\t\t\tlogger.debug('Switching chain', { targetChainId: chainId });\n\n\t\t\ttry {\n\t\t\t\tawait wallet.switchChain({\n\t\t\t\t\tid: chainId,\n\t\t\t\t});\n\t\t\t\tlogger.info('Chain switch successful', { chainId });\n\t\t\t\treturn;\n\t\t\t} catch (e) {\n\t\t\t\tconst error = e as SwitchChainErrorType;\n\t\t\t\tlogger.error('Chain switch failed', error);\n\n\t\t\t\tswitch (error.name) {\n\t\t\t\t\tcase 'SwitchChainNotSupportedError':\n\t\t\t\t\t\tthrow new ChainSwitchError(await wallet.getChainId(), chainId);\n\t\t\t\t\tcase 'UserRejectedRequestError':\n\t\t\t\t\t\tthrow new UserRejectedRequestError();\n\t\t\t\t\tcase 'ChainNotConfiguredError':\n\t\t\t\t\t\treturn;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new ChainSwitchError(await wallet.getChainId(), chainId);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thandleSignMessageStep: async (stepItem: SignatureStep) => {\n\t\t\ttry {\n\t\t\t\tif (stepItem.id === StepType.signEIP191) {\n\t\t\t\t\tlogger.debug('Signing with EIP-191', { data: stepItem.data });\n\t\t\t\t\tconst message = isHex(stepItem.data)\n\t\t\t\t\t\t? { raw: stepItem.data }\n\t\t\t\t\t\t: stepItem.data;\n\t\t\t\t\treturn await wallet.signMessage({\n\t\t\t\t\t\taccount: wallet.account,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t\t// biome-ignore lint/style/noUselessElse: <explanation>\n\t\t\t\t} else if (stepItem.id === StepType.signEIP712) {\n\t\t\t\t\tlogger.debug('Signing with EIP-712', {\n\t\t\t\t\t\tdomain: stepItem.domain,\n\t\t\t\t\t\ttypes: stepItem.signature?.types,\n\t\t\t\t\t});\n\t\t\t\t\treturn await wallet.signTypedData({\n\t\t\t\t\t\taccount: wallet.account,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\tdomain: stepItem.signature!.domain as TypedDataDomain,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\ttypes: stepItem.signature!.types,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\tprimaryType: stepItem.signature!.primaryType,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\tmessage: stepItem.signature!.value,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconst error = e as TransactionSignatureError;\n\t\t\t\tlogger.error('Signature failed', error);\n\n\t\t\t\tif (error.cause instanceof BaseError) {\n\t\t\t\t\tconst viemError = error.cause as BaseError;\n\t\t\t\t\tif (viemError instanceof ViemUserRejectedRequestError) {\n\t\t\t\t\t\tthrow new UserRejectedRequestError();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow new TransactionSignatureError(stepItem.id, error as Error);\n\t\t\t}\n\t\t},\n\t\thandleSendTransactionStep: async (\n\t\t\tchainId: number,\n\t\t\tstepItem: TransactionStep,\n\t\t) => {\n\t\t\tlogger.debug('Sending transaction', {\n\t\t\t\tchainId,\n\t\t\t\tto: stepItem.to,\n\t\t\t\tvalue: stepItem.value,\n\t\t\t});\n\n\t\t\tconst chain = chains.find((chain) => chain.id === chainId);\n\t\t\ttry {\n\t\t\t\treturn await wallet.sendTransaction({\n\t\t\t\t\tchain,\n\t\t\t\t\tdata: stepItem.data,\n\t\t\t\t\taccount: wallet.account,\n\t\t\t\t\tto: stepItem.to,\n\t\t\t\t\tvalue: hexToBigInt(stepItem.value || '0x0'),\n\t\t\t\t\t...(stepItem.maxFeePerGas && {\n\t\t\t\t\t\tmaxFeePerGas: hexToBigInt(stepItem.maxFeePerGas),\n\t\t\t\t\t}),\n\t\t\t\t\t...(stepItem.maxPriorityFeePerGas && {\n\t\t\t\t\t\tmaxPriorityFeePerGas: hexToBigInt(stepItem.maxPriorityFeePerGas),\n\t\t\t\t\t}),\n\t\t\t\t\t...(stepItem.gas && {\n\t\t\t\t\t\tgas: hexToBigInt(stepItem.gas),\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tconst error = e as TransactionExecutionError;\n\t\t\t\tlogger.error('Transaction failed', error);\n\n\t\t\t\tif (error.cause instanceof BaseError) {\n\t\t\t\t\tconst viemError = error.cause as BaseError;\n\t\t\t\t\tif (viemError instanceof ViemUserRejectedRequestError) {\n\t\t\t\t\t\tthrow new UserRejectedRequestError();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow new TransactionExecutionError(stepItem.id, error as Error);\n\t\t\t}\n\t\t},\n\t\thandleConfirmTransactionStep: async (txHash: Hex, chainId: number) => {\n\t\t\tlogger.debug('Confirming transaction', { txHash, chainId });\n\t\t\ttry {\n\t\t\t\tconst receipt = await awaitTransactionReceipt({\n\t\t\t\t\ttxHash,\n\t\t\t\t\tchainId,\n\t\t\t\t\tsdkConfig,\n\t\t\t\t});\n\t\t\t\tlogger.info('Transaction confirmed', { txHash, receipt });\n\t\t\t\treturn receipt;\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Transaction confirmation failed', error);\n\n\t\t\t\tthrow new TransactionConfirmationError(txHash, error as Error);\n\t\t\t}\n\t\t},\n\t\thasTokenApproval: async ({\n\t\t\ttokenType,\n\t\t\tcontractAddress,\n\t\t\tspender,\n\t\t}: {\n\t\t\ttokenType: 'ERC20' | 'ERC721' | 'ERC1155';\n\t\t\tcontractAddress: Address;\n\t\t\tspender: Address | 'sequenceMarketV1' | 'sequenceMarketV2';\n\t\t}) => {\n\t\t\tconst walletAddress = await walletInstance.address();\n\t\t\tconst spenderAddress =\n\t\t\t\tspender === 'sequenceMarketV1'\n\t\t\t\t\t? SEQUENCE_MARKET_V1_ADDRESS\n\t\t\t\t\t: spender === 'sequenceMarketV2'\n\t\t\t\t\t\t? SEQUENCE_MARKET_V2_ADDRESS\n\t\t\t\t\t\t: spender;\n\n\t\t\tswitch (tokenType) {\n\t\t\t\tcase 'ERC20':\n\t\t\t\t\treturn await publicClient.readContract({\n\t\t\t\t\t\taddress: contractAddress as Hex,\n\t\t\t\t\t\tabi: erc20Abi,\n\t\t\t\t\t\tfunctionName: 'allowance',\n\t\t\t\t\t\targs: [walletAddress, spenderAddress],\n\t\t\t\t\t});\n\t\t\t\tcase 'ERC721':\n\t\t\t\t\treturn await publicClient.readContract({\n\t\t\t\t\t\taddress: contractAddress as Hex,\n\t\t\t\t\t\tabi: erc721Abi,\n\t\t\t\t\t\tfunctionName: 'isApprovedForAll',\n\t\t\t\t\t\targs: [walletAddress, spenderAddress],\n\t\t\t\t\t});\n\t\t\t\tcase 'ERC1155':\n\t\t\t\t\treturn await publicClient.readContract({\n\t\t\t\t\t\taddress: contractAddress as Hex,\n\t\t\t\t\t\tabi: ERC1155_ABI,\n\t\t\t\t\t\tfunctionName: 'isApprovedForAll',\n\t\t\t\t\t\targs: [walletAddress, spenderAddress],\n\t\t\t\t\t});\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('Unsupported contract type for approval checking');\n\t\t\t}\n\t\t},\n\t\tpublicClient,\n\t};\n\n\treturn walletInstance;\n};\n\nconst ONE_MIN = 60 * 1000;\nconst THREE_MIN = 3 * ONE_MIN;\n\nconst awaitTransactionReceipt = async ({\n\ttxHash,\n\tchainId,\n\tsdkConfig,\n\ttimeout = THREE_MIN,\n}: {\n\ttxHash: Hex;\n\tchainId: number;\n\tsdkConfig: SdkConfig;\n\ttimeout?: number;\n}) => {\n\tconst indexer = getIndexerClient(chainId, sdkConfig);\n\treturn Promise.race([\n\t\tnew Promise<TransactionReceipt>((resolve, reject) => {\n\t\t\tindexer.subscribeReceipts(\n\t\t\t\t{\n\t\t\t\t\tfilter: {\n\t\t\t\t\t\ttxnHash: txHash,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tonMessage: ({ receipt }) => {\n\t\t\t\t\t\tresolve(receipt);\n\t\t\t\t\t},\n\t\t\t\t\tonError: () => {\n\t\t\t\t\t\treject(TransactionReceiptNotFoundError);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t}),\n\t\tnew Promise<TransactionReceipt>((_, reject) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\treject(WaitForTransactionReceiptTimeoutError);\n\t\t\t}, timeout);\n\t\t}),\n\t]);\n};\n","export class TransactionLogger {\n\tconstructor(\n\t\tprivate readonly context: string,\n\t\tprivate readonly enabled: boolean = true,\n\t) {}\n\n\tprivate formatData(data: unknown): unknown {\n\t\tif (data instanceof Error) {\n\t\t\treturn {\n\t\t\t\tname: data.name,\n\t\t\t\tmessage: data.message,\n\t\t\t\tcause:\n\t\t\t\t\tdata.cause instanceof Error\n\t\t\t\t\t\t? this.formatData(data.cause)\n\t\t\t\t\t\t: data.cause,\n\t\t\t\tstack: data.stack?.split('\\n').slice(0, 3),\n\t\t\t};\n\t\t}\n\n\t\tif (Array.isArray(data)) {\n\t\t\treturn data.map((item) => this.formatData(item));\n\t\t}\n\n\t\tif (typeof data === 'object' && data !== null) {\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries(data).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tthis.formatData(value),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprivate log(\n\t\tlevel: 'debug' | 'error' | 'info',\n\t\tmessage: string,\n\t\tdata?: unknown,\n\t) {\n\t\tif (!this.enabled) return;\n\t\tconsole[level](\n\t\t\t`[${this.context}] ${message}`,\n\t\t\tdata ? this.formatData(data) : '',\n\t\t);\n\t}\n\n\tdebug(message: string, data?: unknown) {\n\t\tthis.log('debug', message, data);\n\t}\n\n\terror(message: string, error: unknown) {\n\t\tthis.log('error', message, error);\n\t}\n\n\tinfo(message: string, data?: unknown) {\n\t\tthis.log('info', message, data);\n\t}\n\n\tstate(from: string, to: string) {\n\t\tthis.info(`State transition: ${from} -> ${to}`);\n\t}\n}\n\nexport const createLogger = (context: string, enabled = true) =>\n\tnew TransactionLogger(context, enabled);\n","import { useMutation } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\ttype GenerateSellTransactionArgs,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { stepSchema } from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nconst UserGeneratSellTransactionArgsSchema = z.object({\n\tchainId: z.number(),\n\tonSuccess: z.function().args(stepSchema.array().optional()).optional(),\n});\n\ntype UseGenerateSellTransactionArgs = z.infer<\n\ttypeof UserGeneratSellTransactionArgsSchema\n>;\n\nexport const generateSellTransaction = async (\n\targs: GenerateSellTransactionArgs,\n\tconfig: SdkConfig,\n\tchainId: number,\n) => {\n\tconst marketplaceClient = getMarketplaceClient(chainId, config);\n\treturn marketplaceClient\n\t\t.generateSellTransaction(args)\n\t\t.then((data) => data.steps);\n};\n\nexport const useGenerateSellTransaction = (\n\tparams: UseGenerateSellTransactionArgs,\n) => {\n\tconst config = useConfig();\n\n\tconst { mutate, mutateAsync, ...result } = useMutation({\n\t\tonSuccess: params.onSuccess,\n\t\tmutationFn: (args: GenerateSellTransactionArgs) =>\n\t\t\tgenerateSellTransaction(args, config, params.chainId),\n\t});\n\n\treturn {\n\t\t...result,\n\t\tgenerateSellTransaction: mutate,\n\t\tgenerateSellTransactionAsync: mutateAsync,\n\t};\n};\n","import { useMutation } from '@tanstack/react-query';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\ttype GenerateCancelTransactionArgs,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { stepSchema } from '../_internal/api/zod-schema';\nimport { useConfig } from './useConfig';\n\nconst UserGenerateCancelTransactionArgsSchema = z.object({\n\tchainId: z.number(),\n\tonSuccess: z.function().args(stepSchema.array().optional()).optional(),\n});\n\ntype UseGenerateCancelTransactionArgs = z.infer<\n\ttypeof UserGenerateCancelTransactionArgsSchema\n>;\n\nexport const generateCancelTransaction = async (\n\targs: GenerateCancelTransactionArgs,\n\tconfig: SdkConfig,\n\tchainId: number,\n) => {\n\tconst marketplaceClient = getMarketplaceClient(chainId, config);\n\treturn marketplaceClient\n\t\t.generateCancelTransaction(args)\n\t\t.then((data) => data.steps);\n};\n\nexport const useGenerateCancelTransaction = (\n\tparams: UseGenerateCancelTransactionArgs,\n) => {\n\tconst config = useConfig();\n\n\tconst { mutate, mutateAsync, ...result } = useMutation({\n\t\tonSuccess: params.onSuccess,\n\t\tmutationFn: (args: GenerateCancelTransactionArgs) =>\n\t\t\tgenerateCancelTransaction(args, config, params.chainId),\n\t});\n\n\treturn {\n\t\t...result,\n\t\tgenerateCancelTransaction: mutate,\n\t\tgenerateCancelTransactionAsync: mutateAsync,\n\t};\n};\n","import { type Abi, type Address, type Hex, erc721Abi } from 'viem';\nimport { useAccount, useWriteContract } from 'wagmi';\nimport { ERC1155_ABI } from '../../utils';\nimport { NoWalletConnectedError } from '../../utils/_internal/error/transaction';\nimport type { ContractType } from '../_internal';\n\ninterface BaseTransferParams {\n\tchainId: number;\n\tcollectionAddress: Hex;\n\ttokenId: string;\n\treceiverAddress: Address;\n}\n\ninterface ERC721TransferParams extends BaseTransferParams {\n\tcontractType: ContractType.ERC721;\n}\n\ninterface ERC1155TransferParams extends BaseTransferParams {\n\tcontractType: ContractType.ERC1155;\n\tquantity: string;\n}\n\nexport type TransferTokensParams = ERC721TransferParams | ERC1155TransferParams;\n\nconst prepareTransferConfig = (\n\tparams: TransferTokensParams,\n\taccountAddress: Address,\n) => {\n\tif (params.contractType === 'ERC721') {\n\t\treturn {\n\t\t\tabi: erc721Abi as Abi,\n\t\t\taddress: params.collectionAddress,\n\t\t\tfunctionName: 'safeTransferFrom',\n\t\t\targs: [\n\t\t\t\taccountAddress,\n\t\t\t\tparams.receiverAddress,\n\t\t\t\tBigInt(params.tokenId),\n\t\t\t] as const,\n\t\t} as const;\n\t}\n\n\treturn {\n\t\tabi: ERC1155_ABI as Abi,\n\t\taddress: params.collectionAddress,\n\t\tfunctionName: 'safeTransferFrom',\n\t\targs: [\n\t\t\taccountAddress,\n\t\t\tparams.receiverAddress,\n\t\t\tBigInt(params.tokenId),\n\t\t\tparams.quantity,\n\t\t\t'0x', // data\n\t\t] as const,\n\t};\n};\n\nexport const useTransferTokens = () => {\n\tconst { address: accountAddress } = useAccount();\n\tconst {\n\t\twriteContractAsync,\n\t\tdata: hash,\n\t\tisPending,\n\t\tisError,\n\t\tisSuccess,\n\t} = useWriteContract();\n\n\tconst transferTokensAsync = async (params: TransferTokensParams) => {\n\t\tif (!accountAddress) {\n\t\t\tthrow new NoWalletConnectedError();\n\t\t}\n\n\t\tconst config = prepareTransferConfig(params, accountAddress);\n\t\treturn await writeContractAsync(config);\n\t};\n\n\treturn {\n\t\ttransferTokensAsync,\n\t\thash,\n\t\ttransferring: isPending,\n\t\ttransferFailed: isError,\n\t\ttransferSuccess: isSuccess,\n\t};\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { z } from 'zod';\nimport type { SdkConfig } from '../../types';\nimport {\n\tAddressSchema,\n\tMarketplaceKind,\n\tQueryArgSchema,\n\tgetMarketplaceClient,\n} from '../_internal';\nimport { useConfig } from './useConfig';\n\nconst UseCheckoutOptionsSchema = z.object({\n\tchainId: z.number(),\n\torders: z.array(\n\t\tz.object({\n\t\t\tcollectionAddress: AddressSchema,\n\t\t\torderId: z.string(),\n\t\t\tmarketplace: z.nativeEnum(MarketplaceKind),\n\t\t}),\n\t),\n\tquery: QueryArgSchema,\n});\n\nexport type UseCheckoutOptionsArgs = z.infer<typeof UseCheckoutOptionsSchema>;\n\nexport type UseCheckoutOptionsReturn = Awaited<\n\tReturnType<typeof fetchCheckoutOptions>\n>;\n\nconst fetchCheckoutOptions = async (\n\targs: UseCheckoutOptionsArgs & { walletAddress: Hex },\n\tconfig: SdkConfig,\n) => {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\treturn marketplaceClient.checkoutOptionsMarketplace({\n\t\twallet: args.walletAddress,\n\t\torders: args.orders.map((order) => ({\n\t\t\tcontractAddress: order.collectionAddress,\n\t\t\torderId: order.orderId,\n\t\t\tmarketplace: order.marketplace,\n\t\t})),\n\t\tadditionalFee: 0, //TODO: add additional fee\n\t});\n};\n\nexport const checkoutOptionsOptions = (\n\targs: UseCheckoutOptionsArgs & { walletAddress: Hex },\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\tqueryKey: ['checkoutOptions', args],\n\t\tqueryFn: () => fetchCheckoutOptions(args, config),\n\t});\n};\n\nexport const useCheckoutOptions = (args: UseCheckoutOptionsArgs) => {\n\tconst { address } = useAccount();\n\tconst config = useConfig();\n\treturn useQuery(\n\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\tcheckoutOptionsOptions({ walletAddress: address!, ...args }, config),\n\t);\n};\n","import { useQuery } from '@tanstack/react-query';\nimport type { MarketplaceType } from '../../types/new-marketplace-types';\nimport { listCollectionsOptions } from '../queries/listCollections';\nimport { useConfig } from './useConfig';\nimport { useMarketplaceConfig } from './useMarketplaceConfig';\n\ntype UseListCollectionsArgs = {\n\tmarketplaceType?: MarketplaceType;\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n};\n\nexport const useListCollections = (args: UseListCollectionsArgs = {}) => {\n\tconst config = useConfig();\n\tconst { data: marketplaceConfig } = useMarketplaceConfig();\n\n\treturn useQuery({\n\t\t...args.query,\n\t\t...listCollectionsOptions({\n\t\t\tmarketplaceType: args.marketplaceType,\n\t\t\tmarketplaceConfig,\n\t\t\tconfig,\n\t\t}),\n\t});\n};\n","import type { ContractInfo } from '@0xsequence/metadata';\nimport { queryOptions, skipToken } from '@tanstack/react-query';\nimport type { SdkConfig } from '../../types';\nimport type {\n\tMarketCollection,\n\tMarketplaceConfig,\n\tMarketplaceType,\n\tShopCollection,\n} from '../../types/new-marketplace-types';\nimport { compareAddress } from '../../utils';\nimport { collectionKeys, getMetadataClient } from '../_internal';\n\nconst allCollections = (marketplaceConfig: MarketplaceConfig) => {\n\treturn [\n\t\t...marketplaceConfig.market.collections,\n\t\t...marketplaceConfig.shop.collections,\n\t];\n};\n\nconst fetchListCollections = async ({\n\tmarketplaceType,\n\tmarketplaceConfig,\n\tconfig,\n}: {\n\tmarketplaceType?: MarketplaceType;\n\tmarketplaceConfig: MarketplaceConfig;\n\tconfig: SdkConfig;\n}) => {\n\tconst metadataClient = getMetadataClient(config);\n\n\tlet collections = allCollections(marketplaceConfig);\n\n\tif (!collections?.length) {\n\t\treturn [];\n\t}\n\n\tif (marketplaceType) {\n\t\tcollections = collections.filter(\n\t\t\t(collection) => collection.marketplaceType === marketplaceType,\n\t\t);\n\t}\n\n\t// Group collections by chainId\n\tconst collectionsByChain = collections.reduce<Record<string, string[]>>(\n\t\t(acc, curr) => {\n\t\t\tconst { chainId, itemsAddress } = curr;\n\t\t\tif (!acc[chainId]) {\n\t\t\t\tacc[chainId] = [];\n\t\t\t}\n\t\t\tacc[chainId].push(itemsAddress);\n\t\t\treturn acc;\n\t\t},\n\t\t{},\n\t);\n\n\t// Fetch collections for each chain\n\tconst promises = Object.entries(collectionsByChain).map(\n\t\t([chainId, addresses]) =>\n\t\t\tmetadataClient\n\t\t\t\t.getContractInfoBatch({\n\t\t\t\t\tchainID: chainId,\n\t\t\t\t\tcontractAddresses: addresses,\n\t\t\t\t})\n\t\t\t\t.then((resp) => Object.values(resp.contractInfoMap)),\n\t);\n\n\tconst settled = await Promise.allSettled(promises);\n\tconst results = settled\n\t\t.filter(\n\t\t\t(r): r is PromiseFulfilledResult<ContractInfo[]> =>\n\t\t\t\tr.status === 'fulfilled',\n\t\t)\n\t\t.flatMap((r) => r.value);\n\n\tconst collectionsWithMetadata = collections\n\t\t.map((collection) => {\n\t\t\tconst metadata = results.find((result) =>\n\t\t\t\tcompareAddress(result.address, collection.itemsAddress),\n\t\t\t);\n\t\t\treturn { collection, metadata };\n\t\t})\n\t\t.filter(\n\t\t\t(\n\t\t\t\titem,\n\t\t\t): item is {\n\t\t\t\tcollection: MarketCollection | ShopCollection;\n\t\t\t\tmetadata: ContractInfo;\n\t\t\t} => item.metadata !== undefined,\n\t\t)\n\t\t.map(({ collection, metadata }) => ({\n\t\t\t...collection,\n\t\t\t...metadata,\n\t\t}));\n\n\treturn collectionsWithMetadata;\n};\n\nexport const listCollectionsOptions = ({\n\tmarketplaceType,\n\tmarketplaceConfig,\n\tconfig,\n}: {\n\tmarketplaceType?: MarketplaceType;\n\tmarketplaceConfig: MarketplaceConfig | undefined;\n\tconfig: SdkConfig;\n}) => {\n\treturn queryOptions({\n\t\tqueryKey: [...collectionKeys.list, marketplaceType],\n\t\tqueryFn: marketplaceConfig\n\t\t\t? () =>\n\t\t\t\t\tfetchListCollections({\n\t\t\t\t\t\tmarketplaceType,\n\t\t\t\t\t\tmarketplaceConfig,\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t})\n\t\t\t: skipToken,\n\t});\n};\n","'use client';\nimport { useWaasFeeOptions } from '@0xsequence/connect';\nimport { useEffect, useState } from 'react';\nimport type { MarketplaceKind } from '../../types';\nimport { useAutoSelectFeeOption } from './useAutoSelectFeeOption';\nimport { useCancelTransactionSteps } from './useCancelTransactionSteps';\n\ninterface UseCancelOrderArgs {\n\tcollectionAddress: string;\n\tchainId: number;\n\tonSuccess?: ({ hash, orderId }: { hash?: string; orderId?: string }) => void;\n\tonError?: (error: Error) => void;\n}\n\nexport type TransactionStep = {\n\texist: boolean;\n\tisExecuting: boolean;\n\texecute: () => Promise<void>;\n};\n\nexport const useCancelOrder = ({\n\tcollectionAddress,\n\tchainId,\n\tonSuccess,\n\tonError,\n}: UseCancelOrderArgs) => {\n\tconst [steps, setSteps] = useState<TransactionStep>({\n\t\texist: false,\n\t\tisExecuting: false,\n\t\texecute: () => Promise.resolve(),\n\t});\n\tconst [cancellingOrderId, setCancellingOrderId] = useState<string | null>(\n\t\tnull,\n\t);\n\tconst [pendingFeeOptionConfirmation, confirmPendingFeeOption] =\n\t\tuseWaasFeeOptions();\n\tconst autoSelectOptionPromise = useAutoSelectFeeOption({\n\t\tpendingFeeOptionConfirmation: pendingFeeOptionConfirmation\n\t\t\t? {\n\t\t\t\t\tid: pendingFeeOptionConfirmation.id,\n\t\t\t\t\toptions: pendingFeeOptionConfirmation.options?.map((opt) => ({\n\t\t\t\t\t\t...opt,\n\t\t\t\t\t\ttoken: {\n\t\t\t\t\t\t\t...opt.token,\n\t\t\t\t\t\t\tcontractAddress: opt.token.contractAddress || null,\n\t\t\t\t\t\t\tdecimals: opt.token.decimals || 0,\n\t\t\t\t\t\t\ttokenID: opt.token.tokenID || null,\n\t\t\t\t\t\t},\n\t\t\t\t\t})),\n\t\t\t\t\tchainId,\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tid: '',\n\t\t\t\t\toptions: undefined,\n\t\t\t\t\tchainId,\n\t\t\t\t},\n\t\tenabled: !!pendingFeeOptionConfirmation,\n\t});\n\n\tuseEffect(() => {\n\t\tautoSelectOptionPromise.then((res) => {\n\t\t\tif (pendingFeeOptionConfirmation?.id && res.selectedOption) {\n\t\t\t\tconfirmPendingFeeOption(\n\t\t\t\t\tpendingFeeOptionConfirmation.id,\n\t\t\t\t\tres.selectedOption.token.contractAddress,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}, [\n\t\tautoSelectOptionPromise,\n\t\tconfirmPendingFeeOption,\n\t\tpendingFeeOptionConfirmation,\n\t]);\n\n\tconst { cancelOrder: cancelOrderBase } = useCancelTransactionSteps({\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tonSuccess: (result) => {\n\t\t\tsetCancellingOrderId(null);\n\t\t\tonSuccess?.(result);\n\t\t},\n\t\tonError: (error) => {\n\t\t\tsetCancellingOrderId(null);\n\t\t\tonError?.(error);\n\t\t},\n\t\tsetSteps,\n\t});\n\n\tconst cancelOrder = async (params: {\n\t\torderId: string;\n\t\tmarketplace: MarketplaceKind;\n\t}) => {\n\t\tsetCancellingOrderId(params.orderId);\n\t\treturn cancelOrderBase(params);\n\t};\n\n\treturn {\n\t\tcancelOrder,\n\t\tisExecuting: steps.isExecuting,\n\t\tcancellingOrderId,\n\t};\n};\n","'use client';\n\nimport { Button, Modal, Spinner, Text } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport type { SwitchChainError } from 'viem';\nimport { useSwitchChain } from 'wagmi';\nimport { getPresentableChainName } from '../../../../../../utils/network';\nimport AlertMessage from '../alertMessage';\nimport { MODAL_OVERLAY_PROPS } from '../consts';\nimport { switchChainModal$ } from './store';\n\nexport type ShowSwitchChainModalArgs = {\n\tchainIdToSwitchTo: number;\n\tonSuccess?: () => void;\n\tonError?: (error: SwitchChainError) => void;\n\tonClose?: () => void;\n};\n\nexport const useSwitchChainModal = () => {\n\treturn {\n\t\tshow: (args: ShowSwitchChainModalArgs) => switchChainModal$.open(args),\n\t\tclose: () => switchChainModal$.delete(),\n\t\tisSwitching$: switchChainModal$.state.isSwitching,\n\t};\n};\n\nconst SwitchChainModal = observer(() => {\n\tconst chainIdToSwitchTo = switchChainModal$.state.chainIdToSwitchTo.get();\n\tconst isSwitching$ = switchChainModal$.state.isSwitching;\n\tconst chainName = chainIdToSwitchTo\n\t\t? getPresentableChainName(chainIdToSwitchTo)\n\t\t: '';\n\tconst { switchChainAsync } = useSwitchChain();\n\n\tasync function handleSwitchChain() {\n\t\tisSwitching$.set(true);\n\n\t\ttry {\n\t\t\tif (!chainIdToSwitchTo) return;\n\t\t\tawait switchChainAsync({ chainId: Number(chainIdToSwitchTo) });\n\n\t\t\tif (\n\t\t\t\tswitchChainModal$.state.onSuccess.get() &&\n\t\t\t\ttypeof switchChainModal$.state.onSuccess.get() === 'function'\n\t\t\t) {\n\t\t\t\tswitchChainModal$.state.onSuccess();\n\t\t\t}\n\n\t\t\tswitchChainModal$.delete();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\tswitchChainModal$.state.onError.get() &&\n\t\t\t\ttypeof switchChainModal$.state.onError.get() === 'function'\n\t\t\t) {\n\t\t\t\tswitchChainModal$.state.onError.get()?.(error as SwitchChainError);\n\t\t\t}\n\t\t} finally {\n\t\t\tisSwitching$.set(false);\n\t\t}\n\t}\n\n\tconst handleClose = () => {\n\t\tif (\n\t\t\tswitchChainModal$.state.onClose &&\n\t\t\ttypeof switchChainModal$.state.onClose === 'function'\n\t\t) {\n\t\t\tswitchChainModal$.state.onClose();\n\t\t}\n\t\tswitchChainModal$.delete();\n\t};\n\n\tif (!chainIdToSwitchTo) return null;\n\n\treturn (\n\t\t<Modal\n\t\t\tisDismissible={true}\n\t\t\tonClose={handleClose}\n\t\t\tdisableAnimation\n\t\t\tsize=\"sm\"\n\t\t\toverlayProps={MODAL_OVERLAY_PROPS}\n\t\t>\n\t\t\t<div className=\"grid flex-col gap-6 p-7\">\n\t\t\t\t<Text className=\"text-xl\" fontWeight=\"bold\" color=\"text100\">\n\t\t\t\t\tWrong network\n\t\t\t\t</Text>\n\n\t\t\t\t<AlertMessage\n\t\t\t\t\ttype=\"warning\"\n\t\t\t\t\tmessage={`You need to switch to ${chainName} network before completing the transaction`}\n\t\t\t\t/>\n\n\t\t\t\t<Button\n\t\t\t\t\tclassName={`${\n\t\t\t\t\t\tisSwitching$.get()\n\t\t\t\t\t\t\t? 'flex w-[147px] items-center justify-center [&>div]:justify-center'\n\t\t\t\t\t\t\t: 'w-[147px]'\n\t\t\t\t\t} flex justify-self-end`}\n\t\t\t\t\tname=\"switch-chain\"\n\t\t\t\t\tid=\"switch-chain-button\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tisSwitching$.get() ? (\n\t\t\t\t\t\t\t<div data-testid=\"switch-chain-spinner\">\n\t\t\t\t\t\t\t\t<Spinner className=\"spinner\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t'Switch Network'\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tpending={isSwitching$.get()}\n\t\t\t\t\tshape=\"square\"\n\t\t\t\t\tonClick={handleSwitchChain}\n\t\t\t\t\tdata-testid=\"switch-chain-button\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n});\n\nexport default SwitchChainModal;\n","import { Text, WarningIcon } from '@0xsequence/design-system';\nimport SvgInfoIcon from '../../../../icons/InfoIcon';\n\ntype AlertMessageProps = {\n\tmessage: string;\n\ttype: 'warning' | 'info';\n};\n\nexport default function AlertMessage({ message, type }: AlertMessageProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={`flex items-center justify-between gap-3 rounded-xl p-4 ${\n\t\t\t\ttype === 'warning'\n\t\t\t\t\t? 'bg-[hsla(39,71%,40%,0.3)]'\n\t\t\t\t\t: 'bg-[hsla(247,100%,75%,0.3)]'\n\t\t\t}`}\n\t\t>\n\t\t\t<Text className=\"font-body text-sm\" color=\"white\" fontWeight=\"medium\">\n\t\t\t\t{message}\n\t\t\t</Text>\n\n\t\t\t{type === 'warning' && <WarningIcon size=\"sm\" color=\"white\" />}\n\t\t\t{type === 'info' && <SvgInfoIcon size=\"sm\" color=\"white\" />}\n\t\t</div>\n\t);\n}\n","const MODAL_WIDTH = '360px';\n\nconst MODAL_OVERLAY_PROPS = {\n\tstyle: {\n\t\tbackground: 'hsla(0, 0%, 15%, 0.9)',\n\t},\n};\n\nconst MODAL_CONTENT_PROPS = {\n\tstyle: {\n\t\twidth: MODAL_WIDTH,\n\t\theight: 'auto',\n\t},\n};\n\nexport { MODAL_OVERLAY_PROPS, MODAL_CONTENT_PROPS };\n","import { observable } from '@legendapp/state';\nimport type { SwitchChainError } from 'viem';\nimport type { ShowSwitchChainModalArgs } from '.';\n\nexport interface SwitchChainModalState {\n\tisOpen: boolean;\n\topen: (args: ShowSwitchChainModalArgs) => void;\n\tclose: () => void;\n\tstate: {\n\t\tchainIdToSwitchTo: number | undefined;\n\t\tisSwitching: boolean;\n\t\tonSuccess: (() => void) | undefined;\n\t\tonError: undefined | ((error: SwitchChainError) => void);\n\t\tonClose: (() => void) | undefined;\n\t};\n}\n\nexport const initialState: SwitchChainModalState = {\n\tisOpen: false,\n\topen: ({ chainIdToSwitchTo, onError, onSuccess, onClose }) => {\n\t\tswitchChainModal$.state.set({\n\t\t\t...switchChainModal$.state.get(),\n\t\t\tchainIdToSwitchTo,\n\t\t\tonError,\n\t\t\tonSuccess,\n\t\t\tonClose,\n\t\t});\n\t\tswitchChainModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tswitchChainModal$.isOpen.set(false);\n\t},\n\tstate: {\n\t\tchainIdToSwitchTo: undefined,\n\t\tonError: undefined,\n\t\tonSuccess: undefined,\n\t\tonClose: undefined,\n\t\tisSwitching: false,\n\t},\n};\n\nexport const switchChainModal$ = observable(initialState);\n","import type { QueryClient } from '@tanstack/react-query';\nimport {\n\ttype GetCountOfListingsForCollectibleReturn,\n\ttype GetCountOfOffersForCollectibleReturn,\n\ttype ListListingsForCollectibleReturn,\n\ttype ListOffersForCollectibleReturn,\n\tcollectableKeys,\n} from '../../_internal';\n\nconst SECOND = 1000;\n\ninterface OptimisticCancelUpdatesParams {\n\torderId: string;\n\tqueryClient: QueryClient;\n}\n\nexport const updateQueriesOnCancel = ({\n\torderId,\n\tqueryClient,\n}: OptimisticCancelUpdatesParams) => {\n\tqueryClient.setQueriesData(\n\t\t{ queryKey: collectableKeys.offersCount, exact: false },\n\t\t(oldData: GetCountOfOffersForCollectibleReturn | undefined) => {\n\t\t\tif (!oldData) return { count: 0 };\n\t\t\treturn { count: Math.max(0, oldData.count - 1) };\n\t\t},\n\t);\n\n\tconsole.log('query client ', queryClient, 'orderId', orderId);\n\n\t// remove the offer with matching orderId\n\tqueryClient.setQueriesData(\n\t\t{ queryKey: collectableKeys.offers, exact: false },\n\t\t(oldData: ListOffersForCollectibleReturn | undefined) => {\n\t\t\tif (!oldData || !oldData.offers) return oldData;\n\t\t\treturn {\n\t\t\t\t...oldData,\n\t\t\t\toffers: oldData.offers.filter((offer) => offer.orderId !== orderId),\n\t\t\t};\n\t\t},\n\t);\n\n\t// 2 seconds is enough time for new data to be fetched\n\tsetTimeout(() => {\n\t\tqueryClient.invalidateQueries({\n\t\t\tqueryKey: collectableKeys.highestOffers,\n\t\t\texact: false,\n\t\t});\n\t}, 2 * SECOND);\n\n\tqueryClient.setQueriesData(\n\t\t{ queryKey: collectableKeys.listingsCount, exact: false },\n\t\t(oldData: GetCountOfListingsForCollectibleReturn | undefined) => {\n\t\t\tif (!oldData) return { count: 0 };\n\t\t\treturn { count: Math.max(0, oldData.count - 1) };\n\t\t},\n\t);\n\n\tqueryClient.setQueriesData(\n\t\t{ queryKey: collectableKeys.listings, exact: false },\n\t\t(oldData: ListListingsForCollectibleReturn | undefined) => {\n\t\t\tif (!oldData || !oldData.listings) return oldData;\n\t\t\treturn {\n\t\t\t\t...oldData,\n\t\t\t\tlistings: oldData.listings.filter(\n\t\t\t\t\t(listing) => listing.orderId !== orderId,\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t);\n\n\t// 2 seconds is enough time for new data to be fetched\n\tsetTimeout(() => {\n\t\tqueryClient.invalidateQueries({\n\t\t\tqueryKey: collectableKeys.lowestListings,\n\t\t\texact: false,\n\t\t});\n\t}, 2 * SECOND);\n};\n\nexport const invalidateQueriesOnCancel = ({\n\tqueryClient,\n}: {\n\tqueryClient: QueryClient;\n}) => {\n\tqueryClient.invalidateQueries({\n\t\tqueryKey: collectableKeys.offers,\n\t\texact: false,\n\t});\n\n\tqueryClient.invalidateQueries({\n\t\tqueryKey: collectableKeys.offersCount,\n\t\texact: false,\n\t});\n\n\tqueryClient.invalidateQueries({\n\t\tqueryKey: collectableKeys.listings,\n\t\texact: false,\n\t});\n\n\tqueryClient.invalidateQueries({\n\t\tqueryKey: collectableKeys.listingsCount,\n\t\texact: false,\n\t});\n\n\tqueryClient.invalidateQueries({\n\t\tqueryKey: collectableKeys.highestOffers,\n\t\texact: false,\n\t});\n\n\tqueryClient.invalidateQueries({\n\t\tqueryKey: collectableKeys.lowestListings,\n\t\texact: false,\n\t});\n};\n","import type { Hex } from 'viem';\nimport {\n\tChainSwitchUserRejectedError,\n\tWalletInstanceNotFoundError,\n} from '../../utils/_internal/error/transaction';\nimport {\n\ttype MarketplaceKind,\n\ttype Step,\n\tStepType,\n\tgetMarketplaceClient,\n\tgetQueryClient,\n} from '../_internal';\nimport type {\n\tSignatureStep,\n\tTransactionStep as walletTransactionStep,\n} from '../_internal/utils';\nimport { useWallet } from '../_internal/wallet/useWallet';\nimport { useSwitchChainModal } from '../ui/modals/_internal/components/switchChainModal';\nimport type { ModalCallbacks } from '../ui/modals/_internal/types';\nimport type { TransactionStep } from './useCancelOrder';\nimport { useConfig } from './useConfig';\nimport { useGenerateCancelTransaction } from './useGenerateCancelTransaction';\nimport {\n\tinvalidateQueriesOnCancel,\n\tupdateQueriesOnCancel,\n} from './util/optimisticCancelUpdates';\n\ninterface UseCancelTransactionStepsArgs {\n\tcollectionAddress: string;\n\tchainId: number;\n\tcallbacks?: ModalCallbacks;\n\tsetSteps: React.Dispatch<React.SetStateAction<TransactionStep>>;\n\tonSuccess?: ({ hash, orderId }: { hash?: string; orderId?: string }) => void;\n\tonError?: (error: Error) => void;\n}\n\nexport const useCancelTransactionSteps = ({\n\tcollectionAddress,\n\tchainId,\n\tcallbacks,\n\tsetSteps,\n\tonSuccess,\n\tonError,\n}: UseCancelTransactionStepsArgs) => {\n\tconst { show: showSwitchChainModal } = useSwitchChainModal();\n\tconst { wallet, isLoading, isError } = useWallet();\n\tconst walletIsInitialized = wallet && !isLoading && !isError;\n\tconst sdkConfig = useConfig();\n\tconst marketplaceClient = getMarketplaceClient(chainId, sdkConfig);\n\tconst { generateCancelTransactionAsync } = useGenerateCancelTransaction({\n\t\tchainId,\n\t});\n\n\tconst getWalletChainId = async () => {\n\t\treturn await wallet?.getChainId();\n\t};\n\tconst switchChain = async () => {\n\t\tawait wallet?.switchChain(Number(chainId));\n\t};\n\tconst checkAndSwitchChain = async () => {\n\t\tconst walletChainId = await getWalletChainId();\n\t\tconst isWaaS = wallet?.isWaaS;\n\t\tconst chainIdMismatch = walletChainId !== Number(chainId);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (chainIdMismatch) {\n\t\t\t\tif (isWaaS) {\n\t\t\t\t\tswitchChain().then(resolve).catch(reject);\n\t\t\t\t} else {\n\t\t\t\t\tshowSwitchChainModal({\n\t\t\t\t\t\tchainIdToSwitchTo: chainId,\n\t\t\t\t\t\tonSuccess: () => resolve({ chainId: chainId }),\n\t\t\t\t\t\tonError: (error) => reject(error),\n\t\t\t\t\t\tonClose: () => reject(new ChainSwitchUserRejectedError()),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresolve({ chainId: chainId });\n\t\t\t}\n\t\t});\n\t};\n\n\tconst getCancelSteps = async ({\n\t\torderId,\n\t\tmarketplace,\n\t}: {\n\t\torderId: string;\n\t\tmarketplace: MarketplaceKind;\n\t}) => {\n\t\ttry {\n\t\t\tconst address = await wallet?.address();\n\n\t\t\tif (!address) {\n\t\t\t\tthrow new Error('Wallet address not found');\n\t\t\t}\n\n\t\t\tconst steps = await generateCancelTransactionAsync({\n\t\t\t\tcollectionAddress,\n\t\t\t\tmaker: address,\n\t\t\t\tmarketplace,\n\t\t\t\torderId,\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 cancelOrder = async ({\n\t\torderId,\n\t\tmarketplace,\n\t}: {\n\t\torderId: string;\n\t\tmarketplace: MarketplaceKind;\n\t}) => {\n\t\tconst queryClient = getQueryClient();\n\t\tif (!walletIsInitialized) {\n\t\t\tthrow new WalletInstanceNotFoundError();\n\t\t}\n\n\t\ttry {\n\t\t\tawait checkAndSwitchChain();\n\n\t\t\tsetSteps((prev) => ({\n\t\t\t\t...prev,\n\t\t\t\tisExecuting: true,\n\t\t\t}));\n\n\t\t\tconst cancelSteps = await getCancelSteps({\n\t\t\t\torderId,\n\t\t\t\tmarketplace,\n\t\t\t});\n\t\t\tconst transactionStep = cancelSteps?.find(\n\t\t\t\t(step) => step.id === StepType.cancel,\n\t\t\t);\n\t\t\tconst signatureStep = cancelSteps?.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 reservoirOrderId: string | undefined;\n\n\t\t\tif (transactionStep && wallet) {\n\t\t\t\thash = await executeTransaction({ transactionStep });\n\n\t\t\t\tif (hash) {\n\t\t\t\t\tawait wallet.handleConfirmTransactionStep(hash, Number(chainId));\n\n\t\t\t\t\tif (onSuccess && typeof onSuccess === 'function') {\n\t\t\t\t\t\tonSuccess({ hash });\n\n\t\t\t\t\t\tupdateQueriesOnCancel({\n\t\t\t\t\t\t\torderId,\n\t\t\t\t\t\t\tqueryClient,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tsetSteps((prev) => ({\n\t\t\t\t\t\t...prev,\n\t\t\t\t\t\tisExecuting: false,\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (signatureStep) {\n\t\t\t\treservoirOrderId = await executeSignature({ signatureStep });\n\n\t\t\t\tif (onSuccess && typeof onSuccess === 'function') {\n\t\t\t\t\tonSuccess({ orderId: reservoirOrderId });\n\n\t\t\t\t\tupdateQueriesOnCancel({\n\t\t\t\t\t\torderId: reservoirOrderId,\n\t\t\t\t\t\tqueryClient,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tsetSteps((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tisExecuting: false,\n\t\t\t\t}));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tinvalidateQueriesOnCancel({\n\t\t\t\tqueryClient,\n\t\t\t});\n\n\t\t\tsetSteps((prev) => ({\n\t\t\t\t...prev,\n\t\t\t\tisExecuting: false,\n\t\t\t}));\n\n\t\t\tif (onError && typeof onError === 'function') {\n\t\t\t\tonError(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}): Promise<Hex | undefined> => {\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\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\tmethod: signatureStep.post?.method as string,\n\t\t\tendpoint: signatureStep.post?.endpoint as string,\n\t\t\tbody: signatureStep.post?.body,\n\t\t});\n\n\t\treturn result.orderId;\n\t};\n\n\treturn {\n\t\tcancelOrder,\n\t};\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport type { SdkConfig } from '../../types';\nimport { getMarketplaceClient } from '../_internal';\nimport { useConfig } from './useConfig';\n\ntype UseCollectionDetails = {\n\tcollectionAddress: string;\n\tchainId: number;\n};\n\nconst fetchCollectionDetails = async (\n\targs: { collectionAddress: string },\n\tmarketplaceClient: Awaited<ReturnType<typeof getMarketplaceClient>>,\n) => {\n\tconst { collection } = await marketplaceClient.getCollectionDetail({\n\t\tcontractAddress: args.collectionAddress,\n\t});\n\treturn collection;\n};\n\nexport const collectionDetailsOptions = (\n\targs: UseCollectionDetails,\n\tconfig: SdkConfig,\n) => {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\treturn queryOptions({\n\t\tqueryKey: ['collectionDetails', args],\n\t\tqueryFn: () => fetchCollectionDetails(args, marketplaceClient),\n\t});\n};\n\nexport const useCollectionDetails = (args: UseCollectionDetails) => {\n\tconst config = useConfig();\n\treturn useQuery(collectionDetailsOptions(args, config));\n};\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport type { SdkConfig } from '../../types';\nimport { CollectionStatus } from '../_internal/api/marketplace.gen';\nimport { collectionDetailsOptions } from './useCollectionDetails';\nimport { useConfig } from './useConfig';\n\ntype UseCollectionDetailsPolling = {\n\tcollectionAddress: string;\n\tchainId: number;\n};\n\nconst INITIAL_POLLING_INTERVAL = 2000; // 2 seconds\nconst MAX_POLLING_INTERVAL = 30000; // 30 seconds\nconst MAX_ATTEMPTS = 30;\n\nconst isTerminalState = (status: CollectionStatus): boolean => {\n\treturn [\n\t\tCollectionStatus.active,\n\t\tCollectionStatus.failed,\n\t\tCollectionStatus.inactive,\n\t\tCollectionStatus.incompatible_type,\n\t].includes(status);\n};\n\nexport const collectionDetailsPollingOptions = (\n\targs: UseCollectionDetailsPolling,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\t...collectionDetailsOptions(args, config),\n\t\trefetchInterval: (query) => {\n\t\t\tconst data = query.state.data;\n\t\t\tif (data && isTerminalState(data.status)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Calculate exponential backoff interval\n\t\t\tconst currentAttempt = (query.state.dataUpdateCount || 0) + 1;\n\t\t\tif (currentAttempt >= MAX_ATTEMPTS) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst interval = Math.min(\n\t\t\t\tINITIAL_POLLING_INTERVAL * 1.5 ** currentAttempt,\n\t\t\t\tMAX_POLLING_INTERVAL,\n\t\t\t);\n\n\t\t\treturn interval;\n\t\t},\n\t\trefetchOnWindowFocus: false,\n\t\tretry: false,\n\t});\n};\n\nexport const useCollectionDetailsPolling = (\n\targs: UseCollectionDetailsPolling,\n) => {\n\tconst config = useConfig();\n\treturn useQuery(collectionDetailsPollingOptions(args, config));\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useConfig } from './useConfig';\n\nimport {\n\ttype FetchTokenMetadataArgs,\n\ttokenMetadataOptions,\n} from '../queries/listTokenMetadata';\n\nexport const useListTokenMetadata = (args: FetchTokenMetadataArgs) => {\n\tconst config = useConfig();\n\tconst { chainId, contractAddress, tokenIds, query } = args;\n\n\treturn useQuery({\n\t\t...tokenMetadataOptions(\n\t\t\t{ chainId, contractAddress, tokenIds, query },\n\t\t\tconfig,\n\t\t),\n\t});\n};\n","import { useQuery } from '@tanstack/react-query';\n\nimport { useConfig } from '..';\nimport { getIndexerClient } from '../_internal';\n\nexport const useGetTokenSuppliesMap = ({\n\tchainId,\n\ttokenIds,\n\tcollectionAddress,\n}: {\n\tchainId: number;\n\ttokenIds: string[];\n\tcollectionAddress: string;\n}) => {\n\tconst config = useConfig();\n\tconst indexerClient = getIndexerClient(chainId, config);\n\treturn useQuery({\n\t\tqueryKey: ['indexer-tokenSupplies', tokenIds, collectionAddress, chainId],\n\t\tqueryFn: () => {\n\t\t\treturn indexerClient.getTokenSuppliesMap({\n\t\t\t\ttokenMap: {\n\t\t\t\t\t[collectionAddress]: tokenIds,\n\t\t\t\t},\n\t\t\t\tincludeMetadata: false,\n\t\t\t});\n\t\t},\n\t});\n};\n","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 {\n\ttype SelectPaymentSettings,\n\tuseSelectPaymentModal,\n} from '@0xsequence/checkout';\nimport { useEffect, useRef } from 'react';\nimport { ContractType } from '../../../_internal';\nimport { ErrorModal } from '../_internal/components/actionModal/ErrorModal';\nimport { LoadingModal } from '../_internal/components/actionModal/LoadingModal';\nimport { ERC1155QuantityModal } from './ERC1155QuantityModal';\nimport { useLoadData } from './hooks/useLoadData';\nimport { usePaymentModalParams } from './hooks/usePaymentModalParams';\nimport {\n\tbuyModalStore,\n\tuseBuyModalProps,\n\tuseIsOpen,\n\tuseOnError,\n\tuseQuantity,\n} from './store';\n\nexport const BuyModal = () => {\n\tconst isOpen = useIsOpen();\n\n\tif (!isOpen) {\n\t\treturn null;\n\t}\n\n\treturn <BuyModalContent />;\n};\n\nconst BuyModalContent = () => {\n\tconst { chainId } = useBuyModalProps();\n\n\tconst onError = useOnError();\n\n\tconst quantity = useQuantity();\n\n\tconst {\n\t\tcollection,\n\t\tcollectable,\n\t\twallet,\n\t\tisLoading,\n\t\tisError,\n\t\torder,\n\t\tcheckoutOptions,\n\t} = useLoadData();\n\n\tconst {\n\t\tdata: paymentModalParams,\n\t\tisLoading: isPaymentModalParamsLoading,\n\t\tisError: isPaymentModalParamsError,\n\t} = usePaymentModalParams({\n\t\twallet,\n\t\tquantity,\n\t\tmarketplace: order?.marketplace,\n\t\tcollectable: collectable,\n\t\tcheckoutOptions: checkoutOptions,\n\t\tpriceCurrencyAddress: order?.priceCurrencyAddress,\n\t});\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: we want to set this on collection change\n\tuseEffect(() => {\n\t\tif (collection?.type === ContractType.ERC721 && !quantity) {\n\t\t\tbuyModalStore.send({ type: 'setQuantity', quantity: 1 });\n\t\t}\n\t}, [collection]);\n\n\tif (isError || isPaymentModalParamsError) {\n\t\tonError(new Error('Error loading data'));\n\t\treturn (\n\t\t\t<ErrorModal\n\t\t\t\tisOpen={true}\n\t\t\t\tchainId={chainId}\n\t\t\t\tonClose={() => buyModalStore.send({ type: 'close' })}\n\t\t\t\ttitle=\"Error\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (\n\t\tisLoading ||\n\t\tisPaymentModalParamsLoading ||\n\t\t!collection ||\n\t\t!collectable ||\n\t\t!order\n\t) {\n\t\treturn (\n\t\t\t<LoadingModal\n\t\t\t\tisOpen={true}\n\t\t\t\tchainId={chainId}\n\t\t\t\tonClose={() => buyModalStore.send({ type: 'close' })}\n\t\t\t\ttitle=\"Loading Sequence Pay\"\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (collection.type === ContractType.ERC1155 && !quantity) {\n\t\treturn <ERC1155QuantityModal order={order} />;\n\t}\n\n\tif (paymentModalParams) {\n\t\treturn <PaymentModalOpener paymentModalParams={paymentModalParams} />;\n\t}\n};\n\nconst PaymentModalOpener = ({\n\tpaymentModalParams,\n}: {\n\tpaymentModalParams: SelectPaymentSettings;\n}) => {\n\tconst { openSelectPaymentModal } = useSelectPaymentModal();\n\tconst hasOpenedRef = useRef(false);\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (!hasOpenedRef.current) {\n\t\t\thasOpenedRef.current = true;\n\t\t\topenSelectPaymentModal(paymentModalParams);\n\t\t}\n\t}, []);\n\n\treturn null;\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","'use client';\n\nimport type React from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { Button, Modal, Spinner, Text } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport { useWallet } from '../../../../../_internal/wallet/useWallet';\nimport { MODAL_OVERLAY_PROPS } from '../consts';\nimport { MODAL_CONTENT_PROPS } from '../consts';\nimport { useSwitchChainModal } from '../switchChainModal';\n\nexport interface ActionModalProps {\n\tisOpen: boolean;\n\tonClose: () => void;\n\ttitle: string;\n\tchildren: React.ReactNode;\n\tctas: {\n\t\tlabel: React.ReactNode;\n\t\tonClick: (() => Promise<void>) | (() => void);\n\t\tpending?: boolean;\n\t\tdisabled?: boolean;\n\t\thidden?: boolean;\n\t\tvariant?: ComponentProps<typeof Button>['variant'];\n\t\ttestid?: string;\n\t}[];\n\tchainId: number;\n\tmodalLoading?: boolean;\n\tspinnerContainerClassname?: string;\n\tdisableAnimation?: boolean;\n\thideCtas?: boolean;\n}\n\nexport const ActionModal = observer(\n\t({\n\t\tisOpen,\n\t\tonClose,\n\t\ttitle,\n\t\tchildren,\n\t\tctas,\n\t\tchainId,\n\t\tdisableAnimation,\n\t\tmodalLoading,\n\t\tspinnerContainerClassname,\n\t\thideCtas,\n\t}: ActionModalProps) => {\n\t\tconst { show: showSwitchChainModal } = useSwitchChainModal();\n\t\tconst { wallet, isLoading, isError } = useWallet();\n\n\t\tconst checkChain = async ({ onSuccess }: { onSuccess: () => void }) => {\n\t\t\tconst walletChainId = await wallet?.getChainId();\n\t\t\tconst chainMismatch = walletChainId !== Number(chainId);\n\t\t\tif (chainMismatch) {\n\t\t\t\tshowSwitchChainModal({\n\t\t\t\t\tchainIdToSwitchTo: chainId,\n\t\t\t\t\tonSuccess,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tonSuccess();\n\t\t\t}\n\t\t};\n\n\t\tif (wallet?.isWaaS) {\n\t\t\twallet.switchChain(Number(chainId));\n\t\t}\n\n\t\tif (!isOpen || !chainId) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<Modal\n\t\t\t\tisDismissible={true}\n\t\t\t\tonClose={onClose}\n\t\t\t\toverlayProps={MODAL_OVERLAY_PROPS}\n\t\t\t\tcontentProps={MODAL_CONTENT_PROPS}\n\t\t\t\tdisableAnimation={disableAnimation}\n\t\t\t>\n\t\t\t\t<div className=\"relative flex grow flex-col items-center gap-4 p-6\">\n\t\t\t\t\t<Text className=\"w-full text-center font-body font-bold text-large text-text-100\">\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t{modalLoading || isLoading || isError ? (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`flex ${spinnerContainerClassname} w-full items-center justify-center`}\n\t\t\t\t\t\t\tdata-testid=\"error-loading-wrapper\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{isError && (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tdata-testid=\"error-loading-text\"\n\t\t\t\t\t\t\t\t\tclassName=\"text-center font-body text-error100 text-small\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tError loading modal\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{(isLoading || modalLoading) && (\n\t\t\t\t\t\t\t\t<div data-testid=\"spinner\">\n\t\t\t\t\t\t\t\t\t<Spinner size=\"lg\" />\n\t\t\t\t\t\t\t\t</div>\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\t\tchildren\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!hideCtas && !isLoading && !isError && (\n\t\t\t\t\t\t<div className=\"flex w-full flex-col gap-2\">\n\t\t\t\t\t\t\t{ctas.map(\n\t\t\t\t\t\t\t\t(cta) =>\n\t\t\t\t\t\t\t\t\t!cta.hidden && (\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-full rounded-[12px] [&>div]:justify-center\"\n\t\t\t\t\t\t\t\t\t\t\tkey={cta.onClick.toString()}\n\t\t\t\t\t\t\t\t\t\t\tonClick={async () => {\n\t\t\t\t\t\t\t\t\t\t\t\tawait checkChain({\n\t\t\t\t\t\t\t\t\t\t\t\t\tonSuccess: () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcta.onClick();\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tvariant={cta.variant || 'primary'}\n\t\t\t\t\t\t\t\t\t\t\tpending={cta.pending}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={cta.disabled}\n\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\t\t\t\t\tdata-testid={cta.testid}\n\t\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cta.pending && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div data-testid={`${cta.testid}-spinner`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Spinner size=\"sm\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cta.label}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t}\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)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</Modal>\n\t\t);\n\t},\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","'use client';\n\nimport { use$, useObservable } from '@legendapp/state/react';\n\nimport { Text, TokenImage } from '@0xsequence/design-system';\nimport { DEFAULT_MARKETPLACE_FEE_PERCENTAGE } from '../../../../consts';\nimport { compareAddress } from '../../../../utils/address';\nimport { formatPriceWithFee } from '../../../../utils/price';\nimport type { Order } from '../../../_internal';\nimport { useCurrency, useMarketplaceConfig } from '../../../hooks';\nimport { ActionModal } from '../_internal/components/actionModal';\nimport QuantityInput from '../_internal/components/quantityInput';\nimport { buyModalStore, useBuyModalProps, useIsOpen } from './store';\n\nexport const ERC1155QuantityModal = ({ order }: { order: Order }) => {\n\tconst { chainId } = useBuyModalProps();\n\tconst isOpen = useIsOpen();\n\n\tconst localQuantity$ = useObservable('1');\n\tconst localQuantity = use$(localQuantity$);\n\tconst invalidQuantity$ = useObservable(false);\n\tconst invalidQuantity = use$(invalidQuantity$);\n\n\treturn (\n\t\t<ActionModal\n\t\t\tisOpen={isOpen}\n\t\t\tchainId={chainId}\n\t\t\tonClose={() => buyModalStore.send({ type: 'close' })}\n\t\t\ttitle=\"Select Quantity\"\n\t\t\tdisableAnimation={true}\n\t\t\tctas={[\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Buy now',\n\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\tbuyModalStore.send({\n\t\t\t\t\t\t\ttype: 'setQuantity',\n\t\t\t\t\t\t\tquantity: Number(localQuantity),\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tdisabled: invalidQuantity,\n\t\t\t\t},\n\t\t\t]}\n\t\t>\n\t\t\t<div className=\"flex w-full flex-col gap-4\">\n\t\t\t\t<QuantityInput\n\t\t\t\t\t$quantity={localQuantity$}\n\t\t\t\t\t$invalidQuantity={invalidQuantity$}\n\t\t\t\t\tdecimals={order.quantityDecimals}\n\t\t\t\t\tmaxQuantity={order.quantityRemaining}\n\t\t\t\t/>\n\n\t\t\t\t<TotalPrice order={order} quantityStr={localQuantity} />\n\t\t\t</div>\n\t\t</ActionModal>\n\t);\n};\n\nconst TotalPrice = ({\n\torder,\n\tquantityStr,\n}: {\n\torder: Order;\n\tquantityStr: string;\n}) => {\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\tlet error: null | string = null;\n\tlet formattedPrice = '0';\n\n\tif (currency) {\n\t\ttry {\n\t\t\tconst marketplaceFeePercentage =\n\t\t\t\tmarketplaceConfig?.market.collections.find((collection) =>\n\t\t\t\t\tcompareAddress(\n\t\t\t\t\t\tcollection.itemsAddress,\n\t\t\t\t\t\torder.collectionContractAddress,\n\t\t\t\t\t),\n\t\t\t\t)?.feePercentage || DEFAULT_MARKETPLACE_FEE_PERCENTAGE;\n\t\t\tconst quantity = BigInt(quantityStr);\n\t\t\tconst totalPriceRaw = BigInt(order.priceAmount) * quantity;\n\n\t\t\tformattedPrice = formatPriceWithFee(\n\t\t\t\ttotalPriceRaw,\n\t\t\t\tcurrency.decimals,\n\t\t\t\tmarketplaceFeePercentage,\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tconsole.error('Error formatting price', e);\n\t\t\terror = 'Unable to calculate total price';\n\t\t}\n\t}\n\n\treturn error ? (\n\t\t<Text className=\"font-body font-medium text-xs\" color=\"text50\">\n\t\t\t{error}\n\t\t</Text>\n\t) : (\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","import { type Observable, observable } from '@legendapp/state';\nimport type { Address } from 'viem';\n\nexport interface ActionModalState {\n\tisOpen: boolean;\n\tchainId: number | null;\n\tcollectionAddress: Address | null;\n}\n\nexport function createActionModalStore() {\n\treturn observable<ActionModalState>({\n\t\tisOpen: false,\n\t\tchainId: null,\n\t\tcollectionAddress: null,\n\t});\n}\n\nexport function openModal(store: Observable<ActionModalState>) {\n\tstore.isOpen.set(true);\n}\n\nexport function closeModal(store: Observable<ActionModalState>) {\n\tstore.isOpen.set(false);\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\tdisabled?: boolean;\n};\n\nexport default observer(function QuantityInput({\n\t$quantity,\n\t$invalidQuantity,\n\tdecimals,\n\tmaxQuantity,\n\tclassName,\n\tdisabled,\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>div:has(:disabled):hover]:opacity-100 [&>label>div>div>div:has(:disabled)]:opacity-100 [&>label>div>div>div>input]:text-xs [&>label>div>div>div]:h-9 [&>label>div>div>div]:rounded [&>label>div>div>div]:pr-0 [&>label>div>div>div]:pl-3 [&>label>div>div>div]:text-xs [&>label]:gap-[2px]',\n\t\t\t\tclassName,\n\t\t\t\tdisabled && 'pointer-events-none opacity-50',\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\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","import { createStore } from '@xstate/store';\nimport { useSelector } from '@xstate/store/react';\nimport type { Address, Hash } from 'viem';\nimport type { MarketplaceKind, Step } from '../../../_internal';\n\nexport type BuyModalProps = {\n\torderId: string;\n\tchainId: number;\n\tcollectionAddress: Address;\n\tcollectibleId: string;\n\tmarketplace: MarketplaceKind;\n\tcustomCreditCardProviderCallback?: (buyStep: Step) => void;\n\tskipNativeBalanceCheck?: boolean;\n\tnativeTokenAddress?: Address;\n};\n\nexport type onSuccessCallback = ({\n\thash,\n\torderId,\n}: {\n\thash?: Hash;\n\torderId?: string;\n}) => void;\nexport type onErrorCallback = (error: Error) => void;\n\nconst initialContext = {\n\tisOpen: false,\n\tprops: null as unknown as BuyModalProps,\n\tonError: (() => {}) as onErrorCallback,\n\tonSuccess: (() => {}) as onSuccessCallback,\n\tquantity: undefined as number | undefined,\n};\n\nexport const buyModalStore = createStore({\n\tcontext: { ...initialContext },\n\ton: {\n\t\topen: (\n\t\t\tcontext,\n\t\t\tevent: {\n\t\t\t\tprops: BuyModalProps;\n\t\t\t\tonError?: onErrorCallback;\n\t\t\t\tonSuccess?: onSuccessCallback;\n\t\t\t},\n\t\t) => ({\n\t\t\t...context,\n\t\t\tprops: event.props,\n\t\t\tonError: event.onError ?? context.onError,\n\t\t\tonSuccess: event.onSuccess ?? context.onSuccess,\n\t\t\tisOpen: true,\n\t\t}),\n\n\t\tclose: (context) => ({\n\t\t\t...context,\n\t\t\tisOpen: false,\n\t\t\tquantity: undefined,\n\t\t}),\n\n\t\tsetQuantity: (context, event: { quantity: number }) => ({\n\t\t\t...context,\n\t\t\tquantity: event.quantity,\n\t\t}),\n\t},\n});\n\nexport const useIsOpen = () =>\n\tuseSelector(buyModalStore, (state) => state.context.isOpen);\n\nexport const useBuyModalProps = () =>\n\tuseSelector(buyModalStore, (state) => state.context.props);\n\nexport const useOnError = () =>\n\tuseSelector(buyModalStore, (state) => state.context.onError);\n\nexport const useOnSuccess = () =>\n\tuseSelector(buyModalStore, (state) => state.context.onSuccess);\n\nexport const useQuantity = () =>\n\tuseSelector(buyModalStore, (state) => state.context.quantity);\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\tconst response = await marketplaceClient.checkoutOptionsMarketplace({\n\t\t\t\t\t\twallet: await wallet.address(),\n\t\t\t\t\t\torders: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontractAddress: input.collectionAddress,\n\t\t\t\t\t\t\t\torderId: input.orderId,\n\t\t\t\t\t\t\t\tmarketplace: input.marketplace,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tadditionalFee: Number(fees.amount),\n\t\t\t\t\t});\n\n\t\t\t\t\t// Get order data\n\t\t\t\t\tconst orderResponse = await marketplaceClient.getOrders({\n\t\t\t\t\t\tinput: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontractAddress: input.collectionAddress,\n\t\t\t\t\t\t\t\torderId: input.orderId,\n\t\t\t\t\t\t\t\tmarketplace: input.marketplace,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\tconst order = orderResponse.orders[0];\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...response.options,\n\t\t\t\t\t\torder,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t: skipToken,\n\t\tenabled: !!wallet,\n\t});\n};\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?.market.collections.find(\n\t\t(collection) =>\n\t\t\tcollection.itemsAddress.toLowerCase() ===\n\t\t\t\tcollectionAddress.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 { useWallet } from '../../../../_internal/wallet/useWallet';\nimport { useCollectible, useCollection } from '../../../../hooks';\nimport { useBuyModalProps } from '../store';\nimport { useCheckoutOptions } from './useCheckoutOptions';\n\nexport const useLoadData = () => {\n\tconst { chainId, collectionAddress, collectibleId, orderId, marketplace } =\n\t\tuseBuyModalProps();\n\n\tconst {\n\t\twallet,\n\t\tisLoading: walletLoading,\n\t\tisError: walletError,\n\t} = useWallet();\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\n\tconst {\n\t\tdata: collectable,\n\t\tisLoading: collectableLoading,\n\t\tisError: collectableError,\n\t} = useCollectible({\n\t\tchainId,\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\t// TODO: rename this... its order and checkout options\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\torder: checkoutOptions?.order,\n\t\tcheckoutOptions: checkoutOptions,\n\t\twallet,\n\t\tisLoading:\n\t\t\tcollectionLoading ||\n\t\t\tcollectableLoading ||\n\t\t\tcheckoutOptionsLoading ||\n\t\t\twalletLoading,\n\t\t// TODO: we should have a way to determine what is causing the error\n\t\tisError:\n\t\t\tcollectionError ||\n\t\t\tcollectableError ||\n\t\t\tcheckoutOptionsError ||\n\t\t\twalletError,\n\t};\n};\n","import type { SelectPaymentSettings } from '@0xsequence/checkout';\nimport type { TokenMetadata } from '@0xsequence/metadata';\nimport { skipToken, useQuery } from '@tanstack/react-query';\nimport type { Hash, Hex } from 'viem';\nimport type { SdkConfig, Step } from '../../../../..';\nimport { decodeERC20Approval } from '../../../../../utils/decode/erc20';\nimport {\n\ttype AdditionalFee,\n\ttype CheckoutOptions,\n\ttype MarketplaceKind,\n\tStepType,\n\tWalletKind,\n\tgetMarketplaceClient,\n\tgetQueryClient,\n\tgetSequenceApiClient,\n} from '../../../../_internal';\nimport type { WalletInstance } from '../../../../_internal/wallet/wallet';\nimport { useConfig } from '../../../../hooks';\nimport type { ModalCallbacks } from '../../_internal/types';\nimport {\n\tbuyModalStore,\n\tuseBuyModalProps,\n\tuseOnError,\n\tuseOnSuccess,\n} from '../store';\nimport { useFees } from './useFees';\n\ninterface GetBuyCollectableParams {\n\tchainId: number;\n\tconfig: SdkConfig;\n\twallet: WalletInstance;\n\tcollectionAddress: string;\n\tcollectibleId: string;\n\tmarketplace: MarketplaceKind;\n\torderId: string;\n\tquantity: number;\n\tcollectable: TokenMetadata;\n\tcheckoutOptions: CheckoutOptions;\n\tfee: AdditionalFee;\n\tcallbacks: ModalCallbacks | undefined;\n\tpriceCurrencyAddress: string;\n\tcustomCreditCardProviderCallback: ((buyStep: Step) => void) | undefined;\n\tskipNativeBalanceCheck: boolean | undefined;\n\tnativeTokenAddress: string | undefined;\n}\n\nexport const getBuyCollectableParams = async ({\n\tchainId,\n\tcollectionAddress,\n\tcollectibleId,\n\tcallbacks,\n\tpriceCurrencyAddress,\n\tcustomCreditCardProviderCallback,\n\tconfig,\n\twallet,\n\tmarketplace,\n\torderId,\n\tquantity,\n\tcollectable,\n\tcheckoutOptions,\n\tfee,\n\tskipNativeBalanceCheck,\n\tnativeTokenAddress,\n}: GetBuyCollectableParams) => {\n\tconst marketplaceClient = getMarketplaceClient(chainId, config);\n\tconst { steps } = await marketplaceClient.generateBuyTransaction({\n\t\tcollectionAddress,\n\t\tbuyer: await wallet.address(),\n\t\tmarketplace: marketplace,\n\t\tordersData: [\n\t\t\t{\n\t\t\t\torderId: orderId,\n\t\t\t\tquantity: quantity.toString(),\n\t\t\t\ttokenId: collectibleId,\n\t\t\t},\n\t\t],\n\t\tadditionalFees: [fee],\n\t\twalletType: WalletKind.unknown,\n\t});\n\n\tconst buyStep = steps.find((step) => step.id === StepType.buy);\n\tconst approveStep = steps.find((step) => step.id === StepType.tokenApproval);\n\n\tconst approvedSpenderAddress = approveStep\n\t\t? decodeERC20Approval(approveStep.data as Hex).spender\n\t\t: undefined;\n\n\tif (!buyStep) {\n\t\tthrow new Error('Buy step not found');\n\t}\n\n\tconst creditCardProviders = customCreditCardProviderCallback\n\t\t? ['custom']\n\t\t: checkoutOptions.nftCheckout || [];\n\n\tconst isTransakSupported = creditCardProviders.includes('transak');\n\n\tlet transakContractId: string | undefined;\n\n\tif (isTransakSupported) {\n\t\tconst sequenceApiClient = getSequenceApiClient(config);\n\t\tconst transakContractIdResponse =\n\t\t\tawait sequenceApiClient.checkoutOptionsGetTransakContractID({\n\t\t\t\tchainId,\n\t\t\t\tcontractAddress: buyStep.to,\n\t\t\t});\n\n\t\tif (transakContractIdResponse.contractId !== '') {\n\t\t\ttransakContractId = transakContractIdResponse.contractId;\n\t\t}\n\t}\n\n\treturn {\n\t\tchain: chainId,\n\t\tcollectibles: [\n\t\t\t{\n\t\t\t\ttokenId: collectibleId,\n\t\t\t\tquantity: quantity.toString(),\n\t\t\t\tdecimals: collectable.decimals,\n\t\t\t},\n\t\t],\n\t\tcurrencyAddress: priceCurrencyAddress,\n\t\tprice: buyStep.price,\n\t\ttargetContractAddress: buyStep.to,\n\t\tapprovedSpenderAddress,\n\t\ttxData: buyStep.data as Hex,\n\t\tcollectionAddress,\n\t\trecipientAddress: await wallet.address(),\n\t\tenableMainCurrencyPayment: true,\n\t\tenableSwapPayments: !!checkoutOptions.swap,\n\t\tcreditCardProviders,\n\t\tonSuccess: (hash: string) => {\n\t\t\tcallbacks?.onSuccess?.({ hash: hash as Hash });\n\t\t},\n\t\tsupplementaryAnalyticsInfo: {\n\t\t\trequestId: orderId,\n\t\t\tmarketplaceKind: marketplace,\n\t\t},\n\t\tonError: callbacks?.onError,\n\t\tonClose: () => {\n\t\t\tconst queryClient = getQueryClient();\n\t\t\tqueryClient.invalidateQueries();\n\t\t\tbuyModalStore.send({ type: 'close' });\n\t\t},\n\t\tskipNativeBalanceCheck,\n\t\tnativeTokenAddress,\n\t\t...(customCreditCardProviderCallback && {\n\t\t\tcustomProviderCallback: () => {\n\t\t\t\tcustomCreditCardProviderCallback(buyStep);\n\t\t\t\tbuyModalStore.send({ type: 'close' });\n\t\t\t},\n\t\t}),\n\t\t...(transakContractId && {\n\t\t\ttransakConfig: {\n\t\t\t\tcontractId: transakContractId,\n\t\t\t},\n\t\t}),\n\t} satisfies SelectPaymentSettings;\n};\n\ninterface usePaymentModalParams {\n\twallet: WalletInstance | undefined | null;\n\tquantity: number | undefined;\n\tmarketplace: MarketplaceKind | undefined;\n\tcollectable: TokenMetadata | undefined;\n\tcheckoutOptions: CheckoutOptions | undefined;\n\tpriceCurrencyAddress: string | undefined;\n}\n\nexport const usePaymentModalParams = (args: usePaymentModalParams) => {\n\tconst {\n\t\twallet,\n\t\tmarketplace,\n\t\tcollectable,\n\t\tcheckoutOptions,\n\t\tpriceCurrencyAddress,\n\t\tquantity,\n\t} = args;\n\n\tconst buyModalProps = useBuyModalProps();\n\tconst {\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t\torderId,\n\t\tcustomCreditCardProviderCallback,\n\t\tskipNativeBalanceCheck,\n\t\tnativeTokenAddress,\n\t} = buyModalProps;\n\n\tconst config = useConfig();\n\tconst fee = useFees({\n\t\tchainId,\n\t\tcollectionAddress,\n\t});\n\tconst onSuccess = useOnSuccess();\n\tconst onError = useOnError();\n\n\tconst enabled =\n\t\t!!wallet &&\n\t\t!!marketplace &&\n\t\t!!collectable &&\n\t\t!!checkoutOptions &&\n\t\t!!priceCurrencyAddress &&\n\t\t!!quantity;\n\n\treturn useQuery({\n\t\tqueryKey: ['buyCollectableParams', buyModalProps, args, fee],\n\t\tqueryFn: enabled\n\t\t\t? () =>\n\t\t\t\t\tgetBuyCollectableParams({\n\t\t\t\t\t\tchainId,\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\twallet,\n\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\tcollectibleId,\n\t\t\t\t\t\tmarketplace,\n\t\t\t\t\t\torderId,\n\t\t\t\t\t\tquantity,\n\t\t\t\t\t\tcollectable,\n\t\t\t\t\t\tcheckoutOptions,\n\t\t\t\t\t\tfee,\n\t\t\t\t\t\tpriceCurrencyAddress,\n\t\t\t\t\t\tcallbacks: {\n\t\t\t\t\t\t\tonSuccess: onSuccess,\n\t\t\t\t\t\t\tonError: onError,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcustomCreditCardProviderCallback,\n\t\t\t\t\t\tskipNativeBalanceCheck,\n\t\t\t\t\t\tnativeTokenAddress,\n\t\t\t\t\t})\n\t\t\t: skipToken,\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","'use client';\n\nimport { Show, observer } from '@legendapp/state/react';\nimport { parseUnits } from 'viem';\nimport { useAccount } from 'wagmi';\nimport type { FeeOption } from '../../../../types/waas-types';\nimport { dateToUnixTime } from '../../../../utils/date';\nimport type { ContractType } from '../../../_internal';\nimport { useWallet } from '../../../_internal/wallet/useWallet';\nimport {\n\tuseBalanceOfCollectible,\n\tuseCollectible,\n\tuseCollection,\n\tuseMarketCurrencies,\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 SelectWaasFeeOptions from '../_internal/components/selectWaasFeeOptions';\nimport { selectWaasFeeOptions$ } from '../_internal/components/selectWaasFeeOptions/store';\nimport TokenPreview from '../_internal/components/tokenPreview';\nimport TransactionDetails from '../_internal/components/transactionDetails';\nimport { useSelectWaasFeeOptions } from '../_internal/hooks/useSelectWaasFeeOptions';\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\tlistingIsBeingProcessed,\n\t} = state;\n\tconst steps$ = createListingModal$.steps;\n\tconst { wallet } = useWallet();\n\n\tconst {\n\t\tshouldHideActionButton: shouldHideListButton,\n\t\twaasFeeOptionsShown,\n\t\tgetActionLabel,\n\t} = useSelectWaasFeeOptions({\n\t\tisProcessing: listingIsBeingProcessed,\n\t\tfeeOptionsVisible: selectWaasFeeOptions$.isVisible.get(),\n\t\tselectedFeeOption:\n\t\t\tselectWaasFeeOptions$.selectedFeeOption.get() as FeeOption,\n\t});\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} = useMarketCurrencies({\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,\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 handleCreateListing = async () => {\n\t\tcreateListingModal$.listingIsBeingProcessed.set(true);\n\n\t\ttry {\n\t\t\tif (wallet?.isWaaS) {\n\t\t\t\tselectWaasFeeOptions$.isVisible.set(true);\n\t\t\t}\n\n\t\t\tawait createListing({\n\t\t\t\tisTransactionExecuting: !!wallet?.isWaaS,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('Create listing failed:', error);\n\t\t} finally {\n\t\t\tcreateListingModal$.listingIsBeingProcessed.set(false);\n\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t}\n\t};\n\n\tconst listCtaLabel = getActionLabel('List item for sale');\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: listCtaLabel,\n\t\t\tonClick: handleCreateListing,\n\t\t\tpending:\n\t\t\t\tsteps$?.transaction.isExecuting.get() ||\n\t\t\t\tcreateListingModal$.listingIsBeingProcessed.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\t\tlistingIsBeingProcessed,\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={() => {\n\t\t\t\tcreateListingModal$.close();\n\t\t\t\tselectWaasFeeOptions$.hide();\n\t\t\t}}\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\thideCtas={shouldHideListButton}\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\tdisabled={shouldHideListButton}\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\tdisabled={shouldHideListButton}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<ExpirationDateSelect\n\t\t\t\t$date={createListingModal$.expiry}\n\t\t\t\tdisabled={shouldHideListButton}\n\t\t\t/>\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\n\t\t\t{waasFeeOptionsShown && (\n\t\t\t\t<SelectWaasFeeOptions\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonCancel={() => {\n\t\t\t\t\t\tcreateListingModal$.listingIsBeingProcessed.set(false);\n\t\t\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\t\t}}\n\t\t\t\t\ttitleOnConfirm=\"Processing listing...\"\n\t\t\t\t/>\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 { cn } from '../../../../../../utils';\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\tdisabled?: boolean;\n};\n\nconst ExpirationDateSelect = observer(function ExpirationDateSelect({\n\tclassName,\n\t$date,\n\tdisabled,\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\n\t\t\tclassName={cn(\n\t\t\t\t'relative w-full',\n\t\t\t\tdisabled && 'pointer-events-none opacity-50',\n\t\t\t)}\n\t\t>\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 { Button, 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\tonBuyNow,\n}: {\n\tchainId: number;\n\tcollectionAddress: Hex;\n\ttokenId: string;\n\tprice: Price;\n\tonBuyNow?: () => void;\n}) {\n\tconst { data: listing, isLoading: listingLoading } = useLowestListing({\n\t\ttokenId: tokenId,\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tfilter: {\n\t\t\tcurrencies: [price.currency.contractAddress],\n\t\t},\n\t});\n\n\tconst floorPriceRaw = listing?.priceAmount;\n\tconst floorPriceFormatted = listing?.priceAmountFormatted;\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?.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\tlet showBuyNowButton = false;\n\n\tif (priceComparison) {\n\t\tif (priceComparison.status === 'same') {\n\t\t\tfloorPriceDifferenceText = 'Same as floor price';\n\t\t\tshowBuyNowButton = true;\n\t\t} else if (priceComparison.status === 'below') {\n\t\t\tfloorPriceDifferenceText = `${priceComparison.percentageDifferenceFormatted}% below floor price`;\n\t\t} else {\n\t\t\tfloorPriceDifferenceText = `${priceComparison.percentageDifferenceFormatted}% above floor price`;\n\t\t\tshowBuyNowButton = true;\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className=\"flex w-full items-center justify-between gap-2\">\n\t\t\t<Text className=\"text-left font-body font-medium text-muted text-xs\">\n\t\t\t\t{floorPriceDifferenceText}\n\t\t\t</Text>\n\n\t\t\t{showBuyNowButton && onBuyNow && (\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\tclassName=\"text-indigo-400 text-xs\"\n\t\t\t\t\tonClick={onBuyNow}\n\t\t\t\t>\n\t\t\t\t\tBuy for {floorPriceFormatted} {price.currency.symbol}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\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 { cn } from '../../../../../../utils';\nimport { useCurrencyBalance } from '../../../../../hooks/useCurrencyBalance';\nimport CurrencyImage from '../currencyImage';\nimport CurrencyOptionsSelect from '../currencyOptionsSelect';\n\ntype PriceInputProps = {\n\tcollectionAddress: Hex;\n\tchainId: number;\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\tdisabled?: boolean;\n};\n\nexport default function PriceInput({\n\tchainId,\n\tcollectionAddress,\n\t$price,\n\tonPriceChange,\n\tcheckBalance,\n\tsecondCurrencyAsDefault,\n\tincludeNativeCurrency,\n\tdisabled,\n}: PriceInputProps) {\n\tconst { address: accountAddress } = useAccount();\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst currencyDecimals = use$($price.currency.decimals);\n\tconst currencyAddress = use$($price.currency.contractAddress);\n\tconst priceAmountRaw = use$($price.amountRaw);\n\n\tuseEffect(() => {\n\t\tif (inputRef.current) {\n\t\t\tinputRef.current.focus();\n\t\t}\n\t}, []);\n\n\tconst { data: balance, isSuccess: isBalanceSuccess } = useCurrencyBalance({\n\t\tcurrencyAddress: currencyAddress as undefined | Hex,\n\t\tchainId,\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\n\t\t\tclassName={cn(\n\t\t\t\t'price-input relative flex w-full flex-col',\n\t\t\t\tdisabled && 'pointer-events-none opacity-50',\n\t\t\t)}\n\t\t>\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>div>.rounded-xl]:h-9 [&>label>div>div>.rounded-xl]:rounded-sm [&>label>div>div>.rounded-xl]:px-2 [&>label]:gap-1\">\n\t\t\t\t<NumericInput\n\t\t\t\t\tref={inputRef}\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","import { skipToken, useQuery } from '@tanstack/react-query';\nimport { type Address, erc20Abi, formatUnits, zeroAddress } from 'viem';\nimport { usePublicClient } from 'wagmi';\nexport function useCurrencyBalance({\n\tcurrencyAddress,\n\tchainId,\n\tuserAddress,\n}: {\n\tcurrencyAddress: Address | undefined;\n\tchainId: number | undefined;\n\tuserAddress: Address | undefined;\n}) {\n\tconst publicClient = usePublicClient({ chainId });\n\n\treturn useQuery({\n\t\tqueryKey: ['balance', currencyAddress, chainId, userAddress],\n\t\tqueryFn:\n\t\t\t!!userAddress && !!chainId && !!currencyAddress && !!publicClient\n\t\t\t\t? async () => {\n\t\t\t\t\t\tif (currencyAddress === zeroAddress) {\n\t\t\t\t\t\t\tconst balance = await publicClient.getBalance({\n\t\t\t\t\t\t\t\taddress: userAddress,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tvalue: balance,\n\t\t\t\t\t\t\t\tformatted: formatUnits(balance, 18),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst [balance, decimals] = await Promise.all([\n\t\t\t\t\t\t\tpublicClient.readContract({\n\t\t\t\t\t\t\t\taddress: currencyAddress,\n\t\t\t\t\t\t\t\tabi: erc20Abi,\n\t\t\t\t\t\t\t\tfunctionName: 'balanceOf',\n\t\t\t\t\t\t\t\targs: [userAddress],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tpublicClient.readContract({\n\t\t\t\t\t\t\t\taddress: currencyAddress,\n\t\t\t\t\t\t\t\tabi: erc20Abi,\n\t\t\t\t\t\t\t\tfunctionName: 'decimals',\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t]);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tvalue: balance,\n\t\t\t\t\t\t\tformatted: formatUnits(balance, decimals),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t: skipToken,\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 { Currency } from '../../../../../_internal';\nimport { useMarketCurrencies } from '../../../../../hooks';\nimport {\n\tCustomSelect,\n\ttype SelectItem,\n} from '../../../../components/_internals/custom-select/CustomSelect';\n\ntype CurrencyOptionsSelectProps = {\n\tcollectionAddress: Hex;\n\tchainId: number;\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 } =\n\t\tuseMarketCurrencies({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tincludeNativeCurrency,\n\t\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 {\n\tButton,\n\tChevronDownIcon,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuContent,\n\tDropdownMenuPortal,\n\tDropdownMenuRoot,\n\tDropdownMenuTrigger,\n\tText,\n} from '@0xsequence/design-system';\nimport { type ReactNode, useState } from 'react';\n\nexport interface SelectItem {\n\tvalue: string;\n\tcontent: ReactNode;\n\tdisabled?: boolean;\n}\n\ninterface CustomSelectProps {\n\titems: SelectItem[];\n\tonValueChange?: (value: string) => void;\n\tdefaultValue?: SelectItem;\n\tplaceholder?: string;\n\tdisabled?: boolean;\n\tbackgroundColor?: string;\n\tclassName?: string;\n\ttestId?: string;\n}\n\nexport const CustomSelect = ({\n\titems,\n\tonValueChange,\n\tdefaultValue,\n\tplaceholder = 'Select an option',\n\tdisabled = false,\n\tclassName,\n\ttestId = 'custom-select',\n}: CustomSelectProps) => {\n\tconst [selectedItem, setSelectedItem] = useState<SelectItem | undefined>(\n\t\tdefaultValue,\n\t);\n\n\tconst handleValueChange = (item: SelectItem) => {\n\t\tsetSelectedItem(item);\n\t\tonValueChange?.(item.value);\n\t};\n\n\treturn (\n\t\t<DropdownMenuRoot>\n\t\t\t<DropdownMenuTrigger asChild disabled={disabled}>\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\tlabel={\n\t\t\t\t\t\t<div className=\"flex items-center justify-center gap-1 truncate pr-3\">\n\t\t\t\t\t\t\t<Text variant=\"xsmall\" color=\"text100\" fontWeight=\"bold\">\n\t\t\t\t\t\t\t\t{selectedItem ? selectedItem.content : placeholder}\n\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t<ChevronDownIcon size=\"xs\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\tshape=\"circle\"\n\t\t\t\t\tclassName={`bg-overlay-light py-1.5 pl-3 ${className || ''}`}\n\t\t\t\t\tdata-testid={`${testId}-trigger`}\n\t\t\t\t/>\n\t\t\t</DropdownMenuTrigger>\n\n\t\t\t<DropdownMenuPortal>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\talign=\"end\"\n\t\t\t\t\tside=\"bottom\"\n\t\t\t\t\tsideOffset={8}\n\t\t\t\t\tclassName=\"z-[1000] overflow-hidden rounded-xl border border-border-base bg-color-overlay-glass shadow-lg backdrop-blur-md\"\n\t\t\t\t\tdata-testid={`${testId}-content`}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"max-h-[240px] overflow-auto\">\n\t\t\t\t\t\t{items.map((item) => (\n\t\t\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\tchecked={selectedItem?.value === item.value}\n\t\t\t\t\t\t\t\tonCheckedChange={() => handleValueChange(item)}\n\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\tclassName=\"group relative flex cursor-pointer select-none items-center rounded-lg px-2 py-1.5 outline-none transition-colors hover:bg-background-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>span[data-state='checked']]:hidden\"\n\t\t\t\t\t\t\t\tdata-testid={`${testId}-option-${item.value}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"flex w-full items-center justify-between\">\n\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2 truncate\">\n\t\t\t\t\t\t\t\t\t\t{typeof item.content === 'string' ? (\n\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tcolor={\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedItem?.value === item.value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'text100'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'text80'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`truncate ${\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedItem?.value === item.value ? 'font-bold' : ''\n\t\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-testid={`${testId}-option-text-${item.value}`}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{item.content}\n\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\tdata-testid={`${testId}-option-content-${item.value}`}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{item.content}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</DropdownMenuCheckboxItem>\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 { Divider, Skeleton, Text } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport type { FeeOption } from '../../../../../../types/waas-types';\nimport { cn } from '../../../../../../utils';\nimport WaasFeeOptionsSelect from '../waasFeeOptionsSelect/WaasFeeOptionsSelect';\nimport ActionButtons from './_components/ActionButtons';\nimport BalanceIndicator from './_components/BalanceIndicator';\nimport { selectWaasFeeOptions$ } from './store';\nimport useWaasFeeOptionManager from './useWaasFeeOptionManager';\n\ntype SelectWaasFeeOptionsProps = {\n\tonCancel?: () => void;\n\tchainId: number;\n\ttitleOnConfirm?: string;\n\tclassName?: string;\n};\n\nconst SelectWaasFeeOptions = observer(\n\t({\n\t\tchainId,\n\t\tonCancel,\n\t\ttitleOnConfirm,\n\t\tclassName,\n\t}: SelectWaasFeeOptionsProps) => {\n\t\tconst {\n\t\t\tselectedFeeOption$,\n\t\t\tselectedFeeOption,\n\t\t\tpendingFeeOptionConfirmation,\n\t\t\tcurrencyBalance,\n\t\t\tcurrencyBalanceLoading,\n\t\t\tinsufficientBalance,\n\t\t\tfeeOptionsConfirmed,\n\t\t\thandleConfirmFeeOption,\n\t\t} = useWaasFeeOptionManager(chainId);\n\n\t\tconsole.log('pendingFeeOptionConfirmation', pendingFeeOptionConfirmation);\n\n\t\tconst handleCancelFeeOption = () => {\n\t\t\tselectWaasFeeOptions$.hide();\n\n\t\t\tonCancel?.();\n\t\t};\n\n\t\tconst isSponsored = pendingFeeOptionConfirmation?.options?.length === 0;\n\n\t\tif (\n\t\t\t!selectWaasFeeOptions$.isVisible.get() ||\n\t\t\tisSponsored ||\n\t\t\t!selectedFeeOption\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'flex w-full flex-col gap-2 rounded-2xl bg-button-emphasis p-0 backdrop-blur-md',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<Divider className=\"mt-0 mb-4\" />\n\n\t\t\t\t<Text className=\"mb-2 font-body font-bold text-large text-text-100\">\n\t\t\t\t\t{feeOptionsConfirmed ? titleOnConfirm : 'Select a fee option'}\n\t\t\t\t</Text>\n\n\t\t\t\t{!feeOptionsConfirmed && !pendingFeeOptionConfirmation && (\n\t\t\t\t\t<Skeleton className=\"h-[52px] w-full animate-shimmer rounded-xl\" />\n\t\t\t\t)}\n\n\t\t\t\t{(feeOptionsConfirmed || pendingFeeOptionConfirmation) && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'[&>label>button>span]:overflow-hidden [&>label>button]:w-full [&>label>button]:text-xs [&>label]:flex [&>label]:w-full',\n\t\t\t\t\t\t\tfeeOptionsConfirmed && 'pointer-events-none opacity-70',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<WaasFeeOptionsSelect\n\t\t\t\t\t\t\toptions={\n\t\t\t\t\t\t\t\t(pendingFeeOptionConfirmation?.options as FeeOption[]) || [\n\t\t\t\t\t\t\t\t\tselectedFeeOption,\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tselectedFeeOption$={selectedFeeOption$}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex w-full items-start justify-between\">\n\t\t\t\t\t{!feeOptionsConfirmed &&\n\t\t\t\t\t\t(!pendingFeeOptionConfirmation || currencyBalanceLoading) && (\n\t\t\t\t\t\t\t<Skeleton className=\"h-[20px] w-2/3 animate-shimmer rounded-xl\" />\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t{(feeOptionsConfirmed ||\n\t\t\t\t\t\t(pendingFeeOptionConfirmation && !currencyBalanceLoading)) && (\n\t\t\t\t\t\t<BalanceIndicator\n\t\t\t\t\t\t\tinsufficientBalance={insufficientBalance}\n\t\t\t\t\t\t\tcurrencyBalance={currencyBalance}\n\t\t\t\t\t\t\tselectedFeeOption={selectedFeeOption}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t<ActionButtons\n\t\t\t\t\tonCancel={handleCancelFeeOption}\n\t\t\t\t\tonConfirm={handleConfirmFeeOption}\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\t!selectedFeeOption?.token ||\n\t\t\t\t\t\tinsufficientBalance ||\n\t\t\t\t\t\tcurrencyBalanceLoading\n\t\t\t\t\t}\n\t\t\t\t\tloading={currencyBalanceLoading}\n\t\t\t\t\tconfirmed={feeOptionsConfirmed}\n\t\t\t\t\ttokenSymbol={selectedFeeOption?.token.symbol}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nexport default SelectWaasFeeOptions;\n","'use client';\n\nimport { Image, Select, Text } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport { useEffect } from 'react';\nimport { formatUnits, zeroAddress } from 'viem';\nimport type { FeeOption } from '../../../../../../types/waas-types';\nimport type { SelectItem } from '../../../../components/_internals/custom-select/CustomSelect';\nconst WaasFeeOptionsSelect = observer(\n\t({\n\t\toptions,\n\t\tselectedFeeOption$,\n\t}: {\n\t\toptions: FeeOption[];\n\t\tselectedFeeOption$: Observable<FeeOption | undefined>;\n\t}) => {\n\t\toptions = options.map((option) => ({\n\t\t\t...option,\n\t\t\ttoken: {\n\t\t\t\t...option.token,\n\t\t\t\tcontractAddress: option.token.contractAddress || zeroAddress,\n\t\t\t},\n\t\t}));\n\n\t\tconst feeOptions = options.map((option) => {\n\t\t\tconst value = option.token.contractAddress ?? '';\n\n\t\t\treturn FeeOptionSelectItem({ value, option });\n\t\t});\n\n\t\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\t\tuseEffect(() => {\n\t\t\tif (options.length > 0 && !selectedFeeOption$.get())\n\t\t\t\tselectedFeeOption$.set(options[0]);\n\t\t}, [options]);\n\n\t\tif (options.length === 0 || !selectedFeeOption$.get()?.token) return null;\n\n\t\treturn (\n\t\t\t<Select\n\t\t\t\tname=\"fee-option\"\n\t\t\t\toptions={feeOptions.map((option) => ({\n\t\t\t\t\tlabel: option.content,\n\t\t\t\t\tvalue: option.value,\n\t\t\t\t}))}\n\t\t\t\tonValueChange={(value) => {\n\t\t\t\t\tconst selectedOption = options.find(\n\t\t\t\t\t\t(option) => option.token.contractAddress === value,\n\t\t\t\t\t);\n\n\t\t\t\t\tselectedFeeOption$.set(selectedOption);\n\t\t\t\t}}\n\t\t\t\tdefaultValue={options[0].token.contractAddress ?? undefined}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nfunction FeeOptionSelectItem({\n\tvalue,\n\toption,\n}: {\n\tvalue: string;\n\toption: FeeOption;\n}) {\n\treturn {\n\t\tvalue,\n\t\tcontent: (\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Image\n\t\t\t\t\tclassName=\"h-3 w-3\"\n\t\t\t\t\tsrc={option.token.logoURL}\n\t\t\t\t\talt={option.token.symbol}\n\t\t\t\t/>\n\n\t\t\t\t<div className=\"flex gap-1\">\n\t\t\t\t\t<Text className=\"font-body text-sm\" color=\"text100\">\n\t\t\t\t\t\tFee\n\t\t\t\t\t</Text>\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=\"text50\"\n\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\t(in {option.token.symbol})\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<Text className=\"font-body text-sm\" color=\"text100\">\n\t\t\t\t\t\t:\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\n\t\t\t\t<Text className=\"font-body text-sm\">\n\t\t\t\t\t{formatUnits(BigInt(option.value), option.token.decimals || 0)}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t),\n\t} as SelectItem;\n}\n\nexport default WaasFeeOptionsSelect;\n","'use client';\n\nimport { Button, Skeleton, Spinner } from '@0xsequence/design-system';\n\nconst ActionButtons = ({\n\tonCancel,\n\tonConfirm,\n\tdisabled,\n\tloading,\n\tconfirmed,\n\ttokenSymbol,\n}: {\n\tonCancel: () => void;\n\tonConfirm: () => void;\n\tdisabled: boolean;\n\tloading: boolean;\n\tconfirmed: boolean;\n\ttokenSymbol?: string;\n}) => (\n\t<div className=\"mt-4 flex w-full items-center justify-end gap-2\">\n\t\t<Button\n\t\t\tpending={loading}\n\t\t\tonClick={onCancel}\n\t\t\tlabel={<div className=\"flex items-center gap-2\">Cancel</div>}\n\t\t\tvariant={'ghost'}\n\t\t\tshape=\"square\"\n\t\t\tsize=\"md\"\n\t\t/>\n\n\t\t<Button\n\t\t\tdisabled={disabled}\n\t\t\tpending={loading || confirmed}\n\t\t\tonClick={onConfirm}\n\t\t\tlabel={\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t{!confirmed ? (\n\t\t\t\t\t\ttokenSymbol ? (\n\t\t\t\t\t\t\t`Continue with ${tokenSymbol}`\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\tContinue with\n\t\t\t\t\t\t\t\t<Skeleton className=\"h-[20px] w-6 animate-shimmer\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<Spinner size=\"sm\" />\n\t\t\t\t\t\t\tConfirming\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t}\n\t\t\tvariant={'primary'}\n\t\t\tshape=\"square\"\n\t\t\tsize=\"md\"\n\t\t/>\n\t</div>\n);\n\nexport default ActionButtons;\n","import { Text, WarningIcon } from '@0xsequence/design-system';\nimport { CheckmarkIcon } from '@0xsequence/design-system';\n\nconst BalanceIndicator = ({\n\tinsufficientBalance,\n\tcurrencyBalance,\n\tselectedFeeOption,\n}: {\n\tinsufficientBalance: boolean;\n\tcurrencyBalance?: { formatted: string };\n\tselectedFeeOption?: { token: { symbol: string } };\n}) => (\n\t<div className=\"flex items-center gap-2\">\n\t\t{insufficientBalance ? (\n\t\t\t<WarningIcon className=\"text-negative\" size=\"xs\" />\n\t\t) : (\n\t\t\t<CheckmarkIcon className=\"text-positive\" size=\"xs\" />\n\t\t)}\n\n\t\t<Text\n\t\t\tclassName=\"font-body font-medium text-xs\"\n\t\t\tcolor={insufficientBalance ? 'negative' : 'text100'}\n\t\t>\n\t\t\tYou have {currencyBalance?.formatted || '0'}{' '}\n\t\t\t{selectedFeeOption?.token.symbol}\n\t\t</Text>\n\t</div>\n);\n\nexport default BalanceIndicator;\n","import { observable } from '@legendapp/state';\nimport type {\n\tFeeOption,\n\tWaasFeeOptionConfirmation,\n} from '../../../../../../types/waas-types';\n\ntype SelectWaasFeeOptionsState = {\n\tselectedFeeOption: FeeOption | undefined;\n\tpendingFeeOptionConfirmation: WaasFeeOptionConfirmation | undefined;\n\tisVisible: boolean;\n\thide: () => void;\n};\n\nconst initialState = {\n\tselectedFeeOption: undefined,\n\tpendingFeeOptionConfirmation: undefined,\n\tisVisible: false,\n\thide: () => {\n\t\tselectWaasFeeOptions$.isVisible.set(false);\n\t\tselectWaasFeeOptions$.selectedFeeOption.set(undefined);\n\t\tselectWaasFeeOptions$.pendingFeeOptionConfirmation.set(undefined);\n\t},\n} as SelectWaasFeeOptionsState;\n\nexport const selectWaasFeeOptions$ = observable(initialState);\n","import { useWaasFeeOptions } from '@0xsequence/connect';\nimport { useEffect, useState } from 'react';\nimport { type Address, zeroAddress } from 'viem';\nimport { useAccount } from 'wagmi';\nimport type { FeeOption } from '../../../../../../types/waas-types';\nimport { useCurrencyBalance } from '../../../../../hooks/useCurrencyBalance';\nimport { selectWaasFeeOptions$ } from './store';\n\nconst useWaasFeeOptionManager = (chainId: number) => {\n\tconst { address: userAddress } = useAccount();\n\tconst selectedFeeOption$ = selectWaasFeeOptions$.selectedFeeOption;\n\tconst [pendingFeeOptionConfirmation, confirmPendingFeeOption] =\n\t\tuseWaasFeeOptions();\n\tconst [feeOptionsConfirmed, setFeeOptionsConfirmed] = useState(false);\n\tconst selectedFeeOption = selectedFeeOption$.get();\n\n\tconst { data: currencyBalance, isLoading: currencyBalanceLoading } =\n\t\tuseCurrencyBalance({\n\t\t\tchainId,\n\t\t\tcurrencyAddress: (selectedFeeOption?.token.contractAddress ||\n\t\t\t\tzeroAddress) as Address,\n\t\t\tuserAddress: userAddress as Address,\n\t\t});\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: it causes a loop\n\tuseEffect(() => {\n\t\tif (!selectedFeeOption && pendingFeeOptionConfirmation) {\n\t\t\tif (pendingFeeOptionConfirmation.options.length > 0) {\n\t\t\t\tselectedFeeOption$.set(\n\t\t\t\t\tpendingFeeOptionConfirmation.options[0] as FeeOption,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}, [pendingFeeOptionConfirmation]);\n\n\tconst insufficientBalance = (() => {\n\t\tif (!selectedFeeOption?.value || !selectedFeeOption.token.decimals) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!currencyBalance?.value && currencyBalance?.value !== 0n) {\n\t\t\treturn true;\n\t\t}\n\n\t\ttry {\n\t\t\tconst feeValue = BigInt(selectedFeeOption.value);\n\t\t\treturn currencyBalance.value === 0n || currencyBalance.value < feeValue;\n\t\t} catch {\n\t\t\treturn true;\n\t\t}\n\t})();\n\n\tconst handleConfirmFeeOption = () => {\n\t\tif (!selectedFeeOption?.token || !pendingFeeOptionConfirmation?.id) return;\n\n\t\tconfirmPendingFeeOption(\n\t\t\tpendingFeeOptionConfirmation?.id,\n\t\t\tselectedFeeOption.token.contractAddress || zeroAddress,\n\t\t);\n\n\t\tsetFeeOptionsConfirmed(true);\n\t};\n\n\treturn {\n\t\tselectedFeeOption$,\n\t\tselectedFeeOption,\n\t\tpendingFeeOptionConfirmation,\n\t\tcurrencyBalance,\n\t\tcurrencyBalanceLoading,\n\t\tinsufficientBalance,\n\t\tfeeOptionsConfirmed,\n\t\thandleConfirmFeeOption,\n\t};\n};\n\nexport default useWaasFeeOptionManager;\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: number;\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 } from 'viem';\nimport { DEFAULT_MARKETPLACE_FEE_PERCENTAGE } from '../../../../../../consts';\nimport type { Price } from '../../../../../../types';\nimport { calculateEarningsAfterFees } from '../../../../../../utils/price';\nimport { useMarketplaceConfig, useRoyalty } from '../../../../../hooks';\n\ntype TransactionDetailsProps = {\n\tcollectibleId: string;\n\tcollectionAddress: Hex;\n\tchainId: number;\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?.market.collections.find(\n\t\t\t\t(collection) => collection.itemsAddress === 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 = '0';\n\n\tif (price) {\n\t\tconst fees: number[] = [];\n\n\t\tif (royalty !== null) {\n\t\t\tfees.push(Number(royalty.percentage));\n\t\t}\n\n\t\tif (marketplaceFeePercentage > 0) {\n\t\t\tfees.push(marketplaceFeePercentage);\n\t\t}\n\n\t\tformattedAmount = calculateEarningsAfterFees(\n\t\t\tBigInt(price.amountRaw),\n\t\t\tprice.currency.decimals,\n\t\t\tfees,\n\t\t);\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","import type { FeeOption } from '../../../../../types/waas-types';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\n\ninterface UseSelectWaasFeeOptionsProps {\n\tisProcessing: boolean;\n\tfeeOptionsVisible: boolean;\n\tselectedFeeOption: FeeOption;\n}\n\nexport const useSelectWaasFeeOptions = ({\n\tisProcessing,\n\tfeeOptionsVisible,\n\tselectedFeeOption,\n}: UseSelectWaasFeeOptionsProps) => {\n\tconst { wallet } = useWallet();\n\tconst isWaaS = wallet?.isWaaS;\n\tconst isProcessingWithWaaS = isProcessing && isWaaS;\n\n\tconst shouldHideActionButton =\n\t\tisProcessingWithWaaS && feeOptionsVisible === true && !!selectedFeeOption;\n\n\tconst waasFeeOptionsShown =\n\t\twallet?.isWaaS && isProcessing && feeOptionsVisible;\n\n\tconst getActionLabel = (\n\t\tdefaultLabel: string,\n\t\tloadingLabel = 'Loading fee options',\n\t) => {\n\t\tif (isProcessing) {\n\t\t\treturn isWaaS ? loadingLabel : defaultLabel;\n\t\t}\n\t\treturn defaultLabel;\n\t};\n\n\treturn {\n\t\tisWaaS,\n\t\tfeeOptionsVisible,\n\t\tshouldHideActionButton,\n\t\twaasFeeOptionsShown,\n\t\tisProcessingWithWaaS,\n\t\tgetActionLabel,\n\t};\n};\n","'use client';\n\nimport type { Observable } from '@legendapp/state';\nimport { useEffect } from 'react';\nimport type { MarketCollection } from '../../../../../types/new-marketplace-types';\nimport { compareAddress } from '../../../../../utils';\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: number;\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?.market.collections.find((c) =>\n\t\tcompareAddress(c.itemsAddress, collectionAddress),\n\t) as MarketCollection;\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: number;\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 { OrderbookKind, type Price } from '../../../../../types';\nimport { getSequenceMarketplaceRequestId } from '../../../../../utils/getSequenceMarketRequestId';\nimport {\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\tuseGenerateListingTransaction,\n\tuseMarketCurrencies,\n} from '../../../../hooks';\nimport { useTransactionStatusModal } from '../../_internal/components/transactionStatusModal';\nimport type { ModalCallbacks } from '../../_internal/types';\ninterface UseTransactionStepsArgs {\n\tlistingInput: ListingInput;\n\tchainId: number;\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 } = useMarketCurrencies({\n\t\tchainId,\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\tisTransactionExecuting,\n\t}: {\n\t\tisTransactionExecuting: boolean;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tsteps$.transaction.isExecuting.set(isTransactionExecuting);\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\tlet requestId = orderId;\n\n\t\t\t\tif (\n\t\t\t\t\thash &&\n\t\t\t\t\t(orderbookKind === OrderbookKind.sequence_marketplace_v1 ||\n\t\t\t\t\t\torderbookKind === OrderbookKind.sequence_marketplace_v2)\n\t\t\t\t) {\n\t\t\t\t\trequestId = await getSequenceMarketplaceRequestId(\n\t\t\t\t\t\thash,\n\t\t\t\t\t\twallet.publicClient,\n\t\t\t\t\t\tawait wallet.address(),\n\t\t\t\t\t);\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: currency?.symbol || '',\n\t\t\t\t\t\ttokenId: listingInput.listing.tokenId,\n\t\t\t\t\t\trequestId: requestId || '',\n\t\t\t\t\t\tchainId: chainId.toString(),\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\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\tmethod: signatureStep.post?.method as string,\n\t\t\tendpoint: signatureStep.post?.endpoint as string,\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","import {\n\ttype Address,\n\ttype Hex,\n\ttype PublicClient,\n\tparseEventLogs,\n} from 'viem';\nimport { SequenceMarketplaceV1_ABI } from '..';\n\nexport const getSequenceMarketplaceRequestId = async (\n\thash: Hex,\n\tpublicClient: PublicClient,\n\twalletAddress: Address,\n) => {\n\ttry {\n\t\tconst receipt = await publicClient.getTransactionReceipt({\n\t\t\thash: hash,\n\t\t});\n\n\t\tconst logs = parseEventLogs({\n\t\t\tabi: SequenceMarketplaceV1_ABI,\n\t\t\teventName: 'RequestCreated',\n\t\t\targs: {\n\t\t\t\tcreator: walletAddress,\n\t\t\t},\n\t\t\tlogs: receipt.logs,\n\t\t});\n\n\t\treturn logs[0].args.requestId.toString();\n\t} catch (error) {\n\t\tconsole.error(error);\n\t}\n};\n","import type { Auth, Event as DatabeatEvent } from '@databeat/tracker';\nimport { Databeat } from '@databeat/tracker';\n\nimport { useConfig } from '../../hooks';\nimport type {\n\tEventType,\n\tTrackCreateListing,\n\tTrackCreateOffer,\n\tTrackSellItems,\n\tTrackTransactionFailed,\n} from './types';\n\nexport type EventTypes = keyof typeof EventType;\nexport type Event = DatabeatEvent<EventTypes>;\n\nexport class DatabeatAnalytics extends Databeat<Extract<EventTypes, string>> {\n\ttrackSellItems(args: TrackSellItems) {\n\t\tthis.track({\n\t\t\tevent: 'SELL_ITEMS',\n\t\t\tprops: args.props,\n\t\t\tnums: args.nums,\n\t\t});\n\t}\n\n\ttrackCreateListing(args: TrackCreateListing) {\n\t\tthis.track({\n\t\t\tevent: 'CREATE_LISTING',\n\t\t\tprops: args.props,\n\t\t\tnums: args.nums,\n\t\t});\n\t}\n\n\ttrackCreateOffer(args: TrackCreateOffer) {\n\t\tthis.track({\n\t\t\tevent: 'CREATE_OFFER',\n\t\t\tprops: args.props,\n\t\t\tnums: args.nums,\n\t\t});\n\t}\n\n\ttrackTransactionFailed(args: TrackTransactionFailed) {\n\t\tthis.track({\n\t\t\tevent: 'TRANSACTION_FAILED',\n\t\t\tprops: args,\n\t\t});\n\t}\n}\n\nexport const useAnalytics = () => {\n\tconst config = useConfig();\n\tconst server = 'https://nodes.sequence.app';\n\n\tconst auth: Auth = {};\n\tauth.headers = { 'X-Access-Key': config.projectAccessKey };\n\n\treturn new DatabeatAnalytics(server, auth, {\n\t\tdefaultEnabled: true,\n\t\tinitProps: () => {\n\t\t\treturn { origin: window.location.origin };\n\t\t},\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 { selectWaasFeeOptions$ } from '../selectWaasFeeOptions/store';\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: number;\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\tif (selectWaasFeeOptions$.isVisible.get()) {\n\t\t\tselectWaasFeeOptions$.hide();\n\t\t}\n\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: number;\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 grow font-body text-sm\"\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 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-sm text-violet-400\"\n\t\t\t\t\tfontWeight=\"medium\"\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: number;\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: number;\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: 0,\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: number,\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\tlistingIsBeingProcessed: boolean;\n};\n\nexport type OpenCreateListingModalArgs = {\n\tcollectionAddress: Hex;\n\tchainId: number;\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: 0,\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\tlistingIsBeingProcessed: false,\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\tcreateListingModal$.listingIsBeingProcessed.set(false);\n\t\tcreateListingModal$.steps.approval.isExecuting.set(false);\n\t\tcreateListingModal$.steps.transaction.isExecuting.set(false);\n\t},\n};\n\nexport const createListingModal$ = observable<CreateListingState & Actions>({\n\t...initialState,\n\t...actions,\n});\n","'use client';\n\nimport { getNetwork } from '@0xsequence/connect';\nimport { NetworkType } from '@0xsequence/network';\nimport { Show, observer } from '@legendapp/state/react';\nimport { useState } from 'react';\nimport { parseUnits } from 'viem';\nimport type { FeeOption } from '../../../../types/waas-types';\nimport { dateToUnixTime } from '../../../../utils/date';\nimport { ContractType } from '../../../_internal';\nimport { useWallet } from '../../../_internal/wallet/useWallet';\nimport {\n\tuseCollectible,\n\tuseCollection,\n\tuseLowestListing,\n\tuseMarketCurrencies,\n} from '../../../hooks';\nimport { useBuyModal } from '../BuyModal';\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 SelectWaasFeeOptions from '../_internal/components/selectWaasFeeOptions';\nimport { selectWaasFeeOptions$ } from '../_internal/components/selectWaasFeeOptions/store';\nimport TokenPreview from '../_internal/components/tokenPreview';\nimport { useSelectWaasFeeOptions } from '../_internal/hooks/useSelectWaasFeeOptions';\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\tconst { wallet } = useWallet();\n\tconst isProcessing = makeOfferModal$.offerIsBeingProcessed.get();\n\n\tconst {\n\t\tshouldHideActionButton: shouldHideOfferButton,\n\t\twaasFeeOptionsShown,\n\t\tgetActionLabel,\n\t} = useSelectWaasFeeOptions({\n\t\tisProcessing,\n\t\tfeeOptionsVisible: selectWaasFeeOptions$.isVisible.get(),\n\t\tselectedFeeOption:\n\t\t\tselectWaasFeeOptions$.selectedFeeOption.get() as FeeOption,\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} = useMarketCurrencies({\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\tconst buyModal = useBuyModal(callbacks);\n\n\tconst { data: lowestListing } = useLowestListing({\n\t\ttokenId: collectibleId,\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tfilter: {\n\t\t\tcurrencies: [offerPrice.currency.contractAddress],\n\t\t},\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 handleMakeOffer = async () => {\n\t\tmakeOfferModal$.offerIsBeingProcessed.set(true);\n\n\t\ttry {\n\t\t\tif (wallet?.isWaaS) {\n\t\t\t\tselectWaasFeeOptions$.isVisible.set(true);\n\t\t\t}\n\n\t\t\tawait makeOffer({\n\t\t\t\tisTransactionExecuting: wallet?.isWaaS\n\t\t\t\t\t? getNetwork(Number(chainId)).type !== NetworkType.TESTNET\n\t\t\t\t\t: false,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('Make offer failed:', error);\n\t\t} finally {\n\t\t\tmakeOfferModal$.offerIsBeingProcessed.set(false);\n\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t}\n\t};\n\n\tconst offerCtaLabel = getActionLabel('Make offer');\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: offerCtaLabel,\n\t\t\tonClick: () => handleMakeOffer(),\n\t\t\tpending:\n\t\t\t\tsteps$?.transaction.isExecuting.get() ||\n\t\t\t\tmakeOfferModal$.offerIsBeingProcessed.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={() => {\n\t\t\t\t\tmakeOfferModal$.close();\n\t\t\t\t\tselectWaasFeeOptions$.hide();\n\t\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\t}}\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\thideCtas={shouldHideOfferButton}\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\tdisabled={shouldHideOfferButton}\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\tdisabled={shouldHideOfferButton}\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\tonBuyNow={() => {\n\t\t\t\t\t\t\t\tmakeOfferModal$.close();\n\n\t\t\t\t\t\t\t\tif (lowestListing) {\n\t\t\t\t\t\t\t\t\tbuyModal.show({\n\t\t\t\t\t\t\t\t\t\tchainId,\n\t\t\t\t\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\t\t\t\t\tcollectibleId,\n\t\t\t\t\t\t\t\t\t\torderId: lowestListing.orderId,\n\t\t\t\t\t\t\t\t\t\tmarketplace: lowestListing.marketplace,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t<ExpirationDateSelect\n\t\t\t\t\t$date={makeOfferModal$.expiry}\n\t\t\t\t\tdisabled={shouldHideOfferButton}\n\t\t\t\t/>\n\n\t\t\t\t{waasFeeOptionsShown && (\n\t\t\t\t\t<SelectWaasFeeOptions\n\t\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\t\tonCancel={() => {\n\t\t\t\t\t\t\tmakeOfferModal$.offerIsBeingProcessed.set(false);\n\t\t\t\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttitleOnConfirm=\"Processing offer...\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</ActionModal>\n\t\t</>\n\t);\n});\n","import type { ModalCallbacks } from '../_internal/types';\nimport { type BuyModalProps, buyModalStore } from './store';\n\nexport const useBuyModal = (callbacks?: ModalCallbacks) => {\n\treturn {\n\t\tshow: (args: BuyModalProps) =>\n\t\t\tbuyModalStore.send({ type: 'open', props: args, ...callbacks }),\n\t\tclose: () => buyModalStore.send({ type: 'close' }),\n\t};\n};\n","'use client';\n\nimport type { Observable } from '@legendapp/state';\nimport { useEffect } from 'react';\nimport { OrderbookKind } from '../../../../../types';\nimport type { MarketCollection } from '../../../../../types/new-marketplace-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: number;\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?.market.collections.find(\n\t\t(c) => c.itemsAddress === collectionAddress,\n\t) as MarketCollection;\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: number;\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 { getSequenceMarketplaceRequestId } from '../../../../../utils/getSequenceMarketRequestId';\nimport {\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: number;\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\tisTransactionExecuting,\n\t}: {\n\t\tisTransactionExecuting: boolean;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tsteps$.transaction.isExecuting.set(isTransactionExecuting);\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\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\tlet requestId = orderId;\n\n\t\t\t\tif (\n\t\t\t\t\thash &&\n\t\t\t\t\t(orderbookKind === OrderbookKind.sequence_marketplace_v1 ||\n\t\t\t\t\t\torderbookKind === OrderbookKind.sequence_marketplace_v2)\n\t\t\t\t) {\n\t\t\t\t\trequestId = await getSequenceMarketplaceRequestId(\n\t\t\t\t\t\thash,\n\t\t\t\t\t\twallet.publicClient,\n\t\t\t\t\t\tawait wallet.address(),\n\t\t\t\t\t);\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: chainId.toString(),\n\t\t\t\t\t\trequestId: requestId || '',\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\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\tmethod: signatureStep.post?.method as string,\n\t\t\tendpoint: signatureStep.post?.endpoint as string,\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\tofferIsBeingProcessed: boolean;\n};\n\nexport type OpenMakeOfferModalArgs = {\n\tcollectionAddress: Hex;\n\tchainId: number;\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: 0,\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\tofferIsBeingProcessed: false,\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$.offerIsBeingProcessed.set(false);\n\t},\n};\n\nexport const makeOfferModal$ = observable<MakeOfferState & Actions>({\n\t...initialState,\n\t...actions,\n});\n","'use client';\n\nimport { getNetwork } from '@0xsequence/connect';\nimport { NetworkType } from '@0xsequence/network';\nimport { Show, observer } from '@legendapp/state/react';\nimport { parseUnits } from 'viem';\nimport type { Price } from '../../../../types';\nimport type { FeeOption } from '../../../../types/waas-types';\nimport type { MarketplaceKind } from '../../../_internal/api/marketplace.gen';\nimport { useWallet } from '../../../_internal/wallet/useWallet';\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 SelectWaasFeeOptions from '../_internal/components/selectWaasFeeOptions';\nimport { selectWaasFeeOptions$ } from '../_internal/components/selectWaasFeeOptions/store';\nimport TokenPreview from '../_internal/components/tokenPreview';\nimport TransactionDetails from '../_internal/components/transactionDetails';\nimport TransactionHeader from '../_internal/components/transactionHeader';\nimport { useSelectWaasFeeOptions } from '../_internal/hooks/useSelectWaasFeeOptions';\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\tconst { wallet } = useWallet();\n\tconst feeOptionsVisible = selectWaasFeeOptions$.isVisible.get();\n\tconst network = getNetwork(Number(chainId));\n\tconst isTestnet = network.type === NetworkType.TESTNET;\n\tconst isProcessing = sellModal$.sellIsBeingProcessed.get();\n\tconst isWaaS = wallet?.isWaaS;\n\tconst { shouldHideActionButton: shouldHideSellButton } =\n\t\tuseSelectWaasFeeOptions({\n\t\t\tisProcessing,\n\t\t\tfeeOptionsVisible: selectWaasFeeOptions$.isVisible.get(),\n\t\t\tselectedFeeOption:\n\t\t\t\tselectWaasFeeOptions$.selectedFeeOption.get() as FeeOption,\n\t\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 handleSell = async () => {\n\t\tsellModal$.sellIsBeingProcessed.set(true);\n\n\t\ttry {\n\t\t\tif (wallet?.isWaaS) {\n\t\t\t\tselectWaasFeeOptions$.isVisible.set(true);\n\t\t\t}\n\n\t\t\tawait sell({\n\t\t\t\tisTransactionExecuting: wallet?.isWaaS ? !isTestnet : false,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('Sell failed:', error);\n\t\t} finally {\n\t\t\tsellModal$.sellIsBeingProcessed.set(false);\n\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t}\n\t};\n\n\t// if it's testnet, we don't need to show the fee options\n\tconst sellCtaLabel = isProcessing\n\t\t? isWaaS && !isTestnet\n\t\t\t? 'Loading fee options'\n\t\t\t: 'Accept'\n\t\t: 'Accept';\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: sellCtaLabel,\n\t\t\tonClick: () => handleSell(),\n\t\t\tpending:\n\t\t\t\tsteps$?.transaction.isExecuting.get() ||\n\t\t\t\tsellModal$.sellIsBeingProcessed.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\tconst showWaasFeeOptions =\n\t\twallet?.isWaaS &&\n\t\tsellModal$.sellIsBeingProcessed.get() &&\n\t\tfeeOptionsVisible;\n\n\treturn (\n\t\t<ActionModal\n\t\t\tisOpen={sellModal$.isOpen.get()}\n\t\t\tchainId={Number(chainId)}\n\t\t\tonClose={() => {\n\t\t\t\tsellModal$.close();\n\t\t\t\tselectWaasFeeOptions$.hide();\n\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t}}\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\thideCtas={shouldHideSellButton}\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\n\t\t\t{showWaasFeeOptions && (\n\t\t\t\t<SelectWaasFeeOptions\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonCancel={() => {\n\t\t\t\t\t\tsellModal$.sellIsBeingProcessed.set(false);\n\t\t\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\t\t}}\n\t\t\t\t\ttitleOnConfirm=\"Accepting offer...\"\n\t\t\t\t/>\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: number;\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: number;\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\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\tuseGenerateSellTransaction,\n\tuseMarketCurrencies,\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: number;\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,\n\t\tcollectionAddress: collectionAddress,\n\t});\n\n\tconst { data: currencies } = useMarketCurrencies({\n\t\tchainId,\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\tisTransactionExecuting,\n\t}: {\n\t\tisTransactionExecuting: boolean;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\ttry {\n\t\t\tsteps$.transaction.isExecuting.set(isTransactionExecuting);\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\tuserId: await wallet.address(),\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\trequestId: ordersData[0].orderId,\n\t\t\t\t\t\ttokenId: collectibleId,\n\t\t\t\t\t\tchainId: chainId.toString(),\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\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\tmethod: signatureStep.post?.method as string,\n\t\t\tendpoint: signatureStep.post?.endpoint as string,\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: number;\n\ttokenId: string;\n\torder: Order;\n\tcallbacks?: ModalCallbacks;\n};\n\ntype SellModalState = BaseModalState & {\n\ttokenId: string;\n\torder?: Order;\n\tsteps: TransactionSteps;\n\tsellIsBeingProcessed: boolean;\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: 0,\n\ttokenId: '',\n\torder: undefined,\n\tcallbacks: undefined,\n\tsellIsBeingProcessed: false,\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\tsellModal$.sellIsBeingProcessed.set(false);\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<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\tclassName=\"w-full\"\n\t\t\t>\n\t\t\t\t<Button\n\t\t\t\t\tshape=\"square\"\n\t\t\t\t\tleftIcon={ExternalLinkIcon}\n\t\t\t\t\tlabel={`View on ${successfulPurchaseModal$.state.explorerName.get()}`}\n\t\t\t\t/>\n\t\t\t</a>\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 { Address } from 'viem';\nimport { useAccount, useSwitchChain } from 'wagmi';\nimport type { FeeOption } from '../../../../types/waas-types';\nimport { useWallet } from '../../../_internal/wallet/useWallet';\nimport { MODAL_OVERLAY_PROPS } from '../_internal/components/consts';\nimport SelectWaasFeeOptions from '../_internal/components/selectWaasFeeOptions';\nimport { selectWaasFeeOptions$ } from '../_internal/components/selectWaasFeeOptions/store';\nimport { useSwitchChainModal } from '../_internal/components/switchChainModal';\nimport { useSelectWaasFeeOptions } from '../_internal/hooks/useSelectWaasFeeOptions';\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: Address;\n\tcollectibleId: string;\n\tchainId: number;\n\tcallbacks?: ModalCallbacks;\n};\n\nexport const useTransferModal = () => {\n\tconst { chainId: accountChainId } = useAccount();\n\tconst { show: showSwitchNetworkModal } = useSwitchChainModal();\n\tconst { wallet } = useWallet();\n\tconst { switchChain } = useSwitchChain();\n\n\tconst openModal = (args: ShowTransferModalArgs) => {\n\t\ttransferModal$.open(args);\n\t};\n\n\tconst handleShowModal = (args: ShowTransferModalArgs) => {\n\t\tconst targetChainId = Number(args.chainId);\n\t\tconst isSameChain = accountChainId === targetChainId;\n\n\t\tif (!isSameChain) {\n\t\t\tif (wallet?.isWaaS) {\n\t\t\t\tswitchChain({ chainId: targetChainId });\n\n\t\t\t\topenModal(args);\n\t\t\t} else {\n\t\t\t\tshowSwitchNetworkModal({\n\t\t\t\t\tchainIdToSwitchTo: targetChainId,\n\t\t\t\t\tonSuccess: () => openModal(args),\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\topenModal(args);\n\t};\n\n\tconst updateCallbacks = (callbacks: ModalCallbacks) => {\n\t\ttransferModal$.state.set({\n\t\t\t...transferModal$.state.get(),\n\t\t\tcallbacks,\n\t\t});\n\t};\n\n\treturn {\n\t\tshow: handleShowModal,\n\t\tclose: transferModal$.close,\n\t\tonError: updateCallbacks,\n\t\tonSuccess: updateCallbacks,\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\t\tcase 'followWalletInstructions':\n\t\t\treturn <FollowWalletInstructionsView />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n});\n\nconst TransferModal = observer(() => {\n\tconst isOpen = transferModal$.isOpen.get();\n\tconst chainId = transferModal$.state.chainId.get();\n\tconst isTransferBeingProcessed =\n\t\ttransferModal$.state.transferIsBeingProcessed.get();\n\tconst { waasFeeOptionsShown } = useSelectWaasFeeOptions({\n\t\tisProcessing: isTransferBeingProcessed,\n\t\tfeeOptionsVisible: selectWaasFeeOptions$.isVisible.get(),\n\t\tselectedFeeOption:\n\t\t\tselectWaasFeeOptions$.selectedFeeOption.get() as FeeOption,\n\t});\n\n\tif (!isOpen) return null;\n\n\treturn (\n\t\t<Modal\n\t\t\tisDismissible={true}\n\t\t\tonClose={() => {\n\t\t\t\ttransferModal$.close();\n\t\t\t\tselectWaasFeeOptions$.hide();\n\t\t\t}}\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\toverflow: '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\n\t\t\t{waasFeeOptionsShown && (\n\t\t\t\t<SelectWaasFeeOptions\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonCancel={() => {\n\t\t\t\t\t\ttransferModal$.state.transferIsBeingProcessed.set(false);\n\t\t\t\t\t}}\n\t\t\t\t\ttitleOnConfirm=\"Processing transfer...\"\n\t\t\t\t\tclassName=\"p-7 pt-0\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Modal>\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 type TransferModalView =\n\t| 'enterReceiverAddress'\n\t| 'followWalletInstructions'\n\t| undefined;\n\nexport interface TransferModalState {\n\tisOpen: boolean;\n\topen: (args: ShowTransferModalArgs) => void;\n\tclose: () => void;\n\tstate: {\n\t\tchainId: number;\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\ttransferIsBeingProcessed: boolean;\n\t};\n\tview: TransferModalView;\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\n\t\t// TODO: this doesn't work as expected\n\t\ttransferModal$.state.set({\n\t\t\t...initialState.state,\n\t\t});\n\n\t\ttransferModal$.state.receiverAddress.set('');\n\t\ttransferModal$.state.transferIsBeingProcessed.set(false);\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: 0,\n\t\tcollectibleId: '',\n\t\tquantity: '1',\n\t\ttransferIsBeingProcessed: false,\n\t},\n\tview: 'enterReceiverAddress',\n\thash: undefined,\n};\n\nexport const transferModal$ = observable(initialState);\n","'use client';\n\nimport { Text } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport { isAddress } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { useCollection, useListBalances } from '../../../../..';\nimport type { FeeOption } from '../../../../../../types/waas-types';\nimport { compareAddress } from '../../../../../../utils';\nimport { type CollectionType, ContractType } from '../../../../../_internal';\nimport AlertMessage from '../../../_internal/components/alertMessage';\nimport { selectWaasFeeOptions$ } from '../../../_internal/components/selectWaasFeeOptions/store';\nimport { useSelectWaasFeeOptions } from '../../../_internal/hooks/useSelectWaasFeeOptions';\nimport { transferModal$ } from '../../_store';\nimport getMessage from '../../messages';\nimport TokenQuantityInput from './_components/TokenQuantityInput';\nimport TransferButton from './_components/TransferButton';\nimport WalletAddressInput from './_components/WalletAddressInput';\nimport useHandleTransfer from './useHandleTransfer';\n\nconst EnterWalletAddressView = observer(() => {\n\tconst { address: connectedAddress } = useAccount();\n\tconst { collectionAddress, collectibleId, chainId, collectionType } =\n\t\ttransferModal$.state.get();\n\tconst $quantity = transferModal$.state.quantity;\n\tconst receiverAddress = transferModal$.state.receiverAddress.get();\n\tconst isWalletAddressValid = isAddress(receiverAddress);\n\tconst {\n\t\tisWaaS,\n\t\tisProcessingWithWaaS,\n\t\tshouldHideActionButton: shouldHideTransferButton,\n\t} = useSelectWaasFeeOptions({\n\t\tisProcessing: transferModal$.state.transferIsBeingProcessed.get(),\n\t\tfeeOptionsVisible: selectWaasFeeOptions$.isVisible.get(),\n\t\tselectedFeeOption:\n\t\t\tselectWaasFeeOptions$.selectedFeeOption.get() as FeeOption,\n\t});\n\n\tconst isSelfTransfer =\n\t\tisWalletAddressValid &&\n\t\tconnectedAddress &&\n\t\tcompareAddress(receiverAddress, connectedAddress);\n\n\tconst { data: tokenBalance } = useListBalances({\n\t\tchainId,\n\t\tcontractAddress: collectionAddress,\n\t\ttokenId: collectibleId,\n\t\taccountAddress: connectedAddress,\n\t\tquery: { enabled: !!connectedAddress },\n\t});\n\n\tconst balanceAmount = tokenBalance?.pages[0].balances[0].balance;\n\n\tlet insufficientBalance = true;\n\tif (balanceAmount !== undefined && $quantity.get()) {\n\t\ttry {\n\t\t\tconst quantityBigInt = BigInt($quantity.get());\n\t\t\tinsufficientBalance = quantityBigInt > BigInt(balanceAmount);\n\t\t} catch (e) {\n\t\t\tinsufficientBalance = true;\n\t\t}\n\t}\n\n\tconst { data: collection } = useCollection({\n\t\tcollectionAddress,\n\t\tchainId,\n\t});\n\n\ttransferModal$.state.collectionType.set(\n\t\tcollection?.type as CollectionType | undefined,\n\t);\n\n\tconst { transfer } = useHandleTransfer();\n\n\tconst onTransferClick = async () => {\n\t\ttransferModal$.state.transferIsBeingProcessed.set(true);\n\n\t\ttry {\n\t\t\tif (!isWaaS) {\n\t\t\t\ttransferModal$.view.set('followWalletInstructions');\n\t\t\t} else {\n\t\t\t\tselectWaasFeeOptions$.isVisible.set(true);\n\t\t\t}\n\n\t\t\tawait transfer();\n\t\t} catch (error) {\n\t\t\tconsole.error('Transfer failed:', error);\n\t\t} finally {\n\t\t\tif (transferModal$.view.get() === 'enterReceiverAddress') {\n\t\t\t\ttransferModal$.state.transferIsBeingProcessed.set(false);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst isErc1155 = collectionType === ContractType.ERC1155;\n\tconst showQuantityInput = isErc1155 && !!balanceAmount;\n\tconst isProcessing = !!transferModal$.state.transferIsBeingProcessed.get();\n\n\tconst isTransferDisabled =\n\t\tisProcessing ||\n\t\t!isWalletAddressValid ||\n\t\tinsufficientBalance ||\n\t\t!$quantity.get() ||\n\t\tNumber($quantity.get()) === 0 ||\n\t\tisSelfTransfer;\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\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<WalletAddressInput />\n\n\t\t\t\t{showQuantityInput && (\n\t\t\t\t\t<TokenQuantityInput\n\t\t\t\t\t\tbalanceAmount={balanceAmount ? BigInt(balanceAmount) : undefined}\n\t\t\t\t\t\tcollection={collection}\n\t\t\t\t\t\tisProcessingWithWaaS={isProcessingWithWaaS ?? false}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{!shouldHideTransferButton && (\n\t\t\t\t<TransferButton\n\t\t\t\t\tonClick={onTransferClick}\n\t\t\t\t\tisDisabled={isTransferDisabled}\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t/>\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 { cn } from '@0xsequence/design-system';\nimport { Text } from '@0xsequence/design-system';\nimport { observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport QuantityInput from '../../../../_internal/components/quantityInput';\nimport { transferModal$ } from '../../../_store';\n\nconst TokenQuantityInput = observer(\n\t({\n\t\tbalanceAmount,\n\t\tcollection,\n\t\tisProcessingWithWaaS,\n\t}: {\n\t\tbalanceAmount?: bigint;\n\t\tcollection?: { decimals?: number };\n\t\tisProcessingWithWaaS: boolean;\n\t}) => {\n\t\tconst $quantity = transferModal$.state.quantity;\n\t\tconst $invalidQuantity = observable(false);\n\n\t\tlet insufficientBalance = true;\n\t\tif (balanceAmount !== undefined && $quantity.get()) {\n\t\t\ttry {\n\t\t\t\tconst quantityBigInt = BigInt($quantity.get());\n\t\t\t\tinsufficientBalance = quantityBigInt > balanceAmount;\n\t\t\t} catch (e) {\n\t\t\t\tinsufficientBalance = true;\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'flex flex-col gap-3',\n\t\t\t\t\tisProcessingWithWaaS && 'pointer-events-none opacity-50',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<QuantityInput\n\t\t\t\t\t$quantity={$quantity}\n\t\t\t\t\t$invalidQuantity={$invalidQuantity}\n\t\t\t\t\tdecimals={collection?.decimals || 0}\n\t\t\t\t\tmaxQuantity={balanceAmount ? String(balanceAmount) : '0'}\n\t\t\t\t\tclassName=\"[&>label>div>div>div>input]:text-sm [&>label>div>div>div]:h-13 [&>label>div>div>div]:rounded-xl [&>label>div>div>span]:text-sm [&>label>div>div>span]:text-text-80 [&>label]:gap-1\"\n\t\t\t\t/>\n\n\t\t\t\t<Text\n\t\t\t\t\tclassName=\"font-body text-xs\"\n\t\t\t\t\tcolor={insufficientBalance ? 'negative' : 'text50'}\n\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{`You have ${balanceAmount?.toString() || '0'} of this item`}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nexport default TokenQuantityInput;\n","'use client';\n\nimport { getNetwork } from '@0xsequence/connect';\nimport { Button, Spinner } from '@0xsequence/design-system';\nimport { NetworkType } from '@0xsequence/network';\nimport { observer } from '@legendapp/state/react';\nimport { useWallet } from '../../../../../../_internal/wallet/useWallet';\nimport { transferModal$ } from '../../../_store';\n\nconst TransferButton = observer(\n\t({\n\t\tonClick,\n\t\tisDisabled,\n\t\tchainId,\n\t}: {\n\t\tonClick: () => Promise<void>;\n\t\tisDisabled: boolean | undefined;\n\t\tchainId: number;\n\t}) => {\n\t\tconst { wallet } = useWallet();\n\t\tconst network = getNetwork(chainId);\n\t\tconst isWaaS = wallet?.isWaaS;\n\t\tconst isTestnet = network.type === NetworkType.TESTNET;\n\t\tconst isProcessing = transferModal$.state.transferIsBeingProcessed.get();\n\t\tconst label = isProcessing ? (\n\t\t\tisWaaS && !isTestnet ? (\n\t\t\t\t<div className=\"flex items-center justify-center gap-2\">\n\t\t\t\t\t<Spinner size=\"sm\" className=\"text-white\" />\n\t\t\t\t\t<span>Loading fee options</span>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"flex items-center justify-center gap-2\">\n\t\t\t\t\t<Spinner size=\"sm\" className=\"text-white\" />\n\t\t\t\t\t<span>Transferring</span>\n\t\t\t\t</div>\n\t\t\t)\n\t\t) : (\n\t\t\t'Transfer'\n\t\t);\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tclassName=\"flex justify-self-end px-10\"\n\t\t\t\tonClick={onClick}\n\t\t\t\tdisabled={!!isDisabled}\n\t\t\t\ttitle=\"Transfer\"\n\t\t\t\tlabel={label}\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);\n\t},\n);\n\nexport default TransferButton;\n","'use client';\n\nimport { TextInput } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport { isAddress } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { transferModal$ } from '../../../_store';\n\nconst MAX_WALLET_ADDRESS_LENGTH = 42;\n\nconst WalletAddressInput = observer(() => {\n\tconst { address: connectedAddress } = useAccount();\n\tconst receiverAddress = transferModal$.state.receiverAddress.get();\n\tconst isWalletAddressValid = isAddress(receiverAddress);\n\tconst isProcessing = transferModal$.state.transferIsBeingProcessed.get();\n\n\tconst isSelfTransfer =\n\t\tisWalletAddressValid &&\n\t\tconnectedAddress &&\n\t\treceiverAddress.toLowerCase() === connectedAddress.toLowerCase();\n\n\tconst handleChangeWalletAddress = (\n\t\tevent: React.ChangeEvent<HTMLInputElement>,\n\t) => {\n\t\ttransferModal$.state.receiverAddress.set(event.target.value);\n\t};\n\n\treturn (\n\t\t<div className=\"[&>label>div>span]:text-sm [&>label>div>span]:text-text-80 [&>label]:gap-1\">\n\t\t\t<TextInput\n\t\t\t\tlabel=\"Wallet address\"\n\t\t\t\tlabelLocation=\"top\"\n\t\t\t\tautoFocus\n\t\t\t\tvalue={receiverAddress}\n\t\t\t\tmaxLength={MAX_WALLET_ADDRESS_LENGTH}\n\t\t\t\tonChange={handleChangeWalletAddress}\n\t\t\t\tname=\"walletAddress\"\n\t\t\t\tplaceholder=\"Enter wallet address\"\n\t\t\t\tdisabled={isProcessing}\n\t\t\t/>\n\t\t\t{isSelfTransfer && (\n\t\t\t\t<div className=\"mt-1 text-negative text-sm\">\n\t\t\t\t\tYou cannot transfer to your own address\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n});\n\nexport default WalletAddressInput;\n","import { useWaasFeeOptions } from '@0xsequence/connect';\nimport 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 { useWallet } from '../../../../../_internal/wallet/useWallet';\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\n\tconst { transferTokensAsync } = useTransferTokens();\n\tconst { show: showTransactionStatusModal } = useTransactionStatusModal();\n\tconst { wallet } = useWallet();\n\tconst [pendingFeeOptionConfirmation] = useWaasFeeOptions();\n\n\tconst getHash = async (): Promise<Hex> => {\n\t\tconst baseParams = {\n\t\t\treceiverAddress: receiverAddress as Hex,\n\t\t\tcollectionAddress,\n\t\t\ttokenId: collectibleId,\n\t\t\tchainId,\n\t\t};\n\n\t\tif (collectionType === ContractType.ERC721) {\n\t\t\treturn await transferTokensAsync({\n\t\t\t\t...baseParams,\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\t...baseParams,\n\t\t\tcontractType: ContractType.ERC1155,\n\t\t\tquantity: String(quantity),\n\t\t});\n\t};\n\n\tconst transfer = async (): Promise<void> => {\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\tif (wallet?.isWaaS && pendingFeeOptionConfirmation) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst hash = await getHash();\n\t\t\ttransferModal$.close();\n\n\t\t\tshowTransactionStatusModal({\n\t\t\t\thash,\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\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","'use client';\n\nimport { Skeleton } from '@0xsequence/design-system';\nimport type { Hex } from 'viem';\nimport type {\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 { Footer } from './Footer';\nimport { Media } from './media/Media';\n\nfunction CollectibleSkeleton() {\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"collectible-card-skeleton\"\n\t\t\tclassName=\"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>\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: number;\n\tcollectionAddress: Hex;\n\torderbookKind?: OrderbookKind;\n\tcollectionType?: ContractType;\n\tcollectible: 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\tbalanceIsLoading: boolean;\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\tcollectible,\n\tonCollectibleClick,\n\tonOfferClick,\n\tbalance,\n\tbalanceIsLoading,\n\tcardLoading,\n\tonCannotPerformAction,\n\tassetSrcPrefixUrl,\n}: CollectibleCardProps) {\n\tconst collectibleMetadata = collectible?.metadata;\n\tconst highestOffer = collectible?.offer;\n\n\tconst { data: lowestListingCurrency } = useCurrency({\n\t\tchainId,\n\t\tcurrencyAddress: collectible?.listing?.priceCurrencyAddress,\n\t\tquery: {\n\t\t\tenabled: !!collectible?.listing?.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(!collectible?.listing && CollectibleCardAction.LIST) ||\n\t\t\t\tCollectibleCardAction.TRANSFER\n\t\t\t: (collectible?.listing && CollectibleCardAction.BUY) ||\n\t\t\t\tCollectibleCardAction.OFFER\n\t) as CollectibleCardAction;\n\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"collectible-card\"\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<Media\n\t\t\t\t\t\tname={collectibleMetadata?.name || ''}\n\t\t\t\t\t\tassets={[\n\t\t\t\t\t\t\tcollectibleMetadata?.image,\n\t\t\t\t\t\t\tcollectibleMetadata?.video,\n\t\t\t\t\t\t\tcollectibleMetadata?.animation_url,\n\t\t\t\t\t\t]}\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={collectible?.listing?.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 || collectible) && !balanceIsLoading && (\n\t\t\t\t\t\t<div className=\"-bottom-16 absolute flex w-full origin-bottom items-center justify-center bg-overlay-light p-2 backdrop-blur transition-transform duration-200 ease-in-out group-hover:translate-y-[-64px]\">\n\t\t\t\t\t\t\t<ActionButton\n\t\t\t\t\t\t\t\tchainId={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={collectible?.listing}\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: number;\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 { useWallet } from '../../../../../_internal/wallet/useWallet';\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 { wallet } = useWallet();\n\tconst address = wallet?.address;\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: number;\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\tcollectibleId: tokenId,\n\t\t\t\t\t\torderId: lowestListing.orderId,\n\t\t\t\t\t\tmarketplace: lowestListing.marketplace,\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: number;\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 { useWallet } from '../../../../../_internal/wallet/useWallet';\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 { wallet } = useWallet();\n\tconst address = wallet?.address;\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\tactionsThatOwnersCannotPerform.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 {\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","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { cn } from '../../../../../utils';\nimport { fetchContentType } from '../../../../../utils/fetchContentType';\nimport ChessTileImage from '../../../images/chess-tile.png';\nimport ModelViewer from '../../ModelViewer';\nimport MediaSkeleton from './MediaSkeleton';\nimport type { ContentTypeState, MediaProps } from './types';\nimport { getContentType } from './utils';\n\n/**\n * @description This component is used to display a collectible asset.\n * It will display the first valid asset from the assets array.\n * If no valid asset is found, it will display the placeholder image.\n *\n * @example\n * <Media\n * name=\"Collectible\"\n * assets={[undefined, \"some-image-url\", undefined]} // undefined assets will be ignored, \"some-image-url\" will be rendered\n * assetSrcPrefixUrl=\"https://example.com/\"\n * className=\"w-full h-full\"\n * />\n */\nexport function Media({\n\tname,\n\tassets,\n\tassetSrcPrefixUrl,\n\tclassName,\n\tsupply,\n\tisLoading,\n}: MediaProps) {\n\tconst [assetLoadFailed, setAssetLoadFailed] = useState(false);\n\tconst [assetLoading, setAssetLoading] = useState(true);\n\tconst [contentType, setContentType] = useState<ContentTypeState>({\n\t\ttype: null,\n\t\tloading: true,\n\t\tfailed: false,\n\t});\n\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n\tconst placeholderImage = ChessTileImage;\n\tconst assetUrl = assets.find((asset): asset is string => !!asset);\n\tconst proxiedAssetUrl = assetUrl\n\t\t? assetSrcPrefixUrl\n\t\t\t? `${assetSrcPrefixUrl}${assetUrl}`\n\t\t\t: assetUrl\n\t\t: '';\n\n\tconst classNames = cn(\n\t\t'relative aspect-square overflow-hidden bg-background-secondary',\n\t\tsupply !== undefined && supply === 0 && 'opacity-50',\n\t\tclassName,\n\t);\n\n\tuseEffect(() => {\n\t\tif (!assetUrl) {\n\t\t\tsetContentType({ type: null, loading: false, failed: true });\n\t\t\treturn;\n\t\t}\n\n\t\tconst determineContentType = async () => {\n\t\t\ttry {\n\t\t\t\tconst type = await getContentType(proxiedAssetUrl);\n\t\t\t\tsetContentType({ type, loading: false, failed: false });\n\t\t\t} catch {\n\t\t\t\ttry {\n\t\t\t\t\tconst type = await fetchContentType(proxiedAssetUrl);\n\t\t\t\t\tsetContentType({ type, loading: false, failed: false });\n\t\t\t\t} catch {\n\t\t\t\t\tsetContentType({ type: null, loading: false, failed: true });\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tdetermineContentType();\n\t}, [proxiedAssetUrl, assetUrl]);\n\n\tconst handleAssetError = () => {\n\t\tsetAssetLoadFailed(true);\n\t};\n\n\tconst handleAssetLoad = () => {\n\t\tsetAssetLoading(false);\n\t};\n\n\t// Display placeholder if asset fails to load or doesn't exist\n\tif ((!isLoading && contentType.failed && !assetLoadFailed) || !assetUrl) {\n\t\treturn (\n\t\t\t<div className={cn('h-full w-full', classNames)}>\n\t\t\t\t<img\n\t\t\t\t\tsrc={placeholderImage}\n\t\t\t\t\talt={name || 'Collectible'}\n\t\t\t\t\tclassName=\"h-full w-full object-cover\"\n\t\t\t\t\tonError={(e) => {\n\t\t\t\t\t\tconsole.error('Failed to load placeholder image');\n\t\t\t\t\t\te.currentTarget.style.display = 'none';\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Render based on content type\n\tif (contentType.type === 'html' && !assetLoadFailed) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'flex w-full items-center justify-center rounded-lg',\n\t\t\t\t\tclassNames,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{(assetLoading || contentType.loading || isLoading) && (\n\t\t\t\t\t<MediaSkeleton />\n\t\t\t\t)}\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={{ border: '0px' }}\n\t\t\t\t\tonError={handleAssetError}\n\t\t\t\t\tonLoad={handleAssetLoad}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (contentType.type === '3d-model' && !assetLoadFailed) {\n\t\treturn (\n\t\t\t<div className={cn('h-full w-full', classNames)}>\n\t\t\t\t<ModelViewer\n\t\t\t\t\tsrc={proxiedAssetUrl}\n\t\t\t\t\tposterSrc={placeholderImage}\n\t\t\t\t\tonLoad={handleAssetLoad}\n\t\t\t\t\tonError={handleAssetError}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (contentType.type === 'video' && !assetLoadFailed) {\n\t\tconst videoClassNames = cn(\n\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\tassetLoading || isLoading ? 'invisible' : 'visible',\n\t\t\t// we can't hide the video controls in safari, when user hovers over the video they show up.\n\t\t\t// `pointer-events-none` is the only way to hide them on hover\n\t\t\tisSafari && 'pointer-events-none',\n\t\t);\n\n\t\treturn (\n\t\t\t<div className={classNames}>\n\t\t\t\t{(assetLoading || contentType.loading || isLoading) && (\n\t\t\t\t\t<MediaSkeleton />\n\t\t\t\t)}\n\n\t\t\t\t<video\n\t\t\t\t\tref={videoRef}\n\t\t\t\t\tclassName={videoClassNames}\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={handleAssetError}\n\t\t\t\t\tonLoadedMetadata={handleAssetLoad}\n\t\t\t\t\tdata-testid=\"collectible-asset-video\"\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\t// Default to image renderer\n\tconst imgSrc =\n\t\tassetLoadFailed || contentType.failed ? placeholderImage : proxiedAssetUrl;\n\n\tconst imgClassNames = cn(\n\t\t'absolute inset-0 h-full w-full object-cover transition-transform duration-200 ease-in-out group-hover:scale-hover',\n\t\tassetLoading || contentType.loading || isLoading ? 'invisible' : 'visible',\n\t);\n\n\treturn (\n\t\t<div className={classNames}>\n\t\t\t{(assetLoading || contentType.loading || isLoading) && <MediaSkeleton />}\n\n\t\t\t<img\n\t\t\t\tsrc={imgSrc}\n\t\t\t\talt={name || 'Collectible'}\n\t\t\t\tclassName={imgClassNames}\n\t\t\t\tonError={(e) => {\n\t\t\t\t\tif (contentType.type === 'image') {\n\t\t\t\t\t\tsetAssetLoadFailed(true);\n\t\t\t\t\t}\n\t\t\t\t\t// If this is the placeholder image that failed\n\t\t\t\t\tif (e.currentTarget.src === placeholderImage) {\n\t\t\t\t\t\tconsole.error('Failed to load placeholder image');\n\t\t\t\t\t\te.currentTarget.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tonLoad={handleAssetLoad}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","/**\n * Fetches the Content-Type header of a given URL and returns the primary type if it's supported.\n * @param url The URL to send the request to.\n * @returns A Promise that resolves with 'image', 'video', 'html', or null.\n */\nexport function fetchContentType(\n\turl: string | undefined,\n): Promise<'image' | 'video' | 'html' | '3d-model' | null> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (typeof XMLHttpRequest === 'undefined') {\n\t\t\treject(new Error('XMLHttpRequest is not supported in this environment.'));\n\t\t\treturn;\n\t\t}\n\n\t\tif (!url) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst client = new XMLHttpRequest();\n\t\tlet settled = false;\n\n\t\tconst settle = (value: 'image' | 'video' | 'html' | '3d-model' | null) => {\n\t\t\tif (!settled) {\n\t\t\t\tsettled = true;\n\t\t\t\tresolve(value);\n\t\t\t\tclient.abort();\n\t\t\t}\n\t\t};\n\n\t\tconst fail = (error: Error) => {\n\t\t\tif (!settled) {\n\t\t\t\tsettled = true;\n\t\t\t\treject(error);\n\t\t\t}\n\t\t};\n\n\t\tclient.open('HEAD', url, true);\n\n\t\tclient.onreadystatechange = () => {\n\t\t\tif (settled || client.readyState < XMLHttpRequest.HEADERS_RECEIVED) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (client.readyState === XMLHttpRequest.HEADERS_RECEIVED) {\n\t\t\t\tconst status = client.status;\n\n\t\t\t\tif (status < 200 || status >= 300) {\n\t\t\t\t\tsettle(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst contentType = client.getResponseHeader('Content-Type');\n\n\t\t\t\tif (!contentType) {\n\t\t\t\t\tsettle(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst primaryType = contentType.split('/')[0].toLowerCase();\n\t\t\t\tlet result: 'image' | 'video' | 'html' | '3d-model' | null = null;\n\n\t\t\t\tswitch (primaryType) {\n\t\t\t\t\tcase 'image':\n\t\t\t\t\t\tresult = 'image';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'video':\n\t\t\t\t\t\tresult = 'video';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'text':\n\t\t\t\t\t\tif (contentType.toLowerCase().includes('html')) {\n\t\t\t\t\t\t\tresult = 'html';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'model':\n\t\t\t\t\t\tresult = '3d-model';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tsettle(result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\n\t\tclient.onerror = (errorEvent) => {\n\t\t\tfail(\n\t\t\t\tnew Error(`XMLHttpRequest network error for URL: ${url}`, {\n\t\t\t\t\tcause: errorEvent,\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\n\t\tclient.onabort = () => {\n\t\t\tif (!settled) {\n\t\t\t\tsettle(null);\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\tclient.send();\n\t\t} catch (error) {\n\t\t\tfail(\n\t\t\t\tnew Error(`Error sending XMLHttpRequest for URL: ${url}`, {\n\t\t\t\t\tcause: error,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t});\n}\n","import { Skeleton } from '@0xsequence/design-system';\nimport { Suspense, lazy } from 'react';\n\nconst ModelViewerComponent = lazy(() =>\n\timport('@google/model-viewer').then(() => ({\n\t\tdefault: ({\n\t\t\tposterSrc,\n\t\t\tsrc,\n\t\t\tonLoad,\n\t\t\tonError,\n\t\t}: {\n\t\t\tposterSrc: string;\n\t\t\tsrc?: string;\n\t\t\tonLoad?: () => void;\n\t\t\tonError?: () => void;\n\t\t}) => (\n\t\t\t<div className=\"h-full w-full bg-background-raised\">\n\t\t\t\t{/* @ts-expect-error - This is a web component */}\n\t\t\t\t<model-viewer\n\t\t\t\t\talt=\"3d model\"\n\t\t\t\t\tauto-rotate\n\t\t\t\t\tautoplay\n\t\t\t\t\tcamera-controls\n\t\t\t\t\tclass=\"h-full w-full\"\n\t\t\t\t\terror={onError}\n\t\t\t\t\tload={onLoad}\n\t\t\t\t\tloading=\"eager\"\n\t\t\t\t\tposter={posterSrc}\n\t\t\t\t\treveal=\"auto\"\n\t\t\t\t\tshadow-intensity=\"1\"\n\t\t\t\t\tsrc={src}\n\t\t\t\t\ttouch-action=\"pan-y\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t),\n\t})),\n);\n\nconst ModelViewerLoading = () => <Skeleton className=\"h-full w-full\" />;\n\nconst ModelViewer = (props: {\n\tposterSrc: string;\n\tsrc?: string;\n\tonLoad?: () => void;\n\tonError?: () => void;\n}) => {\n\treturn (\n\t\t<Suspense fallback={<ModelViewerLoading />}>\n\t\t\t<ModelViewerComponent {...props} />\n\t\t</Suspense>\n\t);\n};\n\nexport default ModelViewer;\n","import { Skeleton } from '@0xsequence/design-system';\n\nexport default function MediaSkeleton() {\n\treturn (\n\t\t<Skeleton\n\t\t\tdata-testid=\"media\"\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","export const isImage = (fileName: string | undefined) => {\n\tconst isImage = /.*\\.(png|jpg|jpeg|gif|svg|webp)$/.test(\n\t\tfileName?.toLowerCase() || '',\n\t);\n\treturn isImage;\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 is3dFile = /.*\\.(gltf|glb|obj|fbx|stl|usdz)$/.test(\n\t\tfileName?.toLowerCase() || '',\n\t);\n\treturn is3dFile;\n};\n\nexport const getContentType = (\n\turl: string | undefined,\n): Promise<'image' | 'video' | 'html' | '3d-model' | null> => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst type = isHtml(url)\n\t\t\t? 'html'\n\t\t\t: isVideo(url)\n\t\t\t\t? 'video'\n\t\t\t\t: isImage(url)\n\t\t\t\t\t? 'image'\n\t\t\t\t\t: is3dModel(url)\n\t\t\t\t\t\t? '3d-model'\n\t\t\t\t\t\t: null;\n\n\t\tif (type) {\n\t\t\tresolve(type);\n\t\t} else {\n\t\t\treject(new Error('Unsupported file type'));\n\t\t}\n\t});\n};\n"],"mappings":"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","names":["useQuery","useQuery","useQuery","useQuery","queryOptions","useQuery","z","z","z","filterSchema","z","queryOptions","useQuery","queryOptions","useQuery","z","z","queryOptions","useQuery","useQuery","useQuery","queryOptions","useQuery","z","queryOptions","useQuery","z","z","queryOptions","useQuery","z","queryOptions","useQuery","useQuery","useQuery","queryOptions","useQuery","z","z","currency","queryOptions","useQuery","queryOptions","useQuery","queryOptions","useQuery","otherFilters","queryOptions","useQuery","z","z","queryOptions","useQuery","useQuery","useQuery","useInfiniteQuery","useInfiniteQuery","queryOptions","useQuery","queryOptions","useQuery","useInfiniteQuery","useInfiniteQuery","queryOptions","useQuery","z","z","queryOptions","useQuery","queryOptions","useQuery","queryOptions","useQuery","queryOptions","useQuery","z","z","queryOptions","useQuery","queryOptions","useQuery","z","z","queryOptions","useQuery","queryOptions","useQuery","z","z","queryOptions","useQuery","queryOptions","useQuery","z","z","queryOptions","useQuery","useQuery","useQuery","z","z","useMutation","skipToken","useQuery","useAccount","BaseError","from","wallet","BaseError","chain","useAccount","useQuery","skipToken","wallet","useMutation","useMutation","z","z","useMutation","useMutation","z","z","useMutation","erc721Abi","useAccount","erc721Abi","useAccount","queryOptions","useQuery","useAccount","z","z","queryOptions","useAccount","useQuery","useQuery","queryOptions","skipToken","queryOptions","skipToken","useQuery","useEffect","Text","useSwitchChain","jsx","jsx","jsxs","useSwitchChain","Text","wallet","steps","steps","useEffect","queryOptions","useQuery","queryOptions","useQuery","queryOptions","useQuery","queryOptions","useQuery","useQuery","useQuery","useQuery","observer","useEffect","Text","Button","Modal","Spinner","Text","observer","jsx","jsxs","observer","wallet","Modal","Text","Spinner","Button","jsx","Text","Spinner","jsx","Spinner","Text","observable","observer","useState","jsx","jsxs","observer","useState","jsx","jsxs","Text","skipToken","useQuery","collection","useCheckoutOptions","wallet","useQuery","skipToken","wallet","useCheckoutOptions","skipToken","useQuery","erc20Abi","wallet","steps","useQuery","skipToken","jsx","wallet","useEffect","observer","parseUnits","useAccount","Text","observer","useState","Button","jsx","jsx","jsxs","Button","jsx","jsxs","observer","ExpirationDateSelect","useState","Text","Button","Text","jsx","jsxs","Text","Button","NumericInput","Text","use$","useEffect","useRef","useState","useAccount","skipToken","useQuery","erc20Abi","formatUnits","zeroAddress","usePublicClient","balance","TokenImage","useState","jsx","Skeleton","observer","useEffect","Button","DropdownMenuContent","DropdownMenuPortal","DropdownMenuRoot","DropdownMenuTrigger","Text","useState","jsx","jsxs","jsx","observer","CurrencyOptionsSelect","useEffect","Skeleton","currency","jsx","jsxs","useAccount","useRef","use$","useEffect","useState","NumericInput","Text","Skeleton","Text","observer","Text","observer","useEffect","formatUnits","zeroAddress","jsx","jsxs","Button","Skeleton","Spinner","jsx","jsxs","Text","WarningIcon","jsx","jsxs","observable","initialState","useWaasFeeOptions","useEffect","useState","zeroAddress","useAccount","useAccount","useWaasFeeOptions","useState","zeroAddress","useEffect","jsx","jsxs","observer","Text","Skeleton","Image","Skeleton","Text","jsx","jsxs","Skeleton","Image","Text","Image","Skeleton","Text","jsx","jsxs","Text","Image","Skeleton","wallet","useEffect","skipToken","useQuery","useAccount","wallet","useAccount","useQuery","steps","skipToken","formatUnits","Modal","Skeleton","Text","use$","CheckmarkIcon","Spinner","Text","jsx","jsxs","Spinner","Text","CheckmarkIcon","Image","Skeleton","Text","observer","formatUnits","Text","useEffect","useState","jsx","observable","initialState","jsx","jsxs","observer","formatUnits","Skeleton","Text","Image","skipToken","useQuery","useEffect","useState","WaitForTransactionReceiptTimeoutError","wallet","useState","useQuery","skipToken","useEffect","WaitForTransactionReceiptTimeoutError","formatUnits","formatUnits","jsx","jsxs","use$","Modal","Text","Skeleton","wallet","currency","steps","formatUnits","useEffect","observable","addDays","initialState","addDays","observable","jsx","jsxs","Modal","observer","listingPrice","wallet","useAccount","parseUnits","Show","observer","useState","parseUnits","useEffect","skipToken","useQuery","ONE_DAY_IN_SECONDS","useGetTokenApprovalData","wallet","useQuery","steps","skipToken","formatUnits","useTransactionSteps","wallet","steps","formatUnits","useGetTokenApprovalData","useEffect","useTransactionSteps","observable","addDays","approval","transaction","steps","initialState","actions","Fragment","jsx","jsxs","Show","Modal","observer","offerPrice","useState","wallet","parseUnits","state","getNetwork","NetworkType","Show","observer","parseUnits","Image","Skeleton","Text","formatDistanceToNow","jsx","jsxs","useEffect","skipToken","useQuery","useGetTokenApprovalData","wallet","useQuery","steps","skipToken","formatUnits","useTransactionSteps","wallet","steps","currency","formatUnits","useGetTokenApprovalData","useEffect","useTransactionSteps","observable","initialState","jsx","jsxs","Show","Modal","observer","wallet","getNetwork","NetworkType","parseUnits","Button","Image","Modal","Text","observer","use$","observable","initialState","jsx","jsxs","observer","use$","Modal","Text","Button","Image","Modal","observer","useAccount","useSwitchChain","observable","initialState","Text","observer","isAddress","useAccount","cn","Text","observable","observer","jsx","jsxs","observer","observable","cn","Text","getNetwork","Button","Spinner","NetworkType","observer","jsx","jsxs","observer","wallet","getNetwork","NetworkType","Spinner","Button","observer","useAccount","jsx","jsxs","observer","useAccount","useWaasFeeOptions","wallet","useWaasFeeOptions","jsx","jsxs","observer","useAccount","isAddress","Text","Button","Text","observer","jsx","jsxs","observer","Text","Button","jsx","jsxs","useAccount","wallet","useSwitchChain","openModal","observer","Modal","Fragment","jsx","jsxs","observer","Skeleton","observer","Button","observable","jsx","wallet","Button","jsx","jsx","useEffect","wallet","useEffect","jsx","observer","IconButton","Image","Text","formatUnits","jsx","jsxs","formatUnits","Text","IconButton","Image","useEffect","useRef","useState","Skeleton","jsx","Skeleton","jsx","isImage","isHtml","isVideo","jsx","jsxs","useState","useRef","useEffect","jsx","jsxs","Skeleton","useQuery"]}
|